总体原则:key的名称不易过长,剩下的所有 能用纯数字表示的尽量用

Redis的每一个键值都是用一个redisObject结构体表示的
结构体中有:
    键值的类型(string/list/hash/set/zset)
    内部编码方式(下面重点讲)
    该键值被多少次引用
    内容指针

若内容指针指的是字符串,则内容指针指向sdshdr的结构体
    (该结构体中 字符串长度、buf中剩余空间、buf字符数组[存字符串])
存储键值空间 = redisObject大小 + sdshfr大小 + 字符串大小

若内容指针指的是数字,则内容指针直接就是数字
存储键值空间 = redisObject大小
 
redis内部预先存有键值为0~9999的数字键值

字符串(编码方式RAW、INT):
RAW redisObject内容指针指“纯字符串”
INT redisObject内容指针指“数字”

散列表(两种编码方式 HT ZIPLIST)
配置文件 hash-max-ziplist-entries 512
         hash-max-ziplist-value 64
当键值的字段个数小于第一个值且字段名、字段值的字节数小于第二个值时用ZIPLIST
ZIPLIST:牺牲“读性能”(O(n))换取极高的“空间利用率”,适合表在较小时使用
HT:字段名和字段值 都是 redisObject ;读性能为O(1)

列表(编码方式 LinkedList ziplist)
ziplist:同上
LinkedList:每个节点都是redisObject的双向列表

集合(编码方式 HT INTSET)
INTSET:集合中全是数字,且数字的个数小于指定值时使用
            每个数字占位可变的动态数组
HT:字段值为nil,在集合缩小时,不会倒退到INSET

有序集合(编码方式 SkipList ziplist)
ziplist:同上
SkipList:(由散列表和跳跃表组成)
        散列表存储元素、分数映射
        跳跃表  排序

Redis(三)节省内部空间优化的更多相关文章

  1. 《闲扯Redis三》Redis五种数据类型之List型

    一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...

  2. DB2支持的三种表空间SMS、DMS、DMS的自动存储

    DB2支持的三种表空间SMS.DMS.DMS的自动存储 DB2中,表空间是数据库与这个数据库中存储的表之间的逻辑层.表空间在数据库中创建,表在表空间中创建.容器是一个物理存储设备.它可以由目录名.设备 ...

  3. 关于tarjan算法的空间优化

    最近随着对tarjan算法理解的加深,我发现用另外一种途径实现tarjan的方法,且可以省去DFN数组,大大节省了空间.经过大量测试,已经无误.以下将分阶段阐述进行优化的过程. 第一阶段 下面来说一下 ...

  4. 第三章 Java程序优化(待续)

    字符串优化处理 String对象及其特点 String对象是java语言中重要的数据类型,但它并不是Java的基本数据类型.在C语言中,对字符串的处理最通常的做法是使用char数组,但这种方式的弊端是 ...

  5. [SHOI2007] 书柜的尺寸 思维题+Dp+空间优化

    Online Judge:Luogu-P2160 Label:思维题,Dp,空间优化 题面: 题目描述 给\(N\)本书,每本书有高度\(Hi\),厚度\(Ti\).要摆在一个三层的书架上. 书架的宽 ...

  6. Redis 入门到分布式 (七)Redis复制的原理与优化

    一.目录 Redis复制的原理与优化 什么是主从复制 全量复制和部分复制 复制的配置 故障处理 开发运维常见问题 二. 什么是主从复制 1.单机有什么问题? 单机如果机器故障,那么久无法及时提供服务: ...

  7. Redis慢查询配置和优化

    目录 一.介绍 二.参数配置 sql动态配置 配置文件设置 三.sql操作 四.优化 一.介绍 慢查询只记录redis执行时间,并不记录redis服务到客户端之间的网络问题. 超过多少毫秒的才被记录 ...

  8. centos 安装oracle 11g r2(三)-----表空间创建

    centos 安装oracle 11g r2(三)-----表空间创建 创建表空间前要保证监听与数据库实例已经启动 1.启动监听 [oracle@localhost ~]$ lsnrctl start ...

  9. OO第三次电梯作业优化

    目录 第三次电梯作业个人优化 前言 优化思路 一.调度器 二.电梯 第三次电梯作业个人优化 前言 由于个人能力有限,第二次电梯作业只能完成正确性设计,没能进行优化,也因此损失了强测分数,于是第三次电梯 ...

随机推荐

  1. IIS发布问题汇总

    1.未能加载文件或程序集“System.Data.SQLite” 在IIS界面选择应用程序池->选择所使用的.net 版本->高级设置->将"使用32位应用程序" ...

  2. Javascript iframe交互并兼容各种浏览器的解决方案

    在Web前端开发中,我们经常会用到iframe这个控件. 但是这个控在内.外交互时,往往各个浏览器所用的关键字不同,很是麻烦,为了能够得到子iframe中的window对象,各家浏览器有着各家的指定, ...

  3. 【原创翻译】初识Unity中的Compute Shader

    一直以来都想试着自己翻译一些东西,现在发现翻译真的很不容易,如果你直接把作者的原文按照英文的思维翻译过来,你会发现中国人读起来很是别扭,但是如果你想完全利用中国人的语言方式来翻译,又怕自己理解的不到位 ...

  4. 【node】使用gulp来维护网站项目

    基本参照此:http://www.gulpjs.com.cn/docs/getting-started/ 1.电脑需要安装好nodejs,安装好的时候会自带npm 2.在命令行中执行命令安装gulp ...

  5. 工作流软件是未来web的支柱

    Web 3.0正在敲门,但是开门的人你永远都想不到:工作流软件. 传统上工作流软件是企业级的业务流程管理工具,但现在随着网络互联程度的加深,工作流软件开始呈现出其作为互联网技术的一面. 诚然,社会化媒 ...

  6. Android学习起步 - AutoCompleteTextView及MultiAutoCompleteTextView控件使用

    大家在用百度搜索时,输入几个词就出现下拉框可选,以下两个控件就具有这个功能 AutoCompleteTextView:只能匹配输入的开始,只有一次匹配 MultiAutoCompleteTextVie ...

  7. Xcode 8 在XIB中布局View尺寸1000*1000

    Xcode 8 中XIB布局变动,在界面未展示之前,所有的View的布局都会给一个1000*1000的初始值,查看视图层级可以看到View拖得很长, 有时候我们在ViewDidLoad中布局的时候会使 ...

  8. html, xhtml和xml

    html, xhtml和xml 1.定义及特点: 1) html:Hyper Text Markup Language 超文本标记语言 是最早写网页的语言,但编码不规范,主要用于控制数据的显示和外观. ...

  9. 是德科技完成对Anite的收购

    是德科技公司(NYSE:KEYS)日前宣布已经完成对Anite 的收购行动.Anite 是业界领先的无线研发软件解决方案供应商.是德科技通过支付大约6 亿美元现金将其收入麾下,旨在支持是德科技发展无线 ...

  10. GetStoredProcCommand和GetSqlStringCommand的区别

    原文:http://www.ithao123.cn/content-4004602.html http://hi.baidu.com/847270942/blog/item/c224dd557ff74 ...