zoukankan      html  css  js  c++  java
  • Redis之最大内存置换策略

    0.前言

    Redis默认最大内存大小是应用程序可访问的内存大小, 32位windows下是2GB, linux下是3GB. 64位下可以访问的内存为2^64字节, Redis提供了maxmemory字段来限制使用的最大内存. 既然提供了最大内存限制, 那么当我们程序达到最大值时, Redis使用了多种策略进行置换.Redis建议最大内存设置为物理内存的一半。

    1.Redis置换策略字段maxmemory-policy

    volatile-lru : 对具有生存周期的key进行LRU算法置换.
    volatile-random : 对具有生存周期的key进行随机置换.
    volatile-ttl : 对具有生存周期的key随机进行抽样, 置换出抽样中生存周期最短的.
    allkeys-lru : 对整个db进行LRU算法置换
    allkeys-random : 对整个db进行随机置换
    noeviction : 不进行置换

    volatile-random和allkeys-random策略, Redis直接在相应的数据集上随机并置换.

    volatile-ttl需要抽样, 抽样的大小由maxmemory-samples控制, 默认maxmemory-samples为5, 抽样越大算法精确度越高,但是消耗也越大.

    volatile-lru和allkeys-lru是对抽样的数据中选出最近最久未使用的Key置换出去.这里抽样的大小默认是16, 如果我们设置maxmemory-samples并且大于16的话, 抽样值和最大的保持一致.Redis设置了一个可置换池, 大小为16, 每次先进行抽样, 抽样之后与置换池中的数据进行比较, 选出最近最久未使用的16个Key放入置换池中, 从置换池中再选择一个Key进行置换.

  • 相关阅读:
    面向对象与面向过程
    mul 指令
    Debug 的使用
    子域名扫描器
    div 指令
    C Primer Plus学习笔记(十三)- 结构和其他数据形式
    C Primer Plus学习笔记(十一)- 存储类别、链接和内存管理
    BugkuCTF WEB
    BugkuCTF 逆向
    C Primer Plus学习笔记(十)- 字符串和字符串函数
  • 原文地址:https://www.cnblogs.com/ourroad/p/4912365.html
Copyright © 2011-2022 走看看