如何将 SQL 表转换为 Redis 数据

Posted

技术标签:

【中文标题】如何将 SQL 表转换为 Redis 数据【英文标题】:How to Convert SQL table into Redis Data 【发布时间】:2014-11-06 17:43:21 【问题描述】:

您好,我是 redis 新手,在这里需要一些帮助。我正在使用 java 和 sql server 2008 和 redis 服务器。为了与 redis 交互,我使用 jedis api for java。我知道redis用于存储基于键值的东西。每个键都有值。

问题背景:

我有一个名为“user”的表,其中存储了 id、name、email、age、country 等数据。这是 sql 表的模式。现在这个表有一些行(也意味着一些数据)。现在,我的主键是 id,它只供 DB 使用,它在应用程序中对我没有用。

现在在 sql 中我可以插入新行,可以更新行,可以搜索任何用户,可以删除用户。

我想将这些表数据存储到 redis 中。然后我也想在redis上执行类似的操作,比如搜索、插入、删除。但是如果我对“将这些信息存储在 DB 和 Redis 中”有一个好的设计,那么这些操作将很简单地进行。请记住,我也可以有多个表。所以应该基于表将数据存储在redis中。

我的问题

您可以告诉我如何将数据库数据转换为 Redis 并执行所有操作的任何设计或信息。我问这个是因为我知道 Facebook 也在使用 redis 来存储数据。然后他们是如何存储数据的。

任何帮助将不胜感激。

【问题讨论】:

我认为您需要阅读 ReDis 文档 - 看起来很多。 如果您包含您拥有的架构/字段以及您使用或计划的查询,那么可以提供更准确的答案。设计应该有一些使用概念。 【参考方案1】:

这是一个很难回答的问题,因为您可以采取多种方式。

我认为最好的方法是使用哈希。这基本上是一个嵌套的嵌套键值类型。因此,您的密钥将与哈希匹配,以便您可以存储用户名、密码等。

一个问题是索引,您需要在键中存储一个 ID。例如,每个用户都必须有一个密钥,例如:USER:21414

第二件事,除非您想查看像 KEYSSCAN 这样的命令,否则您将不得不维护自己的用户列表以进行迭代,除非您需要这样做。为此,您需要查看列表或排序集。

老实说,这个问题并没有真正的答案,SQL 风格的数据不会以任何真实的方式映射到键值对。你通常需要自己做更多的工作。

我建议尽可能多地阅读,并从http://redis.io/commands 和http://redis.io/documentation 开始。

我没有使用 Jedis 的经验,所以对此我无能为力。如果你想要一个例子,我有一个开源社交网站,它使用 Redis 作为它的唯一数据存储。您可以查看代码以获取一些想法https://github.com/pjuu/pjuu/blob/master/pjuu/auth/backend.py。它使用 Python,但 Redis 很容易在任何地方使用,不会有太大区别。

编辑:我上面的网站不再单独使用 Redis。需要检查较旧的分支,例如 0.4 或 0.3 :)

【讨论】:

以上是关于如何将 SQL 表转换为 Redis 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何根据数据表生成脚本? (将 DataTable 转换为 SQL 查询)

将 SQL 代码(作为字符串)转换为表 - 动态数据透视

如何将多层嵌套的json转换为sql表

如何将 Redis ArrayRedisResult 转换为 C# 数组?

如何将 SQL Server 数据库转换为 MySQL 数据库 [关闭]

如何将 sql datetime2 转换为加倍?