redis和memcache比较像的,memcache可以实现服务器的集群,redis肯定也是可以的。下面在一台机,实现redis主从复制。@H_404_1@
1,copy一下redis.conf,生成一个从机的配置@H_404_1@
cp /usr/local/redis/redis.conf /usr/local/redis/redis_slave.conf@H_404_1@
2,修改主服务器的配置redis.conf@H_404_1@
bind 127.0.0.1@H_404_1@
3,修改从服务器的配置redis_slave.conf@H_404_1@
pidfile /usr/local/redis/var/redis_slave.pid@H_404_1@
port 10002@H_404_1@
bind 127.0.0.1@H_404_1@
logfile /usr/local/redis/var/redis_slave.log@H_404_1@
dbfilename dump_slave.rdb@H_404_1@
slaveof 127.0.0.1 6379@H_404_1@
4,启动主服务器,从服务器@H_404_1@
redis-server /usr/local/redis/redis.conf@H_404_1@
redis-server /usr/local/redis/redis_slave.conf@H_404_1@
查看一下,redis.log文件会有以下内容@H_404_1@
[3774] 27 Jun 12:53:32 * The server is now ready to accept connections on port 10002@H_404_1@
[3774] 27 Jun 12:53:32 - 0 clients connected (0 slaves),539568 bytes in use@H_404_1@
[3774] 27 Jun 12:53:32 * Connecting to MASTER...@H_404_1@
[3772] 27 Jun 12:53:32 - Accepted 127.0.0.1:33237@H_404_1@
[3772] 27 Jun 12:53:32 * Slave ask for synchronization@H_404_1@
[3772] 27 Jun 12:53:32 * Starting BGSAVE for SYNC@H_404_1@
[3772] 27 Jun 12:53:32 * Background saving started by pid 3775@H_404_1@
[3774] 27 Jun 12:53:32 * MASTER <-> SLAVE sync started: SYNC sent@H_404_1@
[3775] 27 Jun 12:53:32 * DB saved on disk@H_404_1@
[3772] 27 Jun 12:53:33 * Background saving terminated with success@H_404_1@
[3772] 27 Jun 12:53:33 * Synchronization with slave succeeded@H_404_1@
[3774] 27 Jun 12:53:33 * MASTER <-> SLAVE sync: receiving 333 bytes from master@H_404_1@
[3774] 27 Jun 12:53:33 * MASTER <-> SLAVE sync: Loading DB in memory@H_404_1@
[3774] 27 Jun 12:53:33 * MASTER <-> SLAVE sync: Finished with success@H_404_1@
查看一下@H_404_1@
root@ubuntu:/usr/local/redis# ps -e|grep redis@H_404_1@
3774 ? 00:00:00 redis-server@H_404_1@
4148 ? 00:00:00 redis-server@H_404_1@
5,测试结果@H_404_1@ @H_301_82@PHP $redis = new redis(); $redis->connect('127.0.0.1',6379); $redis->set('test',json_encode(array(1,2,3,4))); print_r(json_decode($redis->get('test'))); ?>
root@ubuntu:/usr/local/redis# telnet 127.0.0.1 10002@H_404_1@
Trying 127.0.0.1...@H_404_1@
Connected to 127.0.0.1.@H_404_1@
Escape character is '^]'.@H_404_1@
get test@H_404_1@
$9@H_404_1@
[1,4]@H_404_1@
缓存数据是放在6379这个端口的服务器上,代码执行后,登录到10002端口的slave服务器上也可以看到有数据,说明已经同步了。@H_404_1@
我尝试了一下,redis的主主同步,但是没有成功,我看了一下log,以从服务器127.0.0.1 10002为master的时候,同时启动二个端口,怎么也连接不上127.0.0.1 6379是不支持呢?还是配置有问题,我在网上查了一下,没看到有人配置主主同步的。@H_404_1@