专栏首页互联网技术栈Redis 单key值过大 优化方式

Redis 单key值过大 优化方式

Redis使用过程中经常会有各种大key的情况, 比如:

  • 1: 单个简单的key存储的value很大
  • 2: hash, set,zset,list 中存储过多的元素(以万为单位)

由于redis是单线程运行的,如果一次操作的value很大会对整个redis的响应时间造成负面影响,所以,业务上能拆则拆,下面举几个典型的分拆方案。

1、单个简单的key存储的value很大

1.1、 改对象需要每次都整存整取

可以尝试将对象分拆成几个key-value, 使用multiGet获取值,这样分拆的意义在于分拆单次操作的压力,将操作压力平摊到多个redis实例中,降低对单个redis的IO影响;

1.2、该对象每次只需要存取部分数据

可以像第一种做法一样,分拆成几个key-value, 也可以将这个存储在一个hash中,每个field代表一个具体的属性,使用hget,hmget来获取部分的value,使用hset,hmset来更新部分属性


2、 hash, set,zset,list 中存储过多的元素

类似于场景一种的第一个做法,可以将这些元素分拆。

以hash为例,原先的正常存取流程是 hget(hashKey, field) ; hset(hashKey, field, value) 现在,固定一个桶的数量,比如 10000, 每次存取的时候,先在本地计算field的hash值,模除 10000, 确定了该field落在哪个key上。

newHashKey  =  hashKey + (*hash*(field) % 10000);   
hset (newHashKey, field, value) ;  
hget(newHashKey, field)

set, zset, list 也可以类似上述做法.

但有些不适合的场景,比如,要保证 lpop 的数据的确是最早push到list中去的,这个就需要一些附加的属性,或者是在 key的拼接上做一些工作(比如list按照时间来分拆)。


个人介绍: 高广超:多年一线互联网研发与架构设计经验,擅长设计与落地高可用、高性能、可扩展的互联网架构。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式分析引擎Kylin Spring DataSource封装

    Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBa...

    高广超
  • Zookeeper 使用场景

    高广超
  • JVM解读-性能调优实例

    对于长时间运行的应用,比如Servlet程序等,一般会使用吞吐量来测试它们的性能。 以下的一组数据表示了一个典型的数据获取程序在使用不同“热身时间”以及不同编译...

    高广超
  • Redis单个key存储的value很大

    可以像第一种做法一样,分拆成几个key-value, 也可以将这个存储在一个hash中,每个field代表一个具体的属性,使用hget,hmget来获取部分的...

    日薪月亿
  • SAP C4C的URL Mashup无法添加到embedded component里去

    HTML帮助文档里写到:URL Mashup只能添加到headers上,无法添加到sections和tab区域里。

    Jerry Wang
  • Redis之Java调用哨兵 原

    List-7 由于我们使用了JDK的Serializable作为序列化,所以对象一定要实现Serializable接口,不然会报错的

    克虏伯
  • 爬取某招聘网站、近2万+程序员的工资单,得到以下5点涨薪结论!

    某一技术人爬了某招聘网站,获取近一周的程序员工资18275条。其中,有工资的17628条(北京4892,上海5073,广州3386,深圳4277)。本文分别从工...

    养码场
  • 2017年一线城市程序员工资大调查

    编者按:作者爬了某招聘网站,获取近一周的程序员工资18275条。其中,有工资的17628条(北京4892,上海5073,广州3386,深圳4277)。本文分别...

    顶级程序员
  • 腾讯云CDN接入教程

    活动对象:已在腾讯云注册但未开通腾讯云CDN的用户。活动内容:活动期间,用户只要开通腾讯云CDN,都将获赠半年免费的新用户专享流量包(每 个月50G,连续6个月...

    主机优惠教程
  • echarts的地图点击事件

    1、echarts的地图展示,有时候展示出的数据,虽然鼠标点击上去某个省份或者某个地方会有数据显示,但是点击一下地图没有任何动态效果,如何添加地图点击效果呢,这...

    别先生

扫码关注云+社区

领取腾讯云代金券