Redis拓展功能

一,发布与订阅

Redis提供了发布订阅功能,可以用于消息的传输

Redis的发布订阅机制包括三个部分,publisher(发布),subscriber(订阅)和Channel(发布的频道)

 

发布订阅的机制

Redisson是一个分布式锁框架,在Redisson分布式锁释放的时候,是使用发布与订阅的方式通知的 

使用场景:哨兵模式,Redisson框架使用

在Redis哨兵模式中,哨兵通过发布与订阅的方式与Redis主服务器和Redis从服务器进行通信。 

Redisson是一个分布式锁框架,在Redisson分布式锁释放的时候,是使用发布与订阅的方式通知的

二,Redis事务 

Redis事务

  • Redis的事务是通过multi、exec、discard和watch这四个命令来完成的。
  • Redis的单个命令都是原子性的,所以这里需要确保事务性的对象是命令集合。
  • Redis将命令集合序列化并确保处于同一事务的命令集合连续且不被打断的执行
  • Redis不支持回滚操作

Redis事务命令:

  • multi:用于标记事务块的开始,Redis会将后续的命令逐个放入队列中,然后使用exec原子化地执行这个 命令队列
  • exec:执行命令队列
  • discard:清除命令队列
  • watch:监视key
  • unwatch:清除监视key 

 事务机制:

事务的执行流程

  1.  事务开始 在RedisClient中,有属性flags,用来表示是否在事务中 flags=REDIS_MULTI
  2. 命令入队 RedisClient将命令存放在事务队列中 (EXEC,DISCARD,WATCH,MULTI除外)
  3.  事务队列 multiCmd *commands 用于存放命令
  4. 执行事务 RedisClient向服务器端发送exec命令,RedisServer会遍历事务队列,执行队列中的命令,最后将执 行的结果一次性返回给客户端。
  5. 如果某条命令在入队过程中发生错误,redisClient将flags置为REDIS_DIRTY_EXEC,EXEC命令将会失败 返回。

 Watch的执行

使用WATCH命令监视数据库键 redisDb有一个watched_keys字典,key是某个被监视的数据的key,值是一个链表,记录了所有监视这个数 据的客户端。

 监视机制的触发,当修改数据后,监视这个数据的客户端的flags置为REDIS_DIRTY_CAS(乐观锁)

事务执行 RedisClient向服务器端发送exec命令,服务器判断RedisClient的flags,如果为REDIS_DIRTY_CAS,则清空事务队列。

Redis的弱事务性:

语法错误导致队列全部清空

Redis运行错误

在队列里正确的命令可以执行 (弱事务性)

弱事务性 : 1、在队列里正确的命令可以执行 (非原子操作) 2、不支持回滚

 三,慢查询日志

 慢查询日志相关配置

slowlog查看慢查询日志

 

 慢查询定位&处理

  • 尽量使用短的key,对于value有些也可精简,能使用int就int。
  • 避免使用keys *、hgetall等全量操作。
  • 减少大key的存取,打散为小key
  • 将rdb改为aof模式 rdb fork 子进程 主进程阻塞 redis大幅下降 关闭持久化 (适合于数据量较小) 改aof 命令式
  • 想要一次添加多条数据的时候可以使用管道
  • 尽可能地使用哈希存储
  • 尽量限制下redis使用的内存大小,这样可以避免redis使用swap分区或者出现OOM错误,内存与硬盘的swap

四,Redis监听器 

Redis客户端通过执行MONITOR命令可以将自己变为一个监视器,实时地接受并打印出服务器当前处理 的命令请求的相关信息。 此时,当其他客户端向服务器发送一条命令请求时,服务器除了会处理这条命令请求之外,还会将这条 命令请求的信息发送给所有监视器。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值