Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 62.7MB ·虚拟内存 1299.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
Xorm 内置了一致性缓存支持,不过默认并没有开启。要开启缓存,需要在 engine 创建完后进行配置。
启用一个全局的内存缓存:
cacher := xorm.NewLRUCacher(xorm.NewMemoryStore(), 1000) engine.SetDefaultCacher(cacher)
上述代码采用了LRU算法的一个缓存,缓存方式是存放到内存中,缓存struct的记录数为1000条,缓存针对的范围是所有具有主键的表,没有主键的表中的数据将不会被缓存。如果只想针对部分表,则:
cacher := xorm.NewLRUCacher(xorm.NewMemoryStore(), 1000) engine.MapCacher(&user, cacher)
如果要禁用某个表的缓存,则:
engine.MapCacher(&user, nil)
设置完之后,其它代码基本上就不需要改动了,缓存系统已经在后台运行。
当前实现了内存存储的CacheStore接口MemoryStore,如果需要采用其它设备存储,可以实现CacheStore接口。
不过需要特别注意不适用缓存或者需要手动编码的地方:
engine.Exec("update user set name = ? where id = ?", "xlw", 1) engine.ClearCache(new(User))
缓存的实现原理如下图所示:
Xorm 支持两种方式的事件,一种是在 Struct 中的特定方法来作为事件的方法,一种是在执行语句的过程中执行事件。在Struct中作为成员方法的事件如下:BeforeInsert()在将此struct插入到数据库之前 ...