二级缓存功能

二级缓存功能是对查询出来的数据进行缓存,在缓存不失效的情况下,下次同样的查询操作都会从缓存内读取


使用缓存查询

 var list=db.Queryable<Student, School>((s1, s2) => s1.Id == s2.Id).Select(s1 => s1).WithCache().ToList();//可以设置过期时间WithCache(60)


删除缓存

我们需要删除缓存也相当方便,只需要在对该表操作的时候加 RemoveDataCache 就能把查询中引用该表的缓存全部清除

  db.Deleteable<Student>().Where(it => it.Id == 1).RemoveDataCache().ExecuteCommand();

//Updateable和Insertable一样用法



创建db对象:

我们需要创建一个MyCache类,你可以用我写好的也可以用你自已写的实现缓存



    
    ICacheService myCache = new RedisCache("10.1.249.196");//ICacheService
    SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = Config.ConnectionString,
                DbType = DbType.SqlServer,
                IsAutoCloseConnection = true,
                ConfigureExternalServices = new ConfigureExternalServices()
                {
                    DataInfoCacheService = new RedisCache() //RedisCache是继承ICacheService自已实现的一个类
                }
            });



我写好的Cache类


Redis:

https://github.com/sunkaixuan/SqlSugar/blob/dev/Src/Asp.Net/SqlSugar.Extensions.DataCache/RedisCache.cs


.Net自带Cache:

https://github.com/sunkaixuan/SqlSugar/blob/dev/Src/Asp.Net/SqlSugar.Extensions.DataCache/HttpRuntimeCache.cs




使用技巧

解决分页缓存的难题,我们知道用到分页的表数的数据量都很大不可能使用缓存,所以提供了一个WithCacheIF的来方便的针对指定条件缓存

WithCacheIF(pageIndex<2) //只对页码小于2的进行缓存
















































收藏到朋友圈: