MemoryCache是否具有缓存固定数量项目的功能?
例如,我们只对数据库中的cache 2000项感兴趣.在继续向缓存添加项目的同时,如果超过指定数量的项目,则可以删除最旧的项目.
如果没有,我们是否必须使用另一个线程定期进行管家服务?
它没有内置任何会限制对象数量的东西.相反,它会检查正在使用多少内存,并将其与内存进行比较CacheMemoryLimit.如果CacheMemoryLimit超过,它将删除旧项目.您还可以将项目设置为在经过一段时间后自动过期CacheItemPolicy.
如果您真的将它用作内存缓存,这些方法都会更有意义.换句话说,如果您担心内存限制与获取数据的成本之间的权衡,这些是确定何时从缓存中逐出项目的好方法.所以问问自己:
我真的想用它作为MemoryCache吗?为什么我只关心数据库中只加载了2000个项目?
如果您担心内存开销,或者您担心项目已过时,则还有其他(更好)方法来管理缓存,而不是指定多个对象.如果您有一些自定义原因要在数据结构中保留特定数量的对象,请考虑使用其他类.