zoukankan      html  css  js  c++  java
  • redis 提供 6种数据淘汰策略

    淘汰策略的原因

    在 redis 中,允许用户设置最大使用内存大小 server.maxmemory,在内存限定的情况下是很有用的。譬如,在一台 8G 机子上部署了 4 个 redis 服务点,每一个服务点分配 1.5G 的内存大小,减少内存紧张的情况,由此获取更为稳健的服务。

    6中淘汰策略

    redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:

    volatile-lru:从设置了过期时间的数据集中,选择最近最久未使用的数据释放;
    allkeys-lru:从数据集中(包括设置过期时间以及未设置过期时间的数据集中),选择最近最久未使用的数据释放;
    volatile-random:从设置了过期时间的数据集中,随机选择一个数据进行释放;
    allkeys-random:从数据集中(包括了设置过期时间以及未设置过期时间)随机选择一个数据进行入释放;
    volatile-ttl:从设置了过期时间的数据集中,选择马上就要过期的数据进行释放操作;
    noeviction:不删除任意数据(但redis还会根据引用计数器进行释放),这时如果内存不够时,会直接返回错误。
    

    记忆方式:
    单词组成:3个volatile开头的,2个all_keys开头。都是lru,random,只有volatile有ttl方式。最后加一个noeviction
    volatile:指的都是快过期的数据集。
    all_keys:是所有的数据集。
    lrc:是选择最近长时间不使用的,一般用作缓存机制。
    random:就是随机选一个。
    ttl:就是过期时间的设置
    noeviction:不做任何设置

    默认的内存策略是noeviction,在Redis中LRU算法是一个近似算法,默认情况下,Redis随机挑选5个键,并且从中选取一个最近最久未使用的key进行淘汰,在配置文件中可以通过maxmemory-samples的值来设置redis需要检查key的个数,但是检查的越多,耗费的时间也就越久,但是结构越精确(也就是Redis从内存中淘汰的对象未使用的时间也就越久~),设置多少,综合权衡。

    一般来说,推荐使用的策略是volatile-lru,并辨识Redis中保存的数据的重要性。对于那些重要的,绝对不能丢弃的数据(如配置类数据等),应不设置有效期,这样Redis就永远不会淘汰这些数据。对于那些相对不是那么重要的,并且能够热加载的数据(比如缓存最近登录的用户信息,当在Redis中找不到时,程序会去DB中读取),可以设置上有效期,这样在内存不够时Redis就会淘汰这部分数据。

    配置文件

    # maxmemory <bytes>
    # volatile-lru -> remove the key with an expire set using an LRU algorithm
    # allkeys-lru -> remove any key according to the LRU algorithm
    # volatile-random -> remove a random key with an expire set
    # allkeys-random -> remove a random key, any key
    # volatile-ttl -> remove the key with the nearest expire time (minor TTL)
    # noeviction -> don't expire at all, just return an error on write operations
    # The default is:
    # maxmemory-policy noeviction
    

    我们可以设置maxmemory ,当数据达到限定大小后,会选择配置的策略淘汰数据

  • 相关阅读:
    Azure存储账户的日志分析方法
    导出zabbix监控数据
    centos7下kubernetes(18。kubernetes-健康检查)
    centos7下kubernetes(17。kubernetes-回滚)
    unity接入安卓SDK,与安卓相互通信
    (转)坐标 旋转 计算
    矩阵运算试验
    photonServer学习之连接数据库
    C#委托链
    git命令大全
  • 原文地址:https://www.cnblogs.com/c-x-a/p/10948740.html
Copyright © 2011-2022 走看看