-
AOF重写加剧SSD寿命损耗,因其每次均全量生成新文件并原子替换,引发高频页擦除与搬移(写放大);频繁触发(如每小时2–3次)使SSD磨损加速,实测寿命比纯RDB缩短30%+。
-
用SETBIT而非SET存在线状态,因位图内存仅约12.5MB(1亿用户),支持秒级统计与集合运算;需确保用户ID为非负整数、key带日期并设过期,用BITFIELD批量操作,BITCOUNT统计时注意写入逻辑与精度。
-
ZREVRANK返回nil最常见的原因是key不存在或member不在ZSet中;它只对已存在的member生效,且返回0-based排名。
-
Redis和Memcached的主要区别在于功能和适用场景。1)Redis提供丰富的数据结构和持久化功能,适合复杂数据处理和需要数据持久化的场景。2)Memcached专注于简单、高效的键值存储,适用于快速缓存需求。选择时需考虑数据复杂性、持久化需求、性能要求和扩展性。
-
哨兵通过“客观下线”(ODOWN)判断主节点真挂了:单个哨兵连不上仅为主观下线(SDOWN),需至少quorum个哨兵达成一致才触发ODOWN;哨兵间用SENTINELis-master-down-by-addr命令确认,非心跳广播,网络分区可能导致结论不一。
-
Redis客户端重连易打挂新主库,因默认“失败即重试”导致连接风暴;需配置指数退避+随机抖动(如Lettuce用ExponentialBackoffRetry.withJitter)、Go端自定义DialContext重试逻辑,并控制初始延迟50–100ms、最大延迟≤3s、重试8–12次。
-
Redis性能瓶颈主要出现在硬件、配置和应用层面。1.硬件层面:内存不足和CPU性能低下可能导致性能问题。2.配置层面:不当的持久化和网络配置会影响性能。3.应用层面:大Key、大Value和不合理缓存策略是常见问题。通过监控和优化,可以有效提升Redis性能。
-
布隆过滤器必须前置到请求入口,如Web中间件或API网关,在接触Redis或数据库前完成校验;冷启动需预热合法ID,误判率宜设为1%;空值缓存须存"NULL"字符串并设5–300秒短过期;参数校验需在网关/Controller层强校验;需监控空值占比与误判率并告警。
-
延迟双删删的是第一次更新前删缓存、第二次更新DB后延迟再删缓存;前者防旧缓存命中,后者防主从同步期间脏读写入缓存。
-
使用布隆过滤器防护缓存穿透是因为它能快速判断元素是否可能存在,拦截不存在的请求,保护数据库。Redis布隆过滤器通过低内存占用高效判断元素存在性,成功拦截无效请求,减轻数据库压力。尽管存在误判率,但这种误判在缓存穿透防护中是可接受的。
-
MAXLEN是RedisStreams唯一实时限长方式,必须与XADD原子配合使用;~N为近似保留,N为严格上限;XTRIM仅作兜底,非实时;语法中MAXLEN须紧随stream名后,错位即报错。
-
cluster-config-file由Redis集群节点在运行时自动写入,仅在槽分配完成、拓扑变化或重启恢复时更新,用于本地状态持久化而非手动配置。
-
对Redis配置文件进行加密保护是必要的,因为配置文件包含敏感信息,泄露可能导致严重安全问题。具体方法包括:1.使用openssl工具加密文件,如“opensslenc-aes-256-cbc-salt-inredis.conf-outredis.conf.enc”。2.将加密文件存储在受保护目录,并将解密密码存储在环境变量或密钥管理系统中。3.利用Redis5.0及以上版本的动态配置功能,在需要时解密和加载配置文件,如“opensslenc-d-aes-256-cbc-inredis.conf.enc-
-
noeviction策略下写操作直接报错是因为内存达maxmemory后硬性拒绝所有写命令,不释放key也不等待,仅允许读操作,导致“能读不能写”现象。
-
Redis因系统崩溃后的重启和数据恢复可以通过以下步骤实现:1)理解Redis的RDB和AOF持久化机制,根据业务需求选择合适的方式;2)使用redis-check-aof工具修复损坏的AOF文件;3)检查并调整redis.conf文件中的持久化设置;4)对于Redis集群,先移除崩溃节点,重启并恢复数据后再重新加入集群;5)定期使用bgsave命令备份数据,确保数据安全。通过这些步骤,可以有效地重启Redis并恢复数据,保障系统的连续性和数据的安全性。