2015-11-14 54 views
0

当一个关系数据库转换为Redis的数据库,我们应该用红色键:使用`表:<id>:col1`或使用散列?

table:<id>:col1 
table:<id>:col2 
table:<id>:coln 

如钥匙或使用哈希代替,例如

table:col1 = { <id1>: <value1>, <id2>: <value2>, ... } 
table:col2 = { <id1>: <value1>, <id2>: <value2>, ... } 
table:coln = { <id1>: <value1>, <id2>: <value2>, ... } 

为什么呢?

+3

你不应该** **转换或**更换**关系DB到Redis的,你应该根据需要如何对数据进行检索设计您redis的解决方案。见[this](http://liamkaufman.com/blog/2012/06/04/redis-and-relational-data/) – thepirat000

回答

0

你可能在想这个错误的方法。

在Redis的,您可以根据您想获取的方式存储数据。首先想想你的问题,然后决定“模式”。

在任何情况下,散列方法,通常使用既保持组合在一起(如列中的行)的相关值,以及减少所述每键的开销。

基于非常广泛的信息OP已经提供,如果我们假设<id>是一个行标识符,也称为主键,你会意义的,我的是:

HMSET table:<id> col1 <value1> col2 <value2> ... 

但是结构没有按” t确保有效提取任何数据,但不包括SELECT/UPDATE/DELETE (somecolumn or *) from table WHERE id=<id>的等效数据。

那么,什么是你的数据库中有服务于查询?