秋招Day15 - Redis - 运维

Redis报内存不足怎么处理?

使用redis-cli INFO memory查看内存使用情况,看看是否达到了最大的内存使用限制。

如果服务器还有可用内存的话,修改redis.conf中的maxmemory参数增加最大内存限制

也可以修改maxmemory-policy修改内存淘汰策略,比如allkeys-lru策略,淘汰最近最久未使用

Redis key过期策略有哪些?

惰性删除:当客户端访问一个key的时候,Redis会检查其是否已经过期,过期则删除并返回nil,优点是不会增加额外的cpu开销,缺点是如果一个过期的key一直不被访问则会一直占用内存

定期删除:每隔一段时间,Redis就随机测试测试一批key,并删除过期的key。

Redis的内存淘汰策略有哪些?

当内存使用接近 maxmemory 限制时,Redis 会依据内存淘汰策略来决定删除哪些 key 以缓解内存压力。

默认是不淘汰策略,内存不足直接报错。

针对所有key的淘汰策略有:lru删除最近最久未使用,具有时间局部性,可以保留当下的热门内容、lfu删除访问频率最低的key,更适合有长期访问模式的系统,ramdom随机删除一些key,不推荐使用。

针对设置了过期时间的key:lru、lfu、ttl(剩余生存时间最短)和random

Redis发送阻塞了怎么解决?

通过MONITOR命令查看当前正在执行的命令,或者通过SLOWLOG命令查看慢查询日志。

通常情况下,大key是导致Redis阻塞的主要原因,比如说直接 DEL 一个包含几百万个元素的 Set,就会导致 Redis 阻塞几秒钟甚至更久。可以用UNLINK解引用代替DEL来异步删除,避免阻塞;或者用SCAN命令将大key分为多个批次删除。

如果Redis进程占用的内存空间过多,操作系统会将内存中的一些物理页置换到磁盘中去,导致Redis变慢,这时应该确认maxmemory设置是否合理,并删除一些不重要的数据

大量的客户端连接也可能导致阻塞,这时检查一下连接池的配置

你可能感兴趣的:(#,Redis,八股,redis,运维,java)