This website works better with JavaScript
首页
发现
注册
登录
TopProject
/
GoZeroPlus
镜像自地址
https://code-git.song-zh.com/SongZihuan/GoZeroPlus.git
关注
2
点赞
0
派生
0
文件
工单管理
0
Wiki
目录树:
ffddfa62bb
分支列表
标签列表
dependabot/go_modules/go_modules-420e58e47b
master
GoZeroPlus
/
doc
/
sql-cache.md
sql-cache.md
1.3 KB
文件历史
原始文件
DB缓存机制
QueryRowIndex
没有查询条件到Primary映射的缓存
通过查询条件到DB去查询行记录,然后
把Primary到行记录的缓存写到redis里
把查询条件到Primary的映射保存到redis里
,
框架的Take方法自动做了
可能的过期顺序
查询条件到Primary的映射缓存未过期
Primary到行记录的缓存未过期
直接返回缓存行记录
Primary到行记录的缓存已过期
通过Primary到DB获取行记录,并写入缓存
此时存在的问题是,查询条件到Primary的缓存可能已经快要过期了,短时间内的查询又会触发一次数据库查询
要避免这个问题,可以让
上面粗体部分
第一个过期时间略长于第二个,比如5秒
查询条件到Primary的映射缓存已过期,不管Primary到行记录的缓存是否过期
查询条件到Primary的映射会被重新获取,获取过程中会自动写入新的Primary到行记录的缓存,这样两种缓存的过期时间都是刚刚设置
有查询条件到Primary映射的缓存
没有Primary到行记录的缓存
通过Primary到DB查询行记录,并写入缓存
有Primary到行记录的缓存
直接返回缓存结果