当前位置: 首页 > news >正文

南昌建设公司网站免费免费网站模板下载

南昌建设公司网站,免费免费网站模板下载,网络营销学什么内容,南通网站建设规划书Redis大key问题 什么是big key? bigKey的危害: 大key不仅仅是占用内存而已,如果是仅仅内存的问题 那么扩大内存就好了。禁止大key是主要是因为你操作redis,比如说读/写等操作redis的时候 会有io操作,大key会导致io操作…

Redis大key问题

什么是big key?

在这里插入图片描述

bigKey的危害:

在这里插入图片描述
大key不仅仅是占用内存而已,如果是仅仅内存的问题 那么扩大内存就好了。禁止大key是主要是因为你操作redis,比如说读/写等操作redis的时候 会有io操作,大key会导致io操作很慢,还有说还会占用网络带宽等原因。 所以不是仅仅说因为占用内存的原因

发现big key?

redis-cli --bigkeys  可以命令统计bigkey的分布 

怎么解决bigkey?

在这里插入图片描述

详情看以下这个链接:

https://www.cnblogs.com/xgqfrms/p/13601959.html

redis的大key拆分:

1.拆分多个key

  1.1.可以尝试将对象分拆成几个 key-value,使用 multiGet 获取值,这样分拆的意义在于分拆单次操作的压力,将操作压力平摊到多个实例中,降低对单个实例的IO影响。1.2.按filed拆分多个key:对于每次需要取部分 value 的 大 key, 同样可以拆成几个 key-value,也可以将这些存储在一个 hash 中,每个 field 代表具体属性,使用 hget,hmget 来获取部分 value,使用 hset,hmset 来更新部分属性;1.3.对于 value 中存储过多元素的 key, 同样可以将这部分元素拆分;

2.存到hash中 用hget 但删除会有性能问题

redis hash和桶的结构

用偏移量存桶里,

hash算法 可以定位桶的位置
需要区分用户来源的场景:
推送违约订单需要区分来源

例子:

1.比如电柜电量大key:
解决方法拆分成多个key。———以电柜编号最后一位分散到不同key。比如电柜编号为10位,那么,尾号为1的放入一个key中,2放入另一个key中…….0放入另外的key中,因此,就分散到不同的key中,以此来解决大key的问题

删除大key?

删除操作的本质是要释放键值对占用的内存空间,不要小瞧内存的释放过程释放内存只是第一步,为了更加高效地管理内存空间,在应用程序释放内存时,操作系统需要把释放掉的内存块插入一个空闲内存块的链表,以便后续进行管理和再分配。这个过程本身需要一定时间,而且阻塞当前释放内存的应用程序。

所以,如果一下子释放了大量内存,空闲内存块链表操作时间就会增加,相应地就会造成Redis主线程的阻塞,如果主线程发生了阻塞,其他所有请求可能都会超时,超时越来越多,会造成Redis连接耗尽,产生各种异常

因此,删除大key这一动作,要非常小心

删除key的正确方式:

  1. 分批次删除

    1)hash key:通过hscan命令,每次获取500个字段,再用hdel命令

    2)set key:使用sscan命令,每次扫描集合中500个元素,再用srem命令每次删除一个元素

    3)list key:删除大的List键,未使用scan命令; 通过ltrim命令每次删除少量元素

    4)sorted set key:删除大的有序集合键,和List类似,使用sortedset自带的zremrangebyrank命令,每次删除top 100个元素

  2. 异步删除:

    Redis 4.0版本以后可以使用 UNLINK 命令,后台线程执行,释放空间

  3. 不建议采用的方式:

    1)执行rename重命名—不推荐:

    newkey如果本就存在
    redis会用key的值覆盖掉newkey的值,而newkey原本的值会被redis隐式地删除(del)。我们知道大key的删除伴随着高延迟(redis是单进程服务,服务器会在删除大key期间block住接下来其他命令的执行),这就导致时间复杂度本为 O(1) 的rename也有可能卡住redis

    另外需要注意的是:

    集群模式下,key 和newkey 需要在同一个 hash slot。key 和newkey有相同的 hash tag 才能重命名

    2)过期key删除策略—不推荐

    可能大家会有这样的想法:既然在线删除大key会造成阻塞,那么就对这个key设置一个TTL,交给redis自己去删。

    但是,不管是定期删除、惰性删除、淘汰策略这三种方式哪个触发的删除,它都是**同步的。所以就算加个TTL,redis也是同步删除的,大key还是会造成阻塞**。

http://www.yayakq.cn/news/756182/

相关文章:

  • 天津最好的网站建设公司河北衡水网站建设
  • 微信网页网站怎么做免费开源的网站系统
  • 安徽省合肥市建设局网站电子商务网站建设与管理 笔记
  • 微博网站开发与设计开题报告济南网站建设哪家强 资海
  • 门户网站的大数据应用宁波网页设计制作
  • 灰色网站网站安全联盟可信任网站认证 网站
  • 知企业网站怎么打不开郑州网络营销网站
  • 网站项目怎么做的有没有做卡哇伊的企业网站
  • 武威建设厅网站二维码制作网站有哪些
  • 晋城网络公司做网站的html5开发网站
  • 受欢迎的网站建设教程最好茶叶网站建设
  • 住小帮装修网官网徐州百度搜索优化
  • 自助免费建站系统惠州市网站制作有限公司
  • 数据库和网站开发网站建设策划书模板
  • 做网站前期框架图响应式网站怎么样
  • 做商城购物网站南阳医疗网站制作价格
  • 网站制作费用贵不贵安阳电话区号
  • 黎城网站建设网站建设每年有维护费吗
  • 微信电影网站怎么做的做网站赚钱平台
  • 有没有专门做售楼部包装的网站正规的家居行业网站开发
  • 专业的做pc端网站重庆在线课程平台
  • 网站怎么做反向代理优化网站作用
  • 百宝图建设工程电子网站wordpress 实时表单
  • 如何做自己的网站系统企业主页图片
  • 360网站安全检测音乐应用网站模板
  • 做p2p网站卖赚钱吗主流跨境电商平台有哪些?
  • 微信公众号登录不上优化营商环境
  • 美食网站首页怎么做襄阳住房和城乡建设局网站首页
  • 网站评论列表模板厦门有做网站建设
  • 怎样优化手机网站建设wordpress文章没办法显示略缩图