IT袋

当前位置:主页 > 经验教程 > 建站编程 >

Redis:优雅键值设计与BigKey处理

Redis:优雅键值设计与BigKey处理

时间:2023-12-28 07:23:26 来源:IT袋 作者:马勇
导读:Redis:优雅键值设计与BigKey处理,今日小编为你讲解Redis:优雅键值设计与BigKey处理的IT小经验,下面来一起了解一下吧。 1. 优雅的key结构 Redis的Key虽然可以自定义,但最好遵循下面的几个最佳实践约定:

Redis:优雅键值设计与BigKey处理

今日小编为你讲解Redis:优雅键值设计与BigKey处理的IT小经验,下面来一起了解一下吧。

1. 优雅的key结构

Redis的Key虽然可以自定义,但最好遵循下面的几个最佳实践约定:

  • 遵循基本格式:[业务名称]:[数据名]:[数据/数据id]
  • 长度不超过44字节
  • 不包含特殊字符

例如:我们的登录业务,保存用户信息,其key可以设计成如下格式:

Redis:优雅键值设计与BigKey处理

优点:

  • 可读性强
  • 避免key冲突
  • 方便管理
  • 更节省内存: key是string类型,底层编码包含int、embstr和raw三种embstr在小于44字节使用,采用连续内存空间,内存占用更小。当字节数大于44字节时,会转为raw模式存储,在raw模式下,内存空间不是连续的,而是采用一个指针指向了另外一段内存空间,在这段空间里存储SDS内容,这样空间不连续,访问的时候性能也就会收到影响,还有可能产生内存碎片

Redis:优雅键值设计与BigKey处理

2. BigKey慎用

BigKey通常以Key的大小和Key中成员的数量来综合判定,例如:

  • Key本身的数据量过大:一个String类型的Key,它的值为5 MB
  • Key中的成员数过多:一个ZSET类型的Key,它的成员数量为10,000个
  • Key中成员的数据量过大:一个Hash类型的Key,它的成员数量虽然只有1,000个但这些成员的Value(值)总大小为100 MB

那么如何判断元素的大小呢?redis也给我们提供了命令

Redis:优雅键值设计与BigKey处理

注意:

  • 一般不推荐使用memory指令,因为memory指令对cpi使用率比较高
  • 实际开发我们一般只需要判断值或者值的个数即可

推荐值:

  • 单个key的value小于10KB
  • 对于集合类型的key,建议元素数量小于1000,个数一般不超过5000

请注意,MEMORY 命令在 Redis 4.0 版本及更高版本中引入。如果您使用的是较旧的版本,您可能需要升级 Redis 到最新版本才能使用 MEMORY 命令

2.1. BigKey的危害

  • 网络阻塞
    • 对BigKey执行读请求时,少量的QPS就可能导致带宽使用率被占满,导致Redis实例,乃至所在物理机变慢
  • 数据倾斜
    • BigKey所在的Redis实例内存使用率远超其他实例,无法使数据分片的内存资源达到均衡
  • Redis阻塞
    • 对元素较多的hash、list、zset等做运算会耗时较旧,使主线程被阻塞
  • CPU压力
    • 对BigKey的数据序列化和反序列化会导致CPU的使用率飙升,影响Redis实例和本机其它应用

3. 如何发现BigKey

3.1. redis-cli –bigkeys

相关阅读

  • 电脑网页被劫持怎么处理 域名被劫持最佳处理办法

    电脑网页被劫持怎么处理 域名被劫持最佳处理办法

    本文摘要:电脑网页被劫持怎么处理和域名被劫持最佳处理办法的相关话题,接下来IT袋带大家一起了解。 随着互联网的日益发展,很多企业都开始建设网站。但是在网站经营的过程当中经常

  • 什么是访问控制列表ACL? ACL的分类有哪几种

    什么是访问控制列表ACL? ACL的分类有哪几种

    IT电脑小知识篇,关于什么是访问控制列表ACL的介绍,请看下面详细的介绍。 一、引言 访问控制列表(ACL)是计算机网络中重要的 安全机制 之一,用于限制网络中用户、进程或设备的访问权

  • 如何安装和访问Kubernetes仪表板

    如何安装和访问Kubernetes仪表板

    今天介绍如何安装和访问Kubernetes仪表板的相关话题,下面IT袋网为您详细介绍 Kubernetes 是一个开源容器编排平台,已成为大规模管理容器化应用的首选解决方案。 虽然 Kubernetes 提供了强大的命

  • 建站是什么专业 建网站的流程讲解

    建站是什么专业 建网站的流程讲解

    今天分享:建站是什么专业和建网站的流程讲解的教程内容,一起跟随小编看看吧! 公司建站需要了解什么? 做任何事情都是先要有一定的了解后才可以开始着手进行。下面我们一起学习一下