redis提供了一些常用的小功能,提高了redis使用的灵活性。例如: 慢查询、pipeline、事务、bitmaps、hyperLoglog,下面将具体介绍。
5.1 慢查询
通过慢查询找到执行较慢的命令进行优化, 提高处理速度。
1 慢查询统计的时间
慢查询只统计在redis服务端执行命令的时间,如下图执行步骤3:
2 慢查询的2个参数
slowlog-log-slower-than 慢查询的预设阀值,超过此阀值将会被计入到慢查询日志中
slowlog-max-len 慢查询列表最大的长度,当数据超过最大长度, 先进入列表的数据会被清除掉
慢查询日志是存储到redis的内存列表中
3 慢查询的几个常用命令
slowlog get n 获取n条慢查询日志
slowlog len 慢查询日志列表的长度
slowlog reset 清空慢查询日志列表数据
5.2 PipeLne
管道机制可以把一批次的命令打成包一起发到redis服务端, 处理完后在一批次按照顺序返回给客户端, 提高了客户端的性能。
使用注意:
pipeline的组装命令的个数要控制好,太大的话会增加客户端等待的时间,且容易阻塞, 解决办法, 可以把大的pipeline拆分成一个一个小的pipeline来完成。
5.3 事务
保证几个命令操作的原子性。
1 命令
multi 事务开始
exec 事务提交
2 说明
1)命令或者语法如果有错误, 事务中的所有命令都不会执行的;
2)运行时错误,错误之前的会提交成功, 错误之后的不执行, redis事务没有回滚机制;
5.4 BitMaps
在字符串数据结构上进行位操作,有效的节省了内存。
可以把BitMaps理解为一个数组,每个元素只能存储0或者1,下标就是偏移量。
使用场景:
统计网站每天活跃用户数, 可以针对每天建立一个key, value中初始化所有用户信息,每个bit代表用户活跃情况 ,0未活跃,1活跃,通过此方式大大节省了内存空间。
5.5 HyperLoglog
在统计独立数据的个数上, 节省的内存十分惊人。
1 特点:
1)能够统计独立数据个数, 但是不能获取单条数据的数值;
2)内存占用很小,却存在0.81%的失误率,业务上如果能接收这个失误率是可以使用此方式来统计独立数据个数的。
2 命令:
pfadd key element1 element2 … 添加元素
pfcount key 计算独立用户数