缓存碎语二

王朝学院·作者佚名  2016-05-20
窄屏简体版  字體: 小  |  中  |  大  |  超大  

缓存碎语二缓存很多条数据,但只读取其中的一部分数据,如何处理?

比如在缓存中保存了100条数据,但读取分页数据,比如每次分页只读取10条数据。这种情况下,可以把这100条数据拆分成10次分别保存起来。每一个缓存项的key需要特别的设计,比如:01-10-PRoducts, 02-10-products......

如何避免缓存一些不需要的数据?

比如:

public class Teacher

{

public int Id{get;set;}

public string Name{get;set;}

public Department Department{get;set;}

}

public class Department

{

public int Id{get;set;}

public string Name{get;set;}

}

这里只想把Teacher缓存起来,但是,如果采用.NET默认的序列化机制,即在Teacher这个类上打上Serializable特性,序列化Teacher的时候,也会把引用属性Department对应的类Department一同序列化。

解决这个问题的方法是:在不需要被序列化的类上打上[NonSerialized]特性,或者实现ISerializable接口,自定义序列化的逻辑。

如何实现通过不同的key读取相同的缓存项?

比如缓存产品,有时候把产品名作为key保存起来,有时候通过集合索引来从缓存中获取产品,这时候我们可以把不同形式的key连接成字符串作为key。

var product = GetProduct();

cache["prod_1"] = product;

......

var cacheProduct = cache["prod_1"];

参考资料:汪洋的"DotNet"公众号。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航