Redis 其它相关功能

Redis客户端

  • java客服端 Jedis
  • python客户端 redis-py

Client地址: https://redis.io/clients#python
GitHub地址:https://github.com/andymccurdy/redis-py

慢查询

  • 请求过程: 发送命令 -> 排队 -> 执行命令 ->返回结果
  • 慢查询发生在第三阶段,执行命令
  • 慢查询是客服端超时的一个可能

慢查询其实是一个先进先出的队列,固定长度,保存在内存内

慢查询两个配置

# 慢查询最大长度,默认为128
slowlog-max-len = 128
# 慢查询阈值(微妙),默认 10000;意思时在多长时间内,规定为慢查询 等于0记录所有的命令;少于0不急了任何命令。
slowlog-log-slower-than = 10000



慢查询两个队列
# 获取慢查询队列
slowlog get [n] 
# 获取慢查询队列长度
slowlog len

运维经验

  • slowlog-max-len 不要设置过大,默认10ms,通常设置1ms
  • slowlog-log-slower-than不要设置过小,通常设置1000左右
  • 理解命令生命周期
  • 定期持久化慢查询

pipeline(流水线)

将多个命令进行打包的操作,发送给服务器端执行,将执行的结果打包通过网路返回给客服端,相比单个命令,节省了网络的传输时间

  • Reis的命令时间是微秒级别的
  • pipeline每次条数要控制(网路)

使用建议

  • 注意每次pipeline携带的数据量
  • pipeline每次只能作用在一个Redis节点上
  • M操作与pipeline的区别,M操作时原子的,pipline把命令拆分进行执行的操作。

发布订阅

发布者发布消息,订阅者订阅了之后,就可以收到该消息了,多个订阅者可以订阅多个栏目

# 发布消息,返回的时订阅者数量
publish channel message
publish rao:tv "hello world"

# 订阅者,一个或多个
subscribe [channel]
subscribe rao:tv

# 取消订阅,一个多多个
unsubscrible [channel]
unsubscrible rao:tv

# 订阅模式
psubscrible [pattern..]
# 退订指定的模式
punsubscribe [pattern]
# 列出至少有一个订阅者的频道
pubsub channels
# 列出给定频道的订阅者数量
pubsub numsub [channel ..]

Bitmap

获取数据二进制形式的数据

# 给位图指定的索引设置值
setbit key offset value
# 获取位图指定索引的值
getbit key offset
# 获取位图指定范围(start 到 end,单位为字节,如果不指定就获取全部)位值为1的个数
bitcount key [start end]
# 做多个 bitmap的 and, or , not ,xor(异或)操作并将结果保存在 destkey中
# 计算位图指定范围(start 到 end,单位为字节,如果不指定就是获取全部)第一个偏移量对应的值等于targetBit的位置

使用经验

  • string类型,最大为512M
  • 注意setbit的偏移量,可能较大耗时
  • 位图不是绝对的好

示例,独立用户统计,用户量千万级使用位图较好,省内存;但是用户量较少不一定。

HyperLogLog

  • 基于HyperLogLog算法,极小空间完成独立数量的统计

  • 本质还是字符串

    向hyperloglog添加元素

    pfadd key element [element ...]

    计算hyperloglog的独立总数

    pfcount key [key ...]

    合并多个hyperloglog

    pfmerge destkey sourcekey [sourcekey ...]

使用经验

  • 是否容忍错误率(错误率: 0.81%)
  • 是否需要取出单条数据(不能取出单条数据)

GEO

从版本3.2开始的,地理信息定位,存储经纬度,计算两地的距离

# 增加地理位置信息
geo key longitude latitude member[longitude latitude member ...]
# 获取地理位置信息
geopos key member [member ..]
# 获取两个地理位置的距离
geodist key member1 member2 [unit]; unit: m(米),km(千米),mi(英里),ft(尺)

# 获取指定位置范围的地理位置信息集合
georadius key longitude latitude radiusm|km|ft|mi [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]

georadiusbymember key member radiusm|km|ft|mi [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]

withcoord :返回结果中包含经纬度.
withdist :返回结果中包含距离中心节点位置
withhash :返回结果中包含 geohash
COUNT count: 指定返回结果的数量
asc|desc :返回结果按照距离中心节点的距离做升序或者降序
store key: 将返回的结果的地址位置信息保存到指定键
storedist key :将返回结果距离中心节点的距离保存到指定键

geo 实质是用zset实现的,可以type查看说明没有删除的api,如果要删除使用zset相关的api。

posted @ 2018-10-10 15:49  NiRao  阅读(149)  评论(0编辑  收藏  举报