carlonicora/minimalism-service-cacher

5.0.3 2019-05-24 00:00 UTC

README

minimalism-service-cacher 使用 Redis 存储缓存,并利用其键/值方法保存信息。

每个键都遵循特定的模式,始终相同

m:T:L:c[:X]

m:T:L:C[:X] 模式定义了键中存储的信息。

m

m 参数是一个简单的文本,始终相同:minimalism。它用于识别哪些缓存是由极简主义动态生成的。

示例

minimalism:

T

T 参数是缓存 TYPE 的标识符。在极简主义中,可以有两种类型的缓存:DATAJSON。这些代表数组数据或 JSON 资源。

参数全部为大写字母,只能包含 DATAJSON

示例

使用数组标识数据结构

minimalism:DATA

使用 {json:api} 资源对象标识对象结构

minimalism:JSON

L

L 参数标识一个 LIST。列表用于快速链接两个缓存:父缓存和子缓存。键不包含任何相关数据,但用作索引以标识哪些缓存是列表的一部分。

列表标识关系中的 parent 元素,关系中每个子元素都将有一个包含父元素(以 Element 结构格式)和内容(始终以 Element 结构格式)的键。

如果缓存不是列表,则参数的值是文本 null(小写)。

示例

标识子对象列表。这些不包含内容,用作 Redis 中的索引

minimalism:DATA:parentName(parentIdentifier):childName(childIdentifier1)
minimalism:DATA:parentName(parentIdentifier):childName(childIdentifier2)
...
minimalism:DATA:parentName(parentIdentifier):childName(childIdentifierN)

C

C 参数标识 CONTENT。这有两种使用方式:在列表中使用或作为独立元素。列表中的 Content 仅用作索引键,不包含任何相关数据。当 List 设置为 null 时,键包含内容的信息(DATAJSON)。

参数定义为 Element 结构。

示例

标识内容

minimalism:DATA:null:name(identifier)

在列表的情况下,每个列表元素至少包含两个内容

minimalism:DATA:null:parentName(parentIdentifier)
minimalism:DATA:null:childName(childIdentifier1)
minimalism:DATA:null:childName(childIdentifier2)
...
minimalism:DATA:null:childName(childIdentifierN)

X

X 参数标识零个或多个 CONTEXTS。一个 Context 专门化存储在缓存中的信息类型。这可以是特定类型的数据(例如,您想指定公共和私有数据集,您可以使用上下文来完成此操作)。

Context 使用与其他部分相同的键元素结构;然而,它有两个不同之处:它可以不包含 identifier(将使用 0 作为标识符),或者它可以包含多个 Contexts,在这种情况下,上下文将用 - 分隔。

示例

在上下文化的缓存的情况下,上下文被添加到键的末尾

minimalism:DATA:null:name(identifier):context1(contextIdentifier1)-context2(contextIdentifier2)

在上下文方面有各种用例

no context
minimalism:DATA:null:name(identifier)

textual context (without identifier)
minimalism:DATA:null:name(identifier):contextName(0)

full context identifier
minimalism:DATA:null:name(identifier):contextName(contextIdentifier)

multiple contexts
minimalism:DATA:null:name(identifier):contextName(0)-contextName(contextIdentifier)

键元素结构

每个元素(ListContentContext)都使用两个参数进行标识:nameidentifier。名称通常是用于查询数据的数据库字段名称,而标识符是字段的值。缓存器以 name(identifier) 格式存储这些信息。

上下文键元素结构

尽管一个 列表 和一个 内容 由一个名称/标识符唯一定义,但一个缓存可以属于零个或多个上下文。对于上下文,元素结构变为 name1(identifier1)-name2(identifier2)-...-nameN(identifierN)。如果没有传递 上下文,键将不存储任何内容,但是 上下文 可以是一个简单的 名称 而没有 标识符。在这种情况下,键使用 0 作为标识符。