美文网首页
Redis内存优化

Redis内存优化

作者: GGBond_8488 | 来源:发表于2020-03-26 20:49 被阅读0次

小的聚合类型数据的特殊编码处理

Redis2.2版本及以后,存储集合数据的时候会采用内存压缩技术,以使用更少的内存存储更多的数据。如Hashes-压缩列表,Lists压缩列表,Sets整数集合和Sorted Sets压缩列表,当这些集合中的所有数都小于一个给定的元素,并且集合中元素数量小于某个值时,存储的数据会被以一种非常节省内存的方式进行编码,使用这种编码理论上至少会节省10倍以上内存(平均节省5倍以上内存)。并且这种编码技术对用户和redis api透明。因为使用这种编码是用CPU换内存,所以我们提供了更改阈值的方法,只需在redis.conf里面进行修改即可.

hash-max-zipmap-entries 64 (2.6以上使用hash-max-ziplist-entries)
hash-max-zipmap-value 512  (2.6以上使用hash-max-ziplist-value)
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位的redis,对于每一个key,将使用更少的内存,因为32位程序,指针占用的字节数更少。但是32的redis整个实例使用的内存将被限制在4G以下。使用make 32bit命令编译生成32位的redis。RDB和AOF文件是不区分32位和64位的(包括字节顺序),所以你可以使用64位的reidis恢复32位的RDB备份文件,相反亦然.

位级别和字级别的操作

Redis 2.2引入了位级别和字级别的操作: GETRANGE, SETRANGE, GETBITSETBIT.使用这些命令,你可以把redis的字符串当做一个随机读取的(字节)数组。例如你有一个应用,用来标志用户的ID是连续的整数,你可以使用一个位图标记用户的性别,使用1表示男性,0表示女性,或者其他的方式。这样的话,1亿个用户将仅使用12 M的内存。你可以使用同样的方法,使用 GETRANGESETRANGE 命令为每个用户存储一个字节的信息。这仅是一个例子,实际上你可以使用这些原始数据类型解决更多问题。

尽可能的使用散列表

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

相关文章

  • 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/nekgchtx.html