dyCacheJS

Cache data using JavaScript in the browser.

Created by: Yusuf Shakeel

License

It's free and released under MIT License Copyright (c) 2018 Yusuf Shakeel

Getting Started


Include the dyCacheJS file

<!DOCTYPE html>
<html>
<head>
  <title>dyCacheJS Demo</title>
</head>
<body>

<!-- some html goes here -->

<!-- script -->
<script src="path/to/dyCache.min.js"></script>
</body>
</html>

Instantiate an object

Now, instantiate an object of the dyCache class.

var obj = new dyCache();

Note!
Output represents the state of the cache after the execution of the last method.

Content


Set and Get Methods

set(key, value)

This will create a key in the cache and will set a value.

The value can be a number, string, array or object.

If the key exists in the cache then it is overwritten.

obj.set('num', 10);  // setting numeric value
obj.set('str', 'Yusuf Shakeel'); //setting string value
obj.set('user', { username: 'yusufshakeel', points: 10 });   // setting object value
obj.set('arr', [1, 2, 3]);   // setting array value

get(key)

This will fetch the value of a given key in the cache.

If key does not exists then it will return undefined.

obj.get('num');
obj.get('str');
obj.get('user');
obj.get('arr');

Cache Methods

length()

This will give the total number of keys in the cache.

Returns a number.

obj.length();

keys()

This will give all the keys in the cache.

Returns an array.

obj.keys();

del(key)

This will delete a key from the cache.

obj.del('num');

exists(key)

This checks if a given key exists in the cache.

Returns boolean value: true/false.

obj.exists('num');
obj.exists('str');

purge()

This will remove all the keys from the cache.

obj.purge();

Array Methods

arrInit(key)

This will create a new array referred by key in the cache.

If array referred by key exists in the cache then it is overwritten.

obj.arrInit('users');    // create a new array by the name users

arrPush(key, value)

This will create a key (if not exists) in the cache which is an array and will push the value from the right side of the array.

value can be a number, string, object or array.

obj.arrPush('users', {username: 'yusufshakeel', points: 10});    // push object
obj.arrPush('users', [1, 2, 3]); // push array
obj.arrPush('users', 9999);  // push number
obj.arrPush('users', 'Hello World'); // push string

arrMPush(key, value)

This will push multiple values in an array referred by the key in the cache.

value will be pushed from the right side.

If key does not exists then it will be created.

value is an array of elements. Where, an element can be a number, string, object or array.

obj.arrMPush('users', [100, 'superman', ['a1', 'b2', 200], { id: 10, points: 20}]);

arrLPush(key, value)

This will create a key (if not exists) in the cache which is an array and will push the value from the left side of the array.

value can be a number, string, object or array.

obj.arrLPush('users', {username: 'qwerty', points: 50});

arrMLPush(key, value)

This will push multiple values in an array referred by the key in the cache.

value will be pushed from the left side.

If key does not exists then it will be created.

value is an array of elements. Where, an element can be a number, string, object or array.

obj.arrMLPush('users', [1, 'hi', [1, 3], { m: 1 }]);

arrGet(key, [index, end])

This will return all the elements in the array referred by the given key in the cache.

If the key does not exists then return null.

index is optional. If set then return the element at the given index.

end is optional. If set then return the element from start index to end index.

Note! Array indexing starts from 0.

obj.arrGet('users'); // this will return all elements in the array referred by users key
obj.arrGet('unknown');   // this will return null
obj.arrGet('users', 1);   // this will return element at index 1
obj.arrGet('users', 1, 3);   // this will return element from index 1 to 3

arrLength(key)

This will return the total number of elements in the array referred by key in the cache.

If the key does not exists in the cache then -1 is returned.

obj.arrLength('users');
obj.arrLength('unknown');    // this will return -1 as key does not exists in the cache

arrPop(key)

This will pop an element from the right side of an array referred by given key in the cache.

If the key does not exists in the cache then null is returned.

To avoid ambiguity check if the key exists and total number of elements in the array.

obj.arrPop('users');

arrLPop(key)

This will pop an element from the left side of an array referred by given key in the cache.

If the key does not exists in the cache then null is returned.

To avoid ambiguity check if the key exists and total number of elements in the array.

obj.arrLPop('users');

arrInsertAt(key, index, value)

