为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
面试 Redis

工作中,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 时代的到来,下单后小伙伴可以找我加入。

图片

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
16
获赞与收藏
37

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消