module SieveCache::CacheBase(K, V)

Direct including types

Defined in:

sieve_cache.cr

Instance Method Summary

Instance Method Detail

def [](key : K) #

Get value by key, raise KeyError if key is not found

value = cache["foo"]

[View source]
def []=(key : K, value : V) #

Set key-value into cache

cache["foo"] = "bar"
cache["foo"] = "baz"

[View source]
def []?(key : K) : V | Nil #

Get value by key, return nil if key is not found

value = cache["foo"]?

[View source]
def cap : UInt32 #

Get the capacity of the cache

p! cache.cap

[View source]
abstract def clear #

Clear cache

cache.clear
p! cache.len # => 0

[View source]
abstract def del(key : K, & : K -> ) #

Delete value by key, call the block if key is not found

deleted_value = cache.del("foo") { nil }

[View source]
def del(key : K) : V | Nil #

Delete value by key, return deleted value or nil (if key is not found)

deleted_value_or_nil = cache.del("foo")

[View source]
def empty? : Bool #

Check cache is empty?

if cache.empty?
  ...
end

[View source]
def full? : Bool #

Check cache is full?

if cache.full?
  ...
end

[View source]
abstract def get(key : K, & : K -> ) #

Get value by key, call the block if key is not found

value = cache.get("foo") { |k| raise "Key: #{k} not found" }

[View source]
def get(key : K, fallback : V) : V #

Get value by key, return fallback value if key is no found

value = cache.get("foo", "bar")
p! value # => "bar"

[View source]
abstract def get_or_set(key : K, & : K -> V) : V #

Get value by key, call the block to get value to set into cache if key is not found

value = cache.get_or_set("foo") { |k| "new value of key: #{k}" }
p! value        # => "new value of key: foo"
p! cache["foo"] # => "new value of key: foo"

[View source]
def get_or_set(key : K, value : V) : V #

Get value by key, set key-value into cache if key is not found

value = cache.get_or_set("foo", "bar")
p! value # => "bar"

[View source]
abstract def has?(key : K) : Bool #

Check cache if has key?

if cache.has?("hello")
  ...
end

[View source]
def len : UInt32 #

Get the length of the cache

p! cache.len

[View source]
abstract def set(key : K, value : V) #

Set key-value to cache

cache.set("foo", "bar")
cache.set("foo", "baz")

[View source]