This will insert a value at a given index in an array referred by key in the cache.

value can be a number, string, array or object.

On success return true. Otherwise false.

obj.arrInsertAt('users', 3, {username: 'foo', points: 99});

arrMInsertAt(key, index, value)

This will insert multiple value at a given index in an array referred by key in the cache.

index is the index at which the new elements are inserted.

value is an array of elements. Each element can be a number, string, array or object.

On success return true. Otherwise false.

obj.arrMInsertAt('users', 1, [ {id: 9999, name: 'yusufshakeel'}, 10, 'happy', [100] ]);

arrUpdateElem(key, index, value)

This will update the value of an element at given index in the array referred by the key in the cache.

On success return true. Otherwise false.

Note! Array indexing starts from 0.

obj.arrUpdateElem('users', 0, { username: 'tintin', points: 50 }); // this will return true

arrDeleteElem(key, index)

This will delete element at given index of the array referred by the key in the cache.

On success it will return the deleted element in an array. Otherwise, false.

obj.arrDeleteElem('users', 0);   // delete element at index 0

arrDeleteElems(key, start, [deleteCount])

This will delete deleteCount number of elements from the index start of the array referred by the key in the cache.

deleteCount is optional. If not present then delete till the end.

On success it will return the deleted elements in an array. Otherwise, false.

obj.arrDeleteElems('users', 2, 3);   // delete 3 elements from index 2
obj.arrDeleteElems('users', 6);   // delete all elements from index 6 till end
obj.arrDeleteElems('users', 0, 3);   // delete 3 elements from the start index

Object Methods

oInit(key)

This will create a new object in the cache by the name key.

If object referred by key exists in the cache then it will be overwritten.

obj.oInit('players');    // creates a new object players

oSet(key, oKey, oValue)

This will create an object in the cache by the name key and will add a property oKey having value oValue.

If oKey exists in the key then it will be overwritten.

oValue can be a number, string, array or object.

obj.oSet('players', 'p1', { id: 'p1', username: 'yusufshakeel' });
obj.oSet('players', 'p2', { id: 'p2', username: 'dawoodshakeel' });

oGet(key, oKey)

This will fetch the value saved in the key oKey inside the object referred by key in the cache.

If key does not exists then it will return undefined.

If oKey does not exists then it will return undefined.

obj.oGet('players', 'p1');
obj.oGet('players', 'unknown');  // return undefined

oGetAll(key)

This will fetch all values saved in the given key of the cache.

If key does not exists then return undefined.

obj.oGetAll('players');

oGetKeys(key)

This will return all the oKey in the object referred by key in the cache.

On success return an array containing all the oKey. Otherwise, false.

obj.oGetKeys('players');

oExists(key, oKey)

This will check if the oKey exists in the object referred by key in the cache.

obj.oExists('players', 'p2');   // this will return true
obj.oExists('players', 'unknown');   // this will return false

oLength(key)

This will return the total number of oKey in the object referred by the key in the cache.

obj.oLength('players');
obj.oLength('unknown');   // this will return -1

oDel(key, oKey)

This will delete the key oKey from the object referred by key in the cache.

Returns boolean value.

On success return true. Otherwise false.

obj.oDel('players', 'p2');   // this will return true

Stack Methods

stackInit(key)

This will initialise a stack referred by key in the cache.

obj.stackInit('myStack');

stackExists(key)

This will check if the stack referred by key exists in the cache.

Return true if stack exists. Otherwise, false.

obj.stackExists('myStack');

stackPush(key, value)

This will push a value in the stack referred by key in the cache.

value can be a number, string, array or object.

obj.stackPush('myStack', 10);    // push number
obj.stackPush('myStack', 'Yusuf Shakeel');   // push string
obj.stackPush('myStack', [1, 2]);    // push array
obj.stackPush('myStack', { a: 10 });    // push object

stackPeek(key)

This will return the top element of the stack referred by key in the cache.

Will return null if stack does not exists.

obj.stackPeek('myStack');

stackPop(key)

This will pop the top element from the stack referred by key in the cache.

Will return undefined if stack does not exists.

obj.stackPop('myStack');

stackLength(key)

This will return total number of elements in the stack referred by key in the cache.

On success return number of elements in the stack. Otherwise -1.

obj.stackLength('myStack');

stackIsEmpty(key)

