首页 游戏 软件 资讯 排行榜 专题
首页
科技数码
系统不崩的秘籍:Redis的六大非缓存玩法,支撑高并发流量就靠它!

系统不崩的秘籍:Redis的六大非缓存玩法,支撑高并发流量就靠它!

热心网友
37
转载
2025-12-15

秒杀高并发排队神器,当年做电商秒杀,数据库行锁直接被打到 奄奄一息。Redis 一出马,线程乖乖排队,老板再也不用担心超卖。

一、分布式锁

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

秒杀高并发排队神器,

当年做电商秒杀,数据库行锁直接被打到奄奄一息。

Redis 一出马,线程乖乖排队,老板再也不用担心超卖。

// Maven 依赖 org.redisson redisson 3.23.4Config config = new Config();config.useSingleServer().setAddress("redis://127.0.0.1:6379");RedissonClient redisson = Redisson.create(config);RLock lock = redisson.getLock("stock:1001");try { // **30 秒内抢锁,锁 30 秒后自动释放** if (lock.tryLock(30, 30, TimeUnit.SECONDS)) { updateStockInDB(); // 真正的减库存逻辑 }} finally { if (lock.isHeldByCurrentThread()) { lock.unlock(); // **一定记得手动释放** }}

注解

1.tryLock带时间参数,防止死锁。

2.finally释放锁,避免“占着茅坑不拉屎”。

3. 集群场景用RedLock,主节点挂了也能继续嗨。

二、计数器:2 万 QPS 的救火队长

直播在线人数用数据库UPDATE

直接 200 QPS 就跪。

Redis 的INCR让在线人数像坐火箭一样飙升。

