zoukankan      html  css  js  c++  java
  • 缓存碎语二

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

     

    比如在缓存中保存了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"公众号。

  • 相关阅读:
    [LeetCode]10. Regular Expression Matching
    [LeetCode]9. Palindrome Number
    [LeetCode]8. String to Integer (atoi)
    javascript 内部函数的定义及调用
    canvas和白鹭引擎中平移,旋转,缩放
    改变this指向的call,apply,bind方法
    关于JavaScript中this小有理解
    关于位运算符的计算法方法
    制作简单的GIF动图
    HTML中的单位小结
  • 原文地址:https://www.cnblogs.com/darrenji/p/4331019.html
Copyright © 2011-2022 走看看