Redis 内存满了怎么处理
命令:
redis-cli info memory ==》
info命令可以显示redis服务器的许多信息,包括服务器基本信息、CPU、内存、持久化、客户端连接信息等
等;memory是参数,表示只显示内存相关的信息。
redis-cli config get maxmemory===》看有没有上限
redis-cli config get maxmemory-policy====》淘汰策略
redis-cli --bigkeys================》edis 内存分布,扫 big key
=======淘汰策略===========================
maxmemory-policy noeviction
那内存满了之后,写命令直接报错。读没事,写不进去。
如果是:
maxmemory-policy allkeys-lru
Redis 会从所有 key 里找最近较少使用的淘汰。
如果是:
maxmemory-policy volatile-lru
只会从设置了过期时间的 key 里淘汰。没 TTL 的 key,它不动。
big key。
Redis 内存满,不一定是 key 数量多,也可能是几个大 key 把内存打穿。比如有人把用户几千条消息一次性塞进一个 List,或者把全量商品 JSON 塞成一个 String。
=====================限制redis的大小=================================
public boolean putCacheJson(String key, String json, Duration ttl) {
if (key == null || json == null) {
returnfalse;
}
int bytes = json.getBytes(StandardCharsets.UTF_8).length;
if (bytes > 256 * 1024) {
log.warn("skip large redis value, key={}, size={}KB", key, bytes / 1024);
returnfalse;
}
redisTemplate.opsForValue().set(key, json, ttl);
returntrue;
}

浙公网安备 33010602011771号