您现在的位置是:首页 > 编程 > 数据库数据库

Redis中不活跃数据的迁移的架构设计

Tdou2020-04-26【数据库】人已围观

简介redis 中的数据是存在内存的,如果一个用户很久没有登录过服务器,那么他的数据就是不活跃数据。
这部分不活跃数据会占用大部分 Redis 的存储空间。
我们可以将这些不活跃数据迁移到磁盘数据库中,如 MYSQL。
获取数据时,先从 Redis 中获取,Redis 中数据不存在时,再从 MYSQL 中获取数据。

redis 中的数据是存在内存的,如果一个用户很久没有登录过服务器,那么他的数据就是不活跃数据。
这部分不活跃数据会占用大部分 Redis 的存储空间。
我们可以将这些不活跃数据迁移到磁盘数据库中,如 MYSQL。
获取数据时,先从 Redis 中获取,Redis 中数据不存在时,再从 MYSQL 中获取数据。

迁移的具体实现步骤如下:

  1. 利用scan命令遍历 Redis 的键空间。Scan 命令通过反向二进制迭代器循序渐进的遍历 Redis 的键空间,它的特点是有重复到不会漏掉 key。
  2. 通过object idletime key ...命令批量(一次 scan 的结果)获取 key 的空转时间,通过这个时间来判断是否为不活跃数据。例如我们认为一个月以前的数据为不活跃数据,空转时常大于一个月就是不活跃数据。
  3. 通过type key ...命令批量获取 key 的类型并过滤。返回的类型有 string (字符串)、list (列表)、set (集合)、zset (有序集)、hash (哈希表)、stream (流)。我们只迁移是 string 类型的 key(注:为什么不迁移其他类型的 key,大家可以思考一下)。
  4. 通过ttl key ...命令批量获取 key 的过期时间,判断是否设有过期时间。为了简单处理,我们不处理包含有过期时间的 key。
  5. 获取 key 最新的数据, 并计算 md5sum。将最新的[key,value]保存到 MYSQL 中。再次获取 key 的最新数据,并计算 md5sum。
  6. 对比两次 md5sum。如果相同就删除 Redis 中的数据,key 完成迁移,如果不同(表示 key 被修改,变成了活跃数据)就结束迁移过程。求两次 md5sum 的原因是,将数据保存到 MYSQL 这段时间内,有可能用户刚好访问并修改了数据。

Tags:精选博文   Redis   Redis备份   Redis备份架构设计

很赞哦! ()

  • 微信收款码
  • 支付宝收款码
打赏

上一篇:返回列表

下一篇:返回列表

文章评论

站点信息

  • 建站时间:2019-12-11
  • 网站程序:帝国CMS7.5
  • 主题模板《今夕何夕》
  • 文章统计35篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们