上海哪家做网站好动画做a视频在线观看网站
2026/2/20 18:08:32 网站建设 项目流程
上海哪家做网站好,动画做a视频在线观看网站,制作伪装网站,售后服务网站建设用Redis踩过的坑#xff0c;说几个印象深刻的。大Key#xff0c;Redis性能杀手第一名。 一个String存了10MB的JSON#xff0c;一个Hash存了100万个field。你DEL这个Key的时候#xff0c;整个Redis就卡住了。 为什么#xff1f;Redis是单线程。你删一个大Key#xff0c;可…用Redis踩过的坑说几个印象深刻的。大KeyRedis性能杀手第一名。一个String存了10MB的JSON一个Hash存了100万个field。你DEL这个Key的时候整个Redis就卡住了。为什么Redis是单线程。你删一个大Key可能要几百毫秒。这几百毫秒内所有请求都在排队等着。更坑的是大Key过期。Redis定期清理过期Key清到你那个大Key的时候直接卡一下。你可能发现服务每隔一段时间抖一下查半天才发现是这个原因。规避方法单个Key别超过10KB大数据拆小数据。删大Key用UNLINK不要用DELUNLINK是后台异步删的。热Key打爆单节点。秒杀商品的库存、微博热搜、爆款直播间的在线人数。所有流量打同一个Key。Redis Cluster按Key分片一个Key只落一个节点。你集群100个节点也没用热Key那个节点照样被打爆。解决办法就是打散。hot_key变成hot_key_1到hot_key_10读的时候随机选。或者应用层加本地缓存热数据缓存1秒大部分请求就不用打Redis了。缓存一致性没有银弹。先更新DB再删缓存删缓存失败怎么办延迟双删延迟多久合适太短没用太长浪费时间。想了各种方案最后发现都有漏洞。本质问题是缓存和数据库是两个独立存储没有分布式事务必然有不一致的窗口期。你能做的是缩短这个窗口不是消灭它。想清楚业务能容忍多久的不一致。金融场景不能容忍那就别用缓存。电商展示几秒不一致无所谓Cache Aside够用。穿透、击穿、雪崩。面试八股文三连但真遇到还是能搞死人。穿透查不存在的数据缓存没有DB也没有每次都打DB。恶意攻击常用这招。解决布隆过滤器或者缓存空值。击穿热Key过期那一瞬间几万请求同时打到DB。解决热Key不设过期或者加锁只让一个请求去加载。雪崩大量Key同时过期或者Redis挂了。解决过期时间加随机偏移Redis做高可用。分布式锁看起来简单坑多。最基本的坑锁没设过期时间进程挂了锁永远不释放。进阶的坑锁过期了业务没执行完另一个进程拿到锁了两个进程同时跑。更隐蔽的坑DEL释放锁的时候没判断是不是自己的锁把别人的锁删了。正确做法SET key value NX EXvalue用UUID。释放锁用Lua脚本先判断是不是自己的再删ifredis.call(get,KEYS[1])ARGV[1]thenreturnredis.call(del,KEYS[1])elsereturn0end持久化。RDB做快照要fork子进程。数据量大的时候fork很慢fork期间主进程阻塞。AOF文件越来越大rewrite的时候也要fork。建议主节点用AOFappendfsync everysec。从节点开RDB做冷备。别让RDB和AOF rewrite同时触发。集群模式的坑。MGET、事务、Lua脚本要求所有Key在同一个slot。跨slot直接报错。解决Key加hash tag。{user_123}_profile和{user_123}_orders花括号内的部分决定slot这俩就能放一起操作。还有主从切换会丢数据。Redis主从是异步复制主节点挂了没同步到从节点的数据就没了。不能接受就上WAIT命令但性能会受影响。踩这些坑的根本原因是把Redis当成了它不是的东西。它不是数据库重要数据别只存Redis。它不是消息队列虽然有Stream专业的事交给Kafka。它就是个缓存用来解决快的问题。想清楚你要它干什么坑就少一半。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询