searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Redis hotkeys查询与优化

2023-10-17 03:24:06
25
0
Redis hotkeys查询与优化
 
HotKeys是redis中被请求访问频率较高的Key,通常占用大量的带宽和QPS。如果在使用过程中没能及时发现并处理,可能会导致服务性能下降、用户体验变差,甚至引发大面积故障。通常预期外的访问陡增、热点事件等会导致HotKeys产生。

hotkeys查找

redis保存有每个key的访问频度,出现hotkeys后,可以通过下面方法定位(由于下面两种方式都需要实时占用系统资源,可能对运行中的系统造成影响,最有效还是通过业务层定位hotkeys,在无法确认后再使用下面方法)。

通过redis-cli的hotkeys参数查询hotkeys

客户端redis-cli支持hotkeys参数,类似bigkeys实现逻辑,使用scan指令,采样实例的key,记录并输出访问频度最高的key。

通过monitor命令分析hotkeys

Redis的monitor命令能够打印Redis中的所有请求,包括时间信息、Client信息、命令以及Key信息,可以通过短暂执行monitor命令并将输出重定向至文件,分析找出该时间段中的hotkeys。
 
 

hotkeys优化

分析出hotkeys后,通常使用对key降低请求密度来优化处理,即访问迁移或多节点支持。

使用读写分离

如果热Key的产生来自于读请求,那么读写分离是一个很好的解决方案。在使用读写分离架构时可以通过不断的增加从节点来降低每个Redis实例中的读请求压力。
 
在请求量极大的场景下,读写分离架构会产生不可避免的延迟,此时会有读取到脏数据的问题,需要重点关注是否满足场景需求。

分片集群key拆分

分片集群中,对hotkeys的请求打散到多分片来减少单个分片的压力,需要使用多key分别迁移到不通的分片上,应用通过请求不同的key来减少单个分片的压力。如hotkey foo复制出3个内容完全一样的Key并名为foo2,foo3,foo4,然后将这三个Key迁移到其他node来解决单一node的热Key压力。
 
但是该方案需要应用联动修改,同时,Key变多带来了数据一致性挑战:由更新一个Key演变为需要同时更新多个Key。
0条评论
0 / 1000
1****m
13文章数
0粉丝数
1****m
13 文章 | 0 粉丝
原创

Redis hotkeys查询与优化

2023-10-17 03:24:06
25
0
Redis hotkeys查询与优化
 
HotKeys是redis中被请求访问频率较高的Key,通常占用大量的带宽和QPS。如果在使用过程中没能及时发现并处理,可能会导致服务性能下降、用户体验变差,甚至引发大面积故障。通常预期外的访问陡增、热点事件等会导致HotKeys产生。

hotkeys查找

redis保存有每个key的访问频度,出现hotkeys后,可以通过下面方法定位(由于下面两种方式都需要实时占用系统资源,可能对运行中的系统造成影响,最有效还是通过业务层定位hotkeys,在无法确认后再使用下面方法)。

通过redis-cli的hotkeys参数查询hotkeys

客户端redis-cli支持hotkeys参数,类似bigkeys实现逻辑,使用scan指令,采样实例的key,记录并输出访问频度最高的key。

通过monitor命令分析hotkeys

Redis的monitor命令能够打印Redis中的所有请求,包括时间信息、Client信息、命令以及Key信息,可以通过短暂执行monitor命令并将输出重定向至文件,分析找出该时间段中的hotkeys。
 
 

hotkeys优化

分析出hotkeys后,通常使用对key降低请求密度来优化处理,即访问迁移或多节点支持。

使用读写分离

如果热Key的产生来自于读请求,那么读写分离是一个很好的解决方案。在使用读写分离架构时可以通过不断的增加从节点来降低每个Redis实例中的读请求压力。
 
在请求量极大的场景下,读写分离架构会产生不可避免的延迟,此时会有读取到脏数据的问题,需要重点关注是否满足场景需求。

分片集群key拆分

分片集群中,对hotkeys的请求打散到多分片来减少单个分片的压力,需要使用多key分别迁移到不通的分片上,应用通过请求不同的key来减少单个分片的压力。如hotkey foo复制出3个内容完全一样的Key并名为foo2,foo3,foo4,然后将这三个Key迁移到其他node来解决单一node的热Key压力。
 
但是该方案需要应用联动修改,同时,Key变多带来了数据一致性挑战:由更新一个Key演变为需要同时更新多个Key。
文章来自个人专栏
后端研发
13 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0