* Configure the storage by passing in the properties
any function configure( required properties );
* Set a token in the storage
* @token The token to store
* @expiration The token expiration
any function set( required key, required token, required expiration );
* Verify if the passed in token key exists
boolean function exists( required key );
* Retrieve the token via the cache key, if the key doesn't exist a TokenNotFoundException will be thrown
* @defaultValue If not found, return a default value
* @throws TokenNotFoundException
any function get( required key, defaultValue );
* Invalidate/delete one or more keys from the storage
* @key A cache key or an array of keys to clear
any function clear( required any key );
* Clear all the keys in the storage
* @async Run in a separate thread
any function clearAll( boolean async=false );
* Retrieve all the jwt keys stored in the storage
* The size of the storage