嗨,我是redis的新手,想要一些帮助。我正在使用java和sql server 2008和redis服务器。要与redis交互,我正在使用jedis api for java。我知道redis用于存储基于键值的东西。每个键都有值。
问题背景:
我有一个表名“user”,用于存储id,姓名,电子邮件,年龄,国家等数据。这是sql表的模式。现在这个表有一些行(也就是说一些数据)。现在我的主键是id,它只是用于数据库使用它在应用程序中对我没用。
现在在sql中我可以插入新行,可以更新一行,可以搜索任何用户,可以删除用户。
我想将这些表数据存储到redis中。然后我想在redis上执行类似的操作,比如搜索,插入,删除。但如果我在“在DB和Redis中存储此信息”有一个好的设计,那么这些操作将简单地执行。记住我也可以有多个表。所以应该根据表格将数据存储在redis中。
我的问题
您可以告诉我任何设计或信息,我如何将数据库数据转换为Redis并执行所有操作。我问这个是因为我知道Facebook也在使用redis来存储数据。然后他们如何存储数据。
任何帮助都会非常感激。
答案 0 :(得分:4)
这是一个非常难以回答的问题,因为有多种方法可以做。
在我看来,最好的方法是使用哈希。这基本上是嵌套的键值类型。因此,您的密钥将与哈希匹配,因此您可以存储用户名,密码等。
一个问题是索引,您需要在密钥中存储一个ID。例如,每个用户都必须拥有一个键:USER:21414
除非您想要查看KEYS
或SCAN
之类的命令,否则您将不得不维护自己的用户列表进行迭代,只有在您需要这样做时。为此,您需要查看列表或排序集。
说实话,这个问题没有真正的答案,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:)