Redis的key和value大小限制 | value需要压缩吗?

Posted 西京刀客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis的key和value大小限制 | value需要压缩吗?相关的知识,希望对你有一定的参考价值。

文章目录

Redis的key和value大小限制 | value需要压缩吗?

Redis的key和value大小限制

官方文档: https://redis.io/docs/data-types/tutorial/

关键字: The maximum allowed key size is

1.Redis的key可以存储的最大值
虽然Key的大小上限为512M,但是一般建议key的大小不要超过1KB,这样既可以节约存储空间,又有利于Redis进行检索
注:1KB=1024B 1MB=1024KB 1GB =1024MB

2.Redis的value可以存储的最大值
value的最大值也是512M。对于String类型的value值上限为512M,而集合、链表、哈希等key类型,单个元素的value上限也为512M

大 Value

由于 Redis 是单线程运行的,如果一次操作的 value 很大会对整个 redis 的响应时间造成负面影响,因为 Redis 是 Key - Value 结构数据库,大 value 就是单个 value 占用内存较大。

Redis使用过程中经常会有各种大Value 的情况:

  • 单个简单的key存储的value很大
  • hash, set,zset,list 中存储过多的元素(以万为单位)
    由于redis是单线程运行的,如果一次操作的value很大会对整个redis的响应时间造成负面影响,所以,业务上能拆则拆。

大 Value 会造成哪些故障:

  • 数据倾斜问题:大 Value 会导致集群不同节点数据分布不均匀,造成数据倾斜问题,大量读写比例非常高的请求都会落到同一个 redis server 上,该 redis 的负载就会严重升高,容易打挂。
  • QPS 倾斜:分片上的 QPS 不均。
  • 大 Value 会导致 Redis 服务器缓冲区不足,造成 get 超时。
  • 由于值太大而过大,会对性能产生较大影响。读取值时,其他请求处于等待状态。如果该值占用太多内存,则读取速度会很慢。
  • 大 Value,有些 key 访问 QPS 虽然不高,但是由于 value 很大,造成网卡负载较大,网卡流量被打满,单台机器可能出现千兆 / 秒,IO 故障。

超级大的一个Value存到redis中去, 这样其实不好, 我们可以把value进行压缩。

参考

分布式 - Redis热点key大Value解决方案
参考URL: https://blog.csdn.net/qq_34272760/article/details/120754635

redis里怎么知道key的value大小?或者按照value的大小排序

参考技术A redis是一个key-value存储系统和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。
与memcached一样,为了保证效率,数据都是缓存在内存中。
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。本回答被提问者和网友采纳

以上是关于Redis的key和value大小限制 | value需要压缩吗?的主要内容,如果未能解决你的问题,请参考以下文章

redis里怎么知道key的value大小?或者按照value的大小排序

如何解决 redis value 较大的问题

Redis常用基本命令

redis知识总结

redis val是存取字典

Spring boot->redis value值出现两个双引号