Redis 除了做锁,还常用于哪些功能?
1 个回答
先解决心情在解决事情。清风1. **缓存** * **热点数据缓存**(减少 DB 压力) * **页面缓存 / 接口缓存**(加速响应) * **对象缓存**(序列化后存储) * 常用命令:`GET` / `SET` / `EXPIRE` / `MGET` / `MSET` * 搭配淘汰策略(LRU/LFU/TTL)避免内存被占满 2. **计数 / 限流** * 访问计数、点赞数、库存数(`INCR` / `DECR`) * 接口限流(固定窗口 / 滑动窗口 / 漏桶 / 令牌桶) * 示例:`INCR key` + `EXPIRE key 1` 实现 QPS 限制 3. **消息队列** * 简单队列:`LPUSH` / `BRPOP`(阻塞获取) * 发布订阅(Pub/Sub):`PUBLISH` / `SUBSCRIBE` * 适合轻量级异步消息,但不保证可靠投递(重试需自己实现) 4. **延时任务** * 使用 **ZSet** 按时间戳排序,定时扫描到期任务 * 或者用 Redis Stream + 消费延迟逻辑 5. **排行榜** * ZSet 按分数排序(积分榜、热度榜、销量榜) * 命令:`ZINCRBY` / `ZREVRANGE` / `ZRANK` 6. **会话管理** * 存储用户 Session / Token(带过期时间) * 结合 `EXPIRE` 自动清理过期会话 7. **地理位置(Geo)** * 存储经纬度(`GEOADD`),计算距离(`GEODIST`) * 附近的人/店铺搜索(`GEORADIUS` / `GEOSEARCH`) 8. **分布式数据结构** * 位图(Bitmap):用户签到、活跃状态(`SETBIT` / `BITCOUNT`) * HyperLogLog:大规模去重统计(UV 统计,`PFADD` / `PFCOUNT`) * 布隆过滤器(Bloom Filter):快速判断是否存在(防缓存击穿) 9. **事务与批量操作** * 简单事务:`MULTI` / `EXEC` * 批量管道(Pipeline)减少网络往返 10. **配置中心 / 临时状态** * 存储动态配置、任务标记、分布式信号量发布于 2025-08-13 03:11 •IP属地 四川举报评论收藏
公众号进入网站体验更佳

