Delete a cache key from Sidekiq using Rails
To handle a situation where a cache key needs to be deleted and you don’t have admin access to the system itself, you can handle the remove through the application by defining a new Rails controller method that calls a Sidekiq job to delete the cache key.
The steps are:
- Define the new route and controller action
- Create the new Sidekiq job to delete the key
- Invoke the controller action in whichever environment the key needs to be cleared from
Route and Controller
get "/sidekiq/delete_key/:key", to: "sidekiq#delete_key"
class SidekiqController < ApplicationController
def delete_key
DeleteSidekiqKeyJob.perform_later(params[:key])
end
end
Job
class DeleteSidekiqKeyJob < ApplicationJob
def perform(key)
Rails.cache.delete(key)
end
end
Now you can hit the route you defined and pass in the key as a path parameter to delete the cached record.