Files
news.gitea.happylizard.me/bin/gems/typhoeus-1.4.1/lib/typhoeus/cache/redis.rb
T
pizza2d1 4cee170d66
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
Add bin and edit workflow
2026-09-16 13:11:16 -06:00

36 lines
1.2 KiB
Ruby

module Typhoeus
module Cache
# This module provides a simple way to cache HTTP responses in Redis.
class Redis
# @example Set Redis as the Typhoeus cache backend
# Typhoeus::Config.cache = Typhoeus::Cache::Redis.new
#
# @param [ Redis ] redis
# A connection to Redis. Defaults to `Redis.new`, which uses the
# `REDIS_URL` environment variable to connect
# @param [ Hash ] options
# Options
# @option options [ Integer ] :default_ttl
# The default TTL of cached responses in seconds, for requests which do not set a cache_ttl.
def initialize(redis = ::Redis.new, options = {})
@redis = redis
@default_ttl = options[:default_ttl]
end
def get(request)
serialized_response = @redis.get(request.cache_key)
return unless serialized_response
Marshal.load(serialized_response)
end
def set(request, response)
ttl = request.cache_ttl || @default_ttl
key = request.cache_key
serialized_response = Marshal.dump(response)
@redis.set(key, serialized_response)
@redis.expire(key, ttl) if ttl
end
end
end
end