Redis中的BigKey相关问题

这篇具有很好参考价值的文章主要介绍了Redis中的BigKey相关问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是bigkey

bigkey是指key对应的value所占用的内存空间比较大。例如一个字符串类型的value可以最大存到512MB,一个列表类型的value最多可以存储2^32-1个元素。如果按照数据结构来细分的话,一般分为字符串类型bigkey和非字符串类型bigkey。
字符串类型:体现在单个value值很大,一般认为超过10kb就是bigkey。
非字符串类型:哈希、列表、集合、有序集合体现在元素个数过多。
bigkey无论在空间复杂度还是时间复杂度都不太友好。

bigkey的危害

bigkey的危害主要体现在四个方面:
(1)内存空间不均匀
例如在Redis Cluster中,bigkey会造成节点的内存空间使用不均匀。
(2)超时阻塞:由于Redis单线程的特性,对元素较多的hash,list,zset做运算会耗时比较久,也就意味着阻塞redis的可能性增加。
(3)网络阻塞:每次获取bigkey产生的网络流量较大。
(4)CPU飙升:对bigkey序列化反序列化导致CPU飙升。

解决bigkey

(1)优雅的kye结构的设计
key可以遵循下面几个约定:
遵循基本格式:[业务名称]:[数据名]:[id]
长度不超过44字节
不包含特殊字符
(2)拆分
对big key存储的数据(big value)进行拆分,变成value1、value2、valuen等等。
例如big value是个大json通过mset的方式,将这个key的内容打散到各个实例中,或者一个hash,每个field代表一个具体属性,通过hget、hmget获取部分value,hset,hmset来更新部分属性。
例如big value是个大list,可以将list拆成多个list。文章来源地址https://www.toymoban.com/news/detail-808762.html

到了这里,关于Redis中的BigKey相关问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis BigKey问题

    1.广告平台,海量数据查询固定前缀的key 不要使用keys , 使用 scan 命令 scan 0 match \\\"user: \\\" 10 2.Memory usage命令用过吗 memory usage key [semples count] :计算每个键值对的字节数 3.bigKey 问题,多大算bigKey,如何发现?如何处理?如何删除 string 类型控制在10k以内,hash,list,set,zset元素个数不要超过

    2024年02月06日
    浏览(35)
  • Redis——BigKey问题

    目录 MoreKey案例 测试数据 如何向redis数据库中一次性的插入100W条数据 如何将 100W条数据一次性写入redis数据库中 遍历百万、千万级别数据能否使用keys *? 生产上如何限制keys *、flushdb、flushall等危险命令? 不使用keys *使用什么遍历? 使用scan命令——用于迭代数据库中的数据库

    2023年04月26日
    浏览(33)
  • 分布式天梯图算法在 Redis 图数据库中的应用

    Redis是一个高性能的键值对数据库,支持常用的数据结构和分布式操作,被广泛应用于缓存、消息队列和排行榜等场景。除了基本的数据结构,Redis还支持图数据结构并提供了一些算法支持。 天梯图算法是一种基于贪心的图搜索算法,在寻找最短路径问题中具有很高的效率。

    2024年02月14日
    浏览(33)
  • Redis之bigkey问题解读

    目录 什么是bigkey? bigkey引发的问题 如何查找bigkey redis-cli --bigkeys MEMORY USAGE bigKey如何删除 渐进式删除 unlink bigKey生产调优 什么是bigkey? bigkey简单来说就是存储本身的key值空间太大,或者hash,list,set等存储中value值过多。 具体来衡量的话大key是: String 类型值大于10KB。 Has

    2024年02月09日
    浏览(33)
  • 如何保证Redis缓存和数据库的一致性问题

    熟练掌握Redis缓存技术? 那么请问Redis缓存中有几种读写策略,又是如何保证与数据库的一致性问题 今天来聊一聊常用的三种缓存读写策略 首先我们来思考一个问题 写 先更新缓存 再更新数据库 首先如果缓存更新成功但数据库更新失败,会导致数据不一致的问题 其次当请求

    2024年02月14日
    浏览(48)
  • redis和数据库的一致性问题的解决方案

    当前没有框架能够保证redis的数据和数据库的完全一致性,所以需要 我们自己在性能和一致性上作取舍。 下图就是两种在redis缓存数据库内容时的使用。 那么如一个节点的两个图: 缓存的生成,是在首次查询或者缓存过期时间到或者缓存被其他业务删除,进而需要在数据库

    2023年04月08日
    浏览(37)
  • Redis的MoreKey和BigKey问题

    大批量往Redis里面插入200w测试数据key 在Linux Bash下面执行,插入200w数据 使用命令 tail -10 redisTest.txt 查看最后10行记录 通过redis提供的管道 --pipe命令插入200W大批量数据 time用于查看耗时多长 可以看出插入200w条数据,耗时才不到6秒,还是非常快的 尝试使用 keys * ,查看所有的

    2023年04月19日
    浏览(37)
  • Redis - 做缓存时高并发问题:缓存穿透、击穿、雪崩,数据库缓存双写不一致

    当用户访问的数据既不在缓存也不在数据库中时,就会导致每个用户查询都会“穿透” 缓存“直抵”数据库。这种情况就称为缓存穿透。当高度发的访问请求到达时,缓存穿透不 仅增加了响应时间,而且还会引发对 DBMS 的高并发查询,这种高并发查询很可能会导致 DBMS 的崩

    2024年02月04日
    浏览(45)
  • 【Redis】内存数据库Redis进阶(Redis哨兵集群)

    基于 Redis 集群解决单机 Redis 存在的四大问题:   搭建一个三节点形成的 Sentinel 集群,来监管 Redis 主从集群。   【Redis】内存数据库Redis进阶(Redis主从集群)   架构图: 三个sentinel实例信息: 节点 IP PORT s1 192.168.150.101 27001 s2 192.168.150.101 27002 s3 192.168.150.101 27003 之前

    2024年02月14日
    浏览(43)
  • 解密Redis:应对面试中的缓存相关问题

    导语: 在面试过程中,面试官可能会问到关于Redis缓存的一系列问题。本文将深入探讨Redis缓存相关面试题,并为你提供详细的解答,帮助你在面试中游刃有余。 面试官: 什么是缓存穿透?该如何解决? 候选人: 缓存穿透是指查询一个一定不存在的数据,在存储层查不到数

    2024年02月14日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包