-
Redis内存过载时jemalloc拒绝分配,是因内部碎片或保留页不足主动返回NULL触发OOMerror,与LinuxOOMKiller无关;关键看INFOmemory中allocator_allocated、active、mapped的剪刀差而非used_memory。
-
XDEL对已消费消息无效,因其仅逻辑删除未被任何消费者组读取的消息;已入PEL的消息调用XDEL会静默返回0,必须用XACK释放再XTRIM裁剪。
-
优先用redis-check-aof--fix自动修复尾部无效数据,若失败则需结合RDB回滚或从节点同步;切勿手动编辑或截断,避免破坏RESP协议完整性。
-
用iptables模拟Redis哨兵网络分区需双向封禁节点间通信(INPUT+OUTPUT),匹配6379/26379端口,确保Quorum计算失效;恢复时须精准删除规则而非清空链,避免锁死服务器。
-
红包拆解必须用RedisLua脚本实现原子操作,通过线段切割法生成严格满足总和与最小值约束的随机金额,并配合EVALSHA调用、兜底校验及集群哈希标签设计确保资金安全与高并发正确性。
-
Redis布隆过滤器不支持动态扩容,BF.RESERVE设定的capacity和error_rate不可修改;扩容需手动迁移数据并切换key,参数选错易致内存激增或OOM。
-
Bitmap用1bit存每日签到状态,1万用户年数据仅13KB,String存“1”/“0”需3.6MB;需按年分key、用BITPOS+BITCOUNT算连续天数,offset须为小整数且避免客户端溢出。
-
缓存空值TTL推荐2–5分钟,用SETEX或set(key,"NULL",300,TimeUnit.SECONDS),避免永不过期或24小时;内容用"NULL"等明确标记,前置参数校验更早拦截无效请求。
-
SETNX不能单独用作分布式锁,因其无法原子性地设置值和过期时间,易导致死锁;必须用SETkeyvalueNXEXseconds原子命令,并配合唯一value和Lua脚本校验解锁。
-
事务的ACID特性是指原子性、一致性、隔离性和持久性。原子性确保事务中的所有操作全做或全不做;一致性保证数据库从一个一致状态转移到另一个一致状态;隔离性防止多个事务并发执行时相互干扰;持久性确保事务提交后其结果永久保存。事务通过redolog、undolog和锁机制保障数据一致性。RedoLog用于崩溃恢复,UndoLog支持回滚和MVCC,锁机制则控制并发访问,避免脏读、不可重复读和幻读。正确使用事务需合理控制事务边界并选择合适的隔离级别,如READCOMMITTED适合大多数场景,REPEATABLE
-
Redisbgsave时内存翻倍并非复制业务数据,而是fork触发COW:内核仅复制页表,写入时才拷贝物理页,导致RSS暴涨;典型信号是used_memory_rss/used_memory比值骤升至2.5+且latest_fork_usec>500ms。
-
在MySQL中创建包含所有可能约束的表可以通过以下步骤实现:1.使用AUTO_INCREMENT自动生成员工ID。2.应用NOTNULL确保必填字段不为空。3.使用UNIQUE确保邮箱地址唯一。4.设定CHECK约束确保工资大于0且名字和姓氏长度至少为2。5.设定PRIMARYKEY为employee_id。6.使用FOREIGNKEY引用departments表的department_id。7.创建INDEX提高last_name查询效率,这样可以确保数据的完整性和一致性。
-
redis-cli的monitor命令可实时打印所有指令但仅限调试环境,因性能开销大、无过滤能力、输出非结构化,生产环境应禁用;推荐用slowlog(设slowlog-log-slower-than为0)替代。
-
Redis客户端重连易打挂新主库,因默认“失败即重试”导致连接风暴;需配置指数退避+随机抖动(如Lettuce用ExponentialBackoffRetry.withJitter)、Go端自定义DialContext重试逻辑,并控制初始延迟50–100ms、最大延迟≤3s、重试8–12次。
-
新消费者收不到旧消息是因为XGROUPCREATE默认从最新偏移($)开始消费,不自动回溯;需显式指定起始ID0或用XREADGROUPSTREAMSmystream0补读,且必须及时XACK避免重复分配。