老废物乐园

Redis 分布式锁的正确实现:setnx 的那些坑

同一笔订单被扣了两次款:我写的分布式锁形同虚设 十月下旬,财务对账发现 7 笔订单重复扣款。查下来是用户点了两次支付按钮,两个请求几乎同时打到两台不同的应用服务器上,都通过了库存和状态校验,各扣了一次。 我当时的第一反应是"加个锁不就行了",然后写出了这一版: public boolean pay(

Administrator Administrator 发布于 2018-10-24

Redis 内存满了怎么办?过期策略与淘汰策略配置

凌晨两点的告警:Redis used_memory 撞到了 maxmemory 我们的 Redis 是 4.0.2,主从各 4G。某天凌晨收到告警,used_memory 冲到 3.9G,然后业务开始大面积报: redis.clients.jedis.exceptions.JedisDataExce

Administrator Administrator 发布于 2018-08-25

缓存穿透、击穿、雪崩:一次缓存雪崩打挂数据库

六月十三号上午,MySQL 被 3 万 QPS 打挂了 那天早上 9:07,我还在地铁上,DBA 的电话就打过来了:"你们的库 CPU 100%,连接数打满,赶紧看看是不是缓存挂了。" 到公司一看监控,数据库 QPS 从平时的 800 飙到 31000,CPU 100%,连接数 500 打满,大量请

Administrator Administrator 发布于 2018-06-13