Jedis jedis = new Jedis("redis://127.0.0.1:6379");String key = "rate_limit:user:" + userId + ":minute";long count = jedis.incr(key);if (count == 1) { jedis.expire(key, 60); // **首次创建,设 60 秒过期**}if (count > 100) { throw new RuntimeException("手速太快,歇会儿!");}

注解

1.incr原子自增,天然抗并发。

2.expire只在第一次设置,避免每次请求都刷新 TTL。

3. 100 次/分钟阈值可配置,灵活限流。

三、排行榜:ZSET 的凡尔赛舞台

年度博主排行?数据库跑 3 小时,ZSET 5 分钟搞定。

关键是还能实时更新!。

// 点赞一次,分数 +1redisTemplate.opsForZSet() .incrementScore("blog:like:rank", "user:1001", 1);// 取前 10Set> top10 = redisTemplate.opsForZSet() .reverseRangeWithScores("blog:like:rank", 0, 9);// 查个人排名Long rank = redisTemplate.opsForZSet() .reverseRank("blog:like:rank", "user:1001");

注解

1.incrementScore原子操作,并发点赞不丢分。

2.reverseRangeWithScores一次取出成员和分数,减少网络往返。

3.reverseRank查排行 O(log n),再多人也不怕。

四、轻量消息队列:异步快递员

订单高峰 10 倍流量?

把订单先丢 Redis List,后台慢慢消费,爆仓不存在的。

// 生产者jedis.lpush("order_queue", JSON.toJSONString(order));// 消费者while (true) { List msg = jedis.brpop(0, "order_queue"); if (msg != null) { try { processOrder(msg.get(1)); } catch (Exception e) { // 失败丢到重试队列 jedis.lpush("order_retry_queue", msg.get(1)); } }}

注解

1.brpop阻塞读取,CPU 不空转。

2. 失败消息进入retry 队列,可配合延时策略。

3.List 队列简单可靠,但没有 ACK,需自己实现重试。

五、会话共享:分布式登录管家

用户在 A 机器登录,跳到 B 机器就掉线?

用 Redis 做统一 Session 仓库,妈妈再也不用担心我踢用户下线。

# application.ymlspring: session: store-type: redis timeout: 30m redis: host: 127.0.0.1 port: 6379

注解

1.spring-session-data-redis一行配置搞定。

2.SessionID 随机的 UUID + 签名,防伪造。

3. 每次登录重新生成 SessionID,旧 Session 秒失效。

六、地理位置:附近门店秒查

“附近 5 公里有啥好吃的?”

Redis GEO 一出手,5 倍速出结果。

// 添加门店坐标redisTemplate.opsForGeo() .add("shop:locations", new Point(116.4074, 39.9042), "shop:1001");// 查 5 公里内,由近到远GeoResults> results = redisTemplate.opsForGeo() .radius("shop:locations", new Circle(new Point(116.4074, 39.9042), Metrics.KILOMETERS.toMeters(5)), GeoRadiusCommandArgs.newGeoRadiusArgs() .includeDistance() .sortAscending());results.getContent().forEach(r -> System.out.println(r.getContent().getName() + " 离你 " + r.getDistance().getValue() + " 米"));

注解

1.GEOADD一次可插多条,批量效率高。

2.GEORADIUS默认 O(N),但 Redis 用geohash + 跳表,N<10W 稳稳的。

3. 距离单位支持m/km/ft/mi,国际化项目无压力。

七、野路子合集:老码农私货

7.1 滑动窗口限流

String key = "rate_limit:user:" + userId;long now = System.currentTimeMillis();// 清理 60 秒前记录redisTemplate.opsForZSet() .removeRangeByScore(key, 0, now - 60000);// 记录当前时间戳redisTemplate.opsForZSet().add(key, String.valueOf(now), now);// 统计窗口内请求数Long cnt = redisTemplate.opsForZSet().zCard(key);if (cnt > 50) throw new RuntimeException("刷太快,小黑屋见!");

注解

1.ZSET 按时间排序,天然滑动窗口。

2.removeRangeByScore批量清理,O(log n)。

3.zCard计数,内存占用极低。

7.2 乐观锁抢购

jedis.watch("stock:1001");int stock = Integer.parseInt(jedis.get("stock:1001"));if (stock > 0) { Transaction tx = jedis.multi(); tx.decr("stock:1001"); List res = tx.exec(); if (res == null) { // **被其他客户端改了,重试** }}

注解

1.watch + multi + exec保证原子减库存。

2.exec 返回 null即版本冲突,自旋重试即可。

3. 适合秒杀库存少、冲突高的场景。

至此分享完毕,希望以上内容对你有所帮助!

来源:https://www.51cto.com/article/824512.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Redis缓存雪崩终极指南:6招避免系统全线崩溃
科技数码
Redis缓存雪崩终极指南:6招避免系统全线崩溃

抓住“避免缓存缺失、控制并发查库、保护数据库”这三个关键点,就能应对绝大多数高并发挑战。 上一篇推文《缓存击穿:热点Key突然“失踪”?这两招教你稳住阵脚!》结尾,我们预告了Redis缓存三大难题中

热心网友
02.13
Redis缓存穿透原理与解决方案详解,三大难题一次攻克
科技数码
Redis缓存穿透原理与解决方案详解,三大难题一次攻克

今天我们吃透了缓存穿透的原理、危害和解决方案,其实它和缓存击穿、缓存雪崩并称为“Redis缓存三大难题”——三者看似相似,实则核心差异很大,解决方案也各有侧重。 在Redis缓存的实际应用中,咱们常

热心网友
02.09
Redis大Key避坑指南:解决阻塞、服务崩溃等核心难题
科技数码
Redis大Key避坑指南:解决阻塞、服务崩溃等核心难题

今天,我们不拉清单、不列一二三,直接复盘一下:一个 50MB 的大 Key,是如何在几秒钟内完成“完美谋杀”的。 在后端圈子里,有个冷知识:击垮一个千万级并发系统的,往往不是黑客的攻击,而是某个程序

热心网友
02.03
探索Moltbook爆火:我们正亲历这个疯狂时代
AI
探索Moltbook爆火:我们正亲历这个疯狂时代

Agent 能做的真正有价值的事情,比在灌水论坛里抖机灵多太多了。Redis 作者 Antirez 用 Agent 20 分钟搞完了自己以前需要写一个周的 Streams internals 功能,

热心网友
02.02
深入Redis:手写底层代码的核心原理与实战解析
AI
深入Redis:手写底层代码的核心原理与实战解析

新智元报道编辑:倾倾【新智元导读】昨夜,编程界「最后一位武士」Antirez放下手中刀:手工写码,已不再明智。当Redis之父都开始把代码外包给Claude,你还在固执「纯手写」?别做2026年的「

热心网友
01.25

最新APP

恶魔秘境
恶魔秘境
角色扮演 03-29
猫和老鼠华为
猫和老鼠华为
休闲益智 03-29
暗黑之地
暗黑之地
角色扮演 03-28
你比我猜
你比我猜
休闲益智 03-26
锦绣商铺
锦绣商铺
模拟经营 03-26

热门推荐

彭博社:苹果折叠iPhone将是重大改款,全新设计揭秘
网络安全
彭博社:苹果折叠iPhone将是重大改款,全新设计揭秘

IT之家 3 月 30 日消息,彭博社记者马克 · 古尔曼昨天在最新一期《Power On》通讯中表示,他对苹果首款折叠屏手机 iPhone Fold 寄予厚望。他表示,这款手机将成为“iPhone

热心网友
03.30
Intel新款CPU上市两天即涨17%:剖析首发热销溢价值
电脑教程
Intel新款CPU上市两天即涨17%:剖析首发热销溢价值

3月29日消息,Intel全新的Arrow Lake Refresh系列处理器酷睿Ultra 200S Plus已经于3月26日正式上市,包括酷睿Ultra 5 250K Plus和酷睿Ultra

热心网友
03.30
企查查上线智能体数据平台,Token消耗显著下降
科技数码
企查查上线智能体数据平台,Token消耗显著下降

企查查正式推出智能体数据平台(agent qcc com),可通过标准MCP协议对接阿里云百炼、扣子Coze、飞书集成平台等主流Agent平台。该平台针对AI Agent企业级应用面临的模型幻觉、上

热心网友
03.30
张雪赛车WSBK夺九千万A轮融资,封神夺冠与资本新篇
科技数码
张雪赛车WSBK夺九千万A轮融资,封神夺冠与资本新篇

【张雪机车获世界顶级赛事冠军】在3月28日进行的世界超级摩托车锦标赛(WSBK)中量级赛事(葡萄牙站)中,法国车手Valentin Debise驾驶张雪机车(编号53)820RR-RS车型,以领先近

热心网友
03.30
GoPro新品搭载GP3处理器,4月正式发布
科技数码
GoPro新品搭载GP3处理器,4月正式发布

IT之家 3 月 30 日消息,GoPro 上周(3 月 25 日)宣布将在 4 月 19 日-22 日的 NAB Show 2026 展会上发布新一代相机产品,搭载下一代 GP3 影像处理器。据介

热心网友
03.30