Identity supports a caching layer that is above the
configurable subsystems, such as token or assignment. The
majority of the caching configuration options are set in the
[cache]
section. However, each section that
has the capability to be cached usually has a
caching
option that will toggle caching for that
specific section. By default, caching is globally disabled.
Options are as follows:
Configuration option = Default value | Description |
---|---|
[cache] | |
backend = keystone.common.cache.noop | (StrOpt) Dogpile.cache backend module. It is recommended that Memcache with pooling (keystone.cache.memcache_pool) or Redis (dogpile.cache.redis) be used in production deployments. Small workloads (single process) like devstack can use the dogpile.cache.memory backend. |
backend_argument = [] | (MultiStrOpt) Arguments supplied to the backend module. Specify this option once per argument to be passed to the dogpile.cache backend. Example format: "<argname>:<value>". |
config_prefix = cache.keystone | (StrOpt) Prefix for building the configuration dictionary for the cache region. This should not need to be changed unless there is another dogpile.cache region with the same configuration name. |
debug_cache_backend = False | (BoolOpt) Extra debugging from the cache backend (cache keys, get/set/delete/etc calls). This is only really useful if you need to see the specific cache-backend get/set/delete calls with the keys/values. Typically this should be left set to false. |
enabled = False | (BoolOpt) Global toggle for all caching using the should_cache_fn mechanism. |
expiration_time = 600 | (IntOpt) Default TTL, in seconds, for any cached item in the dogpile.cache region. This applies to any cached method that doesn't have an explicit cache expiration time defined for it. |
memcache_dead_retry = 300 | (IntOpt) Number of seconds memcached server is considered dead before it is tried again. (dogpile.cache.memcache and keystone.cache.memcache_pool backends only) |
memcache_pool_connection_get_timeout = 10 | (IntOpt) Number of seconds that an operation will wait to get a memcache client connection. |
memcache_pool_maxsize = 10 | (IntOpt) Max total number of open connections to every memcached server. (keystone.cache.memcache_pool backend only) |
memcache_pool_unused_timeout = 60 | (IntOpt) Number of seconds a connection to memcached is held unused in the pool before it is closed. (keystone.cache.memcache_pool backend only) |
memcache_servers = localhost:11211 | (ListOpt) Memcache servers in the format of "host:port". (dogpile.cache.memcache and keystone.cache.memcache_pool backends only) |
memcache_socket_timeout = 3 | (IntOpt) Timeout in seconds for every call to a server. (dogpile.cache.memcache and keystone.cache.memcache_pool backends only) |
proxies = | (ListOpt) Proxy classes to import that will affect the way the dogpile.cache backend functions. See the dogpile.cache documentation on changing-backend-behavior. |
[memcache] | |
dead_retry = 300 | (IntOpt) Number of seconds memcached server is considered dead before it is tried again. This is used by the key value store system (e.g. token pooled memcached persistence backend). |
pool_connection_get_timeout = 10 | (IntOpt) Number of seconds that an operation will wait to get a memcache client connection. This is used by the key value store system (e.g. token pooled memcached persistence backend). |
pool_maxsize = 10 | (IntOpt) Max total number of open connections to every memcached server. This is used by the key value store system (e.g. token pooled memcached persistence backend). |
pool_unused_timeout = 60 | (IntOpt) Number of seconds a connection to memcached is held unused in the pool before it is closed. This is used by the key value store system (e.g. token pooled memcached persistence backend). |
Current functional backends are:
dogpile.cache.memcached
- Memcached backend using the standard python-memcached librarydogpile.cache.pylibmc
- Memcached backend using the pylibmc librarydogpile.cache.bmemcached
- Memcached using python-binary-memcached library.dogpile.cache.redis
- Redis backenddogpile.cache.dbm
- Local DBM file backenddogpile.cache.memory
- In-memory cache, not suitable for use outside of testing as it does not cleanup it's internal cache on cache expiration and does not share cache between processes. This means that caching and cache invalidation will not be consistent or reliable.dogpile.cache.mongo
- MongoDB as caching backend.