当 Redis 内存用完时,Redis 会根据所配置的内存策略来处理新的写入请求。如果 Redis 配置了 maxmemory 策略,当内存用完时,Redis 会根据所配置的 maxmemory-policy 策略来决定如何处理新的写入请求。常见的 maxmemory-policy 策略有以下几种:
1. volatile-lru:Redis 会尝试从已设置过期时间的 key 中,选择最少使用(Least Recently Used)的 key 进行删除。
2. allkeys-lru:Redis 会选择最少使用的 key 进行删除,包括已设置过期时间和未设置过期时间的 key。
3. volatile-random:Redis 会从已设置过期时间的 key 中随机选择一个进行删除。
4. allkeys-random:Redis 会从所有 key 中随机选择一个进行删除。
5. volatile-ttl:Redis 会从已设置过期时间的 key 中,选择剩余时间最短的 key 进行删除。
6. noeviction:当内存用完时,Redis 不会删除任何数据,而是直接返回错误。
需要注意的是,如果 Redis 配置了 maxmemory 策略,当内存用完时,Redis 不会再接受新的写入请求,直到有 key 被删除或者内存被释放。因此,应该根据实际情况进行合理的配置,以防止 Redis 内存用尽导致应用程序崩溃。