posts - 200, comments - 8, trackbacks - 0, articles - 0

Redis安装及配置主从复制

Posted on 2013-04-03 18:41 鑫龙 阅读(479) 评论(0)  编辑 收藏 引用 所属分类: redis
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、 list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操 作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的 是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的key-value数据库。
redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。(以上内容摘自百度百科)

一:下载redis并安装

  1. [root@server11 ~]# wget http://redis.googlecode.com/files/redis-2.6.4.tar.gz  
  2. [root@server11 ~]# tar -zxvpf redis-2.6.4.tar.gz   
  3. [root@server11 ~]# cd redis-2.6.4  
  4. [root@server11 redis-2.6.4]# make install 

32位操作系统上可能会出现如下报错:
zmalloc.o: In function `zmalloc_used_memory':
/root/redis-2.6.4/src/zmalloc.c:223: undefined reference to `__sync_add_and_fetch_4'
collect2: ld returned 1 exit status
make[1]: *** [redis-server] Error 1
make[1]: Leaving directory `/root/redis-2.6.4/src'
make: *** [all] Error 2

解决方案参考:
https://groups.google.com/forum/?fromgroups#!topic/redis-db/NI_d00he39o

二:编辑redis配置文件,启动redis

  1. [root@server11 ~]# mkdir -p /usr/local/redis2/{bin,etc,var}  
  2. [root@server11 redis-2.6.4]# cp redis.conf /usr/local/redis2/etc/  
  3. [root@server11 redis-2.6.4]# cp /usr/local/bin/redis-* /usr/local/redis2/bin/  
  4.  
  5. [root@server11 ~]# grep -v '^#' /usr/local/redis2/etc/redis.conf |grep -v '^$' //各参数含义在配置文件中有具体的解释和介绍  
  6. daemonize yes   
  7. pidfile /usr/local/redis2/var/redis.pid  
  8. port 6379  
  9. bind 192.168.1.112   
  10. timeout 300   
  11. loglevel notice  
  12. logfile stdout  
  13. databases 16  
  14. save 900 1  
  15. save 300 10  
  16. save 60 10000  
  17. stop-writes-on-bgsave-error yes  
  18. rdbcompression yes  
  19. rdbchecksum yes  
  20. dbfilename dump.rdb  
  21. dir ./  
  22. slave-serve-stale-data yes  
  23. slave-read-only yes  
  24. slave-priority 100  
  25. appendonly no  
  26. appendfsync everysec  
  27. no-appendfsync-on-rewrite no  
  28. auto-aof-rewrite-percentage 100  
  29. auto-aof-rewrite-min-size 64mb  
  30. lua-time-limit 5000  
  31. slowlog-log-slower-than 10000  
  32. slowlog-max-len 128  
  33. hash-max-ziplist-entries 512  
  34. hash-max-ziplist-value 64  
  35. list-max-ziplist-entries 512  
  36. list-max-ziplist-value 64  
  37. set-max-intset-entries 512  
  38. zset-max-ziplist-entries 128  
  39. zset-max-ziplist-value 64  
  40. activerehashing yes  
  41. client-output-buffer-limit normal 0 0 0  
  42. client-output-buffer-limit slave 256mb 64mb 60  
  43. client-output-buffer-limit pubsub 32mb 8mb 60  
  44.  
  45. [root@server11 ~]# /usr/local/redis2/bin/redis-server  /usr/local/redis2/etc/redis.conf   
  46. [root@server11 ~]# netstat -ntpl |grep 6379  
  47. tcp        0      0 192.168.1.112:6379          0.0.0.0:*                   LISTEN      6044/redis-server    
  48.  
  49. [root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112  
  50. redis 192.168.1.112:6379> set number 100  
  51. OK  
  52. redis 192.168.1.112:6379> get number  
  53. "100"  
  54. redis 192.168.1.112:6379> del number  
  55. (integer) 1  
  56. redis 192.168.1.112:6379> get number  
  57. (nil)  
  58. redis 192.168.1.112:6379> quit 

三: redis主从配置,关闭主节点的redis实例,复制/usr/local/redis2/目录至从节点

  1. [root@server11 ~]# ps -ef |grep redis  
  2. root      6044     1  0 09:37 ?        00:00:00 /usr/local/redis2/bin/redis-server /usr/local/redis2/etc/redis.conf  
  3. root      6072 27475  0 09:44 pts/1    00:00:00 grep redis  
  4. [root@server11 ~]# kill 6044  
  5. [root@server11 ~]# scp -rvp /usr/local/redis2/ root@192.168.1.113:/usr/local/  
  6.  
  7. [root@server12 ~]# grep -v '^#'  /usr/local/redis2/etc/redis.conf  |grep -v '^$' //注意红色字体部分  
  8. daemonize yes   
  9. pidfile /usr/local/redis2/var/redis.pid  
  10. port 6379  
  11. bind 192.168.1.113  
  12. timeout 300   
  13. loglevel notice  
  14. logfile stdout  
  15. databases 16  
  16. save 900 1  
  17. save 300 10  
  18. save 60 10000  
  19. stop-writes-on-bgsave-error yes  
  20. rdbcompression yes  
  21. rdbchecksum yes  
  22. dbfilename salve.rdb  
  23. dir ./  
  24. slaveof 192.168.1.112 6379 
  25. slave-serve-stale-data yes  
  26. slave-read-only yes  
  27. slave-priority 100  
  28. appendonly no  
  29. appendfsync everysec  
  30. no-appendfsync-on-rewrite no  
  31. auto-aof-rewrite-percentage 100  
  32. auto-aof-rewrite-min-size 64mb  
  33. lua-time-limit 5000  
  34. slowlog-log-slower-than 10000  
  35. slowlog-max-len 128  
  36. hash-max-ziplist-entries 512  
  37. hash-max-ziplist-value 64  
  38. list-max-ziplist-entries 512  
  39. list-max-ziplist-value 64  
  40. set-max-intset-entries 512  
  41. zset-max-ziplist-entries 128  
  42. zset-max-ziplist-value 64  
  43. activerehashing yes  
  44. client-output-buffer-limit normal 0 0 0  
  45. client-output-buffer-limit slave 256mb 64mb 60  
  46. client-output-buffer-limit pubsub 32mb 8mb 60 

四:分别启动主从节点redis实例并测试

  1. [root@server11 ~]# /usr/local/redis2/bin/redis-server /usr/local/redis2/etc/redis.conf   
  2. [root@server12 ~]# /usr/local/redis2/bin/redis-server /usr/local/redis2/etc/redis.conf   
  3.  
  4. [root@server12 ~]# netstat -ntpl |grep 6379  
  5. tcp        0      0 192.168.1.113:6379          0.0.0.0:*                   LISTEN      16653/redis-server    
  6.  
  7. [root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112  
  8. redis 192.168.1.112:6379> set number 1  
  9. OK  
  10. redis 192.168.1.112:6379> get number   
  11. "1"  
  12. redis 192.168.1.112:6379> quit  
  13.  
  14. [root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113  
  15. redis 192.168.1.113:6379> get number  
  16. "1"  
  17. redis 192.168.1.113:6379> del number  
  18. (error) READONLY You can't write against a read only slave.  
  19. redis 192.168.1.113:6379> quit

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理