2026-05-24 16:15:28
Redis 的 16 大应用场景如下:
缓存
String类型:适用于热点数据缓存(如报表、明星新闻等)、对象缓存、全页缓存,可提升热点数据的访问速度。
数据共享分布式
String类型:Redis 作为分布式独立服务,可在多个应用间共享数据,例如分布式Session。
示例代码:
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>分布式锁
String类型:利用 setnx 方法实现,只有键不存在时才能添加成功,返回 true。
示例代码:
public static boolean getLock(String key) { Long flag = jedis.setnx(key, "1"); if (flag == 1) { jedis.expire(key, 10); } return flag == 1;}public static void releaseLock(String key) { jedis.del(key);}全局ID
int类型:使用 incrby 命令,利用原子性生成唯一ID,适用于分库分表场景,可一次性获取一段ID。
示例代码:
incrby userid 1000计数器
int类型:使用 incr 方法实现计数器功能,适用于文章阅读量、微博点赞数等场景,允许一定延迟,数据先写入Redis再定时同步到数据库。
限流
int类型:使用 incr 方法,以访问者IP等信息作为键,每次访问增加计数,超过阈值则拒绝访问。
位统计
String类型的bitcount:基于Bitmap数据结构,字符以8位二进制存储,节省空间(1MB=8388608bit),适用于大数据量统计,如在线用户统计、留存用户统计。
支持按位与、或、异或、非操作:
示例代码:
BITOP AND destkey key [key...]BITOP OR destkey key [key...]BITOP XOR destkey key [key...]BITOP NOT destkey key计算7天都在线的用户:
BITOP "AND" "7_days_both_online_users" "day_1_online_users" "day_2_online_users" ... "day_7_online_users"购物车
String或Hash类型:所有String类型可实现的功能Hash均可实现。
示例代码:
键:用户ID;字段:商品ID;值:商品数量。
操作:
+1:hincr-1:hdecr删除:hdel全选:hgetall商品数:hlen
用户消息时间线Timeline
List类型:双向链表结构,直接作为Timeline使用,插入有序。
消息队列
List类型:提供阻塞弹出操作 blpop/brpop,可设置超时时间。
blpop:移除并获取列表第一个元素,列表为空时阻塞直到超时或发现可弹出元素。
brpop:移除并获取列表最后一个元素,列表为空时阻塞直到超时或发现可弹出元素。
队列模式:先进先出(rpush blpop,右进左出)。
栈模式:先进后出(rpush brpop)。
抽奖
使用 spop 命令:从集合中随机获取一个元素。
示例代码:
spop myset点赞、签到、打卡
使用Set类型:维护点赞用户集合,操作简单高效。
示例代码:
点赞:sadd like:t1001 u3001
取消点赞:srem like:t1001 u3001
是否点赞:sismember like:t1001 u3001
点赞用户列表:smembers like:t1001
点赞数:scard like:t1001

商品标签
使用Set类型:维护商品标签集合。
示例代码:
sadd tags:i5001 画面清晰细腻sadd tags:i5001 真彩清晰显示屏sadd tags:i5001 流程至极商品筛选
使用Set类型:通过交集、并集、差集操作实现多条件筛选。
示例代码:
差集:sdiff set1 set2
交集:sinter set1 set2
并集:sunion set1 set2
筛选示例:筛选苹果品牌、iOS系统、屏幕尺寸6.0-6.24英寸、LCD屏幕的商品:
sinter brand:apple brand:ios screensize:6.0-6.24 screentype:lcd用户关注、推荐模型
使用Set类型:维护关注和粉丝关系,通过交集、差集操作实现推荐逻辑。
示例代码:
相互关注:
sadd 1:follow 2sadd 2:fans 1sadd 1:fans 2sadd 2:follow 1我关注的人也关注了他:
sinter 1:follow 2:fans可能认识的人:
用户1可能认识的人:sdiff 2:follow 1:follow用户2可能认识的人:sdiff 1:follow 2:follow排行榜
使用Sorted Set类型:按分数排序,适用于实时排行榜场景。
示例代码:
新闻点击数加1:
zincrby hotNews:20190926 1 n6001获取今天点击最多的15条:
zrevrange hotNews:20190926 0 15 withscores