Хранение списка значений с отметкой времени в Redis

Я работаю с Vertx и Redis, и мне нужно хранить тройки (url, слова, дата).

Слова — это список значений, а не просто длинная строка, потому что, когда я запрашиваю эти слова, я хочу работать со списком строк. Дата должна обновляться каждый раз, когда я проверяю, существует ли URL-адрес в Redis.

И так мои вопросы:

  1. Можно ли хранить список значений в Redis без использования чего-то вроде LPUSH или RPUSH? Я не хочу использовать их, потому что у меня есть около 40 слов для каждого URL-адреса, и я не хочу каждый раз создавать 40 запросов для одного URL-адреса.
  2. Можно ли добавить поле даты, где оно может обновляться каждый раз, когда я его запрашиваю? Или я должен вместо этого проверить, существует ли он и обновляет ли он его вручную?

Я видел много примеров того, как решить их с помощью LPUSH (или чего-то подобного), но, как я уже сказал, я хочу создать один запрос на вставку и покончить с ним, точно так же я хотел бы получить результаты с как можно меньшим количеством ( в идеале 1) запрос

заранее спасибо


person Gideon    schedule 24.02.2016    source источник


Ответы (2)


Если ваш сервер Redis > 2.4, вы можете LPUSH (документировать) несколько значений одновременно.

Кроме того, вы можете использовать транзакцию Redis для одновременного выполнения нескольких команд.

Я не знаю команды, которая позволяет вам получить дату создания/обновления ключа, я думаю, вам нужно создать ее вручную, как в этом SO question

person LFI    schedule 25.02.2016

Вы можете легко использовать конвейер 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();
person Nikita Koksharov    schedule 14.09.2016