当前位置: 首页 > news >正文

Redis 核心应用场景

  1. 高性能缓存
    Redis 作为内存数据库,读写性能可达10万+ QPS,适合缓存热点数据(如商品详情、用户会话),显著降低数据库压力。通过设置过期时间(TTL)自动清理非热点数据,推荐结合allkeys-lru或volatile-lfu淘汰策略优化内存使用。适合电商秒杀、新闻首页等高并发场景。

经典实现:
python
data = redis.get(“product:123”)
if not data:
data = db.query(“SELECT * FROM products WHERE id=123”)
redis.setex(“product:123”, 3600, data) # 缓存1小时

  1. 实时排行榜与计数器
    利用有序集合(ZSET)可快速实现点击榜、销量榜等动态排序场景,通过ZINCRBY更新分数,ZREVRANGE获取TOP N数据。计数器场景(如文章阅读量)则使用INCR保证原子性操作,避免并发冲突。

示例:
redis
ZADD leaderboard 1000 “user1” # 用户得分更新
ZREVRANGE leaderboard 0 9 WITHSCORES # 获取TOP10

  1. 分布式锁与限流
    通过SETNX+过期时间实现跨进程互斥锁,解决分布式系统资源竞争问题。结合EXPIRE防死锁,Lua脚本保证原子性。限流场景(如API防刷)使用INCR+EXPIRE统计单位时间请求量。

锁实现:
redis
SET lock:order 1 NX EX 30 # 获取锁,30秒自动释放

  1. 消息队列与发布订阅
    List结构实现简单队列(LPUSH/RPOP),适合异步任务(如邮件发送)。Pub/Sub模式支持实时消息广播(如聊天室、订单状态通知),但需注意消息无持久化。

队列示例:
redis
LPUSH task_queue “send_email:user@example.com”
BRPOP task_queue 30 # 阻塞式消费

  1. 社交关系与去重
    集合(SET)存储用户关注列表、好友关系,通过SINTER/SDIFF计算共同好友或推荐列表。HyperLogLog实现低成本UV统计(误差<1%),Bitmap标记用户签到等二值状态。

UV统计:

redis

PFADD page:uv “user1” “user2” # 添加用户
PFCOUNT page:uv # 估算UV

  1. 会话共享与分布式Session
    将用户Session集中存储于Redis,解决集群环境会话一致性问题。相比Memcached,Redis支持持久化和高可用,适合微服务架构。

Session存储:

java

// Spring Session配置
@EnableRedisHttpSession
public class Config {
@Bean
public RedisConnectionFactory factory() {
return new LettuceConnectionFactory();
}
}

选型建议
缓存/会话:优先String/Hash
排行榜:必选ZSET
并发控制:SETNX+Lua
实时消息:List/PubSub(需ACK选专业MQ)
大数据处理:HyperLogLog/Bitmap
避免场景:复杂事务、多表关联查询、大Key(>1MB)。

http://www.xdnf.cn/news/118459.html

相关文章:

  • Linux 网络基础三 (数据链路层协议:以太网协议、ARP 协议)
  • Linux系统的延迟任务及定时任务
  • 济南国网数字化培训班学习笔记-第二组-6-输电线路现场教学
  • 一个开源且具有直观视觉界面的 API,可实现 DeepSeek 与 SillyTavern 的非官方集成。
  • 关于QT信号、槽、槽函数的讲解
  • Flutter Dart 循环语句 for while do..while break、continue
  • 第二章、安全认证
  • JavaWeb:Web介绍
  • 【Java实战经验】泛型-类型灵活使用与限制
  • 在线地图工具geojson.io
  • 【数据可视化-28】2017-2025 年每月产品零售价数据可视化分析
  • 第53讲 农学科研中的AI伦理与可解释性——探索SHAP值、LIME等可解释工具与科研可信性建设之道
  • 【嵌入式系统设计师(软考中级)】第二章:嵌入式系统硬件基础知识(3)
  • Linux的时间函数
  • 【k8s】k8s是怎么实现自动扩缩的
  • 移动通信行业术语
  • centos7使用yum快速安装最新版本Jenkins-2.462.3
  • 第六章 QT基础:6、QT的Qt 时钟编程
  • C语言编程--15.四数之和
  • Sharding-JDBC 系列专题 - 第十篇:ShardingSphere 生态与未来趋势
  • NLP高频面试题(五十三)——深度学习正则化详解
  • JAVA设计模式——(六)装饰模式(Decorator Pattern)
  • Matlab 复合多层结构的隔声研究
  • 【1区SCI】Fusion entropy融合熵,多尺度,复合多尺度、时移多尺度、层次 + 故障识别、诊断-matlab代码
  • MATLAB 中的图形绘制
  • unity Animation学习,精准控制模型动画播放
  • 【星海出品】Calico研究汇总
  • Flink 源码编译
  • 1、AI及LLM基础:Python语法入门教程
  • 达梦并行收集统计信息