在Redis中配置复制
请阅读这里以查看至此的概述,”尝试安装 node-redis 的备忘录(http://qiita.com/items/63de388bf40cff40a096)”。
Redis复制的特点
点击此处阅读有关Redis复制的常见信息:http://redis.shibu.jp/admin/replication.html
点击此处阅读关于复制的信息:http://goo.gl/1tA00
那么就这样吧(哦哦,上面那个“点击这里阅读”的文本感觉就像是一个require语句一样啊!)
修改redis.conf文件的设置
只需要在redis.conf文件中稍作修改即可添加一个从服务器。
由于使用了apt-get安装,所以redis.conf文件位于以下位置。
/etc/redis/redis.conf
根据不同的设置方式,例如将redis放置在其他位置或在启动redis服务器时指定路径,我们会打开相应位置的redis配置文件。
请改写这个地方
################################# REPLICATION #################################
# Master-Slave replication. Use slaveof to make a Redis instance a copy of
# another Redis server. Note that the configuration is local to the slave
# so for example it is possible to configure the slave to save the DB with a
# different interval, or to listen to another port, and so on.
(略)
# slaveof <masterip> <masterport>
# ↑これを マスターのIP と port に変更してコメント外す
slaveof 192.168.1.12 6379
就这样。
请参考这里以了解其他设定:http://redis.shibu.jp/admin/config.html#confval-slaveof.
如果需要,可以更改主服务器的redis.conf。
使用apt-get安装时,可能会将redis.conf中的bind(http://redis.shibu.jp/admin/config.html#confval-bind)固定为’127.0.0.1’。
如果要更改从主机连接到奴隶的IP地址为192.168.1.12或指定域名,可以在这里将其注释掉或指定。
这次我们注释掉了192.168.1.12机器的redis.conf文件中的bind选项。(如果需要使用密码,请参考下面的内容)
# bind 127.0.0.1
重新启动
然后,如果使用apt-get命令,只需重启两台设备就完成了。
sudo /etc/init.d/redis-server restart
确认
我会尝试在主节点上写入node-redis示例,然后在从节点上进行确认。
主人端
var redis = require("redis"),
client = redis.createClient();
client.set("test", "うひょー");
奴隶方面
var redis = require("redis"),
client = redis.createClient();
client.get("test", function(err, data){
console.log(data);
});
// => うひょー
我試著稍微改一下。
主适
var redis = require("redis"),
client = redis.createClient();
client.set("test", "うひぁああああ");
奴隶一方
var redis = require("redis"),
client = redis.createClient();
client.get("test", function(err, data){
console.log(data);
});
// => うひぁああああ
完成了。
可以看到主节点的更改正在传播到从节点。
密码
我刚刚在/etc/redis/redis.conf文件中注释掉了bind选项。如果只在本地网络中使用,那就没问题。但如果你的环境可以远程访问,那么我建议在主服务器上设置密码。
(p.s. 因为Redis非常快速,如果在性能良好的机器上运行,可以每秒进行大约150,000次密码检查。因此,如果密码较弱,容易被破解,所以请设置非常强的密码。)
requirepass hogehogepiyopiyoPasword
masterauth hogehogepiyopiyoPasword
如果要使用node-redis进行处理的话
client.auth('hogehogepiyopiyoPasword', function(e,ok){
console.log("authError " + e + '--' +client.host+ ': ' +ok);
})
//これはつながると下記のように表示されます
//authError null--192.168.1.12: OK
不管怎样,只要把它暂时放进自己的服务器环境中,就可以像localStorage一样简便地使用带有各种功能的键值存储。
突然想到的是,这么方便的话,是不是也可以用它来替代通信呢^^?<虽然表面上是方便,但是内部是否也够大气呢?或者比Pub/Sub更简便呢?哦,对了,还是得考虑到message事件,所以应该还是用Pub/Sub吧。
因此,下一步是使用Redis进行发布/订阅通信。