-
Redis7.0的String类型未新增任何操作指令,所有内存优化均源于SDS编码策略的自动演进,如按长度动态选用sdshdr8/sdshdr16及预分配冗余空间,无需用户干预。
-
RedisPubSub不支持批量publish,因协议层限制且pipeline无法减少网络往返;可行方案是业务层聚合消息为结构化数据(如JSON数组)后单次发送,并合理控制聚合窗口与消息体积。
-
SpringBoot中@Cacheable不支持动态过期时间,因SpringCache抽象层仅支持全局TTL配置;需通过RedisTemplate手动设expire、多CacheManager配置或自定义RedisCacheWriter实现差异化TTL。
-
应通过aof_rewrite_in_progress、aof_pending_rewrite、aof_last_bgrewrite_status三字段组合判断AOF重写是否真正完成:前两者为0且后者为ok才表示成功;仅凭aof_last_rewrite_time_sec或单个字段易误判。
-
Bitmap签到本质是将日期转为从基准日开始的天数差作为offset,用SETBIT操作位;需统一UTC时区、避免手算闰年、单用户单key(如sign:uid:12345)、按月分key更实用,查连续签到须结合日期范围校验offset。
-
单靠DECR会超卖,因其校验库存是否>0与扣减是两步非原子操作,高并发下多个客户端可能同时读到库存=1后均执行DECR导致负数;必须用Lua脚本将判断与扣减封装为单次原子执行。
-
<p>MySQL数据库创建的完整流程包括规划、命名、创建数据库、创建表、权限管理和最佳实践。1.规划时需考虑数据类型、规模、访问频率和扩展性。2.命名应简洁明了并与项目一致,如"projectx_db"。3.使用SQL命令创建数据库并设置字符集和排序规则,如CREATEDATABASEprojectx_dbCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;。4.创建表时遵循规范化设计,避免数据冗余,如CREATETABLEusers(idINTAUTO_
-
dump.rdb文件越积越多是因为Redis默认不自动清理旧快照,每次bgsave生成新文件但保留旧文件,需依赖外部脚本按时间戳安全清理。
-
Redis不设maxmemory时不会触发淘汰机制,因默认策略noeviction且不启动任何淘汰逻辑,内存持续增长直至OOMKiller强杀进程。
-
SDIFF不能直接找出“新增关注”,因其仅执行集合差运算且不记录时间顺序;需先构建两个语义明确的快照集合(如按日期命名),再用SDIFF计算差集,否则易因键名错误、空键或客户端处理问题导致结果异常。
-
Redis6+集群启用TLS需版本≥6.0且编译时启用OpenSSL(makeBUILD_TLS=yes),OpenSSL≥1.1.1,所有节点共用同一CA证书,配置必须包含tls-cert-file、tls-key-file、tls-ca-cert-file、tls-clusteryes、tls-replicationyes,客户端需指定--cacert,证书更新须滚动重启。
-
everysec模式下主线程不阻塞,而是将fsync请求提交给后台线程异步执行;实际落盘延迟受I/O负载和内核参数影响,可能数秒甚至失败,连续两次失败则降级为no;监控aof_pending_bio_fsync和aof_delayed_fsync可判断磁盘I/O是否瓶颈。
-
RedisPub/Sub超时主因是TCP连接中断或服务端阻塞,需独立配置订阅连接、启用tcp-keepalive、禁用中间设备断连,并监控blocked_clients与slowlog。
-
哨兵节点启用密码认证但未提供密码导致SENTINELmaster报NOAUTH错误;需在sentinel.conf中配置sentinelauth-pass,并手动auth;注意端口、master-name一致性及flags等字段含义。
-
缓存雪崩主因是大量key过期时间高度趋同,需通过扫描TTL、监控expired_keys曲线及检查写入逻辑验证;应采用SETEX或SET...EX原子命令,在基础过期时间上叠加5%–20%随机偏移,并确保所有写入路径(含定时任务、MQ、后台)均覆盖随机化。