如果达到设置的上限,Redis的写命令会返回错误信息,(但是读取的操作还是可以正常的进行 返回)或者可以将Redis当缓存来配置淘汰机制,当Redis达到内存上限时旧数据会被冲刷掉。
在 Redis 中,可以使用配置淘汰策略来管理缓存的过期和淘汰机制。Redis 提供了几种淘汰策略,包括 volatile-lru
、volatile-ttl
、volatile-random
、allkeys-lru
、allkeys-random
和 noeviction
。你可以根据具体需求选择适合的策略。
示例代码:
public void set(String key, String value, int expirationSeconds) {
try (Jedis jedis = jedisPool.getResource()) {
// 设置键值对
jedis.set(key, value);
// 设置过期时间
jedis.expire(key, expirationSeconds);
}
}
public String get(String key) {
try (Jedis jedis = jedisPool.getResource()) {
// 获取值
return jedis.get(key);
}
}
public static void main(String[] args) {
RedisCacheExample redisCache = new RedisCacheExample();
// 设置缓存,并指定过期时间为60秒
redisCache.set("key1", "value1", 60);
// 获取缓存值
String value = redisCache.get("key1");
System.out.println("Value: " + value);
}
在 set
方法中,我们使用 jedis.set
来设置键值对,并使用 jedis.expire
设置键的过期时间。这样,当超过指定的过期时间后,Redis 会自动将键从缓存中淘汰。
8种淘汰策略
假如Redis当中的所有键都没有过期,而此时内存满了,那么客户端继续执行set等命令时,Redis会 怎么处理呢?Redis为我们提供了不同的淘汰策略来处理这种场景。
分别是volatile-lru、allkeys-lru、volatile-lfu、allkeys-lfu、volatile-random、allkeys-random、volatile-ttl、noeviction