【 Redis开发与运维】第3章 读书笔记

第3章 小功能大用处

3.1 慢查询分析

两个参数

  1. slowlog-log-slower-than:单位是微秒,默认是10000
  2. slowlog-max-lan:列表最大长度

3.2 Redis Shell

3.2.1 redis-cli

  1. redis-cli -r(repeat):执行多次。
  2. redis-cli -i(interval):每隔几秒执行一次命令。
  3. redis-cli -x:从标准输入读取数据作为 redis-cli 最后一个参数。
  4. redis-cli -c(cluster):连接 Redis Cluster 时使用。
  5. redis-cli -a(auth):配置了密码时使用。
  6. redis-cli --scan,–pattern:用于扫描指定模式的键,相当于使用 scan 命令。
  7. redis-cli --slave:把当前客户端拟做当前 Redis 节点的从节点。
  8. redis-cli --rdb:生成 RDB 持久化文件,保存在本地。
  9. redis-cli --pipe:用于将命令封装成 Redis 通信协议定义的数据格式。
  10. redis-cli --bigkeys:使用 scan 命令对 Redis 的键进行采样,从中找到内存占用比较大的键。
  11. redis-cli -eval:用于执行指定脚本。
  12. redis-cli -latency:检测网络延迟
  13. redis-cli -stat:实时获取 Redis 重要的统计信息。
  14. redis-cli --raw,–no-row:要求命令返回的结果必须是(不是)原始格式。

3.2.2 redis-server

3.2.3 redis-benchmark

3.3 Pipeline

原生批量命令与Pipeline对比:

原生批量命令Pipeline
原子性非原子的
一个命令对应多个key支持多个命令
Redis 服务端实现Redis 服务端,客户端共同实现

不能滥用Pipeline

3.4 事务与Lua

3.4.1 事务

multi
~
~
~
exec #执行事务
discard #取消事务
watch #监听

Redis 不支持回滚功能

3.4.2 Lua 语法

3.4.3 Redis 与 Lua

eval

evalsha

Lua 脚本功能的三个好处:

  1. 原子执行
  2. 定制命令
  3. 减少网络开销

脚本管理操作:

  1. script load script
  2. script exists shal
  3. script flush
  4. scropt kill

3.5 Bitmaps

  • Bitmaps 本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的进行操作。
  • 可以把 Bitmaps 想象成以位为单位的数组,数组的下标在 Bitmaps 称为偏移量。

命令:

  1. 设置值
setbit key offset value
  1. 获取值
getbit key offset
  1. 获取 Bitmaps 指定范围为1的个数
bitcount key [start end]
  1. Bitmaps 之间的运算
bitop op destkey key [key...]
  1. 计算 Bitmaps 中第一个值的偏移量
bitpos key targetBit [start] [end]

3.6 HyperLogLog

不是一种数据结构,而是一种基数算法

集合操作。

三个命令:

pfadd
pfcount
pfmerge

HyperLogLog 内存占用很少,但是存在一定的误差,官方说法是0.81%。

3.7 发布订阅

命令:

  1. 发布消息
publish channel message
  1. 订阅消息
subscribe channel [channel...]
  • 客户端在执行订阅命令后进入订阅状态,只能接收 subscribe,psubscribe,unsubscribe,punsubscribe。的四个命令

  • Redis 不会对发布的消息进行持久化。

  1. 取消订阅
unsubscribe [channel [channel...]]
  1. 按照模式订阅和取消订阅
psubscribe pattern [pattern...]
punsubscribe pattern [pattern [pattern...]]
  1. 查询订阅
pubsub channels [pattern]

3.8 GEO

地理信息定位

命令:

  1. 添加地理位置信息
geoadd key longitude latitude member [longitude latitude member...]
  1. 获取地理位置信息
geopos key member [member...]
  1. 计算两个位置之间的距离
geodist key member1 member2 [unit]

unit 代表返回加过的单位

  • m:米
  • km:千米
  • mi:英里
  • ft:尺
  1. 获取指定位置范围内的地理位置信息集合
georadius key longitude latitude 

georadiusbymember key member radiusm [unit]
  1. 获取 geohash
geohash key member [member...]
  1. 删除地理位置信息
zrem key member

GEO 没有提供删除成员的命令,因为 GEO 底层实现是zset,所以可以借用 zrem 命令实现地理位置信息的删除操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值