Redis提供的功能

慢查询

Redis客户端执行的时间:发送命令,命令排队,命令执行,返回结果。

慢查询只查询命令执行的时间。

慢查询预设阀值怎么设置:超过slowlog-log-slower-than微秒则记录。最多存储slowlog-max-len条慢查询日志。

慢查询记录存放在哪里?内存中,Redis使用一个列表(先进先出)存储慢查询日志。使用slow get命令将慢查询日志持久化到其他存储中。

获取慢查询日志:slowlog get [n]

重置慢查询日志:slowlog reset

获取慢查询日志列表长度:slowlog len

Pipeline

发送命令的时间+返回结果的时间=往返时间RTT

Pipeline能将一组Redis命令进行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端。

原生批量命令是原子的,Pipeline是非原子的。

原生批量命令是一个命令,Pipeline支持多个命令。

原生批量命令服务端支持就可以,Pipeline需要客户端和服务端同时支持。

使用Pipeline需要主要命令的个数,可能造成阻塞和网络拥塞。

事务与Lua

multi开启事务

watch监控key

unwatch取消监控

exec执行事务

discard丢弃事务

Lua脚本语言的数据类型:booleans布尔、numbers数值、strings字符串、tables表格(数组/哈希)。

--是Lua语言的注释

在Redis中执行脚本:

eval 脚本内容 key个数 key列表 参数列表

使用redis-cli --eval直接执行文件

使用evalsha执行Lua脚本,需要先使用script load命令将脚本加载到服务器。evalsha 脚本 SHA1值 key个数 key列表 参数列表

Lua可以使用redis.call函数实现对Redis的访问。还可以使用redis.pcall函数实现对Redis的调用。区别在于前者遇到错误会结束,后者遇到错误会忽略。

Lua脚本在Redis中是原子执行的,可以定制命令,并将这些命令常驻在内存中,实现复用。Lua脚本可以将多条命令一次性打包,有效减少网络开销。

script load加载脚本 script exists判断是否已经加载到服务器 script flush 清空服务器的脚本 script kill 杀掉正在执行的Lua脚本。

Bitmaps

Bitmaps本身不是一种数据结构,实际上它就是字符串,但是它可以对字符串的位进行操作。通过偏移量操作。

setbit key offset value

getbit key offset

bitcount key [start end]

bitop op destkey key [key..]

bitop and destkey key [key..]

bitop or destkey key [key..]

bitop not destkey key [key..]

bitop xor destkey key [key..]

bitpos key targetBit [start] [end] 第一个值作为targetBit的偏移量

HyperLogLog

HyperLogLog并不是一种新的数据结构(实际类型位字符串类型),而是一种基数算法(有误差),通过HyperLogLog可以利用极小的内存完成独立总数的统计。数据集可以是IP、Email、ID等。对应的三个命令pfadd添加、pfcount计数、pfmerge合并。

HyperLogLog算法:https://en.wikipedia.org/wiki/Philippe_Flajolet

发布订阅

发布者客户端向指定的频道channel发布消息,订阅该频道的每个客户端都可以收到该消息。

发布消息publish channel message

订阅消息subscribe channel [channel ...]

取消订阅unsubscribe [channel [channel ...] ]

按照模式订阅psubscribe pattern [pattern]

按照模式取消订阅punsubscribe [pattern [pattern...] ]

查看活跃的频道pubsub channels [pattern]

查看频道订阅数pubsub numsub [channel...]

查看模式订阅数pubsub numpat

发布订阅使用场景:聊天室,公告牌,服务之间利用消息解耦。

GEO

Redis3.2版本提供了GEO地理信息定位功能,支持存储地理位置信息来实现如附近位置、摇一摇这类依赖于地理位置信息的功能。

Redis使用geohash将二维经纬度转换为一维字符串。

GEO的数据类型位zset,Redis将所有地理位置信息的geohash存放在zset中。

geohash编码和经纬度是可以相互转换的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值