创建相关目录
# mkdir -p /usr/local/redis/{etc,bin,var}
# mkdir -p /data/logs/redis /data/dbcache


-----------------------------------------------------------------------------------------------------------------------------------------------

编译安装
# tar -xvzf redis-2.4.13.tar.gz
# cd redis-2.4.13
# make
# cd src && cp redis-server redis-cli redis-benchmark /usr/local/redis/bin
# echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
# /sbin/sysctl -p


-----------------------------------------------------------------------------------------------------------------------------------------------

主服务器设置【192.168.1.100】
# vim /usr/local/redis/etc/redis.conf
daemonize yes
pidfile /usr/local/redis/var/redis.pid
port 6379
bind 192.168.1.100

unixsocket /usr/local/redis/var/redis.sock
unixsocketperm 755

timeout 300

loglevel verbose
logfile /data/logs/redis/redis.log

# syslog-enabled no
# syslog-ident redis
# syslog-facility local0

databases 16

save 900 1
save 300 10
save 60 10000

rdbcompression yes
dbfilename dump.rdb

dir /data/dbcache

# slaveof <masterip> <masterport>
# masterauth <master-password>

# repl-ping-slave-period 10
# repl-timeout 60
requirepass redis123
# rename-command CONFIG ""

maxclients 0

# maxmemory <bytes>
# maxmemory-policy volatile-lru
# maxmemory-samples 3

appendonly no
appendfilename appendonly.aof
appendfsync always
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

slowlog-log-slower-than 10000
slowlog-max-len 128

vm-enabled no
vm-swap-file /data/dbcache/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4

glueoutputbuf yes

hash-max-zipmap-entries 512
hash-max-zipmap-value 64

list-max-ziplist-entries 512
list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

activerehashing yes


-----------------------------------------------------------------------------------------------------------------------------------------------

从服务器设置【192.168.1.200】
daemonize yes
pidfile /usr/local/redis/var/redis.pid
port 6379
bind 192.168.1.200

unixsocket /usr/local/redis/var/redis.sock
unixsocketperm 755

timeout 300

loglevel verbose
logfile /data/logs/redis/redis.log

# syslog-enabled no
# syslog-ident redis
# syslog-facility local0

databases 16

save 900 1
save 300 10
save 60 10000

rdbcompression yes
dbfilename dump.rdb

dir /data/dbcache

# slaveof <masterip> <masterport>
# masterauth <master-password>

# repl-ping-slave-period 10
# repl-timeout 60
# rename-command CONFIG ""

maxclients 0

# maxmemory <bytes>
# maxmemory-policy volatile-lru
# maxmemory-samples 3

appendonly no
appendfilename appendonly.aof
appendfsync always
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

slowlog-log-slower-than 10000
slowlog-max-len 128

vm-enabled no
vm-swap-file /data/dbcache/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4

glueoutputbuf yes

hash-max-zipmap-entries 512
hash-max-zipmap-value 64

list-max-ziplist-entries 512
list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

activerehashing yes

slave-serve-stale-data yes
slaveof 192.168.1.100 6379
masterauth redis123


启动服务:
# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf


主服务器上执行:
# /usr/local/redis/bin/redis-cli -h 192.168.1.100 -a redis123 set test 123456


从服务器上执行:
# /usr/local/redis/bin/redis-cli -h 192.168.1.200 get test


-----------------------------------------------------------------------------------------------------------------------------------------------

启动脚本
# vim /etc/init.d/redis

-----------------------------------------------------------------------------------------------------------------------------------------------

启动服务
# chmod 700 /etc/init.d/redis
# chkconfig --add redis
# service redis start


测试是否已启动
# /usr/local/redis/bin/redis-cli ping


性能测试
# /usr/local/redis/bin/redis-benchmark


关闭服务
# /usr/local/redis/bin/redis-cli -p 6379 shutdown


强制刷新数据到磁盘【Redis默认是异步写入磁盘的】
# /usr/local/redis/bin/redis-cli -p 6379 save


-----------------------------------------------------------------------------------------------------------------------------------------------

phpredis扩展安装
# svn checkout http://phpredis.googlecode.com/svn/trunk/phpredis-read-only
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make && make install




*******************************************************************************





环境描述:
主redis:192.168.10.1 6379
从redis:192.168.10.2 6380

一、主从配置

1、将主从redis配置文件redis.conf中的aemonize no 改为 yes
port 6379 改为 6380,添加

3、启动主从服务

      主redis:     

      [root@localhost redis-2.8.3]# src/redis-server /soft/redis-2.8.3-master/redis-2.8.3/redis.conf

     从redis:

     [root@localhost redis-2.8.3]# src/redis-server /soft/redis-2.8.3-slave/redis-2.8.3/redis.conf

4、测试数据同步

      主redis:

      [root@localhost redis-2.8.3]# src/redis-cli -p 6379
     127.0.0.1:6379> set name abc
     OK
     127.0.0.1:6379> get name
     "abc"
     127.0.0.1:6379>

    从redis:

      [root@localhost redis-2.8.3]# src/redis-cli -p 6380
     127.0.0.1:6380> get name
     "abc"
     127.0.0.1:6380>

5、默认是读写分离的

     在从redis:

     [root@localhost redis-2.8.3]# src/redis-cli -p 6380
     127.0.0.1:6380> set name 123
     (error) READONLY You can't write against a read only slave.

     

 二、主从切换

     1、停止主redis

    [root@localhost redis-2.8.3]# src/redis-cli -n 6379 shutdown
     [root@localhost redis-2.8.3]# src/redis-cli -p 6379
     Could not connect to Redis at 127.0.0.1:6379: Connection refused
     not connected>

     2、将从redis设成主redis
    [root@localhost redis-2.8.3]# src/redis-cli -p 6380 slaveof NO ONE
    OK

    3、测试从redis是否切换从主redis

    [root@localhost redis-2.8.3]# src/redis-cli -p 6380
    127.0.0.1:6380> set name 123
    OK
    127.0.0.1:6380> get name
    "123"
    127.0.0.1:6380>

     4、原来的主redis恢复正常了,要重新切换回去

         1)将现在的主redis的数据进行保存

     [root@localhost redis-2.8.3]# src/redis-cli -p 6380
     127.0.0.1:6380> get name
     "abc"
     127.0.0.1:6380> set name 123
     OK
     127.0.0.1:6380> get name
     "123"
     127.0.0.1:6380> save
     OK
     127.0.0.1:6380> get name
     "123"
     127.0.0.1:6380>  

       2)将现在的主redis根目录下dump.rdb文件拷贝覆盖到原来主redis的根目录

       3)启动原来的主redis

      [root@localhost redis-2.8.3]# src/redis-server /soft/redis-2.8.3-master/redis-2.8.3/redis.conf
       4)在现在的主redis中切换

      [root@localhost redis-2.8.3]# src/redis-cli -p 6380 slaveof 192.168.10.1 6379
      OK