-
RedisPub/Sub不支持延迟投递,一发即广播、离线即丢失;可靠延时需绕开Pub/Sub,改用ZSET存消息+调度器触发PUBLISH,并用Lua保证原子性。
-
down-after-milliseconds不是触发故障转移的开关,仅决定哨兵何时标记主节点为主观下线(SDOWN);完成自动切换需满足quorum票数达成客观下线(ODOWN),再经选举和failover-timeout窗口内执行完整流程。
-
MySQL存储引擎是管理数据存储与检索的底层组件,决定数据保存、索引、事务处理方式。InnoDB为默认引擎,支持事务、行级锁和外键,适用于高并发场景;MyISAM不支持事务,但读取性能好,适合查询为主的应用;MEMORY引擎将数据存于内存,适合临时缓存;CSV用于文本数据交互。不同引擎在事务支持、锁机制、索引类型和崩溃恢复等方面特性各异,通过SHOWENGINES;可查看支持的引擎。选择应基于业务需求,如事务需求选InnoDB,统计报表可选MyISAM,以提升性能与稳定性。
-
<p>Redis7.2优化内存淘汰池,将evictionPoolEntry.key由sds改为非持有型char*指针,避免memcpy和重复内存分配,显著降低高采样数下的CPU开销,不改变淘汰逻辑。</p>
-
SpringBoot默认不开启Redis读写分离,纯主从模式下即使配置read-from也无效;必须使用哨兵/集群模式或自定义MasterReplica.connect(),并配合LettuceClientConfigurationBuilderCustomizer注入ReadFrom.REPLICA_PREFERRED才能生效。
-
如何在MySQL中创建数据库并设置不同的字符集编码?使用CREATEDATABASE命令并指定CHARACTERSET和COLLATE选项即可。1)创建命令示例:CREATEDATABASEmydbCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci。2)选择utf8mb4支持扩展字符。3)对于日文数据,可用utf8和utf8_bin排序规则:CREATEDATABASEjpdbCHARACTERSETutf8COLLATEutf8_bin。
-
分片后每个Redis节点必须独立配置持久化,RDB需统一save规则且隔离磁盘路径,AOF应全节点开启并设appendfsynceverysec,避免部分节点未持久化导致数据丢失。
-
缓存空值、布隆过滤器和业务层校验是防御缓存穿透的三层策略:空值需设短过期并避免null值;布隆过滤器须预估容量、全局单例且配合写库更新;业务层应优先校验参数合法性。
-
调小down-after-milliseconds并非提速关键,它仅控制单哨兵标记SDOWN的阈值;真正影响故障转移速度的是探测间隔、quorum共识、hello广播周期及failover-timeout与从节点同步能力的协同匹配。
-
需结合XINFOCONSUMERS与XINFOGROUPS判断Streams实时消费延迟:关注pel-count、pending数、idle值及last-delivered-id与流尾ID的字典序比较,避免误判离线或假死状态。
-
Redis延迟高但CPU正常通常是网络丢包或抖动所致,表现为redis-cli--latency毛刺飙升、ping标准差>10ms或丢包率>0.1%,需用tcpdump抓包分析重传与ACK丢弃,并排查云环境安全组、NAT会话老化及内核TCP参数配置。
-
redis.call()比redis.pcall()更易触发OOM,因其失败即终止,而pcall()返回的错误表常驻Lua栈且累积不释放,RedisLua引擎仅在脚本退出时批量GC。
-
Redis默认单线程设计,仅用一个CPU核,多核需通过部署多个实例分摊压力;Redis7.0的--server-workers仅加速网络I/O,不提升命令执行并发。
-
Redis主从同步中大Key会导致复制中断或延迟飙升,因其单次序列化传输阻塞复制流、触发超时断连及缓冲区溢出;需用渐进式扫描分批拆分并双写保障一致性。
-
不能。PSUBSCRIBE仅支持glob模式(、?、[abc]),不解析冒号分隔的层级语义,news::等多星写法无效;实际可行的是单通配符前缀匹配(如news:),依赖命名规范而非Redis自动路由。