前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis 热key、bigKey、布隆过滤器、pipeline

redis 热key、bigKey、布隆过滤器、pipeline

作者头像
发布2019-12-10 18:21:21
1.1K0
发布2019-12-10 18:21:21
举报
文章被收录于专栏:WD学习记录WD学习记录

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://cloud.tencent.com/developer/article/1551868

之前在用redis的时候只会觉得说有缓存真好,可以节省大量时间,但是从来没有想过redis可能会存在的问题。

在这里记录下最近自己遇到的以及听到的可能有问题的地方。

热Key

热点key是指瞬间有大量请求去访问同一个key,从而压垮缓存服务。会造成流量过于集中,达到物理网卡上限,从而导致所在redis服务器宕机。那么接下来,对于这个key的请求就不可用,可能会直接压到数据库。导致服务整体不可用。

发现热key的方式:

  1. 凭借业务经验进行预估。问题在于并非所有的业务都能预估出哪些key是热key。
  2. 在客户端进行收集。在操作redis之前,先进行数据统计。缺点在于会对客户端代码造成入侵。
  3. 在Proxy层面进行收集,如果有统一proxy入口,可以在proxy上收集上报
  4. 直接使用redis自带命令,monitor命令、hotkeys参数
  5. 自己抓包评估

解决方案:

  1. 利用二级缓存,利用本地缓存
  2. 备份热key,把这个key在多台机器上都存一份

目前自己代码中用到的解决方案是对可能的热key进行预估,并且将这些数据存储到本地缓存中。之前一直是担心本地缓存占用内存过多,后来发现其实可以对需要本地缓存的数据进行一个预估,估计占用存储空间的大小。

https://www.jianshu.com/p/9a761a575daa

https://segmentfault.com/a/1190000017142556?utm_source=tag-newest 有赞透明多级缓存方案

https://www.cnblogs.com/williamjie/p/11250789.html

bigkey

bigkey可能造成的影响:

redis是单线程运行的,一次操作的value很大会对整个redis的响应时间造成负面影响。

这种情况下需要对bigkey进行拆分。

https://blog.csdn.net/beyond59241/article/details/78889867

https://blog.csdn.net/lavorange/article/details/83475960

想到之前的一种场景,需要对所有用户的积分进行排名,之前用到了zset,但是当用户数目上涨的时候,这个key也变成了一个bigkey,这个key在一周内有效,这里如何拆分还没有想到合适的方式。

布隆过滤器

布隆过滤器可以快速判断一个元素是否在集合中

https://blog.csdn.net/u011277123/article/details/88757861

http://www.xiaosongit.com/index/detail/id/627.html

https://yq.aliyun.com/articles/167466?spm=a2c4e.11153940.0.0.7d2b49c4bqtmn6

pipeline

一次性执行多条命令提升执行速度。

原生的批命令具有原子性,而pipeline不具备原子性

原生批命令对应的是一条命令,多个key。pipeline是多命令

原生批命令是服务端实现,pipeline需要服务端和客户端共同完成。

但是使用pipeline的时候也需要注意命令个数不应该太多,不然会导致数据量过大,增加客户端的等待时间,还可能造成网络拥堵。

https://blog.csdn.net/u011489043/article/details/78769428

https://blog.csdn.net/w1lgy/article/details/84455579

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 热Key
  • bigkey
  • 布隆过滤器
  • pipeline
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档