2017-06-02 31 views
1

我想用java使用jedis(Redis缓存)存储具有单个值的多个键。用java指向Redis(缓存)中的单个值的多个键

我有三个键,如user_1,driver_10,admin_5和value = this is user,我想通过使用这三个键中的任何一个键来获得价值。

+0

你能否澄清什么exacly是你的钥匙?它是否包括括号在内的[user_10,driver_5]?你使用哪个[redis java客户端](https://redis.io/clients#java)?杰迪斯,杰瑞迪斯? (不知道任何“jdis”) –

+0

我想添加多个键指向单个值 假设我有三个键,如user_1,driver_10,admin_5和值=“这是用户”,我想通过使用获得价值三个中的任意一个键 – user3864113

回答

4

现在Redis不支持多个键指向相同的值,请参阅issue #2668

您需要一种解决方法。

一些想法下面,可能是明显的或愚蠢的:)


也许有一个中间键:
- user_10id_123
- driver_5id_123
- id_123data_that_you_dont_want_to_duplicate

你可以在客户端代码中实现该逻辑,或者在服务器上的自定义Lua脚本中实现该逻辑让你的客户端代码使用这些脚本(但我不知道提供详细信息)。

如果您在客户端实现间接逻辑,并且访问不平衡,例如,您将在99%的时间内通过用户密钥访问数据,而在1%的时间内通过驱动程序密钥访问数据,这可能是值得避免的对于99%的情况,2次客户端 - 服务器往返。为此,您可以编码重定向。例如,如果第一个字符是#,那么剩下的就是数据。如果第一个字符是@,那么剩下的就是实际的密钥。

  • user_10#data_that_you_dont_want_to_duplicate
  • driver_5@user_10
+0

我想添加多个指向单个值的键假设我有三个键,如user_1,driver_10,admin_5和value =“这是用户”,我想通过使用三个中的任何一个键获得价值 – user3864113

+1

好的,我认为我理解正确,我的答案的第一句是相关的:目前不支持,所以你可以评论链接的github问题,或考虑解决方法。 –

+0

好的,谢谢budy。 – user3864113