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;
}

posted @ 2026-07-01 22:30  KLAPT  阅读(3)  评论(0)    收藏  举报