首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

工作中,Redis的15种使用场景

工作中,Redis的15种使用场景

大家好,我是王哥呀。

从清晨的新闻推送,到深夜的直播互动;从地铁扫码的毫秒响应,到跨洋支付的交易锁扣——Redis早已渗透数字世界的每个毛细血管。它不仅是一把打开高并发之门的钥匙,更是开发者手中让数据起舞的指挥棒。

今天,让我们揭开Redis的15种魔法场景,看它如何用代码谱写效率的诗篇!

1. 缓存加速

存储热点数据(如用户信息、商品详情),减少数据库压力。

SET user:1001 "{name: 'Alice', age: 30}" EX 3600# 缓存1小时[1](@ref)

2. 分布式锁

协调多节点对共享资源的访问,确保原子性。

// Redisson实现分布式锁模板[1](@ref)

public <T> T executeWithLock(String lockKey, long timeout, Callable<T> action) {

RLock lock = redissonClient.getLock(lockKey);

boolean isLock = lock.tryLock(1, timeout, TimeUnit.SECONDS);

// ...释放锁逻辑

}

3. 实时排行榜

基于Sorted Set实现游戏积分、直播送礼排名。

ZADD game_leaderboard 1000 "player_1"# 插入分数

ZREVRANGE game_leaderboard 0 9 WITHSCORES# 获取Top10[1](@ref)

4. 计数器

统计文章阅读量、点赞数,支持原子操作。

SADD article:123:likes 1001# 用户点赞

SCARD article:123:likes# 统计总数[1](@ref)

5. 消息队列

通过List的阻塞操作实现任务队列。

LPUSH task_queue "task1"# 生产者推送任务

BLPOP task_queue 5# 消费者阻塞获取[1](@ref)

6. 会话管理

存储分布式Session,自动清理过期数据。

HSET session:abc123 user_id 1001 last_active 1690000000

EXPIRE session:abc123 1800# 30分钟过期[1](@ref)

7. 签到系统

用Bitmap高效记录用户签到。

SETBIT sign:202502:1001 20 1# 用户1001在20日签到

BITCOUNT sign:202502:1001# 统计当月签到次数[1](@ref)[8](@ref)

8. 限流控制

通过INCR实现接口访问频率限制。

-- Lua脚本:限制每秒最多10次请求[7](@ref)

local key = KEYS[1]

local limit = tonumber(ARGV[1](@ref)

local current = redis.call('GET', key) or 0

if current + 1 > limit then return 0 else redis.call('INCR', key) end

9. 购物车

使用Hash存储商品和数量。

HSET cart:1001 10088 1# 用户1001添加商品10088

HINCRBY cart:1001 10088 1# 修改数量[7](@ref)

10. 抽奖活动

利用Set实现随机抽取用户。

SADD lottery:2025 "user1" "user2"# 添加参与者

SRANDMEMBER lottery:2025 1# 随机抽取1人[7](@ref)

11. 全页缓存

缓存整页HTML内容,加速页面加载。

SET page:home "<html>...</html>" EX 300# 缓存5分钟[5](@ref)

12. 发布订阅

实现实时消息推送(如新闻通知)。

PUBLISH news "Redis 7.0 released!"# 发布消息

SUBSCRIBE news# 订阅频道[7](@ref)

13. 地理位置服务

存储和查询地理坐标数据。

GEOADD cities 116.405285 39.904989 "北京"

GEORADIUS cities 116.40 39.90 100 km# 查询附近100km城市[8](@ref)

14. 分布式ID生成

通过INCRBY生成全局唯一ID。

INCRBY userid 1000# 分库分表场景批量生成ID[2](@ref)

15. 数据过期处理

自动清理临时数据(如验证码)。

SET temp:code:1001 "123456" EX 60# 60秒后自动删除[5](@ref)

通过灵活运用Redis的数据结构和特性,可显著提升系统性能和开发效率。实际应用中需结合业务场景选择合适方案。

最近在研发的 AI编程小白入门课正式发布,并附赠 AI编程社群,让我们一起迎接 AI 时代的到来,下单后小伙伴可以找我加入。

点击 https://s.yizhiknow.com/s/y/fceHsx

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ORUAI538NI2VKPYD-g-5iOcA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券