引语

这个章节主要讲解了三部分内容:

  • 如何设计并管理Redis的键以及与其关联的数据结构;
  • 了解并使用Redis客户端对象映射器;
  • 介绍如何利用大O标记来评估Redis性能。

键与数据结构

我们先来看书中的一段原话:

运行32位还是64位版本的Redis将决定Redis键大小的实际限制。对于32位的版本来说,任何长于32的键名需要更多的字节空间,因此增加了Redis的内存使用。使用64位版本的Redis允许更长的键长度,但是对于短小的键来说,也会分配完整的64位空间,从而导致额外的空间浪费。

Redis本身对于键的命名本身并没有做过多的限制,但在实际的应用场景中,我们的Redis服务器不大可能给单一业务来使用,如果没有相关规范,开发A使用了名称“RedisKey_1”,开发B也使用了名称“RedisKey_1”,但他们并没有去做沟通,那么业务就很容易出现问题;又或者去使用A、B、C、D、1、2、3、4这种无意义的Key,即不利于阅读,也很容易冲突。书的原文中通过大量篇幅列举了如何去给Key命名,总结下来有三点:

  1. 不推荐太长的键,这样做不仅会大量消耗内存,也会提高查找的计算成本,也会让其他开发者感到困惑;
  2. 不推荐太短的键,例如使用“u_1”这种形式的键,虽然很短,但实在是得不偿失,不仅仅让开发者感到困惑还提高了键冲突的可能;
  3. 官方推荐统一的命名,如:lib

    深入理解Redis(一)——高级键管理与数据结构的更多相关文章

    1. 深入理解Redis——(总纲)

      前言 Redis这个东西,我来来回回的也搞了好几遍,之前更偏向于实战,很多时候只知其然而不知其所以然,最近借阅了一本<深入理解Redis>,就系统的整理一下. 为何选择Redis 开源免费 ...

    2. <深入理解redis>读书笔记

      chapter2 键管理与数据结构 对大多数redis解决方案而言,键的命名设计至关重要.对于管理来说,内存消耗和redis性能都与数据结构设计相关.所以对开发者而言,最好有数据结构的命名文档规范. ...

    3. 深入理解Redis主键失效原理及实现机制

      http://blog.jobbole.com/71095/ 对于缓存失效,不同的缓存有不同的处理机制,可以说是大同中有小异,作者通过对Redis 文档与相关源码的仔细研读,为大家详细剖析了 Redi ...

    4. 深入理解Redis中的主键失效及其实现机制

      参考:http://blog.sina.com.cn/s/articlelist_1221155353_0_1.html 作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Reids ...

    5. 深入理解Redis主键失效原理及实现机制(转)

      原文:深入理解Redis主键失效原理及实现机制 作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Redis 也不例外.在 Redis 提供的诸多命令中,EXPIRE.EXPIREA ...

    6. Redis(二)数据结构与键管理

      一.基础知识 1.全局命令 keys *   :查看所有键 dbsize:返回当前数据库中键的总数 exists key:检查键是否存在 del key ... :删除键 expire key sec ...

    7. Redis键管理

      Redis键管理 Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis > COMMAND KEY_NAME redis > SET w3c ...

    8. API的理解和使用——键管理

      核心知识点: 1.键重命名:rename和renamenx,使用renamenx时newkey必须不存在,重命名后会使用del删除原来的键,如果值比较大也会会造成阻塞. 2.随机返回一个值:rando ...

    9. Redis学习笔记(三)redis 的键管理

      Redis 的键管理 一.Redis 数据库管理 Redis 是一个键值对(key-value pair)的数据库服务器,其数据保存在 src/server.h/redisDb 中(网上很多帖子说在 ...

    随机推荐

    1. 在Python中利用CVXOPT求解二次规划问题

      工作中需要用到cvxopt,cvxopt安装有坑,大家注意下.1.首先一定要卸载numpy,无论是直接安装的,还是anaconda安装的,主要是必须用whl安装numpy才不会有包的冲突2.二次规划包 ...

    2. 浏览器 <html>相关

      若页面需默认用极速核,增加标签:<meta name="renderer" content="webkit">  https://blog.csdn ...

    3. What is the difference between rhel 6 and rhel7

      What is the difference between rhel 6 and rhel7 difference rhel 6 RHEL 7 release date 10 NOV 2010 as ...

    4. CentOS6.8 安装python2.7,pip以及yum

      由于CentOS6.8里自带的yum所依赖的python是2.6.66版本,但是安装pip至少要求python是2.7版本,因而原有的2.6并不能卸载,又得安装新的2.7.之前安装的时候强制卸载了2. ...

    5. 一个电商项目的Web服务化改造6:单元测试4步走,构造数据、执行操作、断言、回滚

        最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA.     有点挑战,做完了,会有很大进步. 单元测试,在很早之前的文章已经介绍过.     可以在这里看到相关的 ...

    6. JPA学习(基于hibernate)

      参考博客:https://blog.csdn.net/baidu_37107022/article/details/76572195 常用注解: https://blog.csdn.net/eastl ...

    7. nyoj_212_K尾相等数_210402272239

      K尾相等数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 输入一个自然数K(K>1),如果存在自然数M和N(M>N),使得K^M和K^N均大于等于100 ...

    8. C. Vladik and Memorable Trip DP

      C. Vladik and Memorable Trip time limit per test 2 seconds memory limit per test 256 megabytes input ...

    9. S - Best Reward 扩展KMP

      After an uphill battle, General Li won a great victory. Now the head of state decide to reward him w ...

    10. Hibernate数据缓存攻略

      目录 第一章 缓存策略概述 第二章 hibernate不使用缓存的问题 第三章 一级缓存介绍 第四章 二级缓存 第五章 一二级缓存对比及总结 源代码: https://github.com/weili ...