REDIS高级用法

以下测试均使用redis-cli

发布与订阅

普通订阅

  • 第一个客户端执行 SUBSCRIBE first second
1) "subscribe"
2) "first"
3) (integer) 1

1) "subscribe"
2) "second"
3) (integer) 2
  • 第二个客户端执行 PUBLISH second Hello
  • 此时第一个客户端接收到Hello
1) "message"
2) "second"
3) "hello"

模式匹配订阅

  • 第一个客户端执行 PSUBSCRIBE first.* second.*
  • 第二个客户端执行 PUBLISH second.111 Hello
  • 此时第一个客户端接收到Hello
1) "pmessage"
2) "second.*"
3) "second.111"
4) "hello"

主从复制

  • 异步复制,每秒一次,不阻塞主&从服务器
  • 一个主服务器,多个从服务器、一个从服务器,多个从服务器
  • 复制功能可以单纯地用于数据冗余(data redundancy), 也可以通过让多个从服务器处理只读命令请求来提升扩展性(scalability): 比如说, 繁重的SORT命令可以交给附属节点去运行
  • 可以通过复制功能来让主服务器免于执行持久化操作: 只要关闭主服务器的持久化功能, 然后由从服务器去执行持久化操作即可
  • 在关闭主服务器上的持久化,并同时开启自动拉起进程的情况下,即便使用Sentinel来实现Redis的高可用性,也是非常危险的。应该禁止主服务器关闭持久化的同时自动拉起从服务器

系统中运行多个redis实例

网上很多方案都不够完善,下面给出完全的例子

cp -rfp /etc/redis.conf /etc/redis_6380.conf
cp -rfp /etc/init.d/redis /etc/init.d/redis_6380
mkdir /var/lib/redis_6380 && chown redis.redis /var/lib/redis_6380
在redis_6380.conf中修改如下内容:
port 6379 => 6380
pidfile /var/run/redis.pid => /var/run/redis_6380.pid
logfile /var/log/redis/redis.log => /var/log/redis/redis_6380.log
dir /var/lib/redis => /var/lib/redis_6380
在redis_6380中修改如下内容:
pidfile="/var/run/redis/redis.pid" => "/var/run/redis/redis_6380.pid"
lockfile=/var/lock/subsys/redis => /var/lock/subsys/redis_6380

下面进行测试:

redis-server --port 6379 &
redis-server --port 6380 &
终端1:
redis-cli -p 6379
set myname lichao
终端2:
redis-cli -p 6380
slaveof 127.0.0.1 6379
get myname
=> lichao
    原文作者:超哥__
    原文地址: https://www.jianshu.com/p/d8dcb81ed44a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