首页 > 首页 > 数据库 > 非关系型数据库 > Redis > [ Redis ] 重要知识点备忘录
2024
05-29

[ Redis ] 重要知识点备忘录

Redis 所有历史版本更新信息

3.2 版本:https://raw.githubusercontent.com/antirez/redis/3.2/00-RELEASENOTES
4.0 版本:https://raw.githubusercontent.com/antirez/redis/4.0/00-RELEASENOTES
5.0 版本:https://raw.githubusercontent.com/antirez/redis/5.0/00-RELEASENOTES
6.0 版本:https://raw.githubusercontent.com/antirez/redis/6.0/00-RELEASENOTES
7.0 版本:https://raw.githubusercontent.com/antirez/redis/7.0/00-RELEASENOTES

Redis 如何确认两个节点数据迁移完成

1、输入info keyspace,分别查看源和目的节点的keys参数和expires参数的值。
2、对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,表示数据完整,迁移正常。

PS:如果key 有设置过期时间,上面对比的值是时刻会变化的,不一定非常准确

慢查询参数详解

Redis对应提供了两个参数:slowlog-log-slower-than和slowlog-max-len,接下来我们详细介绍一下这两个参数。

slowlog-log-slower-than

slowlog-log-slower-than的作用是指定命令执行时长的阈值,执行命令的时长超过这个阈值时就会被记录下来。它的单位是微秒(1秒 = 1000毫秒 = 1000000微秒),默认是10000微秒。如果把slowlog-log-slower-than设置为0,将会记录所有命令到日志中。如果把slowlog-log-slower-than设置小于0,将会不记录任何命令到日志中。

在实际的生产环境中,需要根据Redis并发量来调整该配置。因为Redis采用单线程响应命令,如果命令执行时间在1000微秒以上,那么Redis最多可支撑OPS不到1000,所以对于高并发场景的Redis建议设置为1000微秒。

slowlog-max-len

slowlog-max-len的作用是指定慢查询日志最多存储的条数。实际上,Redis使用了一个列表存放慢查询日志,slowlog-max-len就是这个列表的最大长度。当一个新的命令满足满足慢查询条件时,被插入这个列表中。当慢查询日志列表已经达到最大长度时,最早插入的那条命令将被从列表中移出。比如,slowlog-max-len被设置为10,当有第11条命令插入时,在列表中的第1条命令先被移出,然后再把第11条命令放入列表。

记录慢查询是Redis会对长命令进行截断,不会大量占用大量内存。在实际的生产环境中,为了减缓慢查询被移出的可能和更方便地定位慢查询,建议将慢查询日志的长度调整的大一些。比如可以设置为2000以上。

如何进行配置
在Redis中有两个修改配置的方法:

1、修改Redis配置文件。比如,把slowlog-log-slower-than设置为1000,slowlog-max-len设置为2000:

slowlog-log-slower-than 1000
slowlog-max-len 1200

2、使用config set命令动态修改。比如,还是把slowlog-log-slower-than设置为1000,slowlog-max-len设置为2000:

redis-cli -h ip -p port config set slowlog-log-slower-than 1000
redis-cli -h ip -p port config set slowlog-max-len 2000

AOF持久化参数详解

默认参数:
auto-aof-rewrite-min-size 64M #设置触发aof的最小尺寸
auto-aof-rewrite-percentage 100 #达到重写的百分比

当AOF文件大于64MB时,并且AOF文件当前大小比基准大小增长了100%时会触发一次AOF重写。那么基准大小如何确定呢?起始的基准大小为Redis重启并加载完AOF文件之后,aof_buf的大小。当执行完一次AOF重写之后,基准大小相应更新为重写之后AOF文件的大小。

触发条件

  • 没有BGSAVE命令(RDB持久化)/BGREWRITEAOF命令(AOF持久化)在执行;
  • 当前AOF文件大小要大于server.aof_rewrite_min_size(默认为1MB),或者在redis.conf配置了auto-aof-rewrite-min-size大小;
  • 当前AOF文件大小和最后一次重写后的大小之间的比率等于或者等于指定的增长百分比(在配置文件设置了auto-aof-rewrite-percentage参数,不设置默认为100%)

如果前面三个条件都满足,并且当前AOF文件大小比最后一次AOF重写时的大小要大于指定的百分比,那么触发自动AOF重写。

自动触发重写计算规则
运行指令info Persistence获取具体信息
# /opt/redis/bin/redis-cli -h ip -p port info Persistence | egrep "aof_current_size|aof_base_size"
aof_current_size:53265813545
aof_base_size:7433364454

[ Redis ] 重要知识点备忘录 - 第1张  | 架构迷

AOF重写流程

 非重写流程(always/everysec)

[ Redis ] 重要知识点备忘录 - 第2张  | 架构迷

重写流程

[ Redis ] 重要知识点备忘录 - 第3张  | 架构迷
最后编辑:
作者:摘星怪
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。