pythonic缓存方式

python-cache的Python项目详细描述


#python cache

这导致了一种情况,即许多库使用不同级别的功能滚动它们自己的缓存库。这些差异导致开发人员必须学习多个系统,这些系统可能提供也可能不提供所需的功能。此外,缓存库的开发人员自己也面临一个选择,要么只支持有限数量的框架,要么创建大量的适配器类。

缓存系统的通用接口将解决这些问题。库和框架开发人员可以指望缓存系统按照他们期望的方式工作,而缓存系统的开发人员只需实现一组接口,而不必实现所有适配器。

本文件中的"ll"、"shall not"、"should not"、"should not"、"recommended"、"may"和"optional"将按照[RFC 2119]中的描述进行解释(https://www.ietf.org/rfc/rfc2119.txt)。

集成到现有的框架和系统中,而不需要定制开发。

\此库将利用实现本标准接口的缓存服务,但不了解这些缓存服务的实现。

+**实现库**-此库负责实现本标准,以便提供缓存服务。为任何呼叫图书馆服务。实现库必须提供实现"cache\cacheitempooterface"和"cache\cacheitempinterface"接口的类。实现库必须支持至少TTL功能,如下所述,具有完整的第二粒度。

+**TTL**-项的生存时间(TTL)是从存储该项到将其视为过时之间的时间量。ttl通常由以秒为单位的时间整数或dateinterval对象定义。

+**expiration**-项目设置为过时的实际时间。这通常是通过将ttl添加到存储对象的时间来计算的,但也可以使用datetime对象显式设置。
*在1:30:00存储的TTL为300秒的项将有1:35:00的过期时间。*
实现库可以在请求的过期时间之前使项过期,但必须在达到过期时间后将其视为已过期。如果调用库要求保存项,但未指定过期时间,或指定空过期时间或ttl,则实现库可以使用配置的默认持续时间。如果未设置默认持续时间,则实现库必须将其解释为永久缓存项的请求,或者只要底层实现支持就将其解释为永久缓存项。

+**key**-至少包含一个字符的字符串,用于唯一标识缓存项。实现库必须支持由字符"a-z"、"a-z"、"0-9"、"uu"和"."组成的键,这些字符以utf-8编码的任何顺序排列,长度最多为64个字符。实现库可能支持额外的字符和编码或更长的长度,但必须至少支持该最小值。库负责根据需要对键字符串进行转义,但必须能够返回原始的未修改的键字符串。以下字符是为将来的扩展保留的,实现库不能支持它们:`{}()/\@`:

+**hit**-当调用库按键请求一个项,并且找到该项的匹配值,并且该值时,将发生缓存命中尚未过期,并且该值不因其他原因无效。调用库应确保对所有"get()"调用验证"is hit()"。

+**未命中**-缓存未命中与缓存命中相反。当调用库按键请求一个项,但找不到该键的值,或找到该值但已过期,或该值因其他原因无效时,将发生缓存未命中。过期的值必须始终被视为缓存未命中。

+**延迟**-延迟的缓存保存表示缓存项可能不会立即由池持久化。池对象可能会延迟持久化延迟缓存项,以便利用某些存储引擎支持的大容量集操作。池必须确保所有延迟的缓存项最终都被持久化,并且数据不会丢失,并且可以在调用库请求它们被持久化之前将它们持久化。调用库调用"commit()"方法时,必须持久化所有未完成的延迟项。实现库可以使用任何适当的逻辑来确定何时持久化延迟项,例如对象析构函数、在"save()"上持久化所有项、超时或最大项检查或任何其他适当的逻辑。对已延迟的缓存项的请求必须返回延迟但尚未持久化的项。

他一如往常地回来了。包括变量类型。也就是说,如果(int)5是保存的值,则返回(string)5是一个错误。与它们的兼容性只是用作可接受对象值的基线。

池表示缓存系统中的项集合。池是它包含的所有项的逻辑存储库。所有可缓存项都作为项对象从池中检索,并且与整个缓存对象世界的所有交互都通过池进行。

**项**


项表示池中的单个键/值对。键是项的主要唯一标识符,必须是不可变的。该值可以随时更改。

因此,缓存系统中的错误不应导致应用程序失败。因此,实现库不能抛出接口定义的异常以外的异常,并且应该捕获由底层数据存储触发的任何错误或异常,并且不允许它们冒泡。

o适当的管理员。

post条件相同(键不存在,或池为空),因此不存在错误条件。


\interfaces

**cacheiteminterface**


cache\cacheitempoiface对象封装缓存项的存储和检索。每个cache\cacheitempointerface都由cache\cacheitempointerface对象生成,该对象负责任何必需的设置,并将该对象与唯一键关联。cache\cacheitemInterface对象必须能够存储和检索定义的任何类型的php值在本文档的"数据"部分中。


调用库不能实例化项对象本身。只能通过getitem()方法从池对象请求它们。调用库不应假定一个实现库创建的项与另一个实现库中的池兼容。

**cacheitempooterface**


cache\cacheitempooterface的主要目的是接受调用库中的密钥并返回他关联了cache\cacheitemInterface对象。它也是与整个缓存集合交互的主要点。池的所有配置和初始化都由实现库决定。

**cache exception**


此异常接口用于发生严重错误时,包括但不限于连接到缓存服务器或无效凭据等缓存设置已提供。

实现库引发的任何异常都必须实现此接口。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
具有MVC模式的java观察者/可观察对象   java junit在测试执行后未清理记录器   java减少spring boot应用程序中的网络延迟   java MyFirstApp教程Android Studio sendMessage问题   java无法转换消息   java JSP如果是,则递增   URL和方法的java spring安全设置   spring中的java自动动态绑定   java在Wicket中构建表   使用JUnit在与main相同的类中使用java测试方法   使用tomcat 8管理器部署后,java找不到WAR文件路径   java原子整数错误行为   需要java吗?   java允许多个JLabel中的文本重叠   java Hadoop mapreduce映射程序编程   json参数化Jackson Java库的JsonProperty值