zoukankan      html  css  js  c++  java
  • redis 各种类型内存优化

    1、关闭vm选项,即vm-enabled 为 no;
    2、Redis Hash是value内部为一个HashMap,如果该Map的成员数比较少,则会采用类似一维线性的紧凑格式来存储该Map, 即省去了大量指针的内存开销,配置如下:
    hash-max-zipmap-entries 1024   成员数量大于将会采用hashmap形式 解决方法是分段
    hash-max-zipmap-value 512 :key的字节大于512字节将会转成hashmap 解决方法是md5加密
    HashMap的优势就是查找和操作的时间复杂度都是O(1)的,而放弃Hash采用一维存储则是O(n)的时间复杂度

    list-max-ziplist-entries 512
    list数据类型多少节点以下会采用去指针的紧凑存储格式。
    list-max-ziplist-value 64 
    list数据类型节点值大小小于多少字节会采用紧凑存储格式。
    set-max-intset-entries 512 
    set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储。

    3、Redis内部实现没有对内存分配方面做过多的优化,在一定程度上会存在内存碎片,不过大多数情况下这个不会成为Redis的性能瓶颈,不过如果在Redis内部存储的大部分数据是数值型的话,Redis内部采用了一个shared integer的方式来省去分配内存的开销,即在系统启动时先分配一个从1~n 那么多个数值对象放在一个池子中,如果存储的数据恰好是这个数值范围内的数据,则直接从池子里取出该对象,并且通过引用计数的方式来共享,这样在系统存储了大量数值下,也能一定程度上节省内存并且提高性能,这个参数值n的设置需要修改源代码中的一行宏定义REDIS_SHARED_INTEGERS,该值默认是10000,可以根据自己的需要进行修改,修改后重新编译就可以了。

  • 相关阅读:
    leetcode【dynamic】【0】
    VIM 常用指令
    《Java多线程编程核心技术》笔记
    log4j配置文件详解
    CSU 1803 2016(同余公式)2016年湖南省第十二届大学生计算机程序设计竞赛
    NYOJ 1233 差值(字符串排序+大数减法)
    HDU 5723 Abandoned country(最小生成树+DFS)
    POJ 1451 T9 字典树
    POJ 2965 The Pilots Brothers' refrigerator 状态压缩+广搜
    POJ 1753 Flip game状态压缩+广搜
  • 原文地址:https://www.cnblogs.com/xiongwei89/p/3604711.html
Copyright © 2011-2022 走看看