缓存

最后更新于:2022-04-02 02:47:25

[TOC] ## 设置缓存 ``` //设置全局缓存,缓存方式是存放到内存中,缓存struct的记录数为1000条 cacher := xorm.NewLRUCacher(xorm.NewMemoryStore(), 1000) //缓存针对的范围是所有具有主键的表,没有主键的表中的数据将不会被缓存 engine.SetDefaultCacher(cacher) //如果只想针对部分表 engine.MapCacher(&user, cacher) //针对指定表做缓存 engine.MapCacher(&user, nil) // 禁用指定表 ``` ## 注意 ### 不会进行缓存的表 1. 当使用了Distinct,Having,GroupBy方法将不会使用缓存 2. 在Get或者Find时使用了Cols,Omit方法,则在开启缓存后此方法无效,系统仍旧会取出这个表中的所有字段。 3. 在使用Exec方法执行了方法之后,可能会导致缓存与数据库不一致的地方。因此如果启用缓存,尽量避免使用Exec。如果必须使用,则需要在使用了Exec之后调用ClearCache手动做缓存清除的工作。比如: ``` engine.Exec("update user set name = ? where id = ?", "xlw", 1) engine.ClearCache(new(User)) ```
';