从MySql移植到Redis

Mr.*_*rth 2 mysql sql caching nosql redis

这可能更像是一个两部分问题,但主要关注的是如何将数据从MySql移植到Redis中.我已经阅读了[这里的过程] [1],但就我的多列数据集如何工作而言,它有点过头了.最终目标是我想将我的活动源从SQL转移到Redis.据我所知,最好的方法是将这些数据存储在哈希中,然后使用有序集对其进行排序.最常见的开始类型就是created_at.

所以问题是:

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

2)如何通过created_at进行排序?

Eli*_*Eli 5

警告:搬到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->列).同样,这不是你想要做的事情,而是取决于你的用例.