我想使用jedis(Redis缓存)和java来存储具有单个值的多个键。
我有三个键,例如user_1
,driver_10
,admin_5
和值= this is user
,我希望通过使用这三个键中的任意一个来获得价值。< / p>
答案 0 :(得分:11)
目前Redis不支持多个键指向相同的值,请参阅issue #2668。
您需要一种解决方法。
以下一些想法,可能是显而易见的或愚蠢的:)
也许有一个中间键:
- user_10
→id_123
- driver_5
→id_123
- id_123
→data_that_you_dont_want_to_duplicate
您可以在客户端代码中或服务器上的自定义Lua脚本中实现该逻辑,并让您的客户端代码使用这些脚本(但我不太了解它以提供详细信息)。
如果在客户端实现间接逻辑,并且访问是不平衡的,例如,您将在99%的时间通过用户密钥访问数据,并且在1%的时间内通过驱动程序密钥访问数据,则可能值得避免2客户端 - 服务器往返99%的案例。为此,您可以编码重定向。例如,如果第一个字符是#
,则其余的是数据。如果第一个字符是@
,则其余字符是实际密钥。
user_10
→#data_that_you_dont_want_to_duplicate
driver_5
→@user_10
答案 1 :(得分:0)
这是一个Lua脚本,可以节省流量,并在一个调用中提取数据: 评估“返回redis.call('get',redis.call('get',KEYS [1]))”” 1位用户10
上面将返回请求数据。