Sha256: 80f29a57aa5249770b1549ae85f3ea1cb216a19be4a3eaaeb416801c83267b88
Contents?: true
Size: 1.31 KB
Versions: 2
Compression:
Stored size: 1.31 KB
Contents
require 'ollama/documents/cache/common' require 'redis' class Ollama::Documents::RedisCache include Ollama::Documents::Cache::Common def initialize(prefix:, url: ENV['REDIS_URL'], object_class: nil, ex: nil) url or raise ArgumentError, 'require redis url' @prefix, @url, @object_class, @ex = prefix, url, object_class, ex end attr_reader :object_class def redis @redis ||= Redis.new(url: @url) end def [](key) value = redis.get(pre(key)) unless value.nil? JSON(value, object_class:) end end def []=(key, value) redis.set(pre(key), JSON.generate(value), ex: @ex) end def ttl(key) redis.ttl(pre(key)) end def key?(key) !!redis.exists?(pre(key)) end def delete(key) redis.del(pre(key)) == 1 end def size s = 0 redis.scan_each(match: "#@prefix*") { |key| s += 1 } s end def clear redis.scan_each(match: "#@prefix*") { |key| redis.del(key) } self end def each(&block) redis.scan_each(match: "#@prefix*") { |key| block.(key, self[unpre(key)]) } self end include Enumerable def full_each(&block) redis.scan_each(match: [ Ollama::Documents, ?* ] * ?-) do |key| value = redis.get(key) or next value = JSON(value, object_class: Ollama::Documents::Record) block.(key, value) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ollama-ruby-0.6.0 | lib/ollama/documents/cache/redis_cache.rb |
ollama-ruby-0.5.0 | lib/ollama/documents/cache/redis_cache.rb |