Как получить данные redis, используя id в приложении rails - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь реализовать кэш redis в приложении rails. До сих пор я могу кешировать данные активной записи, используя кеш redis. Я могу получить все записи одновременно, используя метод get. Но мне трудно разобраться, как извлечь одну запись с использованием идентификатора, поскольку данные, создаваемые redis, имеют строковый тип данных.

Ниже приведены данные, кэшированные Redis:

"set" "bookstore:authors" "[{\"id\":1,\"name\":\"Stephenie Meyer\",\"created_at\":\"2018-05-03T10:58:20.326Z\",\"updated_at\":\"2018-05-03T10:58:20.326Z\"},{\"id\":2,\"name\":\"V.C. Andrews\",\"created_at\":\"2018-05-03T10:58:20.569Z\",\"updated_at\":\"2018-05-03T10:58:20.569Z\"}]

Теперь я звоню

authors = $redis.get('authors')

для отображения всех авторов.

Как я могу получить одного автора, используя его идентификатор?

Вспомогательный метод для извлечения авторов

def fetch_authors
    authors = $redis.get('authors')

    if authors.nil?
      authors = Author.all.to_json
      $redis.set("authors", authors).to_json
      $redis.expire("authors", 5.hour.to_i)
    end
    JSON.load authors
end

1 Ответ

0 голосов
/ 03 мая 2018

В вашем случае лучше использовать хеш. Для этого вы можете использовать следующие команды:

HSET bookstore:authors 1 "<author json>"
HGET bookstore:authors 1 // Returns that author's json data

Или вы можете хранить каждого автора отдельно:

SET bookstore:authors:1 <author_json>
GET bookstore:authors:1 // Returns that author's json data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...