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.慢查询日志
慢查询日志用于记录执行时间超欧国指定时长的命令
是固定大小的队列链表,先进先出
新的慢查询日志会添加到链表表头,超过队列大小会把多出来的删除