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,可以根据自己的需要进行修改,修改后重新编译就可以了。

  • 相关阅读:
    C# 利用VS自带的WSDL工具生成WebService服务类
    七大管理工具
    在线教育系统
    Redis学习一
    酒店管理系统
    大数据学习一
    nginx负载均衡/反向代理学习一
    微服务学习十
    分布式学习一
    Abstract和Virtual和interface , 派生类中重写 override / new关键字
  • 原文地址:https://www.cnblogs.com/xiongwei89/p/3604711.html
Copyright © 2011-2022 走看看