class Ollama::Documents::RedisBackedMemoryCache

def []=(key, value)

def []=(key, value)
  super
  redis.set(pre(key), JSON(value))
end

def clear

def clear
  redis.scan_each(match: "#@prefix*") { |key| redis.del(key) }
  super
  self
end

def delete(key)

def delete(key)
  result = redis.del(pre(key))
  super
  result
end

def initialize(prefix:, url: ENV['REDIS_URL'])

def initialize(prefix:, url: ENV['REDIS_URL'])
  super(prefix:)
  url or raise ArgumentError, 'require redis url'
  @prefix, @url = prefix, url
  @redis_cache  = Ollama::Documents::RedisCache.new(prefix:, url:)
  @redis_cache.full_each do |key, value|
    @data[key] = value
  end
end

def pre(key)

def pre(key)
  [ @prefix, key ].join
end

def redis

def redis
  @redis_cache.redis
end

def unpre(key)

def unpre(key)
  key.sub(/\A#@prefix/, '')
end