我可以将两列彼此独特吗?或者在redis中使用复合主键?

时间:2012-02-22 02:56:21

标签: database redis

我正在玩redis并希望重新创建一个我在mysql中的表。这是我用来创建它的mysql命令:

CREATE TABLE data_table(
        key1    INT SIGNED NOT NULL,
        value1    INT SIGNED NOT NULL,
        PRIMARY KEY (key1,value1)
    ); 

我的数据基本上是两列,其中的数字彼此是唯一的,例如:

3:1
3:2
3:3
4:1

当我玩redis并尝试创建上述数据时,'3'键不断被我输入的最后一个值取代。有没有办法让这个工作在redis中?

1 个答案:

答案 0 :(得分:5)

使用Redis表示数据的更好模型是使用简单的value1对象集(每个key1对象一个)。按照示例,您可以存储在Redis中:

3 -> set( 1, 2, 3 )
4 -> set( 1 )

使用以下命令:

sadd 3 1 2 3
sadd 4 1

您可以使用以下方法获取key1 = 3的所有值:

smembers 3

您可以使用以下方法检查keys1 = 3,value1 = 2是否存在:

sismember 3 2

Redis不是关系数据库系统,因此您不应尝试使用Redis映射关系模型。相反,您需要考虑如何构建和访问数据,就像使用编程语言中的内存数据结构一样。