Class: RubyLLM::SemanticCache::CacheStores::Memory

Inherits:
Base
  • Object
show all
Defined in:
lib/ruby_llm/semantic_cache/cache_stores/memory.rb

Defined Under Namespace

Classes: CacheEntry

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Memory

Returns a new instance of Memory.



11
12
13
14
15
# File 'lib/ruby_llm/semantic_cache/cache_stores/memory.rb', line 11

def initialize(config)
  super
  @store = {}
  @mutex = Mutex.new
end

Instance Method Details

#clear!Object



44
45
46
47
48
# File 'lib/ruby_llm/semantic_cache/cache_stores/memory.rb', line 44

def clear!
  @mutex.synchronize do
    @store.clear
  end
end

#delete(id) ⇒ Object



38
39
40
41
42
# File 'lib/ruby_llm/semantic_cache/cache_stores/memory.rb', line 38

def delete(id)
  @mutex.synchronize do
    @store.delete(id)
  end
end

#each {|id, data| ... } ⇒ Object

Iterate over all entries (for invalidation)

Yields:

  • (id, data)

    each entry



66
67
68
69
70
71
72
73
# File 'lib/ruby_llm/semantic_cache/cache_stores/memory.rb', line 66

def each
  @mutex.synchronize do
    cleanup_expired
    @store.each do |id, entry|
      yield(id, entry.data)
    end
  end
end

#empty?Boolean

Returns:

  • (Boolean)


50
51
52
53
54
55
# File 'lib/ruby_llm/semantic_cache/cache_stores/memory.rb', line 50

def empty?
  @mutex.synchronize do
    cleanup_expired
    @store.empty?
  end
end

#get(id) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/ruby_llm/semantic_cache/cache_stores/memory.rb', line 17

def get(id)
  @mutex.synchronize do
    entry = @store[id]
    return nil unless entry

    if entry.expires_at && Time.now > entry.expires_at
      @store.delete(id)
      return nil
    end

    entry.data
  end
end

#set(id, data, ttl: nil) ⇒ Object



31
32
33
34
35
36
# File 'lib/ruby_llm/semantic_cache/cache_stores/memory.rb', line 31

def set(id, data, ttl: nil)
  @mutex.synchronize do
    expires_at = ttl ? Time.now + ttl : nil
    @store[id] = CacheEntry.new(data: data, expires_at: expires_at)
  end
end

#sizeObject



57
58
59
60
61
62
# File 'lib/ruby_llm/semantic_cache/cache_stores/memory.rb', line 57

def size
  @mutex.synchronize do
    cleanup_expired
    @store.size
  end
end