二:Redis高级应用
1.慢查询分析
类似于MySQL的慢查询分析,通过设置查询超时时间,获取结果来定位问题
1)配置参数
通过配置redis.conf文件中的
slow-log-slower-than 1000 #查询超过该时间即为慢查询(单位为微秒)
slow-log-max-len 128 #慢查询日志最多存储128条
2)获取慢查询日志
slowlog get [n] #获取操作最慢的n条操作
slowlog len #获取当前慢查询日志列表的长度
slowlog reset #慢查询日志重置
2.redis-cli
1)redis-cli --rdb 请求redis实例生成并发送RDB持久化文件,保存在本地,可用作持久化文件的定期备份
2)redis-cli --pipe 将命令封装成redis通信协议定义的数据格式,批量发送给redis执行
3)redis-cli --bigkeys 对redis的key进行采样,从中找到内存占比比较大的key
4)redis-cli --latency 检测网络延迟
5)redis-cli --stat 实时获取redis的统计信息
6)redis-cli 内部命令
* info memory 内存使用情况展示
3.redis-server
1)redis-server --test-memory 512 内存检测,是否稳定分配512M内存给redis
4.Bitmaps
redis提供Bitmaps实现对位的操作
Bitmaps本身就是字符串,可以看成是一个位数组
使用位操作能够有效提高内存使用率和开发效率
5.HyperLogLog
HyperLogLog是一种基数算法,实际类型为字符串类型,通过其可以利用极小的内存空间完成独立总数的统计
当统计的数据量较大而要求内存使用较小时,可以考虑使用该方式(
有一定的误差率)
1)具体命令使用
pfadd key element[element...] #向key中添加元素
pfcount key[key ...] #计算多个key的独立总数
pfmerge destkey sourcekey [sourcekey...] #求出多个sourcekey的并集并赋值给destkey
6.发布订阅
redis提供简单的发布订阅功能,发布者发布消息到特定的channel,订阅者订阅该channel即可获取信心
1)命令
publish channel message #向channel发送message
subscribe channel [channel ...] #客户端订阅多个channel
unsubscribe channel [channel ...] #客户端取消订阅多个channel
pubsub channels [pattern] #查看活跃的channel,至少有有一个订阅者
pubsub numsub [channel ...] #查看频道订阅数
7.GEO(地理信息定位)
3.2版本之后提供该功能,支持存储地理位置信息用来实现附近位置、摇一摇这类依赖于地理位置信息的供
1)命令
参考:
geoadd key longitude latitude member [longitude latitude member ...] #添加信息到key longitude:经度 latitude:纬度 member:成员
geopos key member [member ...] 获取地理位置信息
geodist key member1 member2 [unit] #获取两个成员之间的距离 unit代表单位 包括m/km/mi/ft
https://redis.io/commands (具体命令用法细节可参考官网)