oslo_cache.backends 包¶
子模块¶
oslo_cache.backends.dictionary 模块¶
使用字典进行存储的 dogpile.cache 后端
- class oslo_cache.backends.dictionary.DictCacheBackend(arguments)¶
基类:
CacheBackend基于字典的 DictCacheBackend。
arguments 字典中接受的参数
- 参数:
expiration_time (real) – 每个键在 DictCacheBackend 中的最大生存时间,以秒为单位。默认 expiration_time 值为 0,这意味着所有键都具有无限的生存时间。
- delete(key)¶
如果存在,则删除与键关联的值。
- 参数:
key – 字典键
- delete_multi(keys)¶
如果存在,则删除列表中每个键关联的值。
- 参数:
keys – 字典键列表
- get(key)¶
检索键的值。
- 参数:
key – 字典键
- 返回值:
键的值或
oslo_cache.core.NO_VALUE对于不存在或过期的键。
- get_multi(keys)¶
检索列表中每个键的值。
- set(key, value)¶
设置键的值。
在每次设置期间清除过期的键。
- 参数:
key – 字典键
value – 与键关联的值
- set_multi(mapping)¶
在缓存中设置多个值。在每次设置期间清除过期的键。
- 参数:
mapping – 包含键/值对的字典
oslo_cache.backends.etcd3gw 模块¶
使用 etcd 3.x 进行存储的 dogpile.cache 后端
- class oslo_cache.backends.etcd3gw.Etcd3gwCacheBackend(arguments)¶
基类:
CacheBackend- DEFAULT_HOST = 'localhost'¶
默认主机名,在未提供时使用。
- DEFAULT_PORT = 2379¶
默认端口,在未提供时使用(4001 或 2379 是常见的端口)。
- DEFAULT_TIMEOUT = 30¶
在未提供时使用的默认套接字/锁/成员/领导者超时时间。
- delete(key)¶
从缓存中删除一个值。
- 参数:
key – 传递给
CacheRegion.delete()方法的字符串键,如果存在“键处理”函数,也将对其进行处理。
此行为应该是幂等的,即无论键是否存在,都可以调用任意次数。
- delete_multi(keys)¶
从缓存中删除多个值。
- 参数:
keys – 传递给
CacheRegion.delete_multi()方法的字符串键序列,如果存在“键处理”函数,也将对其进行处理。
此行为应该是幂等的,即无论键是否存在,都可以调用任意次数。
在版本 0.5.0 中添加。
- get(key)¶
检索缓存中的可选序列化值。
- 参数:
key – 传递给
CacheRegion.get()方法的字符串键,如果存在“键处理”函数,也将对其进行处理。- 返回值:
与通过
CacheBackend.set()方法建立的 Python 对象对应的值,或者如果不存在或已过期,则为NO_VALUE常量。
如果使用序列化器,则仅当未覆盖
CacheBackend.get_serialized()方法时,才会调用此方法。
- get_multi(keys)¶
检索列表中每个键的值。
- set(key, value)¶
在缓存中设置可选序列化的值。
- 参数:
key – 传递给
CacheRegion.set()方法的字符串键,如果存在“键处理”函数,也将对其进行处理。value – 可选的
CachedValue对象。根据区域是否使用序列化器以及是否覆盖CacheBackend.set_serialized()方法,可能是CachedValue或 bytes 对象。
参见
CacheBackend.set_serialized()
- set_multi(mapping)¶
在缓存中设置多个值。
- 参数:
mapping – 传递给
CacheRegion.set_multi()方法的字典,如果存在“键处理”函数,也将对其进行处理。
当通过
Region.get_or_create_multi()调用时,实现新的CacheBackend或通过ProxyBackend进行自定义时,请注意,mapping值与返回给上游调用者的值相同。如果子类以任何方式更改这些值,则不能在mapping字典上“就地”进行更改——这将产生修改返回值的副作用。如果使用序列化器,则仅当未覆盖
CacheBackend.set_serialized_multi()方法时,才会调用此方法。在版本 0.5.0 中添加。
oslo_cache.backends.memcache_pool 模块¶
使用 Memcached 连接池的 dogpile.cache 后端
- class oslo_cache.backends.memcache_pool.PooledMemcachedBackend(arguments)¶
基类:
MemcachedBackend使用连接池的 Memcached 后端。
此 memcached 后端仅允许重用客户端对象,防止实例化过多的客户端对象,并正确跟踪死服务器,以限制服务器(或所有服务器)不可用时产生的延迟。
此后端不允许在服务器之间进行负载均衡。
Memcached 不是 HA。值不会自动在服务器之间复制,除非客户端多次写入该值。
要使用的 memcache 服务器由 python-memcached 确定,它根据键哈希从给定的服务器列表中选择要使用的主机。
- property client¶
返回 memcached 客户端。
默认情况下,这使用 threading.local,因为现代大多数 memcached 库似乎本质上不是线程安全的。
oslo_cache.backends.mongo 模块¶
- class oslo_cache.backends.mongo.MongoCacheBackend(arguments)¶
基类:
CacheBackend实现 dogpile 后端 API 的基于 MongoDB 的缓存后端。
arguments 字典中接受的参数
- 参数:
db_hosts – 字符串(必需),MongoDB 服务器实例的主机名或 IP 地址。这可以是单个 MongoDB 连接 URI,也可以是 MongoDB 连接 URI 的列表。
db_name – 字符串(必需),要使用的数据库的名称。
cache_collection – 字符串(必需),用于存储缓存数据的集合的名称。注意:如果需要为缓存数据创建单独的容器(即集合),可以提供不同的集合名称。因此,区域配置是按集合进行的。
以下是 MongoDB 后端配置的可选参数,
- 参数:
username – 字符串,用于身份验证的用户名。
password – 字符串,用于身份验证的用户的密码。
max_pool_size – 整数,池将同时打开的最大连接数。默认池大小为 10。
w –
整数,MongoDB 客户端的写入确认
如果未提供,则 MongoDB 中没有默认设置,然后写入确认行为将按照 MongoDB 默认设置进行。此参数名称与 MongoDB 文档中使用的名称相同。此值在集合级别指定,因此适用于 cache_collection db 写入操作。
如果这是一个副本集,写操作将被阻塞,直到它们被复制到指定数量或标记的服务器集合。设置 w=0 会禁用写确认和所有其他写关注选项。
read_preference – 字符串,MongoDB 客户端的读取偏好模式。期望值为
primary、primaryPreferred、secondary、secondaryPreferred或nearest。此 read_preference 在集合级别指定,因此适用于 cache_collection 数据库的读取操作。use_replica – 布尔值,标识是否使用副本客户端的标志。默认值为 False。如果 True,则需要 replicaset_name 值。
replicaset_name – 字符串,副本集名称。如果 use_replica 为 True,则变为必需。
son_manipulator –
字符串,具有模块名称的类的名称,该类实现 MongoDB SONManipulator。默认使用的 manipulator 是
BaseTransform。此 manipulator 是每个数据库添加的。在多个缓存配置中,如果使用相同的数据库名称
db_name,则 manipulator 名称应相同。SONManipulator 用于操作自定义数据类型,这些数据类型被保存或从 MongoDB 检索。仅当缓存数据是自定义类并且在保存或从数据库读取时需要转换时,才需要自定义实现。如果 dogpile 缓存值包含内置数据类型,则 BaseTransform 类就足够了,因为它已经处理了 dogpile CachedValue 类的转换。
mongo_ttl_seconds –
整数,以秒为单位的间隔,表示最大生存时间值。如果值大于 0,则假定 cache_collection 需要是 TTL 类型(在 ‘doc_date’ 字段上具有索引)。默认值为 -1,并且已禁用。参考:<http://docs.mongodb.org/manual/tutorial/expire-data/>
注意
此参数与 Dogpile 自身的 expiration_time 不同,后者是 Dogpile 认为值已过期的秒数。当 Dogpile 认为值已过期时,它会继续使用该值,直到生成新值的过程完成,在使用 CacheRegion.get_or_create() 时。因此,如果您正在设置 mongo_ttl_seconds,您需要确保它大于 expiration_time 至少有足够的秒数来生成新值,否则该值在重新生成期间将不可用,迫使所有线程每次值过期时都等待重新生成。
ssl – 布尔值,如果为 True,则使用 SSL 创建到服务器的连接。默认值为 False。客户端 SSL 连接参数取决于服务器端的 SSL 设置。有关 SSL 配置的更多参考信息:<http://docs.mongodb.org/manual/tutorial/configure-ssl/>
ssl_keyfile – 字符串,用于标识与 mongod 的本地连接的私钥文件。如果包含 certfile,则只需要 ssl_certfile。仅当 ssl 为 True 时使用。
ssl_certfile – 字符串,用于标识与 mongod 的本地连接的证书文件。仅当 ssl 为 True 时使用。
ssl_ca_certs – 字符串,ca_certs 文件包含一组串联的“证书颁发机构”证书,用于验证从连接另一端传递的证书。仅当 ssl 为 True 时使用。
ssl_cert_reqs – 字符串,参数 cert_reqs 指定是否需要来自连接另一端的证书,如果提供,是否对其进行验证。它必须是以下三个值之一:
ssl.CERT_NONE(忽略证书)、ssl.CERT_OPTIONAL(不需要,但如果提供则进行验证)或ssl.CERT_REQUIRED(需要并进行验证)。如果此参数的值不是ssl.CERT_NONE,则 ssl_ca_certs 参数必须指向 CA 证书文件。仅当 ssl 为 True 时使用。
其余参数传递给 read、write 和 remove 的 mongo 调用。因此,可以指定相关的选项传递给这些操作。
可以从 <http://api.mongodb.org/python/current/api/pymongo/> 了解各种支持的参数的更多详细信息。
- client¶
初始化 MongoDB 连接和集合默认值。
此初始化仅执行一次,并且作为 MongoDB 依赖项的延迟包含的一部分执行,即仅在相关后端使用时才添加导入。
- 返回值:
MongoApi实例
- delete(key)¶
从缓存中删除一个值。
- 参数:
key – 传递给
CacheRegion.delete()方法的字符串键,如果存在“键处理”函数,也将对其进行处理。
此行为应该是幂等的,即无论键是否存在,都可以调用任意次数。
- delete_multi(keys)¶
从缓存中删除多个值。
- 参数:
keys – 传递给
CacheRegion.delete_multi()方法的字符串键序列,如果存在“键处理”函数,也将对其进行处理。
此行为应该是幂等的,即无论键是否存在,都可以调用任意次数。
在版本 0.5.0 中添加。
- get(key)¶
检索键的值。
- 参数:
key – 要检索的键。
- 返回值:
键的值或
oslo_cache.core.NO_VALUE对于不存在或过期的键。
- get_multi(keys)¶
根据给定的键从缓存中返回多个值。
- 参数:
keys – 要检索的键序列。
- 返回值:
返回与给定的键匹配的值列表(或
oslo_cache.core.NO_VALUE)。
- set(key, value)¶
在缓存中设置可选序列化的值。
- 参数:
key – 传递给
CacheRegion.set()方法的字符串键,如果存在“键处理”函数,也将对其进行处理。value – 可选的
CachedValue对象。根据区域是否使用序列化器以及是否覆盖CacheBackend.set_serialized()方法,可能是CachedValue或 bytes 对象。
参见
CacheBackend.set_serialized()
- set_multi(mapping)¶
在缓存中设置多个值。
- 参数:
mapping – 传递给
CacheRegion.set_multi()方法的字典,如果存在“键处理”函数,也将对其进行处理。
当通过
Region.get_or_create_multi()调用时,实现新的CacheBackend或通过ProxyBackend进行自定义时,请注意,mapping值与返回给上游调用者的值相同。如果子类以任何方式更改这些值,则不能在mapping字典上“就地”进行更改——这将产生修改返回值的副作用。如果使用序列化器,则仅当未覆盖
CacheBackend.set_serialized_multi()方法时,才会调用此方法。在版本 0.5.0 中添加。