lru_eviction_queue
-
Declaration
structLRUEvictionQueue(T);A LRU Eviction Queue for the D programming language
Discussion
License
Boost Software License - Version 1.0
Examples
import lru_eviction_queue; import std.stdio : stdout; // Create a queue that will hold 3 items auto cache = LRUEvictionQueue!int(3); // Fire this event when an item is evicted cache.on_evict_cb = delegate(string key, int value) { stdout.writefln("Evicted item: %s", key); }; // Fire this event when an item is updated cache.on_update_cb = delegate(string key, int value) { stdout.writefln("Updated item: %s", key); }; // Add cache["aaa"] = 65; cache["bbb"] = 97; cache["ccc"] = 15; cache["ddd"] = 46; // Check that the key "aaa" was removed if (! cache.hasKey("aaa")) { stdout.writefln("Item \"aaa\" was evicted!"); }
-
Declaration
this(ulongmax_length);Creates a LRUEvictionQueue
Parameters
ulongmax_lengthThe max size of the queue. After this many items are added, the oldest items will be removed.
Throws
If
max_lengthis less than 1, it will throw an Exception.Examples
auto cache = LRUEvictionQueue!string(100);
-
Declaration
boolhasKey(stringkey);Returns
trueif akeyis still on the queueParameters
stringkeyThe name of the
keyto check.Examples
auto cache = LRUEvictionQueue!string(100); bool retval = cache.hasKey("name");
-
Declaration
voidset(stringkey, Tvalue);Sets the
valuein the queue. Will fire the on_evict_cb event if it is a new item that pushes an item off the queue. Will fire the on_update_cb event if updating an already existingkey.Parameters
stringkeyThe
keytoset.TvalueThe
valuetoset.Examples
auto cache = LRUEvictionQueue!string(100); cache.set("name", "Bob");
-
Declaration
Tget(stringkey, Tdefault_value);Gets the value in the queue
Parameters
stringkeyThe
keytoget.Tdefault_valueThe value returned if the
keyis not found.Examples
auto cache = LRUEvictionQueue!string(100); string name = cache.get("name", string.init);
-
Declaration
voidremove(stringkey);Removes the
keyfrom the queue. Does nothing if thekeyis not in the queue. Will not fire any events.Parameters
stringkeyThe
keytoremove.Examples
auto cache = LRUEvictionQueue!string(100); cache["name"] = "Alice"; cache.remove("name");
-
Declaration
voidclear();Removes all the items from the queue. Will not fire any events.
Examples
auto cache = LRUEvictionQueue!string(100); cache["name"] = "Tim"; cache.clear();
-
Declaration
ulonglength();Returns the
lengthof the queue.Examples
auto cache = LRUEvictionQueue!string(100); cache["name"] = "Alice"; ulong len = cache.length;
-
Declaration
ulongmax_length();Returns the max length of the queue before items are removed.
Examples
auto cache = LRUEvictionQueue!string(100); ulong max_len = cache.max_length;
-
Declaration
string[]keys();Returns all the
keysin the queue.Examples
auto cache = LRUEvictionQueue!int(100); cache["bbb"] = 5; cache["zzz"] = 7; string[] keys = cache.keys();
-
Declaration
intopApply(scope int delegate(ref string key, T value)dg);Used to iterate over the queue.
Examples
auto cache = LRUEvictionQueue!int(100); cache["bbb"] = 5; cache["zzz"] = 7; foreach (key, value ; cache) { }
-
Declaration
TopIndex(stringkey);Gets the value in the queue. Throws if the
keyis not found.Parameters
stringkeyThe
keyto get.Throws
If the
keyis not found, it will throw an Exception.Examples
auto cache = LRUEvictionQueue!string(100); cache["name"] = "Frank"; string name = cache["name"];
-
Declaration
TopIndexAssign(Tvalue, stringkey);Sets the
valuein the queue. Will fire the on_evict_cb event if it is a new item that pushes an item off the queue. Will fire the on_update_cb event if updating an already existingkey.Parameters
stringkeyThe
keyto set.TvalueThe
valueto set.Examples
auto cache = LRUEvictionQueue!string(100); cache["name"] = "Lisa";
-
Declaration
void delegate(string key, T value)on_evict_cb;The event to fire when an existing key is evicted
Parameters
on_evict_cbThe callback to fire.
Examples
auto cache = LRUEvictionQueue!string(2); cache.on_evict_cb = delegate(string key, string value) { }; cache["aaa"] = "Lisa"; cache["bbb"] = "Sally"; cache["ccc"] = "Kevin";
-
Declaration
void delegate(string key, T value)on_update_cb;The event to fire when an existing key is updated
Parameters
on_update_cbThe callback to fire.
Examples
auto cache = LRUEvictionQueue!string(100); cache.on_update_cb = delegate(string key, string value) { }; cache["name"] = "Lisa"; cache["name"] = "Sally";