4

我正在使用 Vertx 和 Redis,我需要存储(网址、单词、日期)的三元组。

Words 是一个值列表,而不仅仅是一个长字符串,因为当我查询这些单词时,我想处理一个字符串列表。每次我检查 URL 是否存在于 Redis 中时,都应该更新日期

所以我的问题是:

  1. 是否可以在不使用 LPUSH 或 RPUSH 之类的东西的情况下在 Redis 中存储值列表?我不想使用这些,因为每个 URL 大约有 40 个单词,而且我不想每次为单个 URL 创建 40 个请求
  2. 是否可以添加一个可以在我每次查询时更新的日期字段?或者我应该检查它是否存在以及是否手动更新它?

我已经看到了很多关于如何使用 LPUSH(或类似的东西)解决这些问题的示例,但正如我所说,我想创建一个插入请求并完成它,同样,我希望尽可能少地获得结果(理想情况下 1) 请求

提前致谢

4

2 回答 2

2

如果您的 Redis 服务器 > 2.4,您可以一次LPUSH( doc ) 多个值。

或者,您可以使用 Redis事务一次执行多个命令。

我不知道允许您获取密钥的创建/更新日期的命令,我认为您必须像在这个SO question中那样手动创建它

于 2016-02-25T13:02:12.750 回答
0

您可以轻松使用 Redis 管道。此功能可以将批量命令作为单个命令发送。这是Redisson框架的示例:

String[] urls = ...

RBatch batch = redisson.createBatch();
RList<String> list = batch.getList("yourList");
for (int i = 0; i < 40; i++) {
      list.addAsync(urls[i]);
}
// send to Redis as single command
batch.execute();
于 2016-09-14T08:30:19.490 回答