目前正在设计和实践中,准备应用到实战,过程中不断更新目录及内容...
- 缓存的目的
- 减少数据库压力
- 提升访问速度
- 缓存的种类
1.时间依赖
2.文件依赖
3.数据库依赖
4.操作依赖(自已定义的)
- 设计思考及解决方法
#1 key的管理,如何保证唯一,并最新
参考解决:https://www.cnblogs.com/gaochundong/p/consistent_hashing.html
GetHash()
#2 增删改查操作如何保证获取的数据为最新数据
#3 分页列表的缓存如何处理
#4 防止雪崩即失效时间一致,而导致的数据量读写
参考解决:https://blog.csdn.net/lanlicen/article/details/8913065
参考解决:https://blog.csdn.net/shmnh/article/details/58594385
#5 复用性,有些方法只需要3个字段,有些方法需要所有字段
#6 关于释放缓存空间,对于一段时间内调用不频繁的内容清除,如何计数
#7 对于null结果的数据,要定义一个固定值用于程序识别,已查询过为空
#8 管理key的创建时间和最后一次调用时间,每次调用增加过期时间,为频发数据进行生命延长
#9 修改数据的时候,如何避免用户使用缓存当中的脏数据
#10 使用视图的数据如何保证一致性和缓存
- 实践
成本最低性价比最高的我想就是微软自家的数据库依赖模式,但是由于阿里云的数据库为镜像数据,无法使用SqlCacheDependency进行缓存依赖管理,如果你的环境满足,那么它是首推!
搜索相关缓存的类和工具,最终二选一,MemoryCache 和 Redis, 云服务器端Redis 另收费,无疑MemoryCache 中标.
微软官方MemoryCache 介绍:https://docs.microsoft.com/zh-cn/dotnet/api/system.runtime.caching.memorycache?redirectedfrom=MSDN&view=netframework-4.8
- 参考文献
1.如何优雅的设计和使用缓存?https://www.jianshu.com/p/5c04d0cd3c1f
2.使用缓存的正确姿势 https://www.cnblogs.com/llzhang123/p/9037346.html