1 缓存
Redis作为高性能的缓存系统,可以用于缓存热点数据,以减少对数据库的访问次数和提高系统的响应速度。
2 消息队列
Redis支持发布订阅模式,可以作为轻量级的消息队列使用,用于异步处理任务或实现消息通知等功能。
3 计数器
Redis支持原子性操作,可以使用Redis实现计数器等功能,如浏览量统计、点赞数统计等。
4 排行榜
Redis支持有序集合,可以使用Redis实现排行榜等功能,如热门商品排行、热门文章排行等。
5 分布式锁
Redis支持分布式锁,可以用于分布式系统中实现数据同步和互斥访问等功能。
6 地理位置查询
Redis支持地理位置查询,可以使用Redis实现附近的人、地点查询等功能。
7 会话管理
Redis可以用于会话管理,可以存储用户的登录状态、购物车信息等。
8 限流
Redis可以利用incrby命令以及过期时间 来做限流。
比如:key是用户ip,value是访问的次数从1开始,后面每访问一次则加1。
如果value超过一定的次数,则直接拦截这种异常的ip。
当然也需要设置一个过期时间,异常ip如果超过这个过期时间,比如:1天,则恢复正常了,该ip可以再发起请求了。
或者限制同一个用户id。
9 位统计
Redis 支持位图,可以用于打卡、海量数据去重,用户是否在线功能。
[1] 用户行为统计(签到、打卡)
场景:记录用户每日签到状态,统计连续签到天数或月度签到率。
实现:
# 设置 5 月 1 日签到(偏移量 0 表示第 1 天)
SETBIT user:1001:202505 0 1
# 查询 5 月 15 日是否签到
GETBIT user:1001:202505 14 # 返回 1 表示已签到
# 统计 5 月签到天数
BITCOUNT user:1001:202505 # 返回整数结果
优势:
[2] 实时用户在线状态
场景:实时统计百万级用户在线状态,快速判断用户是否在线。
实现:
# 用户 5001 上线
SETBIT online_users 5000 1
# 用户 5001 下线
SETBIT online_users 5000 0
# 判断用户 5001 是否在线
GETBIT online_users 5000
# 统计在线用户总数
BITCOUNT online_users
优势:
[3] 实时数据去重(布隆过滤器替代方案)
场景:高速判断元素是否存在于海量集合中(如 URL 去重)。
实现:
# 标记 URL "https://example.com/page1" 已访问
SETBIT url_visited:20250515 12345 1 # 12345 为哈希值
# 查询 URL 是否已访问
GETBIT url_visited:20250515 12345
注意:
10 生成全局ID
Redis可以使用incrby命令,利用原子性操作,执行命令:incrby userid 10000 。
在分库分表的场景,对于有些批量操作,我们可以从Redis中,一次性拿一批id出来,然后给业务系统使用。
11 获取分类树
了解即可
Redis–基础知识点–26–redis缓存分类树
redis 中的 RedisJSON模块