缓存
最后更新于: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))
```
';