当前位置: 首页 > 面试题库 >

我可以使两列彼此唯一吗?还是在redis中使用复合主键?

韩捷
2023-03-14
问题内容

我在玩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中工作?


问题答案:

使用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映射关系模型。相反,您需要考虑如何构造和访问数据,就像使用编程语言中的内存数据结构一样。



 类似资料:
  • 假设我有一个记录品牌之间相关性值的集合(别管如何生成或解释这种相关性。)那么这个集合中的字段将包括:'Brand1'、'Brand2'和'correlation'。 为了举例起见,假设品牌可以承担“Google”、“Microsoft”等字符串值,这样每个文档就记录了各种品牌名称之间的相关性。 我想在'Brand1'和'Brand2'字段上创建一个唯一的索引,以便每个文档在集合中只记录一对品牌之间

  • 问题内容: 为了在Web上实时传输数据,我计划使用Redis作为我的Cache数据层,其中数据是瞬时的。Celery是队列管理器,RabbitMQ是从Redis排队进入Tornado层的代理。然后,该层通过websockets流到前端。 我从未在网上找到Redis + RabbitMQ组合。有人可以为它提供可靠的解决方案指南。问题是这样的整合是否可能和明智的? 问题答案: 我现在非常成功地一起使用

  • 我需要在macOS上运行旧版本的JDK 7。 我看过“如何在Mac OSX上使用JDK 7?”在“JavaVirtualMachine”中:如何在Mac OSX上使用JDK 7? 还查看了:“OpenJDK”:https://openjdk.java.net/ 知道在哪里可以找到macOS的JDK 7吗?

  • 问题内容: 我已经搜索过网络,到目前为止,我所看到的是您可以一起使用和含义: 要么 是有效的,但是当我使用此代码时,得到的是: 对于第一个,除了与相同。对于第二个。 问题是什么?我不能使用和在一起?还是正常?是我可以检查连接是否全部有效的方法吗?() 问题答案: 不,你不能使用和在一起。它们是独立的API,它们创建的资源彼此不兼容。 虽然有一个。

  • 问题内容: 我有一个带有以下行的Bottle Webserver模块: 该模块包含以下行: 当然,两者都分别导致以下错误: ImportError:无法导入名称auto_process_form_insert ImportError:无法导入名称重定向 难道仅仅是一个事实,在Python中,两个模块不能互相导入,并且所有模块的导入本质上必须是分层的,还是我做错了什么?另外,是否有一种解决方法,不能

  • 问题内容: 我有一个用于存储优惠券/折扣的表,并且我想将coupon_code列用作主键,即。 我的理由是,每个优惠券都将具有唯一的代码,而我将要运行的唯一命令是 我不会进行任何联接或索引编制,并且我看不到该表中有超过几百个条目。 在我看来,这可以,但是我不知道是否有任何我想念的东西。 问题答案: 从某种意义上说,您当然可以,您的RDBMS将允许您这样做。这个问题的答案,你是否没有问题 应该 做到