Redis十大核心应用场景深度剖析
一、高性能缓存系统
页面缓存:
缓存HTML片段/API响应(TTL控制失效)
典型命令:SETEX product:123 3600 "{json}"
热点数据加速:
数据库查询结果缓存(如用户信息)
避免缓存穿透方案:布隆过滤器+空值缓存
二、会话存储(Session Storage)
分布式会话共享
比Cookie更安全的数据存储
典型结构:HSET session:sd7f9 user_id 123 last_active 20250709
支持集群模式下会话保持
三、实时排行榜
Sorted Set实现:
ZADD leaderboard 10000 "player1"
ZREVRANGE leaderboard 0 9 # 获取TOP10shell
应用场景:
游戏积分榜
电商销量排行
热搜关键词统计
四、消息队列系统
List实现基础队列:
LPUSH/RPOP实现FIFO队列
BRPOP实现阻塞消费
Stream实现高级队列(5.0+):
支持消费者组
消息回溯能力
五、秒杀系统核心组件
关键技术实现:
库存预减:DECR product:123:stock
请求限流:INCR ip:127.0.0.1 + EXPIRE
防重复提交:SETNX order:user1:pid 1
六、社交网络功能
关系型数据存储:
粉丝集合:SADD user:123:followers 456
共同关注:SINTER user:123:followers user:456:followers
实时消息推送:
使用Pub/Sub实现在线状态通知
七、地理位置服务
GEO数据结构:
GEOADD cities 116.405285 39.904989 "北京"
GEORADIUS cities 116.40 39.90 100 km
典型应用:
附近的人
网点查询
配送范围计算
八、限流与计数器
滑动窗口限流:
-- Lua脚本实现精确限流
local current = redis.call('INCR', KEYS[1])
if current == 1 then
redis.call('EXPIRE', KEYS[1], ARGV[1])
end
应用场景:
API调用限制
短信发送频控
九、分布式锁
Redlock算法实现:
SET resource_name my_random_value NX PX 30000
配合Lua脚本保证原子性释放
应用场景:
定时任务调度
资源互斥访问
十、实时数据分析
基于HyperLogLog:
统计UV:PFADD uv:20250709 user1
去重计算:PFCOUNT uv:20250709
位图统计:
用户签到:SETBIT sign:123:202507 9 1
DAU计算:BITOP OR result sign:20250709 sign:20250708
技术选型建议
优先考虑场景:需要低延迟(<1ms)、高并发(>10k QPS)的业务
规避场景:大数据量(>10GB)、复杂事务、强一致性要求