-
Lettuce管道中flushCommands()仅发送命令不返回结果,正确做法是先保留各操作返回的RedisFuture,再调用get()或thenApply()获取响应。
-
RedisLua脚本无法实现SCAN分页,因脚本无状态且无法维护游标;唯一可行方案是客户端驱动SCAN分页,Lua仅负责单次结果的模式匹配与截取。
-
volatile-lru不适合社交关系链,因其仅淘汰带过期时间的key,而关系数据作为主数据映射不应设TTL;强行加EXPIRE会引发雪崩与CPU升高;allkeys-lfu更匹配二八流量特征,配合调大maxmemory-samples和合理配置LFU衰减可提升淘汰精准度。
-
XREADGROUP能自动负载均衡,因Redis服务端按轮询策略将新消息分发给组内不同消费者,确保同条消息仅投递一次;未ACK消息超时后可被其他消费者XCLAIM接管,实现故障转移。
-
RedisHash最适合存购物车,因其天然支持按商品ID(field)原子增减、查询、删除;HINCRBY可安全±数量并自动初始化为0,但需应用层校验负数;key为cart:{user_id},value仅存整数数量,过期用EXPIRE设置。
-
不能。PSUBSCRIBE仅支持glob模式(、?、[abc]),不解析冒号分隔的层级语义,news::等多星写法无效;实际可行的是单通配符前缀匹配(如news:),依赖命名规范而非Redis自动路由。
-
Pub/Sub是无存储的实时广播机制,消息断连即丢,适合允许丢失的在线通知;Stream是带ACK的持久化消息队列,支持回溯、消费者组和精确控制,但需手动管理XACK与MAXLEN。
-
Redis6.0的多线程(io-threads)不参与主从同步,因其复制连接走专用路径,绕过I/O线程调度;真正瓶颈在于RDB生成阻塞、从节点CPU解析、网络带宽及repl-backlog过小导致频繁全量同步。
-
RedisPub/Sub不适合异步任务处理,因其无确认机制、无持久化、不支持消费者组与积压缓冲;应选用LPUSH+BRPOP或XADD+XREADGROUP(Stream)实现可靠任务队列。
-
空值缓存过期时间设太长会导致Redis内存耗尽。因空值key不被访问,LRU无法淘汰,且每个约占100–200字节,数量多时迅速撑满内存;安全TTL应为1–5秒,需匹配业务数据可见延迟,并配合布隆过滤器、前缀命名、LFU策略及监控告警综合防控。
-
intset是Redis对全整数小集合的内存优化编码,将整数紧凑存储于连续内存,无指针和字符串头开销,比hashtable节省3–5倍内存;前提为元素均为合法64位有符号整数且数量不超set-max-intset-entries(默认512)。
-
RedisPub/Sub不支持延迟投递,一发即广播、离线即丢失;可靠延时需绕开Pub/Sub,改用ZSET存消息+调度器触发PUBLISH,并用Lua保证原子性。
-
ZREMRANGEBYSCORE默认闭区间,需用“(”语法实现开区间;误删风险高,执行前须用ZRANGEBYSCORE预查;大ZSet范围删除应分批处理,Redis7.0+支持LIMIT,旧版需客户端循环;ZREMRANGEBYRANK与ZREMRANGEBYSCORE语义不同,不可混用。
-
执行replicaofnoone再replicaof不会清空从库数据,仅切换复制源;真正全量同步需确保无运行复制流且master_replid/offset不匹配,必要时手动清空或重启从库。
-
增大repl-backlog-size能修复断连后全量回滚,因其为主节点提供足够大的环形缓冲区暂存断连期间的写命令;只要从节点重连时请求的slave_repl_offset仍在该缓冲区内(即master_repl_offset−slave_repl_offset≤repl_backlog_histlen),即可触发PARTIALRESYNC实现增量同步,避免FULLRESYNC。