-
Redis6.0+的Pub/Sub不阻塞主线程,因消息分发改由独立客户端上下文异步处理;而5.x及更早版本中publish同步遍历订阅者,网络慢或缓冲区满时会阻塞主线程。
-
主键和外键的关系是:主键唯一标识表中的每一行数据,而外键通过引用主键建立表之间的联系,确保数据的完整性和关系的有效性。主键确保数据唯一性,如用户ID在用户表中;外键则实现表间关联,如订单表中的用户ID引用用户表的主键。在实际应用中,需考虑数据完整性、性能优化和维护成本,找到最佳平衡点。
-
RedisStream不受maxmemory-policy淘汰机制影响,仅XADD的MAXLEN/MINID参数可在写入时截断数据;MAXLEN加~为近似截断,不加则严格控制条数,且只从最老端删除;消费者组未XACK会导致PEL积压,MAXLEN无法清理。
-
根本原因是repl-backlog-size过小或网络闪断超时,导致从节点重连时偏移量超出缓冲区范围而无法增量同步,被迫触发全量同步。
-
SDIFF不能直接找出“新增关注”,因其仅执行集合差运算且不记录时间顺序;需先构建两个语义明确的快照集合(如按日期命名),再用SDIFF计算差集,否则易因键名错误、空键或客户端处理问题导致结果异常。
-
不能。AOF是无时间戳的追加日志,不支持按时间点截断;需人工结合外部线索定位字节偏移或命令位置,再手动裁剪,并通过临时实例校验状态。
-
Redis单个STRING超10MB必须拆分,建议512KB内切片并用GETRANGE/SETRANGE操作;BigHash应按访问频次和语义拆为小Hash,禁用HGETALL;一致性靠Lua脚本或状态字段+重试保障。
-
Redis延迟高但CPU正常通常是网络丢包或抖动所致,表现为redis-cli--latency毛刺飙升、ping标准差>10ms或丢包率>0.1%,需用tcpdump抓包分析重传与ACK丢弃,并排查云环境安全组、NAT会话老化及内核TCP参数配置。
-
不能直接用RedisPub/Sub做缓存一致性保障,因其不保证消息可达,订阅者离线时消息丢失,无重试、ACK或持久化机制;必须结合RedisStream落地事件+数据库状态校验实现最终一致。
-
如何在MySQL中创建数据库并设置不同的字符集编码?使用CREATEDATABASE命令并指定CHARACTERSET和COLLATE选项即可。1)创建命令示例:CREATEDATABASEmydbCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci。2)选择utf8mb4支持扩展字符。3)对于日文数据,可用utf8和utf8_bin排序规则:CREATEDATABASEjpdbCHARACTERSETutf8COLLATEutf8_bin。
-
ZUNIONSTORE合并多个ZSet时相同member的score默认相加;海量数据下会严重阻塞Redis主线程;需注意目标key编码、memberID统一及分批合并等实践要点。
-
Bitmap用1bit存每日签到状态,1万用户年数据仅13KB,String存“1”/“0”需3.6MB;需按年分key、用BITPOS+BITCOUNT算连续天数,offset须为小整数且避免客户端溢出。
-
哨兵必须和业务走不同网卡,以避免业务流量干扰心跳包导致误判下线;需绑定专用网卡IP、隔离哨兵间通信、禁用DNS解析并校验hosts、防火墙等全链路配置。
-
AOF文件无法直接看出某条key被谁改过,因其仅记录命令文本,不包含时间戳、客户端ID或用户标识;需通过业务层打标或Proxy日志实现审计溯源。
-
应先用EXISTS检查key存在,再用TYPE校验类型是否为string,因GET对非string类型会直接报错且无法捕获;TYPE返回值严格区分大小写和拼写,须用==全等比较。