.net 缓存总结

服务端缓存

1 Redis

Redis是Key/Value的内存数据库

作用:

缓解数据库的压力将一些不经常变化的而又读取频繁的数据存入redis缓存

Redis支持主从同步。

思路:

首先判断缓存中是否存在,如存在直接从Redis缓存中获取。

如果Redis缓存中不存在,实时读取数据库数据,同时写入缓存(并设定缓存失效的时间)。

缺点:

如果直接修改了数据库的数据而又没有更新缓存,在缓存失效的时间内将导致读取的Redis缓存是错误的数据。

获取值

       RedisClient redisClient = new RedisClient("172.16.147.121",  

        Console.WriteLine(redisClient.Get<string>("city"));

 

2 Cache

Cache 是分配在服务器上的一个公共的内存片, 面向的是所有用户.

Cache有时间限制,能存放所有对象,

Insert添加, Remove移除,Cache.Get(key)或索引器获取。

可设置依赖性,优先级,到期管理,效率更高

数据缓存失效控制方法(cache可以指定过期时间)以及数据缓存依赖管理

缓存依赖:当事先设定的依赖关系发生变化时,cache 将会失效

1 文件缓存依赖:当磁盘上的一个文件发生变化时自动让cache失效

2当有多个cache信息之间互相关联时,一个cache信息的变化将会引起其它cache的失效

 CacheDependency fileDependency =new CacheDependency(Server.MapPath("errors.xml"));

 

过期策略:从创建cache开始,一段时间后自动过期。

 

3 传统缓存( Session状态管理:

InProc:它的数据存储在aspnet_wp.exe 进程中,数据会因为IIS的重启而丢失。

:StateServer :它可以存储于不同的服务器中.

 

InProc StateServer SQLServer

存储的物理位置: IIS(内存) Windows服务进程(内存) SQLServer数据库(磁盘)

存储的类型限制: 无限制 可以序列化的类型

存储的大小限制: 无限制

使用范围: 当前请求上下文、每用户独立

生命周期: 第一次访问网站创建,超时或Abandon时销毁

安全性: 高(因为存放在服务器端)

优点: 速度快

缺点: 序列化与反序列化消耗CPU资源

 

 

 SQLServer:

它的数据存储在数据库中,数据不会因为IIS的重启而丢失数据。

后两种方法与InProc最大的区别在于,我们要确保缓存的数据是可序列化的,否则只能用于第一种方式

 

4 application 

 

存储的物理位置:服务器端内存。

存储的类型限制:任意类型,Application对象可以存放其它对象。所有用户

状态使用的范围:整个应用程序。

存储的大小限制:任意大小。

生命周期:应用程序开始时创建,应用程序结束时销毁。

安全与性能:安全性较高(因为存放在服务器端),不能存放大量数据。

缺点:application不可以指定过期时间,只能通过人工使用RemoveRemoveAllRemoveAt方法或者关闭应用程序 移除

 

5 Profile

Profile提供用户个性化设置的机制

Profile可以和Membership结合起来,存储用户自定义数据。在Profile中可以存储各种类型的数据,包括最基本的int、double类型,也可以是复杂的用户自定义类型,比如购物车、用户信息等。

1 先在web.config配置profile节点

2 配置完毕,可以使用Profile类,直接通过类名调用属性(非ajax)

3 AJAX使用Sys.Services.ProfileService.load

 

页面缓存

  1. OutputCache页面缓存在内存

 <%@ OutputCache Duration="60" VaryByParam="none" %>

 

2Cookies、ViewState、Hidden]

 

1 Cookie的特性:

存储的物理位置:客户端,如果是临时Cookie,存在于浏览器的内存中。如果是永久Cookie,存在于客户端的Cookies文件夹内。

存储的类型限制:字符串。

状态使用的范围:当前请求的上下文都能访问到CookieCookie对每一用户独立。

存储的大小限制:不能大于4k

生命周期:超过过期时间后失效。

安全与性能:安全性低(因为存放在客户端),对于敏感数据需要考虑加密。可用于长期保存用户设置。

 

2 ViewState(Asp.net webForm)的特性:

存储的物理位置:客户端表单隐藏字段。

存储的类型限制:可序列化类型。

状态使用的范围:当前页面(控件),对每一用户独立。

存储的大小限制:存储过多的数据会导致提交和打开页面缓慢。

生命周期:于页面生存周期相同。

提供了验证和加密。避免存储大量数据以影响性能。

它比隐藏控件更加安全性,所有的值都是经过hash处理的.

3 隐藏控件 Hidden fields:

<input id="myHiddenField" type="hidden" value="Shubhabrata" />

 

 

缓存分类

1 客户端缓存,服务端缓存,很少改动

2 静态缓存,动态缓存。

 

缓存机制

应用程序缓存:允许开发者将程序生成的数据或报表业务对象放入缓存中。

页输出缓存: 页面缓存在内存

 

动态缓存主要有以下几种手段:

 Ø  传统缓存方式

  Ø  页面输出缓存。

  Ø  页面局部缓存。

  Ø  利用.NET提供的System.Web.Caching 缓存。

  Ø  缓存依赖。

 

 缓存能够帮忙我们提到服务质量的三个重要方面:

     性能:缓存数据达到数据重用.避免了重复的物理数据加载.

      可量测性:数据缓存后,减少了从服务器端加载数据。

      实用性:如果其它的系统或者是数据库发生死机,那么仍然可以从缓存中取得数据不受局部硬件的影响。

 

猜你喜欢

转载自blog.csdn.net/qq_25744257/article/details/83063543