redis的冷热数据处理
参考:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/81091547
阿里云提供redis混合存储产品,链接:
当前KV数据库从存储介质可以分为两种模式,一种是以内存为主持久化为辅,如memcache(无持久化)、redis等;一种是以持久化为主内存为辅,如ssdb(基于leveldb/rocksdb存储引擎)。这两种模式代表了两种不同的选择策略和哲学,适应不同的业务场景。简单地说,以内存为主的模式侧重高性能,信奉“内存是新的硬盘”的哲学;以持久化为主的模式则侧重大容量,兼顾性能。
对于以持久化为主的模式,因其天然支持大容量数据的快速读写,实现冷热数据分离是相对比较容易的,当前用到的数据就认为是热数据,只要把热数据保留于指定大小的内存即可。而对于以内存为主的模式,即使有持久化,也只是顺序写的持久化,在需要读硬盘时不能做到快速读取。因此这种模式要实现冷热分离,需要准确区分冷热数据、精心设计落地策略并保证可以快速读取。
这里冷热分离方案主要基于redis或者基于redis协议及命令实现。
二、方案汇总
ü 可以使用开源的rocksdb或lmdb引擎读写落地数据;
ü 内存中标记不存在的key,如果一个key在磁盘上不存在,则在标记之后不用再去磁盘查看这个值是否存在;
ü 读操作先读内存,如内存中不存在且key未被标识磁盘不存在,则由读子进程从磁盘读并写回到redis(key不存在才写回)。之后子进程通知主进程再次读取,此过程会阻塞主进程上单个连接的处理。
l 优点:真正意义上实现单机redis的冷热分离。Redis和落地数据在同一台机器,容易保证数据一致性。
l 缺点:实现较复杂。因为是基于redis做二次开发,后续不方便升级redis,不过单机redis已经非常稳定,后续升级可能性较小。
ü 写操作时proxy正常写主redis,由改造备redis写rocksdb;
ü 读操作时proxy先正常读主redis,如无数据,则读改造备redis;改造备redis在内存中读不到数据则读rocksdb,proxy从改造备redis读到数据再写主redis。
l 优点:写操作和当前流程完全一样;读操作和当前迁移流程中rrw流程基本一致,可以复用。不影响纯内存的原生redis使用,风险可控。
l 缺点:proxy和redis均需修改。在原有一主一备redis基础上需要增加改造备redis部署。
最大特点是不影响纯内存的原生redis使用,且proxy改动较小。
ü 写操作时proxy先正常写主redis,再同步或异步写ssdb;
ü 读操作时proxy先正常读redis,如redis无数据,则读ssdb;读ssdb成功,再写主redis。
l 缺点:proxy实现较复杂,redis和ssdb的数据一致性不好保证。因为ssdb基于leveldb/rocksdb实现,在读操作且redis中无数据且ssdb内存中无数据时,可能极大影响性能。
缺点:业务开发可能没办法一开始确定使用哪一套系统。需要维护和运维两套系统
方案五 提供ssdb,业务初始化接入redis,可选择平滑迁入ssdb
为了提高读写磁盘的性能,需要使用SSD。而SSD本身存在一些问题:
毛刺问题:同时读写SSD盘时,读SSD盘有可能会耗时数秒。被挂住的几率为万分之一;
坏块问题:SSD盘中可能存在某个块可以写入,但是读不出来,此时这个块的数据将会丢失
redis的冷热数据处理相关推荐
- Redis+MySQL冷热数据交换
场景:某网站需要对其项目做一个投票系统,投票项目上线后一小时之内预计有100万用户进行投票,希望用户投票完就能看到实时的投票情况 这个场景可以使用redis+mysql冷热数据交换来解决. 何为冷热数 ...
- 关于redis的冷热数据分离
一.概述 当前KV数据库从存储介质可以分为两种模式,一种是以内存为主持久化为辅,如memcache(无持久化).redis等:一种是以持久化为主内存为辅,如ssdb(基于leveldb/rocksdb ...
- Redis vs Tendis:冷热混合存储版架构揭秘
作者:jingjunli,腾讯 IEG 后台开发工程师 Redis 作为高性能缓存被广泛应用到各个业务, 比如游戏的排行榜, 分布式锁等场景.经过在 IEG 的长期运营, 我们也遇到 Redis 一些 ...
- 英特尔内存革新助平安云 Redis 云服务降本增效
英特尔内存革新助平安云 Redis 云服务降本增效 英特尔® 傲腾™ 数据中心级持久内存的引入,为平安云的降本增效开启了一条新的道路.通过对平安云 Redis 数据库产品的支持,用户能享受到性能优异且 ...
- 腾讯的Tendis能否干掉Redis,用了什么牛逼的技术呢?
点击关注公众号,Java干货及时送达 Redis 作为高性能缓存被广泛应用到各个业务, 比如游戏的排行榜, 分布式锁等场景.经过在 IEG 的长期运营, 我们也遇到 Redis 一些痛点问题, 比如内 ...
- mysql 冷热表_Redis+MySQL冷热数据交换
场景:某网站需要对其项目做一个投票系统,投票项目上线后一小时之内预计有100万用户进行投票,希望用户投票完就能看到实时的投票情况 这个场景可以使用redis+mysql冷热数据交换来解决. 何为冷热数 ...
- php 获取delete蚕丝_php结合Redis实现100万用户投票项目,并实时查看到投票情况的案例...
场景:某网站需要对其项目做一个投票系统,投票项目上线后一小时之内预计有100万用户进行投票,希望用户投票完就能看到实时的投票情况 这个场景可以使用redis+mysql冷热数据交换来解决. 何为冷热数 ...
- 上手测试GaussDB(for Redis) 和开源 Redis,只为推荐质优价廉的Redis
本文分享自华为云社区<程序员硬核测评:全方位测评 GaussDB(for Redis) 和开源 Redis>,作者:高斯Redis官方博客. 正值企业数字化转型全面提速之际,业务需求急速增 ...
- 从相识到相惜:Redis与计算存储分离四部曲
本文分享自华为云社区<[云驻共创]Redis与计算存储分离四部曲:相识相惜,相辅相成>,原文作者:启明. 近期全国两会正在轰轰烈烈的召开,各人大代表也基于自己的一些实践提出了自己的意见,例 ...
最新文章
- Xamarin.Forms教程开发Xamarin.Forms应用程序需要的工具
- 如何利用简单的Excel操作来预测用户流失?!
- RabbitMQ 的概念
- 前端八大灵感设计,代码变为现实
- 985博士妈妈辅导女儿作业被气哭:博士父母带娃真是太难了...
- python写文件格式转换程序_python实现txt文件格式转换为arff格式
- 11-4 12 Nginx安装 默认虚拟主机 用户认证 域名重定向
- python入门——P49乱入:生成器
- The requested PHP extension ext-redis * is missing from your system. Install or enable PHP's redis e
- C# Maximum request length exceeded. 产生错误的原因,以及解决方法.
- java jdk运行_JDK如何运行
- 阅读《Android 从入门到精通》(10)——单项选择
- C语言:L1-078 吉老师的回归 (15 分)
- 小程序微信授权登录服务器异常,微信小程序授权登录流程(强制绑定手机号码)...
- opencv机器视觉入门
- tkinter Canvas 实现 鼠标手绘画板 功能
- Hadoop-感知网络布局和机架的设计
- AD20版如何生成PCB
- 【经典】非全序列底板通俗演义-AC OC EG CL 红黑碳王
- DV通配符证书申请方式及特点
热门文章
- html frame背景音乐,利用 frameset 框架实现切换网页时不刷新背景音乐(不会中断)...
- vue之购物车案例升级版、v-model之lazy、number、trim的使用、fetch和axios、计算属性、Mixins、虚拟dom与diff算法 key的作用及组件化开发
- 项目背景怎么描述_如何写项目的设计说明?
- S设置自定义快捷键并实现图片上下左右移动
- planning ADSO/aggregation level的计划功能
- python 中*/**的用法
- 找了几个 Solon 框架的商业落地项目案例!
- TripletLoss
- SteamVR2.0开发指南
- 第二十次CCF计算机软件能力认证