cement.ext.ext_redis¶
The Redis Extension provides application caching and key/value store support via Redis.
Requirements¶
- redis (
pip install redis)
Configuration¶
This extension honors the following config settings
under a [cache.redis] section in any configuration file:
- expire_time - The default time in second to expire items in the cache. Default: 0 (does not expire).
- host - Redis server.
- port - Redis port.
- db - Redis database number.
Configurations can be passed as defaults to a CementApp:
from cement.core.foundation import CementApp
from cement.utils.misc import init_defaults
defaults = init_defaults('myapp', 'cache.redis')
defaults['cache.redis']['expire_time'] = 0
defaults['cache.redis']['host'] = '127.0.0.1'
defaults['cache.redis']['port'] = 6379
defaults['cache.redis']['db'] = 0
class MyApp(CementApp):
class Meta:
label = 'myapp'
config_defaults = defaults
extensions = ['redis']
cache_handler = 'redis'
Additionally, an application configuration file might have a section like the following:
[myapp]
# set the cache handler to use
cache_handler = redis
[cache.redis]
# time in seconds that an item in the cache will expire
expire_time = 300
# Redis server
host = 127.0.0.1
# Redis port
port = 6379
# Redis database number
db = 0
Usage¶
from cement.core import foundation
from cement.utils.misc import init_defaults
defaults = init_defaults('myapp', 'redis')
defaults['cache.redis']['expire_time'] = 300 # seconds
defaults['cache.redis']['host'] = '127.0.0.1'
defaults['cache.redis']['port'] = 6379
defaults['cache.redis']['db'] = 0
class MyApp(foundation.CementApp):
class Meta:
label = 'myapp'
config_defaults = defaults
extensions = ['redis']
cache_handler = 'redis'
with MyApp() as app:
# Run the app
app.run()
# Set a cached value
app.cache.set('my_key', 'my value')
# Get a cached value
app.cache.get('my_key')
# Delete a cached value
app.cache.delete('my_key')
# Delete the entire cache
app.cache.purge()
-
class
cement.ext.ext_redis.RedisCacheHandler(*args, **kw)¶ Bases:
cement.core.cache.CementCacheHandlerThis class implements the ICache interface. It provides a caching interface using the redis library.
Note This extension has an external dependency on
redis. You must includeredisin your applications dependencies as Cement explicitly does not include external dependencies for optional extensions.-
class
Meta¶ Bases:
objectHandler meta-data.
-
interface¶ alias of
cement.core.cache.ICache
-
-
_config(key, default=None)¶ This is a simple wrapper, and is equivalent to:
self.app.config.get('cache.redis', <key>).Parameters: key – The key to get a config value from the ‘cache.redis’ config section. Returns: The value of the given key.
-
_setup(*args, **kw)¶ The _setup function is called during application initialization and must
setupthe handler object making it ready for the framework or the application to make further calls to it.Parameters: app_obj – The application object. Returns: None
-
delete(key, **kw)¶ Delete an item from the cache for the given
key. Additional keyword arguments are ignored.Parameters: key – The key to delete from the cache. Returns: None
-
get(key, fallback=None, **kw)¶ Get a value from the cache. Additional keyword arguments are ignored.
Parameters: - key – The key of the item in the cache to get.
- fallback – The value to return if the item is not found in the cache.
Returns: The value of the item in the cache, or the fallback value.
-
purge(**kw)¶ Purge the entire cache, all keys and values will be lost. Any additional keyword arguments will be passed directly to the redis
flush_all()function.Returns: None
-
set(key, value, time=None, **kw)¶ Set a value in the cache for the given
key. Additional keyword arguments are ignored.Parameters: - key – The key of the item in the cache to set.
- value – The value of the item to set.
- time – The expiration time (in seconds) to keep the item cached. Defaults to expire_time as defined in the applications configuration.
Returns: None
-
class