chapter2 键管理与数据结构

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

chapter3 内存管理优化

  rdbchecksum

  默认yes,将65位循环冗余验证码放在RDB快照的末尾,作为防止文件损坏的一种手段。当redis产生一个子进程将快照保存到磁盘时,校验会增加10%的内存使用。

  activerehashing

  默认yes。hash就是找到一种数据内容和数据存放地址之间的映射关系。

  哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

  redis中的主hash table将主键与对应的值进行关联。每隔100ms重新hash一次,就是释放删除了键占用的内存空间。

  如果有非常高的高并发低延迟要求,可以设为no。

  repl-disable-tcp-nodelay

  tcp-nodelay:直接发送,关闭nagle算法(累积大的数据包,避免网络中有过多的小数据包)

  默认是no,就是在主从复制中,master直接发送同步数据到slave,没有延迟。

  设为yes,则会节省带宽,合并发送小包。但会有40ms以上的延迟。

  前者关注一致性,后者关注性能。在高并发下,建议设置yes。

  maxmemory

  硬性设定最大内存。不设定的话,如果redis在增长中不断向系统申请内存而达到系统上线,系统可能会把redis杀掉,导致更大故障。

  所以这个参数是要监控的,监控已用内存和最大内存的比例,达到阀值就报警,然后人为去考虑是不是改maxmemory。

  maxmemory-policy

  默认为noeviction ,就是达到硬性上限后,客户端无法再写入,这显然会引起问题。

  还有多种键驱逐策略。如果redis中的数据比较重要不能被删除,那就不能设置这些驱逐策略,而要关注maxmemory不要被用光。如果业务认为可以驱逐,那就按场景设置键驱逐策略

  • noeviction : 不会对键进行驱逐,当达到内存限制时,添加数据的命令将会返回错误。
  • allkeys-lru : 当达到内存限制时,驱逐最近最少使用的数据(LRU)。
  • volatile-lru : 只对设置了过期时间的键进行 LRU 驱逐。如果没有键设置了过期时间,将会返回错误。
  • allkeys-random : 对所有键进行随机驱逐。
  • volatile-random : 只对设置过期时间的键进行随机驱逐。如果没有键设置了过期时间,将会返回错误。
  • volatile-ttl : 只对设置了过期时间的键进行驱逐,优先驱逐即将过期的键。同样如果没有键设置了过期时间,将会返回错误。

  

  

<深入理解redis>读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. SpringBoot Controller找不到视图路径

    在启动类加注解@ComponentScan("com.controller")即可,括号里表示Controller所在包名. 参考:https://blog.csdn.net/ji ...

  2. 洗牌函数[打乱数组的顺序] slice()的新运用 [原来arr.slice(start, end) 的start不是必需的]

    function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1) + min) } functio ...

  3. redis介绍及搭建

    redis介绍 Redis最适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed(以写入磁盘的方式进行同步,实现持久化)的功能,跟传统意义上的 ...

  4. 143、Java内部类之访问方法中定义的参数或变量

    01.代码如下: package TIANPAN; class Outer { // 外部类 private String msg = "Hello World !"; publi ...

  5. WEB, Flask - Session&Cookie

    参考: https://blog.csdn.net/nunchakushuang/article/details/74652877 http://portal.xiaoxiangzi.com/Prog ...

  6. 从系统引导菜单禁用Hyper-V

    1, 从当前引导运行的系统复制一个新引导菜单项: bcdedit /copy {current} /d "Win10 NO_HV" 这时候cmd会输出新引导项的 guid, 复制出 ...

  7. python的沙盒环境--virtualenv

      VirtualEnv用于在一台机器上创建多个独立的python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装. 使用 VirtualEnv 的理由: 隔离项目之间 ...

  8. BurpSuite 1.7.32 Cracked 破解版[注册机]下载【无后门版】

    首先看一下我的注册后的: 注册机的使用也很简单,首先打开burp-loader-keygen.jar文件,然后随便填写license text,比如我填写的是:mrxn.net效果如下图: 然后点击m ...

  9. ROS学习笔记10-写一个简单的订阅者和发布者(C++版本)

    本文档来源于:http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29 写发布者节点如前所述,节点是连接到RO ...

  10. SystemVerilog Assertion 设计、调试、测试总结(3)

    上两篇主要是讲述断言的概念,基本语法,总结等等 这一篇主要是以PPT的形式展示各个场景下关于断言的应用. 为了在设计中加入断言的功能,因此需要写一个DUT.如下: `define `define fr ...