我正在一个类库中实现缓存,该类库用于 asp.net 应用程序。
我将我的缓存对象创建为单例模式,并使用静态方法更新缓存,该方法实际上只是加载一个成员变量/属性与需要缓存的数据集合(当然有一些锁定逻辑)。我认为这是一个不错的方式,因为只需调用即可访问我的数据。
我正在创建一个新的缓存对象来存储大量数据,根据某些键进行分区。我的意思是我正在创建一个新的缓存,但这个缓存不会一次性加载所有数据,而是为每个访问的键存储一个集合。
这次提出了垃圾回收的问题。由于我存储了大量数据,如果它突然被gc清理掉,那不是很浪费吗?因为它只是一个单例模式,没有任何保证数据会留在缓存中。
所以我的问题是 - 实现缓存以处理这种情况的最佳实践是什么?我真的不喜欢一个复杂的解决方案,我知道System.Web中有缓存,但这似乎有些“离谱”,因为这只是一个类库,你怎么看?
我将我的缓存对象创建为单例模式,并使用静态方法更新缓存,该方法实际上只是加载一个成员变量/属性与需要缓存的数据集合(当然有一些锁定逻辑)。我认为这是一个不错的方式,因为只需调用即可访问我的数据。
MyCacheObject.Instance.MyDataCollection
我正在创建一个新的缓存对象来存储大量数据,根据某些键进行分区。我的意思是我正在创建一个新的缓存,但这个缓存不会一次性加载所有数据,而是为每个访问的键存储一个集合。
MyOtherCacheObject.Instance.MyOtherDataCollection(indexkey)
这次提出了垃圾回收的问题。由于我存储了大量数据,如果它突然被gc清理掉,那不是很浪费吗?因为它只是一个单例模式,没有任何保证数据会留在缓存中。
所以我的问题是 - 实现缓存以处理这种情况的最佳实践是什么?我真的不喜欢一个复杂的解决方案,我知道System.Web中有缓存,但这似乎有些“离谱”,因为这只是一个类库,你怎么看?