关于缓存设计思考与实践(持续更新中)

目前正在设计和实践中,准备应用到实战,过程中不断更新目录及内容...

 

  • 缓存的目的
  1. 减少数据库压力
  2. 提升访问速度
  • 缓存的种类

     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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值