使用java

时间:2017-06-02 07:44:00

标签: java caching redis hash-of-hashes

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

我有三个键,例如user_1driver_10admin_5和值= this is user,我希望通过使用这三个键中的任意一个来获得价值。< / p>

2 个答案:

答案 0 :(得分:11)

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

您需要一种解决方法。

以下一些想法,可能是显而易见的或愚蠢的:)

也许有一个中间键:
  - user_10id_123
  - driver_5id_123
  - id_123data_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

上面将返回请求数据。