Redis 内存优化案例

在Redis的配置文件中有这么两项配置: hash-max-ziplist-entries 512 hash-max-ziplist-value 64 其中的‘ziplist’代表数据结构,是一种数据压缩方式,作用是减少内存的使用空间 在某个阀值范围内,hashtable会使用ziplist,对数据进行压缩,超出阀值后,会自动转为使用正常的hashmap结构 上面这两项就是定义这个阀值 hash-max-ziplist-entries 512 当hashtable中的条目数量在512以下时,使用ziplist hash-max-ziplist-value 64 当hashtable中每个key/value的长度都小于64字节时,使用ziplist 以上2个条件中,任意一个条件超过设置值时,就不再使用ziplist了 案例 之前在网上看过一个案例,介绍了Instagram使用这项配置的实践经验 Instagram是一个超大型的图片类应用,他们有一个需求

根据图片ID得到作者ID 最简单的实现方式就是使用string类型

图片ID为KEY,作者ID为VALUE,一条一条的set/get 经测试,图片量为3亿时,一共需要20G左右的内存 经过一些优化后,效果不明显,他们便向Redis的一个开发者咨询解决方案

得到的建议是: 对数据进行分段,使用hash结构 因为hash结构在一定数据量下会进行压缩存储,可以节约很多内存 经过反复测试,在他们的环境下,entries阀值为1000时最合适,超过的话,CPU的压力较大 所以,数据分段的方式为: 1000条数据为一段,放在一个hash表中 例如 图片ID为1234888 他在一个hash表中,这个hash表的key为 1234,里面有1000个field,其中就包括了 888,值为其作者ID

取1234888的作者ID时,就是取得key1234的hashtable中field888的值 经过测试,使用这种方式后,内存的使用量降到了5G左右,效果非常明显 类似的配置项还有:

list-max-ziplistzset-max-ziplist

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2016-04-01

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python使用matplotlib进行可视化时精确控制图例位置

在进行数据可视化或者科学计算可视化时,显示图例会显得很高大上,但是如果能够精确控制图例的显示位置,无疑会显得档次更高。 本文以matplotlib.pyplot...

3476
来自专栏ATYUN订阅号

将Keras深度学习模型部署为Web应用程序

建立一个很酷的机器学习项目确实很不错,但如果你希望其他人能够看到你的作品怎么办呢?当然,你可以将整个项目放在GitHub上,但这只能给程序员看,如果你想给自己家...

5301
来自专栏東雲研究所

启用 TCP BBR 拥塞控制算法

自从 Linux 内核 4.9 开始已经封装了这个新的 TCP 控制算法 BBR。

9639
来自专栏CaiRui

LVS调度算法

内核中的连接调度算法 IPVS在内核中的负载均衡调度是以连接为粒度的。在HTTP协议(非持久中),每个对象从WEB服务器上获取都需要建立一个TCP连接,同一用户...

38610
来自专栏性能与架构

分方式缓存常用的一致性hash是什么原理

一致性hash是用来解决什么问题的? 先看一个场景 有n个cache服务器,一个对象object映射到哪个cache上呢? 可以采用通用方法计算objec...

3709
来自专栏macOS 开发学习

Mac开发跬步积累(一):Cocoa Drawing 之 NSImage imageNamed: 到底做了什么?

首先,NSImage提供了支持多种格式图像数据进行管理的api, 但是NSImage对被其管理的实际图像数据几乎是一无所知的,这是因为NSImage并没有直接与...

1133
来自专栏AI研习社

Github 项目推荐 | 半自动图像标记工具

在构建可以从任何场景检测物体的人工智能系统时,我们需要一个庞大的数据集来训练和测试模型,并发现模型的缺点。现有的图像注释工具能够提供一定的帮助,但是开发者仍要付...

1303
来自专栏大数据文摘

手把手:我的深度学习模型训练好了,然后要做啥?

3582
来自专栏Gaussic

OpenMp多线程编程计时问题 原

在做矩阵乘法并行化测试的时候,在利用<time.h>的clock()计时时出现了一点问题。

702
来自专栏ChaMd5安全团队

三个有趣的脱壳例子

最近看了youtube上的一些视频教程,看到了几个有趣的脱壳方式。这里介绍下。具体的视频教程在MalwareAnalysisForHedgehogs和hashe...

3915

扫码关注云+社区

领取腾讯云代金券