引语

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

  • 如何设计并管理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. 浅谈jQuery宽高及其应用

      [前言] 今天讲了讲jQuery各种元素宽高的获取和设置,下面简单总结下,希望对各位小伙伴有所帮助 [主体] 补充知识点: (1)width()返回结果无单位,css("width" ...

    2. Android组件化最佳实践 ARetrofit原理

      ARetrofit原理讲原理之前,我想先说说为什么要ARetrofit.开发ARetrofit这个项目的思路来源其实是Retrofit,Retrofit是Square公司开发的一款针对Android网 ...

    3. (1)搜索广告CTR预估

      https://www.cnblogs.com/futurehau/p/6181008.html 一.广告投放系统 广告系统包含多个子系统.除了上图所示的广告投放系统外,还包含商业系统(广告库的获得) ...

    4. Unity jointmoto

      jointmoto是模拟电机的,他的参数包括了最高车速和最大扭矩 扭矩总是正数,而目标车速决定了方向

    5. Scrapy下载器中间件用法示例

      1.爬虫文件httpbin.py # -*- coding: utf-8 -*- import scrapy class HttpbinSpider(scrapy.Spider): name = 'h ...

    6. RESTful API - 介绍

      目录 RESTful API 介绍 RESTful介绍 RESTful API设计指南 API与用户的通信协议 域名 版本(Versioning) 路径(Endpoint) 浏览器请求方式(metho ...

    7. Golang之路

      目录 Golang之路 Golang之路 Golang(一) - 开篇必须吹牛逼 Golang(二) - 第一个go程序和基本语法 Golang(三) - 函数 Golang(四) - 流程控制 Go ...

    8. Master Nginx(6) - The Nginx HTTP Server

      Nginx's architecture The HTTP core module The server Logging Finding files Name resolution Client in ...

    9. 清北学堂模拟赛d1t4 一道图论好题(graph)

      题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,不仅有边权还有点权. LYK给出了一个子图的定义,一张图G’={V’,E’}被称作G的子图,当且仅当 ·G ...

    10. [bzoj2467][中山市选2010]生成树_快速幂

      生成树 bzoj-2467 中山市选2010 题目大意:题目链接 注释:略. 想法:首先,考虑生成树的性质.每两个点之间有且只有一条路径.我们将每个五边形的5条边分为外面的4条边和内部的一条边,在此简 ...