我爱编程

第3章 小功能大用处

2018-05-23  本文已影响28人  leon4ever

1. 慢查询分析

慢查询日志帮助开发和运维人员定位系统存在的慢操作。
所谓的慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阈值,就将这条命令的相关信息记录下来。


一条客户端命令的生命周期.jpg

1.1 慢查询的两个配置参数

config set slowlog-log-slower-than 20000  //预设阈值
config set slowlog-max-len 1000  //日志列表长度
config rewrite  //写入配置文件

1.2 最佳实践

2. Redis Shell

  1. redis-cli
  2. redis-server ,--test-memory可以用来检测当前操作系统能否稳定地分配指定容量的内存给Redis
  3. redis-benchmark,提供基准性能测试

3. Pipeline

redis客户端执行一次命令:

  1. 发送命令
  2. 命令排队
  3. 命令执行
  4. 返回结果

Pipeline流水线机制能将一组Redis命令进行组装,通过一次RTT传输给Redis。
执行速度比逐条执行要快,而且网络延时越大,Pipieline的效果越明显。

使用pipeline执行n条命令模型.jpg

原生批量命令与Pipeline的对比

最佳实践

每次pipeline组装的命令个数不能没有节制

4. 事务与Lua

4.1 事务

事务表示一组动作,要么全部执行,要么全部不执行
Redis提供了简单的事务功能,将一组命令放到multi 和 exec 两个命令之间,但是不支持回滚,也无法实现命令之间的逻辑关系计算。

4.2 Lua用法简述

脚本语言,数据类型:booleans, numbers,strings, tables.

4.3 Redis与Lua

  1. 在Redis中使用Lua
  1. Lua的RedisAPI
    Lua可以使用redis.call实现对Redis的访问

4.4 案例

4.5 Redis管理Lua脚本

5. Bitmaps

5.1 数据结构模型

bitmaps本身不是一种数据结构,实际就是字符串,但是可以对字符串的位操作

5.2 命令

设置值

setbit key offset value

获取值

getbit key offset

获取bitmaps指定范围值为1的个数

bitcount [start] [end]

bitmaps间的运算,bitop是一个符合操作,可以做多个bitmaps的and, or, not, xor操作并将结果保存在destkey中

bitop op destkey key [key ...]

计算bitmaps中第一个值为targetBit的偏移量

bitpos key targetBit [start] [end]

5.3 Bitmaps分析

并不是万金油,如果独立访问用户少,bitmaps大部分位都是0,那么就不适用了。

6. HyperLogLog

一种基数算法,通过HyperLogLog利用极小的内存空间完成独立总数的统计,比起集合(28G),只需要5M,但是存在0.81%的失误率。

7. 发布订阅

Redis发布订阅模型.jpg

使用场景
有效解决业务的耦合性,比如视频信息的变更

发布订阅用于视频信息变化通知.jpg

8. GEO(地理信息定位)

Redis 3.2 版本提供了GEO地理信息定位功能,地理位置信息包括经度、维度、成员

上一篇 下一篇

猜你喜欢

热点阅读