374 字
2 分钟
Redis大Key问题
81%
全部章节
- 1 什么是Redis
- 2 Redis有哪些数据类型
- 3 Redisson延时队列架构
- 4 redis配置json序列化
- 5 为什么Redis设计为单线程而后面版本为啥又引入多线程呢
- 6 Redis为什么快
- 7 Redis中常见的数据类型有哪些
- 8 Redis的Hash是什么
- 9 Redis跳表
- 10 RedisZset实现原理
- 11 缓存与数据库一致性问题
- 12 Redis缓存击穿缓存穿透缓存雪崩
- 13 RedisString底层
- 14 Redis单点故障问题
- 15 Redis如何实现分布式锁
- 16 Redis实现分布式锁的时候可能遇到的问题有哪些
- 17 Redis大Key问题 阅读中
- 18 如何解决Redis中热点key的问题
- 19 Redis持久化机制
- 20 Redis数据过期后的删除策略
- 21 Redis主从复制的实现原理是什么

Redis中的 big key指一个内存空间占用比较大的键,它有什么危害?
- 内存分布不均,集群模式下,不同slot分配到不同实例中,如果大key被映射到同一个实例,那么分布不均,查询效率也会受到影响。
- Redis单线程执行命令,操作大Key的时候耗时比较长,会导致Redis出现其他命令 阻塞的问题。
- 大key对资源占用很大,在进行网络I/O传输的时候,导致获取过程中产生的网络流量较大,从而产生网络传输时间延长甚至网络传输发生阻塞现象。
- 客户端超时,因为操作大key时的时耗比较长,所以可能导致客户端超时。
如何解决大Key问题?
- 开发方面,对要存储的数据进行压缩,压缩之后再存储。
- 大化小,大对象拆分成小对象。把一个大Key拆分成若干小key,降低单个Key的内存大小。
- 使用合适的数据结构进行存储,比如一些用String存储的场景,可以考虑用Hash,Set等结构进行优化
业务层面: 根据实际情况,调整存储策略,不要把不必要的信息存储到里面
数据分布方面
- 采用Redis集群方式进行Redis的部署,然后把大Key拆分散落到不同的服务器上面,加快响应速度。
发现错误或想要改进这篇文章?
在 GitHub 上编辑此页 Redis大Key问题
相关文章
按系列 / 标签 / 分类推荐