redis慢查询、事务、发布订阅,字符串位操作

通过这这篇文章你会知道如下内容:

  • 慢查询是什么?如何配置?
  • 如何多次间隔的执行命令?如何测试redis客户端到网络端延时?如何寻找占内存较大的键?
  • 如何查看redis实时增量的统计信息
  • 如何利用lua脚本制造批量的原子命令组合,如何执行lua脚本(这个需要度娘)
  • 如何对字符串进行位操作?
  • 了解HyperLogLog如何使用以及如何节省内存(这个也需要度娘)
  • 简单的发布和订阅消息如何实现?

慢查询

redis的慢查询是分析命令执行这个步骤的执行情况

1.慢查询的配置

  • slowlog-log-slower-than 默认10000 单位微妙

如果它的执行时间超过了10000微秒, 那么它将被记录在慢查询日志中。
如果slowlog-log-slower-than=0会记录所有的命令, slowlog-log-slowerthan<0对于任何命令都不会进行记录。

  • slowlog-max-len 列表最大长度

redis是使用一个列表来存储慢查询的日志,超过列表长度,最早插入的会被移除

  • 修改慢查询配置

1、修改配置文件
2、动态设置

config set slowlog-log-slower-than 20000
config set slowlog-max-len 1000
config rewrite  持久到本地配置文件
  • 查询慢日志
    slowlog get [n]
    
redis慢查询、事务、发布订阅,字符串位操作_第1张图片
日志的含义:id,时间戳 ,执行时间,执行命令和参数

日志的长度 slowlog len,,,清除日志 slowlog reset

redis-cli参数说明

  • -r (repeat) 命令执行多次 redis-cli -r 3 ping
  • -i (interval)每隔几秒执行一次,单位秒,与-r搭配使用 redis-cli -r 5 -i 1 ping
  • -x从标准输入(stdin) 读取数据作为redis-cli的最后一个参数
    echo "world" | redis-cli -x set hello
    
  • -c 连接Redis Cluster节点时需要使用的, -c选项可以防止moved和ask异常
  • -a 如果Redis配置了密码, 可以用-a(auth) 选项, 有了这个选项就不需要手动输入auth命令。
  • --bigkeys选项使用scan命令对Redis的键进行采样, 从中找到内存占用比较大的键值
  • --latency 网络延迟测试

latency有三个选项, 分别是--latency、 --latency-history、 --latency-dist
dist是图表的方式 ,history是分时输出, latency 只有一条结果

redis慢查询、事务、发布订阅,字符串位操作_第2张图片
5秒输出一次
  • --stat 输出一些增量的实时统计信息
  • --no-raw选项是要求命令的返回结果必须是原始的格式, --raw恰恰相反, 返回格式化后的结果

事务

  • 将一组命令放到multi与exec之间,这之间的命令才是院子顺序执行的
  • 语法错误会造成事务无法执行,但是运行错误不会,出错之前的命令会正常执行,所以不会造成事务回滚,,redis是不支持事务回滚的
  • 在开始事务之前,如果某个值在事务执行中没有被修改,则执行事务,否则不执行,这种应用场景就可以通过watch key进行使用

Bitmaps

对字符串的位进行操作,可以看似为一种以位为单位的数组,只能存储0和1,数组的下标在Bigmaps叫做偏移量offset

  • 设置值 / 获取值
    setbit key offset value   返回的是原先的位置的值----------------------  gitbit key offset
    
  • 统计字节数直接的结果
    bitcount  key [start][end]  
    

start是代表字节数开始,setbit是操作位。1byte = 8 bit 所以统计的时候,要算好统计多少个字节,而不是位数

  • 两个bitmaps的逻辑操作
    bitop op destkey key[key....]
    

op可以是and(交集) 、 or(并集) 、 not(非) 、 xor(异或) 操作并将结果保存在destkey中

  • 计算Bitmaps中第一个值为targetBit的偏移量
    bitpos key targetBit [start] [end]   
    

[start]和[end], 分别代表起始字节和结束字节

发布和订阅

  • 发布消息与订阅消息
    publish channel message
    subscribe channel [channel ...]
    

    客户端在执行订阅命令之后进入了订阅状态, 只能接收subscribe、psubscribe、 unsubscribe、 punsubscribe的四个命令。
    新开启的订阅客户端, 无法收到该频道之前的消息, 因为Redis不会对发布的消息进行持久化。

    这种订阅和发布方式简单,如果可以接受这些缺点,可以考虑使用
    
  • 查询活跃的频道
    pubsub channels [pattern]
    
  • 查看频道的订阅数
    pubsub numsub [channel ...]
    
  • 按照模式订阅和取消订阅
redis慢查询、事务、发布订阅,字符串位操作_第3张图片
模式订阅

你可能感兴趣的:(redis慢查询、事务、发布订阅,字符串位操作)