Я пытаюсь кэшировать модель в моем приложении rails.
У меня есть модель Snippets . При первом создании записи создается кэш счетчика повторов.
Модель
class Snippet < ApplicationRecord
after_save :clear_cache
def clear_cache
$redis.del("snippets")
end
end
Контроллер
class SnippetsController < ApplicationController
include SnippetsHelper
def index
@snippets = fetch_snippets
end
def destroy
@snippet.destroy
respond_to do |format|
format.html { redirect_to snippets_url, notice: 'Snippet was successfully destroyed.' }
format.json { head :no_content }
end
end
end
вид
<td><%= link_to 'Destroy', snippet_path(snippet["id"]), method: :delete, data: { confirm: 'Are you sure?' } %></td>
Таким образом, каждый раз, когда я загружаю страницу индекса, я загружаю кеш вместо запроса базы данных.
Теперь, хотя я удалил запись в БД, она все равно появляется на странице указателя. Моя проблема заключается в том, как удалить одновременно и запись в БД, и запись в кеш.
Redis Helper
module SnippetsHelper
def fetch_snippets
snippets = $redis.get("snippets")
if snippets.nil?
snippets = Snippet.all.to_json
$redis.set("snippets", snippets)
$redis.expire("snippets", 5.hour.to_i)
end
JSON.load snippets
end
end