美文网首页
Redis内存优化

Redis内存优化

作者: Cajesse佳泽 | 来源:发表于2017-06-28 17:23 被阅读0次

Redis 内存优化

官网文档

翻译

使用特殊编码方式存储聚合数据类型

从 Redis 2.2 开始,很多数据结构的占用空间优化到低于一个确定的阈值。 对于 Hash ,List , 由数字组成的 Set , Sorted Set,当元素个数低于一个配置的Length且每个元素的大小小于一个配置的Size 的时候,这些数据结构会以一种非常搞笑的编码方式进行保存,占用空间将缩小到小于原来的十分之一。

这些优化对于用户和API都是透明的,因为这个是CUP和内存级别上的优化,用户对此没有任何感知。上面提到的LengthSize 都是可配置的,在 redis.conf 里面,如下

hash-max-zipmap-entries 512 (hash-max-ziplist-entries for Redis >= 2.6)
hash-max-zipmap-value 64  (hash-max-ziplist-value for Redis >= 2.6)
list-max-ziplist-entries 512
list-max-ziplist-value 64
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
set-max-intset-entries 512

如果一个特殊的值重新编码之后会大于配置值,那么Redis会自动转换到以普通的编码方式来保存。这种方式对较小的值是非常快的,但是如果你想要用在大元素上面,建议你要测试一遍普通方式和特殊编码方式的时间比较在确定是否要这么做。

使用32位的Redis实例

由于32位的指针很小,所以使用32位的Redis在存储Key上面会节省很多内存。但是这样每个实例的最大内存就被局限在4GB 以内。 使用 make 32bit 命令来安装 32位的Redis,RDB和AOF 文件都是兼容32位和64位的,所以不用担心在32位的Redis实例中生产的RDB何AOF文件不能再64位实例中恢复数据。

位和字节级别的操作

从Redis 2.2开始,Redis提供了GETRANGE/SETRANGE/GETBIT/SETBIT四个用于字符串类型Key/Value的命令。通过这些命令,我们便可以像操作数组那样来访问String类型的值数据了。比如唯一标识用户身份的ID,可能仅仅是String值的其中一段子字符串。这样就可以通过GETRANGE/SETRANGE命令来方便的提取。再有就是可以使用BITMAP来表示用户的性别信息,如1表示male,0表示female。用这种方式来表示100,000,000个用户的性别信息时,也仅仅占用12MB的存储空间,与此同时,在通过SETBIT/GETBIT命令进行数据遍历也是非常高效的。

尽可能地使用Hash

尽可能的将你的数据模型抽象到一个散列表里面。比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存储到一张散列表里面.

我做过测试了,确实单独的Key内存占用会大好多,但是一般没人会用单独的Key吧。用json字符串作为Value和用hash差别不大

使用散列结构高效存储抽象的键值对

这节我怎样都看不懂啊 TAT

相关文章

  • Redis内存优化

    参考来源 Redis的内存优化 Redis所有的数据都在内存中,而内存又是非常宝贵的资源。对于如何优化内存使用一直...

  • 一张图搞定redis内存优化及配置

    Redis优化及配置 Redis所有的数据都在内存中,而内存又是非常宝贵的资源。常用的内存优化方案有如下几部分:一...

  • Redis内存优化一

    这一章我们来说一说redis内存优化方面的内容 redis内存优化 主要有两方面 1. 针对键key的优化 ...

  • Redis实践(十六)-内存管理

    1 内存优化介绍 2 Redis内存消耗 3 客户端缓冲区

  • 第8章 理解内存

    理解Redis内存消耗,管理和优化。 1. 内存消耗 1.1 内存使用统计 通过info memory命令获取内存...

  • Redis内存优化

    Redis存储的数据都使用redisobject来封装,包括string、hash、list、set、zset在内...

  • Redis内存优化

    Redis 内存优化 官网文档 翻译 使用特殊编码方式存储聚合数据类型 从 Redis 2.2 开始,很多数据结构...

  • Redis内存优化

    Redis内存优化 1.内存消耗 1.1内存使用统计 属性名属性说明used_memoryRedis 分配器分配的...

  • Redis内存优化

    小的聚合类型数据的特殊编码处理 Redis2.2版本及以后,存储集合数据的时候会采用内存压缩技术,以使用更少的内存...

  • Redis内存优化

    一.redisObject对象 Redis存储的所有值对象在内部定义为redisObject结构体,内部结构如下图...

网友评论

      本文标题:Redis内存优化

      本文链接:https://www.haomeiwen.com/subject/ginucxtx.html