我认知的缓存
一、为什么要用缓存?
1、当一个数据频繁读取的时候,比如每个用户所拥有的菜单
2、当一个数据不要求实时处理的时候,比如订单数据可以用队列缓存
3、当项目需要集中配置的时候,比如配置内容依赖于一个文件,可以先把配置内容缓存起来,读配置项的时候就可以直接读缓存内容,如果依赖的文件有变更,则重新刷新缓存
二、什么样的数据体量要用什么样的缓存
10万以内的数据可以用框架自带的缓存,10万到100万之间可以借助第三方的缓存项目,比如redis
三、自己手写的一个缓存
实现要点:
1、缓存一般是需要共享的,所以就用了静态的字典集合存储缓存数据,还考虑到可能会有多个线程同时存储缓存数据,所以就用了ConcurrentDictionary数据类型
2、缓存一般是不需要永久保存的,所以设置缓存的时候会提供一个过期时间,用一个线程定时的清空过期的缓存
四、缓存依赖文件
实现要点:
1、当借助第三步手写的缓存设置缓存数据的时候,同时要用一个文件路径去关联这个缓存(可以把缓存的key和文件路径存储在ConcurrentDictionary中)
2、再用.net的FileSystemWatcher对象通过文件的路径监控文件,如果文件有变更,则同时清空所有关联到此文件的缓存数据
五、缓存demo:https://gitee.com/ffxxxdd/CacheDemo.git

浙公网安备 33010602011771号