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 条评论
登录 后参与评论

相关文章

来自专栏吉浦迅科技

手把手在亚马逊EC2上搭建Keras GPU

由于需要使用越来越复杂的神经网络,我们还需要更好的硬件。但我们的电脑通常不能承受那么大的网络,不过你可以相对容易地在亚马逊上租用一个功能强大的计算机,比如E2服...

52160
来自专栏AI科技评论

开发 | 用 Tensorflow 搭建能理解语境的聊天机器人!

想掌握对话沟通,语境为王。 我们将使用Tensorflow构建一个聊天机器人框架,向大家示范如何实现上下文的语境处理。 ? 有没有想过为什么大多数聊天机器人缺乏...

480180
来自专栏数据小魔方

R语言学习笔记之——多进程与并行处理包parallel

上一篇中,主要介绍了使用foreach包来在R语言环境中实现任务的并行处理,其实在R语言中还有另外一个多进程包同样可以完成多进程任务,那就是parallel包,...

32780
来自专栏腾讯移动品质中心TMQ的专栏

组合测试从理论到实践——从吃货的角度实现组合测试用例的自动设计

从吃货的角度观察组合 作为一名合格的吃货,小编我每天为了吃的健康着实费了不少心思,每周我都会根据应季蔬果来定制一周的饮食,以下是我这周的定制计划: 蔬菜类: 豆...

31680
来自专栏灯塔大数据

每周学点大数据 | No.75 Spark 实践案例——PageRank

本文为灯塔大数据原创内容,欢迎个人转载至朋友圈,其他机构转载请在文章开头标注 编者按:灯塔大数据将每周持续推出《从零开始学大数据算法》的连载,本书为哈尔滨工业大...

39780
来自专栏玉树芝兰

如何用Python提取中文关键词?

本文一步步为你演示,如何用Python从中文文本中提取关键词。如果你需要对长文“观其大略”,不妨尝试一下。

26320
来自专栏漫漫全栈路

用于时间序列预测的Python环境

Python生态系统正在不断的成长和壮大,并可能成为应用机器学习的主要平台。

40680
来自专栏瓜大三哥

IO约束(上)

IO约束的语法 XDC中可以用于IO约束的命令包括: set_input_delay set_output_delay set_max_delay set_mi...

22380
来自专栏Kotlin入门系列

师万物博客的历程(总)

17440
来自专栏linux驱动个人学习

GPU与CPU的区别

17630

扫码关注云+社区

领取腾讯云代金券