在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进行发布/订阅通信。

广告
将在 10 秒后关闭
bannerAds