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.ClientProxy(client_pool)

基类: object

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 客户端的读取偏好模式。期望值为 primaryprimaryPreferredsecondarysecondaryPreferrednearest。此 read_preference 在集合级别指定,因此适用于 cache_collection 数据库的读取操作。

  • use_replica – 布尔值,标识是否使用副本客户端的标志。默认值为 False。如果 True,则需要 replicaset_name 值。

  • replicaset_name – 字符串,副本集名称。如果 use_replicaTrue,则变为必需。

  • 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。仅当 sslTrue 时使用。

  • ssl_certfile – 字符串,用于标识与 mongod 的本地连接的证书文件。仅当 sslTrue 时使用。

  • ssl_ca_certs – 字符串,ca_certs 文件包含一组串联的“证书颁发机构”证书,用于验证从连接另一端传递的证书。仅当 sslTrue 时使用。

  • ssl_cert_reqs – 字符串,参数 cert_reqs 指定是否需要来自连接另一端的证书,如果提供,是否对其进行验证。它必须是以下三个值之一:ssl.CERT_NONE(忽略证书)、ssl.CERT_OPTIONAL(不需要,但如果提供则进行验证)或 ssl.CERT_REQUIRED(需要并进行验证)。如果此参数的值不是 ssl.CERT_NONE,则 ssl_ca_certs 参数必须指向 CA 证书文件。仅当 sslTrue 时使用。

其余参数传递给 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 中添加。

模块内容