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

Redis + SSDB 冷热分离实战方案

一、核心设计(一句话看懂)

  1. 热数据:最近 3 个月 / 2026 年订单 → 放Redis(内存,毫秒级)
  2. 冷数据:超过 3 个月 / 2025 及以前订单 → 放SSDB(磁盘,低成本)
  3. 读写逻辑
    • 读:先查 Redis → 没查到再查 SSDB
    • 写:只写 Redis,后台定时任务把冷数据迁移到 SSDB并从 Redis 删除

二、环境准备

SSDB 兼容 Redis 协议,直接用 Redis 客户端就能连,零学习成本。

常用的SSDB是LevelDB和RocksDB

LevelDB vs RocksDB 简单对比(你选型用)

LevelDBRocksDB
出处GoogleFacebook(基于 LevelDB)
多线程弱,单线程写入强,多线程并发
压缩一般更好,支持 ZSTD 等
范围扫描可以更快、更稳定
内存控制一般更精细
适用小并发、简单场景高并发、大数据量生产

生产上:RocksDB 全面强于 LevelDB,只是重一

三、使用

推荐使用Kvrocks(底层是RocksDB)

部署步骤
  1. 获取 Kvrocks
    你可以从官方 GitHub 仓库下载预编译的二进制包或使用 Docker 镜像

    # 使用 Docker 快速启动一个 Kvrocks 实例 docker run -it -p 6666:6666 apache/kvrocks --bind 0.0.0.0

    这里我们将 Kvrocks 暴露在6666端口,以区别于你本地可能已有的原生 Redis(通常在6379端口)。

  2. 配置 Kvrocks (可选)
    Kvrocks 的配置文件kvrocks.conf允许你精细调整 RocksDB 的行为,例如缓存大小、压缩算法等,以适应不同的冷热数据比例和硬件条件。对于入门,使用默认配置即可。

Spring Boot 集成

由于 Kvrocks 完全兼容 Redis 协议,你的 Spring Boot 应用可以像连接普通 Redis 一样连接它。

其工作流程如下:
数据写入:当你执行一个SET命令时,数据会同时被写入到内存中的Block Cache和底层的RocksDB中,确保数据的持久性。
数据读取(变热):
①当你读取一个 Key 时,Kvrocks 首先会在内存的 Block Cache 中查找。
②如果找到了(Cache Hit),说明这是热数据,直接返回,速度极快。
③如果没找到(Cache Miss),它会去底层的 RocksDB(磁盘)中读取。读取后,这份数据会被加载到内存的 Block Cache 中。这意味着,任何被访问的数据都会自动成为“热数据”并被缓存起来。
数据淘汰(变冷):

内存是有限的。当 Block Cache 满了之后,Kvrocks 会根据LRU 算法自动淘汰掉那些最久没有被访问过的数据,为新的热数据腾出空间。

②被淘汰出内存的数据并不会丢失,它依然安全地存储在 RocksDB 中,此时它就变成了冷数据。下次再访问它时,会重复步骤2的“Cache Miss”流程。

  1. 添加依赖
    在你的pom.xml中添加 Spring Boot 的 Redis Starter 依赖

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
  2. 修改配置
    application.ymlapplication.properties中,将 Redis 的连接地址指向 Kvrocks 服务

    spring: redis: host: localhost port: 6666 # 指向 Kvrocks 的端口 # password: your_password # 如果设置了密码
    完成以上两步,你的应用就已经在使用一个具备冷热分离能力的存储后端了。所有数据操作都通过标准的RedisTemplate进行,Kvrocks 内部会自动处理数据的分层存储。
  3. Kvrocks 如何自动区分冷热数据

    Kvrocks 将数据存储分为两个层级:
    内存 (热数据层):作为高速缓存,存储最常被访问的数据。RocksDB/SSD (冷数据层):作为持久化存储,存放全量数据。

