我认知的缓存

一、为什么要用缓存?

1、当一个数据频繁读取的时候,比如每个用户所拥有的菜单

2、当一个数据不要求实时处理的时候,比如订单数据可以用队列缓存

3、当项目需要集中配置的时候,比如配置内容依赖于一个文件,可以先把配置内容缓存起来,读配置项的时候就可以直接读缓存内容,如果依赖的文件有变更,则重新刷新缓存

二、什么样的数据体量要用什么样的缓存

10万以内的数据可以用框架自带的缓存,10万到100万之间可以借助第三方的缓存项目,比如redis

三、自己手写的一个缓存

    实现要点:

        1、缓存一般是需要共享的,所以就用了静态的字典集合存储缓存数据,还考虑到可能会有多个线程同时存储缓存数据,所以就用了ConcurrentDictionary数据类型

         2、缓存一般是不需要永久保存的,所以设置缓存的时候会提供一个过期时间,用一个线程定时的清空过期的缓存

四、缓存依赖文件

    实现要点:

         1、当借助第三步手写的缓存设置缓存数据的时候,同时要用一个文件路径去关联这个缓存(可以把缓存的key和文件路径存储在ConcurrentDictionary中

         2、再用.net的FileSystemWatcher对象通过文件的路径监控文件,如果文件有变更,则同时清空所有关联到此文件的缓存数据

五、缓存demo:https://gitee.com/ffxxxdd/CacheDemo.git

    

 

          

    

 

 

posted @ 2019-11-13 22:10  东东东  阅读(148)  评论(0)    收藏  举报