redis maxmemory 0_redis缓存原理

redis maxmemory 0_redis缓存原理1. maxmemory 相关介绍 maxmemory 的作用 设置 redis 可用内存的上限。 maxmemory 的配置 将 maxmemory 设置为零将导致没有内存限制。这是 64 位系统…

redis 的 maxmemory 配置以及 缓存淘汰策略

1. maxmemory 相关介绍

  • maxmemory 的作用

设置 redis 可用内存的上限。

  • maxmemory 的配置

将 maxmemory 设置为零将导致没有内存限制。这是 64 位系统的默认行为,而32位系统使用 3GB 的隐式内存限制。

maxmemory <bytes>

代码100分

2. 如果可用内存达到上限会发生什么

  • redis 将试着根据配置的缓存策略去移除部分数据

  • 当数据删不掉时,客户端在写数据时,服务端会响应错误信息

  • 但是不会影响客户端读取数据

3. redis 有哪些缓存淘汰策略

  • volatile-lru

从设置了过期时间的数据集当中,删除掉最近最少使用的数据

  • allkeys-lru

从所有的数据集当中,移除掉最近最久未使用的key

  • volatile-random

从设置了过期时间的数据集当中,随机选择一个数据进行释放。

  • allkeys-random

从所有数据集当中,随机选择一个数据进行释放。

  • volatile-ttl

从设置了过期时间的数据集当中,选择马上就要过期的数据进行释放操作。

  • noeviction

不删除任意数据,这时如果内存不够时,会直接返回错误。

【但redis还会根据引用计数器进行释放】

redis4.0 新增 LFU

  • volatile-lfu

从设置了过期时间的数据集当中,删除掉最近最不经常使用的数据,

  • allkeys-lfu -> Evict any key using approximated LFU.

从所有的数据集当中,删除掉最近最不经常使用的数据

4. redis LRU 算法

redis 并未采用真正的 LRU 算法,而是采用一种近似 LRU 的算法, 因为真正的 LRU 算法耗费更多的内存,因此 redis 的 LRU 算法并不能选出最佳“淘汰对象”。

它会采样一部分数据,然后在这部分数据中选出需要删除的数据。

但是 Redis 3.0 又对此方法进行了改进,使之更加趋近于真正的 LRU 算法。

采样值可以通过如下方式设置:

代码100分maxmemory-samples 5

实验证明:

maxmemory-samples的大小为 10 时,结果更接近真正的 LRU 算法,但是会消耗更多的 CPU 资源,

当设置为 3 时,效率会更高,但是会丧失准确度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9388.html

(0)
上一篇 2023-02-09
下一篇 2023-02-09

相关推荐

  • 使用matplotlib绘制简洁美观的散点图

    使用matplotlib绘制简洁美观的散点图在数据分析领域中,图表是不可或缺的一部分。在展示数据的时候,散点图是最常用的图表之一。散点图可以显示两个变量之间的关系,通常用于研究变量之间的相关性。在Python中,Matplotlib是一个强大的绘图工具,可以轻松绘制出各种类型的图表。本文将介绍如何使用Matplotlib绘制简洁美观的散点图,并通过实例演示其具体实现方式。

    2024-05-23
    61
  • Python 中 NoneType 的含义及使用

    Python 中 NoneType 的含义及使用在 Python 中,NoneType 是一个非常重要和常见的数据类型。它表示一个不确定的、空的或者缺失的值,通常用于表示一个没有被初始化的变量或者一个函数没有返回值的情况。在本文中,我们将从多个方面对 Python 中 NoneType 的含义及使用进行详细的阐述。

    2024-01-27
    111
  • oracle encrypt_oracle数据库密码策略

    oracle encrypt_oracle数据库密码策略oracle加密encrypt,解密decrypt

    2023-02-07
    151
  • 第02期:MySQL 数据类型的艺术-大对象字段「终于解决」

    第02期:MySQL 数据类型的艺术-大对象字段「终于解决」我以前分享过一篇《MySQL 大对象一例》,今天就来详细说下大对象的优缺点以及使用场景。 我们把 MySQL 的大对象类型分 TEXT / BLOB 和 JSON 两部分来说明。 一、TEXT / …

    2023-02-18
    159
  • hbase的排序规则_hbase架构图

    hbase的排序规则_hbase架构图在网上看过很多HBaes架构相关的文章,内容深浅不一,直到发现了一篇MapR官网的文章https://mapr.com/blog/in-depth-look-hbase-architecture/#…

    2023-02-04
    164
  • Python 列表字符串转数字操作

    Python 列表字符串转数字操作在Python的日常使用中,我们通常会遇到需要将一个字符串列表转换成数字列表的情况。例如,当我们从文件或网络中读取数据时,该数据通常以字符串的形式返回,而需要将其转换为数字后才能进行算术操作等。Python提供了多种方式可以实现字符串列表转换成数字列表的操作。本文将详细介绍这些方法。

    2024-06-08
    52
  • Postgresql执行计划概述「建议收藏」

    Postgresql执行计划概述「建议收藏」执行计划个人理解是一个“点”,“线”,“面”的问题,关系数据库中执行计划是一个同质化的对象,串联起来还是比较容易掌握的,对于一条复杂的sql,所谓的点就是其中单个表的访问方式,线是表之间的连接驱动顺

    2023-03-29
    157
  • 京东数据迁移服务是什么_离线数据迁移

    京东数据迁移服务是什么_离线数据迁移打破数据边界,是数字化时代常挂在嘴边的一句话,数据的价值是在流动中体现的,数据应用也是如此。以往为了满足开发、测试、数据保护容灾和数据分析的需要,我们不断对数据进行复制、备份、迁移,因此数据迁移非常重

    2023-06-03
    154

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注