修改配置
# kvrocks.conf # 工作线程数,建议设置为 CPU 核心数 workers 8 # 实例总内存限制,例如 16GB maxmemory 17179869184 # 热数据缓存区大小,设置为 10GB # 这意味着你最常访问的 10GB 数据会驻留在内存中,实现高速读写。 rocksdb.block_cache_size 10737418240 # 启用 RDB 持久化,定时快照 rocksdb.enable_rdb yes rocksdb.rdb_save_interval 3600 # 数据目录,确保指向 SSD 以获得最佳性能 dir /data/kvrocks rocksdb.dir /data/kvrocks/data
特性说明
分离机制全自动 LRU,基于数据访问频率。
热数据存放在内存的block_cache中。
冷数据存放在磁盘的RocksDB中。
你的控制方式通过配置rocksdb.block_cache_size来决定“热数据区”有多大。
应用层感知完全无感。你的 Spring Boot 应用就像连接普通 Redis 一样连接 Kvrocks,无需任何代码修改
http://www.jsqmd.com/news/695658/

相关文章:

  • 深度学习优化算法Adam的核心原理与实践技巧
  • SkeyeVSS开发常见问题FAQ 国标SIP点播INVITE与ACK发送流程异常
  • C++26反射元编程架构设计图首次公开(ISO/IEC JTC1 SC22 WG21内部评审版):含3层抽象边界定义与21个编译期约束断言
  • Jetson Nano上MediaPipe GPU版编译避坑指南:从源码修改到whl打包的完整流程
  • 别再让Ubuntu自动更新搞乱你的开发环境了!用apt-mark hold锁定关键软件包版本
  • 2025-2026年全球招标网评测:五大口碑产品推荐评价领先供应商寻源效率低下案例 - 品牌推荐
  • 实测5款AI论文工具,我明白了什么才是真正的“过稿神器”:好写作AI凭什么能同时解决查重和AIGC?
  • 不平衡数据集分类评估:ROC与PR曲线对比分析
  • STM32F4双CAN通信实战:从CubeMX配置到过滤器代码避坑(附完整工程)
  • VSCode+Docker工作流重构实录(企业级CI/CD容器化调试全流程拆解)
  • 2026宜宾商用中央空调回收技术要点与靠谱品牌判定指南 - 优质品牌商家
  • 如何一键完成Windows和Office智能激活:KMS_VL_ALL_AIO完整指南
  • Pydantic-AI:用结构化数据模型驱动AI应用开发
  • 从一个神经元看懂AI的底层逻辑
  • 如何快速导出微信聊天记录:WeChatMsg微信数据管理完全指南
  • 从实验室到论文:手把手教你用MP DSS构建小鼠肠炎模型(附详细步骤与DAI评分避坑指南)
  • LSTM时序预测实战:从原理到工业部署全解析
  • 2025-2026年全球工程信息平台评测:五款口碑产品推荐评价知名销售线索转化管理难题 - 品牌推荐
  • Atlassian Rovo Agents技术指南:面向DevOps的AI工作流编排与落地实践
  • 大语言模型评估指标全解析与应用实践
  • 为什么92%的CVE-2025-C家族漏洞仍源于C?——用2026规范重构malloc/free生态的4层沙箱防护架构
  • leetcode 2452. 距离字典两次编辑以内的单词 中等
  • 异步电机负载适配控制与效率优化技术研究
  • 2026年出国劳务高薪服务机构实力排行参考 - 优质品牌商家
  • Python语言基础之函数语法
  • 告别数据抖动!手把手教你配置SGM58200 ADC的50/60Hz工频抗干扰采样(附STM32 I2C代码)
  • 开发备胎计划:3大副业——软件测试从业者的专业变现路径
  • 如何在3分钟内完成Windows系统激活:智能激活脚本完整指南
  • 2026成都打印机维修电话品牌盘点:技术维度筛选指南 - 优质品牌商家
  • 从智能网卡到边缘盒子:PLDM数据模型如何成为下一代嵌入式系统管理的隐形基石