This will check is the stack referred by key in the cache is empty.

If empty will return true. Otherwise, false.

If key does not exists then return undefined.

obj.stackIsEmpty('myStack');

stackPurge(key)

This will empty the stack referred by key in the cache.

Will return true on success. Otherwise, false.

obj.stackPurge('myStack');

stackDelete(key)

This will delete the stack referred by key from the cache.

Will return true on success. Otherwise, false.

obj.stackDelete('myStack');

Queue Methods

queueInit(key)

This will initialise a queue referred by key in the cache.

obj.queueInit('myQueue');

queueExists(key)

This will check if the queue referred by key exists in the cache.

Return true if queue exists. Otherwise, false.

obj.queueExists('myQueue');

enqueue(key, value)

This will insert a value from the right side in the queue referred by key in the cache.

value can be a number, string, array or object.

obj.enqueue('myQueue', 10);    // enqueue number
obj.enqueue('myQueue', 'Yusuf Shakeel');   // enqueue string
obj.enqueue('myQueue', [1, 2]);    // enqueue array
obj.enqueue('myQueue', { a: 10 });    // enqueue object

dequeue(key)

This will remove the first element from the left side of the queue referred by key in the cache.

Will return null if queue does not exists.

obj.dequeue('myQueue');

queueLPeek(key)

This will return the first element from the left side of the queue referred by key in the cache.

Will return null if queue does not exists.

obj.queueLPeek('myQueue');

queueRPeek(key)

This will return the last element from the right side of the queue referred by key in the cache.

Will return null if queue does not exists.

obj.queueRPeek('myQueue');

queueLength(key)

This will return total number of elements in the queue referred by key in the cache.

On success return number of elements in the queue. Otherwise -1.

obj.queueLength('myQueue');

queueIsEmpty(key)

This will check is the queue referred by key in the cache is empty.

If empty will return true. Otherwise, false.

If key does not exists then return undefined.

obj.queueIsEmpty('myQueue');

queuePurge(key)

This will empty the queue referred by key in the cache.

Will return true on success. Otherwise, false.

obj.queuePurge('myQueue');

queueDelete(key)

This will delete the queue referred by key from the cache.

Will return true on success. Otherwise, false.

obj.queueDelete('myQueue');

LRU Methods

LRU - Least Recently Used


LRUInit(name, size)

This will create a new object for the LRU in the cache by the name name having the given size.

If object referred by name exists in the cache then it will be overwritten.

If size is not set then LRU object of queue size 3 is created.

obj.LRUInit('myLRU', 3);    // creates a new LRU object myLRU

LRUExists(name)

This will check if the LRU object referred by name exists in the cache.

Returns true on success, false otherwise.

obj.LRUExists('myLRU');

LRUSet(name, key, value)

This will set key-value pair in the LRU object referred by name in the cache.

key can be a string or number.

value can be a number, string, array or object.

Returns true on success

Returns false if LRU object does not exists in the cache.

obj.LRUSet('myLRU', "k1", 10);    // k1: 10
obj.LRUSet('myLRU', "k2", 20);    // k2: 20
obj.LRUSet('myLRU', "k3", 30);    // k3: 30

LRUGet(name, key)

This will fetch key-value pair for the given key from the LRU object referred by name in the cache.

Returns { key: value } on success.

Returns {} if key is not found in the LRU object.

Returns false if the LRU object does not exists in the cache.

obj.LRUGet('myLRU', "k1");

LRUResize(name, size)

This will resize the LRU object referred by name in the cache.

If size is not mentioned then LRU object is resized to 3.

If new size is less than the current size then, first 'size'-th key is kept in the queue and data set and rest of the keys are removed.

For example, if current size is 10 and new size is 4, then first 4 key is retained in the data set and queue while the remaining keys are removed.

Returns true on success, false otherwise.

obj.LRUResize('myLRU', 2);

LRUPurge(name)

This will purge the LRU object referred by name in the cache.

Returns true on success, false otherwise.

obj.LRUPurge('myLRU');

LRUDelete(name)

This will delete the LRU object referred by name from the cache.

Returns true on success, false otherwise.

obj.LRUDelete('myLRU');

Donate

Feeling generous ♥ Buy me a cup of tea

Donate via PayPal


Copyright © Yusuf Shakeel

MIT License