[TOC] ## 设置缓存 ``` //设置全局缓存 cacher := xorm.NewLRUCacher(xorm.NewMemoryStore(), 1000) //缓存方式是存放到内存中,缓存struct的记录数为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)) ```