设置maxmemory之后,配合的要设置缓存数据回收策略。
二、回收策略算法设置
当maxmemory限制到达的时候,Redis将采取的准确行为是由maxmemory-policy配置指令配置的。
以下策略可用:
(1)、noeviction:当到达内存限制时返回错误。当客户端尝试执行命令时会导致更多内存占用(大多数写命令,除了DEL和一些例外)。
(2)、allkeys-lru:回收最近最少使用(LRU)的键,为新数据腾出空间。
(3)、volatile-lru:回收最近最少使用(LRU)的键,但是只回收有设置过期的键,为新数据腾出空间。
(4)、allkeys-random:回收随机的键,为新数据腾出空间。
(5)、volatile-random:回收随机的键,但是只回收有设置过期的键,为新数据腾出空间。
(6)、volatile-ttl:回收有设置过期的键,尝试先回收离TTL最短时间的键,为新数据腾出空间。
以下策略可用:
(1)、noeviction:当到达内存限制时返回错误。当客户端尝试执行命令时会导致更多内存占用(大多数写命令,除了DEL和一些例外)。
(2)、allkeys-lru:回收最近最少使用(LRU)的键,为新数据腾出空间。
(3)、volatile-lru:回收最近最少使用(LRU)的键,但是只回收有设置过期的键,为新数据腾出空间。
(4)、allkeys-random:回收随机的键,为新数据腾出空间。
(5)、volatile-random:回收随机的键,但是只回收有设置过期的键,为新数据腾出空间。
(6)、volatile-ttl:回收有设置过期的键,尝试先回收离TTL最短时间的键,为新数据腾出空间。
使用策略规则:
(1)、如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用allkeys-lru。
(2)、如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用allkeys-random。
redis回收算法,实际不是严谨的LRU算法,而是抽样回收数据,这样算是为了减少消耗内存使用,但是抽样回收的缓存和全部数据回收缓存差异非常小,或者根本就没有。
三、生产使用
(1)、先预测好系统所需要的内存高峰,部署相对应内存的缓存服务器。
(2)、设置maxmemory和相对应的回收策略算法,设置最好为物理内存的3/4,或者比例更小,因为redis复制数据等其他服务时,也是需要缓存的。以防缓存数据过大致使redis崩溃,造成系统出错不可用。牺牲一部分缓存数据,保存整体系统可用性。
相关推荐
redis本地缓存与redis缓存
redis缓存雪崩,redis缓存穿透,redis缓存击穿 redis应对高并发造成的雪崩、穿透、击穿
redis缓存 redis缓存
分布式缓存-基于Redis集群解决单机Redis存在的问题。分布式缓存-基于Redis集群解决单机Redis存在的问题。分布式缓存-基于Redis集群解决单机Redis存在的问题。分布式缓存-基于Redis集群解决单机Redis存在的问题。...
基于 SpringBoot 从0搭建一个企业级开发项目,基于SpringBoot 的项目,并集成MyBatis-Plus、Redis、Druid、Logback ,并使用 Redis 配置 MyBatis 二级缓存。
这里说明下,这个不是增加redis扩展,而是在默认thinkPHP5默认的redis方法上新增其他的方法,现在TP5redis的方法太少了,只有基本的设置取值,连list的方法都没有,这里主要就是针对这种情况新增新的方法,如消息...
mybatis二级缓存 + reads做第三级缓存
redis缓存服务器
这个主要是用作在Mybatis中的Mapping文件中的二级缓存
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware...从2013年5月开始,Redis的开发由Pivotal赞助。
基于springboot最新版本2.1.4.RELEASE,采用jpa为dao层框架,配置redis(redisson)为hibernate的二级缓存。
仿redis缓存Java版轻量级缓存组件LocalCache,基于JVM内存实现数据缓存及过期机制
redis页面缓存html使用redis实现页面缓存.docx
springmvc整合Mybatis,Redis;实现将查询的数据进行二级缓存处理
实现Redis分布式缓存,此文件为相关原理
redis入门: 1、Redis服务器搭建 2、向业务逻辑中添加缓存。 3、使用redis做缓存 4、缓存同步
VB6.0也能轻松访问Redis缓存了。 由fj543原创基于mswinsck控件封装成类模块。简单方便地实现Redis的变量读写、队列读写等操作。
Java 两级缓存框架,可以让应用支持两级缓存框架 ehcache(Caffeine) + redis 。避免完全使用独立缓存系统所带来的网络IO开销问题。J2Cache 是 OSChina 目前正在使用的两级缓存框架(要求至少 Java 8)。第一级缓存...
JFinal + Redis 实现action的数据缓存 ...即可实现redis缓存 需要在Appconfig中configPlugin代码进行插件加入 RedisPlugin appRedis = new RedisPlugin("demo_app", "127.0.0.1", 6378); me.add(appRedis);
代码主要涉及SpringBoot框架搭建,以及MP分页和Redis缓存使用,内容详解可见博主的博客,如有疑问或建议,可以博文留言或加Q群:583138104交流讨论