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.CementCacheHandler
This 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 includeredis
in your applications dependencies as Cement explicitly does not include external dependencies for optional extensions.-
class
Meta
¶ Handler 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
setup
the 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