web开发缓存技术之B/S开发框架ObjectCache缓存管理

B/S开发框架缓存管理分为.net自带objectcache非分布式缓存和Redis第三方结构性缓存,都是保留在Web开发框架管理的内存中,增、删、改、查是数据操作常见的几大类型,缓存技术也不除外。

构成

B/S开发框架objectcache缓存讲解1

B/S开发框架objectcache缓存讲解2

构成:如上图所示的几个类:BasicDataService.cs、MemoryCacheManager.cs、CacheManagerExtensions.cs

优点:B/S开发框架缓存的作用是只在数据第一次被访问时才从数据库中读取数据,将数据放在内存中,以后查询相同的数据则直接从内存中返回,这样速度有明显的提升。Web开发框架在数据更改时更改内存数据,同时或者规定的延时内更改数据库对应的数据,从而实现缓存和数据库数据同步。基本原理是用空间换时间,我们重点看下下面代码如何做的。

操作:如下图

B/S开发框架objectcache缓存操作2

B/S开发框架objectcache缓存操作2

分析

B/S开发框架objectcache核心操作类代码如下:

/// <summary>
    /// 
    /// </summary>
    public class MemoryCacheManager : ICacheManager
    {
        public MemoryCacheManager()
        {
        }

        /// 
        /// 获取缓存对象的提供程序
        /// 
        protected ObjectCache Cache
        {
            get { return MemoryCache.Default; }
        }

        public int Count
        {
            get { return Cache.Count(); }
        }

        /// 
        /// 根据KEY获取对应的缓存对象
        /// 
        /// 要获取的缓存的KEY
        /// 对应的缓存对象
        public object this[string key]
        {
            get { return Cache[key]; }
            set { Cache[key] = value; }
        }

        /// 
        /// 获取与指定key关联的缓存对象。
        /// 
        /// 从缓存返回对象的Key。
        /// 如果缓存中存在并能找到与key对应的对象,则返回该对象,否则返回null。
        public object GetData(string key)
        {
            return Cache.Get(key);
        }

        public T GetData(string key)
        {
            return (T)Cache[key];
        }

        /// 
        /// 是否包含KEY
        /// 
        /// 要测试的KEY
        /// TRUE包含,FALSE不包含
        public bool Contains(string key)
        {
            return Cache.Contains(key);
        }

        /// 
        /// 添加缓存键及项
        /// 
        /// 缓存键
        /// 缓存对象
        public void Add(string key, object value)
        {
            if (value == null)
                return;

            var policy = new CacheItemPolicy();
            policy.AbsoluteExpiration = DateTime.MaxValue;
            Cache.Add(new CacheItem(key, value), policy);
        }

        /// 
        /// 添加缓存键及项
        /// 
        /// 缓存键
        /// 缓存对象
        /// 过期时间分钟数
        public void Add(string key, object value, int expiredMinutes)
        {
            if (value == null)
                return;

            var policy = new CacheItemPolicy();
            policy.AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(expiredMinutes);
            Cache.Add(new CacheItem(key, value), policy);
        }

        /// 
        /// 根据KEY移除相应的缓存
        /// 
        /// 要移除的KEY
        public void Remove(string key)
        {
            Cache.Remove(key);
        }
        public virtual void RemoveByPattern(string pattern)
        {
            var regex = new Regex(pattern, RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase);
            var keysToRemove = new List();

            foreach (var item in Cache)
                if (regex.IsMatch(item.Key))
                    keysToRemove.Add(item.Key);

            foreach (string key in keysToRemove)
            {
                Remove(key);
            }
        }

        /// 
        /// 清除所有缓存
        /// 
        public void Flush()
        {
            foreach (var item in Cache)
                Remove(item.Key);
        }

    }

BS开发框架OBJECT缓存有效时间的设置,在CacheManagerExtensions.cs 缓存扩展类中

B/S开发框架OBJECT缓存有效时间的设置

应用场景

web开发框架中为什么要使用object缓存?

上次有个客户问了我一个这样的问题:孙工,我想在多页面中公用一套数据,怎么用DataTemp不起作用?我告诉他这种情况有很多种处理方式,比如缓存、session、cookie等,然后他选择用缓存,下面是对话:

B/S开发框架OBJECT缓存客户对话1

B/S开发框架OBJECT缓存客户对话2

标签: B/S开发框架缓存技术系列

网站&系统开发技术学习交流群:463167176

本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:华晨软件-云微开发平台 » web开发缓存技术之B/S开发框OBJECT缓存管理
本文标题:web开发缓存技术之B/S开发框架OBJECT缓存缓存管理
本文地址:https://www.hocode.com/OrgTec/DB/0010.html

相关文章: web开发框架中IIS和浏览器缓存怎么清除_B/S开发框架

电话
电话 18718672256

扫一扫
二维码