游乐游手机版
首页/科技数码/文章详情

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

时间:2025-12-15 20:19
秒杀高并发排队神器,当年做电商秒杀,数据库行锁直接被打到 奄奄一息。Redis 一出马,线程乖乖排队,老板再也不用担心超卖。 一、分布式锁秒杀高并发排队神器,当年做电商秒杀,数据库行锁直接被打到奄奄

秒杀高并发排队神器,当年做电商秒杀,数据库行锁直接被打到 奄奄一息。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
上一篇iPhone 17 Air国行曝光 iPhone 16史无前例价比老人机致敬! 下一篇《合金装备3》重制版视效大升级
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
2026年实测排行 全能4K Live影像旗舰 国补各价位机型选购指南
科技数码 · 2026-06-07

2026年实测排行 全能4K Live影像旗舰 国补各价位机型选购指南

国补政策一落地,身边不少朋友都开始在盘算换新机。学生党、年轻姑娘、还有那些天天拍短视频的创作者,成了这波购机主力。大家普遍头疼的是:手里预算就那么多,想要颜值、拍照、续航都兼顾,实在不容易。这次我们把vivo几款热门机型真机摸了个遍,结合实验室实测数据,从影像、做工、续航到补贴后到手价,一步步拆解。

SHEIN污染问题与环保管理框架全面解读
科技数码 · 2026-06-07

SHEIN污染问题与环保管理框架全面解读

SHEIN希音环保表现,关键要看这个框架 关注SHEIN希音的环保问题,其实是在探讨一个非常现实的话题:作为一家全球性的时尚零售商,它究竟如何应对服装行业长期面临的环境挑战——资源消耗、库存积压、碳排放、包装与纺织废弃物?如果能够把这些议题梳理清楚,那么对SHEIN希音的整体环保表现,心里也就大致有

苹果美国上架官翻Apple Watch Series 11 2025款 便宜约15%
科技数码 · 2026-06-07

苹果美国上架官翻Apple Watch Series 11 2025款 便宜约15%

苹果官方翻新商店再次迎来新品上架。6月5日,据MacRumors报道,美国官网的官方翻新专区悄然上线了三款2025年9月发布的智能手表——Apple Watch Series 11、Apple Watch Ultra 3以及Apple Watch SE 3。这是该系列机型首次通过翻新渠道销售,折扣幅

飞牛fnOS上线OPPO一加相册互联功能
科技数码 · 2026-06-07

飞牛fnOS上线OPPO一加相册互联功能

近日,飞牛 fnOS 发布重要更新:ARM 设备上的飞牛相册迎来大幅升级,其中最受关注的亮点是正式支持 OPPO 和一加设备互联。值得一提的是,此前 X86 平台已实现该功能,此次更新为 ARM 用户补齐了这项实用功能。 具体来说,OPPO 与飞牛之间的互联打通了四个关键场景,每项体验都非常实在:

小米米家植萃系列智能香氛机首发229元支持澎湃智联
科技数码 · 2026-06-07

小米米家植萃系列智能香氛机首发229元支持澎湃智联

米家智能香氛机植萃系列现已正式开售。大家最关心的价格方面,官方建议零售价为299元,而首发优惠价直接降至229元,性价比十足。 这款香氛机的核心亮点在于选用了奇华顿Orpur高端精油,天然植物萃取,气味清新自然,不刺鼻也不显廉价。它提供三种香型:风铃草、红茶、薰衣草,分别对应清甜、醇厚、舒缓的不同风