\App\Services\AdminDataCacheService

缓存管理服务

职责:基于数据库注册表(td_sys_cache / SysCache)——列表(注册项 + 实际 key 统计)、 建立(新增注册项,status=1 已审批,说明必填)、编辑(全字段可改——key 模板可改, 改后清旧实例自动重建、缓存值不丢)、审批(待审批项 → status=1)、 删除(清缓存实例 + 删注册项)、全清、发现未注册 key。

┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 查询(读) list / show / namingSpec 分区 2 · 写操作 discoverAndRegister / create / update / delete / flush 分区 3 · 内部辅助 vocabItems / readDirectValue / paramsFromBusinessKey simplifyValue / extendVocab / ensureDictWord └────────────────────────────────────────────────────────────┘

Summary

Methods
Properties
Constants
list()
show()
namingSpec()
discoverAndRegister()
create()
update()
destroy()
flush()
No public properties found
No constants found
No protected methods found
No protected properties found
N/A
vocabItems()
readDirectValue()
paramsFromBusinessKey()
simplifyValue()
extendVocab()
ensureDictWord()
No private properties found
N/A

Methods

list()

list() : array

缓存列表:数据库注册项(全部 status)+ 各逻辑名的实际实例数

Returns

array —

show()

show(string  $name) : array

查看某缓存逻辑名的所有实例(key + 值 + TTL)。 从 Redis 扫描该逻辑名前缀的实际 key,反推业务 key(去前缀 + 去 tag 哈希)后读值。

Parameters

string $name

Returns

array —

namingSpec()

namingSpec() : array

键名五层标准词表(管理页命名规范引导/实时校验用):领域/实体/动作/标识/归属白名单 + 示例

Returns

array —

discoverAndRegister()

discoverAndRegister() : int

手动全扫:扫描两个 Redis 连接,未登记的裸写缓存自动登记为「待审批」(返回新登记条数)

Returns

int —

create()

create(array  $data) : void

新建缓存注册项(管理页建立即已审批 status=1;description 必填由 Request 校验;key 模板必须符合五层命名标准)

Parameters

array $data

update()

update(string  $name, array  $data) : void

编辑缓存注册项(全字段可改)。 - key 模板可改:改后清旧模板实例,新 key 首次访问从数据库重建——缓存值不丢、业务无感 - 审批 = update 带 status=1(待审批项必填说明由 DataCacheRequest 校验) - 保护锁(protected):受保护项禁止改 key 模板/逻辑名(旧实例清理会被锁挡住, 改后新旧双份数据分裂);解锁(protected=0)后可改。layer/ttl/tables/connection/description/status 不受限。

Parameters

string $name
array $data

destroy()

destroy(string  $name) : void

删除缓存:先清该逻辑名所有实例,再删注册项——顺序反了必产孤儿

Parameters

string $name

flush()

flush() : array

全清:清空两个 Redis 连接上的业务 key(注册表在数据库,天然保留)。 受保护缓存(protected=1)的实例全部跳过——保护锁 = 任何清理操作都不删。

Returns

array —

vocabItems()

vocabItems(array  $map) : array

词表 value => 中文名 → [{value, label}](管理面下拉展示用;合规判定仍按 value 命中)

Parameters

array $map

Returns

array —

readDirectValue()

readDirectValue(mixed  $redis, string  $key) : mixed

读直连项的值:按 Redis 类型分派(string/set/hash,其余类型不展示)

Parameters

mixed $redis
string $key

Returns

mixed —

paramsFromBusinessKey()

paramsFromBusinessKey(array  $item, string  $businessKey, string  $prefix) : array

从业务 key 反推注册表参数(如 org_dept_posts:30 → ['deptId' => 30])

Parameters

array $item
string $businessKey
string $prefix

Returns

array —

simplifyValue()

simplifyValue(mixed  $value, int  $depth) : mixed

简化缓存值供展示:模型转数组、对象转字符串、大值截断(深度/截断读配置)

Parameters

mixed $value
int $depth

Returns

mixed —

extendVocab()

extendVocab(array  $templates) : void

词表扩展:key 模板里的领域/实体/动作/标识/归属若不在字典词表,自动写入对应「缓存词-*」字典类型 (管理侧「其他」自定义词——保存即扩展,词表可持续增长;合规判定与下拉均出自字典)。

Parameters

array $templates

ensureDictWord()

ensureDictWord(string  $dictCode, string  $value, string  $label) : void

字典词条补写:词不在对应「缓存词-*」类型时自动添加(label 回落词本身,sort 追加末尾)。 只加不覆盖——管理页手工维护的词条中文名/排序不被扫描覆盖;复用 DataDictService::upsertItem。

Parameters

string $dictCode
string $value
string $label