mysql - 从 MySql 移植到 Redis

标签 mysql sql caching redis nosql

这可能更像是一个由两部分组成的问题,但主要焦点实际上是如何将数据从 MySql 移植到 Redis。我已经阅读了 [此处的过程][1],但就如何处理我的多列数据集而言,这让我有点头疼。最终目标是我想将我的事件提要从 SQL 转移到 Redis。据我所知,最好的办法是将这些数据存储在哈希中,然后使用排序集对其进行排序。最常见的开始排序就是 created_at。

那么问题是:

1) 通过命令行将其移植到 SQL 的快速方法是什么?

2) 如何将其构造为通过 created_at 进行排序?

最佳答案

警告:迁移到 Redis 对您来说不一定是个好主意。大多数时候,将整个 MySQL 数据库移动到 Redis 不是一个好主意,因为 MySQL 让您可以更松散地查询,并且比 Redis 更容易进行复杂的查询。我将告诉您如何将事情转移过来,但您很可能只想对您的某些数据(或什至根本不这样做)执行此操作,以实现对速度要求高于一切的功能。

因此,假设您需要在数据传入时进行切换,您需要做几件事:

  1. 您将要开始向 MySQL 和 Redis 发送数据,并以某种方式标记已发送到这两者的行(可能您的 updated_at 列适用于此——只需标记您第一次发送的时间开始向两者发送数据)。

  2. 将所有旧数据移至 Redis。您可以通过使用 Python 之类的语言编写一个快速脚本来完成此操作,该脚本将使用 updated_at <= redis_start_date 获取所有数据。并将其插入到 Redis 中。现在,您的 Redis 数据库应该准确地镜像您的 MySQL 数据库,并且您可以期望它在未来继续镜像。

  3. 确保过去依赖 MySQL 的所有适当 API 都有适用于 Redis 的新版本。

  4. 严格测试所有内容,确保 Redis 中的数据与 MySQL 中的数据相匹配,并采用您想要的格式,同时确保所有适当的 API 都可以使用它,等等...

一旦您确信所有这些都已设置好,只需将您的实时 API 切换为使用 Redis 而不是 MySQL 的 API。您可以错开此过程,一次切换一个,并验证一切是否正确。由于数据同时写入 MySQL 和 Redis,您可以随时回滚,以防出现问题。

一旦您切换了所有内容并确信它可以按照您想要的方式与 Redis 一起工作,请关闭正在写入 MySQL 的代码并享受您快速的新 Redis 数据库。

就结构而言,这实际上取决于您如何使用它。如果您只需要能够根据 id 查找单个项目并根据 created_at 对它们进行排序,则可以使用 (key = id; score=unix_time(created_at)) 的排序集。以及每隔一列的 (id->column) 的哈希值。同样,这不是您必须要做的事情,它取决于您的用例。

关于mysql - 从 MySql 移植到 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24539477/

相关文章:

mysql - 将行转换为列的动态 SQL 代码

php - MySQL 查询中的 SORT BY 不会改变查询结果数组中的顺序

caching - cachemanager.net - 如何根据传递的键从 Redis 缓存中获取对象列表?

asp.net - 页面输出缓存是否存储在 ASP.NET 缓存对象中?

mysql - SQL查询,需要显示一列条件的计数 'ignoring' 其他条件

linux - arp -d 地址 : Operation not permitted linux

mysql - 数据库管理系统通常会绕过文件系统,对吗?

MySQL:将具有相似不重复内容的行计为一

mysql - SQL 添加列一个唯一的哈希

sql - 枢轴以避免 SQL 中的大量连接?