Configuration¶
Cachy provides a unified API for various caching systems.
All you need to get you started is the configuration describing the various cache stores
and passing it to a CacheManager
instance.
from cachy import CacheManager
config = {
'stores': {
'redis': {
'driver': 'redis',
'host': 'localhost',
'port': 6379,
'db': 0
}
}
}
cache = CacheManager(config)
If you have multiple stores configured you can specify which one is the default:
from cachy import CacheManager
config = {
'stores': {
'redis': {
'driver': 'redis',
'host': 'localhost',
'port': 6379,
'db': 0
},
'memcached': {
'driver' 'memcached',
'servers': [
'127.0.0.1:11211'
]
}
}
}
An example cache configuration is located at examples/config.py.
The cache configuration file contains various options, which are documented within the file, so make sure to read over these options.
Cache Prerequisites¶
Database¶
When using the database
cache driver, you will need the Orator ORM.
You will also need to setup a table to contain the cache items.
You will find an example SchemaBuilder
declaration for the table below:
with schema.create('cache') as table:
table.string('key').unique()
table.text('value')
table.integer('expiration')
Memcached¶
When using the memcached
driver, you will need either the pure-python python-memcached
(python3-memcached) or the libmemcached wrapper, pylibmc.
{
'memcached': {
'driver': 'memcached',
'servers': [
'127.0.0.1:11211'
]
}
}
Redis¶
You will need the redis library in order to use the redis
driver.
{
'redis': {
'driver': 'memcached',
'host': 'localhost',
'port': 6379,
'db': 0
}
}
File¶
You do not need any extra package to use the file
driver.
{
'file': {
'driver': 'file',
'path': '/my/cache/directory'
}
}
Serialization¶
By default, Cachy will serialize objects using the pickle
library.
However, this can be changed in the configuration, either globally or at driver level.
The possible values are pickle
, json
, msgpack
.
config = {
'default': 'redis',
'serializer': 'pickle',
'stores': {
'redis': {
'driver': 'redis',
'serializer': 'json',
'host': 'localhost',
'port': 6379,
'db': 0
},
'memcached': {
'driver' 'memcached',
'servers': [
'127.0.0.1:11211'
]
}
}
}
Warning
The serializer you choose will determine which types of objects you can serialize,
the pickle
serializer being the more permissive.