class Aws::LRUCache
A simple thread safe LRU cache
@api private
def [](key)
-
(Object)
-
Parameters:
-
key
(String
) --
def [](key) @mutex.synchronize do value = @entries[key] if value @entries.delete(key) @entries[key] = value unless value.expired? end @entries[key]&.value end end
def []=(key, value)
-
value
(Object
) -- -
key
(String
) --
def []=(key, value) @mutex.synchronize do @entries.shift unless @entries.size < @max_entries # delete old value if exists @entries.delete(key) @entries[key] = Entry.new(value: value, expiration: @expiration) @entries[key].value end end
def clear
def clear @mutex.synchronize do @entries.clear end end
def initialize(options = {})
(**options)
-
:expiration
(Integer
) -- Expiration time in seconds -
:max_entries
(Integer
) -- Maximum number of entries
Parameters:
-
options
(Hash
) --
def initialize(options = {}) @max_entries = options[:max_entries] || 100 @expiration = options[:expiration] @entries = {} @mutex = Mutex.new end
def key?(key)
-
(Boolean)
-
Parameters:
-
key
(String
) --
def key?(key) @mutex.synchronize do @entries.delete(key) if @entries.key?(key) && @entries[key].expired? @entries.key?(key) end end