Cache学习(二)Cache存储
-
cache的存储结构
cache以多维数组存储数据,所有数据保存在Global中。
cache可以通过两种方式存放:
-
cache的变量结构
Local variables:普通变量,当前进程内有效的变量。
Process-private global variables:进程私有Global是当前进程中创建的,所有命名空间都快可以访问,进程结束时,进程私有Global也被清除。
Global variables:是特殊进程变量,以^开头,自动创建并存储在Cache数据库中。切换进程不会被清除。
special variables:特殊变量。
global支持事务回滚,其他变量不支持也不会有日志。
-
常见cache语法
set:可以简写为s,对变量或者多维数组赋值。
s a=1,b=2,c=3 s:a>2 d=5 //if a>2 d=5
do:简写d,执行某一操作。一般是执行类方法。
d ##class(web.DHCATEST).test() d:rowid>0 ##class(User.Classname).%DeleteId(rowid) //:一般是跟判断条件
kill:简写k,清楚变量或者Global,谨慎使用。
k n(1) k ^TMP("myglobal")
//用法二
s a=1 s b=2 s c=3 kill(a,b) //除去ab外的变量
write:输出变量或表达式的值。
s str="a" w str //输出str的值 w !,str //换行输出
zw:输出变量或表达式的值及其子节点值
zw ^ARC
Quit:简写q退出程序或者循环,quit可以返回一个值,在类方法中可以把结果quit出来。
Break:简写为b,终止程序,用于断点调试。
注释:// /**/
-
Global的存储位置
Global以^名称(下标1,下标2,下标3...)
^Airplane("Mannufacturer","Address","Country")="US"
Mannufacturer节点下的Address节点的Country节点的值是US
可以自己定制Global,包括添加、删除、修改、遍历其节点。多维数组以树状形式保存,他的每一个节点都直接与磁盘和内存中的数据块相对应,因此可以达到极快的访问速度。在此基础上,将多维数组映射成对象或者关系型的格式,分别由面向对象的接口或者基于SQL的接口进行访问。
以下图为例,0处为主键索引,code存储主键数据,主键下子树是索引,根据索引在第一层中可以取出对应字段。数据都是按串存储。
练习:
-
存储结构
数据实际是存在第一层,最后一层只是索引并且赋值为空
查看存储定义,cache中通过类实现数据存储
1.存储结构第一层:
下图指明一个数据存储结构,该结构存储data(数据),索引命名为DataMasterCTSEX,CT_SEX表存储在^CT下
下图定义两层节点,第一层节点为sex,第二层节点存储表的主键RowId
下图指明CTSEX_RowID是在第二层并且是主键
2.存储结构第二层:
下图指明存储结构的索引结构,指明结构是索引结构,索引不需要加DATA
下图指明索引结构的节点值:
第四层获取CTSEX_Code,第五层主键rowid
下图为指明主键名以及值表达式,定义了sex,0的值。$i代表自增主键
开发工具输入类名称查看结构:
- data存在^CT("SEX",{CTSEX_RowId})中
- piece指取出数据使用$peice截取字符串时分隔第几个位置,plist指sql查询中列的顺序
- field指数据库表的列名
3.查看表结构顺序为:
- 首先打开类知道表的列顺序(SqlColumnNumber),列名(SqlFieldName)是什么
- 然后查看存储定义(sqlstorage)
查看存储在哪个global下
然后查看global节点
然后查看节点位置
-
查看Global的数据——两种方法
- terminal下查询:zw ^CT("TTL")
- Portal下查询:资源管理器-global-搜索。
- 使用sql查询自动将串解析为列表。sql存储中将节点定义为列名。
-
FDBMS------传统数据库管理系统查看查询操作
可以在terminal下利用FDBMS查看表结构
-
cache开发环境、工具介绍
也支持global查看,但切换库速度过慢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现