Redis设计与实现笔记--独立功能的实现(四)

1.发布与订阅

订阅有两种,频道订阅和模式订阅

2.事务

以MULTI命令开始,把多个命令放入事务中,最后由EXEC命令将事务提交

WATCH命令是一个乐观锁,在EXEC执行之前,监视任意数量的数据库键。

并在EXEC执行前,检查被监视的键是否有被修改,是的话将拒绝执行事务。

监视的键被修改的话,会打开客户端REDIS_DISRTY_CAS标识

 

事务的ACID性质(这个很重要,有很多地方会出现)

redis总是具有ACI性质,不一定有D性质

原子性Atomicity:事务中的操作当成一个整体执行,要么都执行,要么都不执行

一致性Consistency:数据库在执行前一致,执行后无论成功也一致

可能出错的地方,以及如何解决

①入队错误,有不存在的命令或者格式不对,将拒绝执行这个事务

②执行错误,执行错误的命令会作错误处理,不影响队列中其他命令执行

③服务器停机,无论是无持久化、RDB或者AOF都会在重启后保持一致性,

无持久化重启后就是空白,总是一致的

隔离性Isolation:redis是单线程,事务总是串行运行

耐久性Durability:有且只有在AOF模式下,appendsync选项为always时,redis才具有耐久性

 

3.排序

SORT numbers步骤:

①创建和numbers列表长度相同的数组

②遍历数组,使obj指针与各个项一一对应

③遍历数组,把obj所指项转化成double型浮点型保存在u.score中

④根据u.score来排序

⑤遍历数组,把结果返回客户端

 

4.慢查询日志

慢查询日志用于记录执行时间超欧国指定时长的命令

是固定大小的队列链表,先进先出

新的慢查询日志会添加到链表表头,超过队列大小会把多出来的删除

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值