在 Redis 中存储带有时间戳的值列表

Storing a list of values with timestamp in Redis

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

Words 是一个值列表,而不仅仅是一个长字符串,因为当我查询这些词时,我想处理一个字符串列表。每次我检查 Redis

中是否存在 URL 时,都应该更新日期

所以我的问题是:

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

我见过很多关于如何使用 LPUSH(或类似的东西)解决这些问题的例子,但正如我所说,我想创建一个插入请求并完成它,同样,我想得到结果尽可能少(最好是 1 个)请求

提前致谢

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

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

我不知道允许您获取密钥的 creation/update 日期的命令,我认为您必须像 SO question

中那样手动创建它

您可以轻松使用 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();