Redis高级特性

慢查询

Redis整个生命周期:发送命令->排队->执行命令->返回结果,慢查询通常发生在执行命令阶段,可以通过满日志查询系统slowlog进行问题定位跟踪。

在配置文件redis.conf中设置:

  • slowlog-max-len:表示满查询最大的条数,默认128,保存在内存中,当超过预先设置的值后会将最早的slowlog删除,是个先进先出队列。
  • slowlog-log-slower-than:慢查询阀值,默认10000微秒,只有命令执行时间大于该阀值才会被slowlog记录,如果记录所有命令将阀值设置为0。

两种设置方式:

Redis是一个每秒万级别的,所以在设置阀值的时候,默认为10000微妙(10毫秒),不要设置太大,建议1毫秒之下,这样才有意义。定期将慢查询持久化到其他数据库,便于排查。

  • 配置文件redis.conf中设置,以下为默认设置:
    • slowlog-log-slower-than 10000
    • slowlog-max-len 128
  • config动态设置slowlog:
    • slowlog-max-len 1000
    • slowlog-log-slower-than 1000

慢查询命令:

  • slowlog get [n]:获取慢查询队列
  • slowlog len:获取慢查询队列长度
  • slowlog reset:清空慢查询队列

pipeline

核心:1次网络请求处理n条命令,Redis本身命令处理时间是微妙级别,pipeline主要解决就是减少网络传输的请求。

发布订阅

角色:发布者(publisher)、订阅者(subscriber)、频道(channel) API:

  • 发布消息publish channel message
  • 订阅消息subscribe [channe] # 可以订阅多个频道
  • 取消订阅unsubscribe [channel]

BitMaps(位图)

HyperLogLog(超小内存唯一计数

GEO

Redis3.2+支持,用于地理信息定位,基于zset实现。

API:

  • geoadd key longitude latitude member增加地理位置信息,示例:geoadd cities: 116.31 39.99 beijing

  • geopos key member [member...]获取地理位置信息,示例:geopos cities: beijing

  • geodist key member1 member2 [unit]获取两地理位置距离,unit为单位(m,米;km,千米;mi,英里;ft,尺),示例:geodist cities: beijing shanghai km

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「IT平头哥联盟」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

results matching ""

    No results matching ""