redis 特殊命令的用途

慢查询

1.慢查询的作用:通过慢查询分析,可以找到有问题的命令进行优化

2.redis客户端执行一条命令包含

  • 发送命令
  • 命令排队
  • 命令执行
  • 返回结果

四部分,慢查询只统计步骤三(命令执行)的时间

2.慢查询中有两个重要参数

  • slow-log-slower-than

slow-log-slower-than预设阀值,单位是微妙

  • slowlog-max-len

slowlog-max-len慢查询日志最多存储多少条,redis使用列表存储慢查询日志,如果日志已处于最大长度,最早插入的一个命令将从列表中移除。

3.有必要将慢查询定期存放

由于慢查询日志是一个先进先出的队列,如果慢查询比较多的情况下,可能会丢失部分慢查询的命令,为了防止这种情况发生,可以定期执行slow get命令将慢查询日志持久化到其他存储中如MYSQL

Pipeline

1.pipeline的作用:通过PIPELINE(管道或者流水线)机制有效提高客户端性能

2.pipeline通过将一组redis命令进行组装,通过一次RTT传输到redis,可以有效简短多次命令执行的RTT时间

3.原生批量命令与Pipeline的区别

  •  原生批量命令是院子,pipeline是非原子的
  • 原生批量命令是一个命令对应多个key,pipeline支持多个命令
  • 原生批量命令是redis服务端支持实现的,pipeline需要服务端和客户端的共同实现

Lua脚本

1.Lua的作用: 制作自己的专属原子命令

2.redis中执行lua脚本有两种方法:eval和evalsha

  • eval 命令可用于直接执行lua脚本内容或者lua文件
  • evalsha 首先将lua脚本加载到redis服务端,得到该脚本的SHA1校验和,evalsha命令使用SHA1作为参数可以直接执行对应lua脚本,避免每次发送lua脚本的开销

3.使用lua脚本可以制定各种定制命令但也要注意代码可能引起的服务端阻塞

Bitmaps

1.Bitmaps的作用:通过在字符串数据结构上使用位操作,有效节省内存,为开发提供新的思路

2.使用bitmaps时针对例如用户id以一个制定数字开头的,直接将用户id和bitmaps的偏移量对应会造成一定的浪费,可以将每次setbit操作时将用户id减去这个制定数字

3.针对基数小并且僵尸数多的数据,不太适合使用bitmaps结构

HyperLogLog

1.HyperLogLog的作用: 一种基于概率的新算法,难以想象地节省内存空间

2.HyperLogLog内存占用量非常小,但是存在错误率,因为常用于计算独立总数,不需要获取单条数据

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值