我想用java使用jedis(Redis缓存)存储具有单个值的多个键。用java指向Redis(缓存)中的单个值的多个键
我有三个键,如user_1
,driver_10
,admin_5
和value = this is user
,我想通过使用这三个键中的任何一个键来获得价值。
我想用java使用jedis(Redis缓存)存储具有单个值的多个键。用java指向Redis(缓存)中的单个值的多个键
我有三个键,如user_1
,driver_10
,admin_5
和value = this is user
,我想通过使用这三个键中的任何一个键来获得价值。
现在Redis不支持多个键指向相同的值,请参阅issue #2668。
您需要一种解决方法。
一些想法下面,可能是明显的或愚蠢的:)
也许有一个中间键:
- user_10
→id_123
- driver_5
→id_123
- id_123
→data_that_you_dont_want_to_duplicate
你可以在客户端代码中实现该逻辑,或者在服务器上的自定义Lua脚本中实现该逻辑让你的客户端代码使用这些脚本(但我不知道提供详细信息)。
如果您在客户端实现间接逻辑,并且访问不平衡,例如,您将在99%的时间内通过用户密钥访问数据,而在1%的时间内通过驱动程序密钥访问数据,这可能是值得避免的对于99%的情况,2次客户端 - 服务器往返。为此,您可以编码重定向。例如,如果第一个字符是#
,那么剩下的就是数据。如果第一个字符是@
,那么剩下的就是实际的密钥。
user_10
→#data_that_you_dont_want_to_duplicate
driver_5
→@user_10
我想添加多个指向单个值的键假设我有三个键,如user_1,driver_10,admin_5和value =“这是用户”,我想通过使用三个中的任何一个键获得价值 – user3864113
好的,我认为我理解正确,我的答案的第一句是相关的:目前不支持,所以你可以评论链接的github问题,或考虑解决方法。 –
好的,谢谢budy。 – user3864113
你能否澄清什么exacly是你的钥匙?它是否包括括号在内的[user_10,driver_5]?你使用哪个[redis java客户端](https://redis.io/clients#java)?杰迪斯,杰瑞迪斯? (不知道任何“jdis”) –
我想添加多个键指向单个值 假设我有三个键,如user_1,driver_10,admin_5和值=“这是用户”,我想通过使用获得价值三个中的任意一个键 – user3864113