替换EnterPrise Library 4.0 缓存应用程序块的CacheManager

简介:

缓存是用来提高应用程序性能的常见技术,其实现方式是将常用数据从慢数据源复制到更快的数据源。对于数据驱动的应用程序来说,该技术通常需要将从数据库或 Web 服务检索到的数据缓存到本地计算机的内存中。

当缓存特定于每个应用程序时最容易实现缓存技术,但是如果多个应用程序需要使用一个公共缓存,那么问题将变得更具挑战性。例如,大型网站通常使用服务器场,其中包含多个提供相同内容的计算机。当每个请求到达时,它会被分配给场中的其中一台计算机。然而,如果信息缓存到场中的一台计算机内存中,其他计算机中的缓存就无法访问它,因此降低了缓存的效率。该问题的一种解决方案是将缓存移到集中式的数据存储(如数据库),或将场中的其中一台服务器指定为缓存服务器,只用来存储缓存的唯一副本。使用集中式缓存存储存在一个问题,那就是它们引入了单点故障,且会成为瓶颈。

要克服单一、集中式缓存存储的局限性,请考虑使用 Alachisoft 开发的 NCache 3.2。NCache 是一个群集缓存框架,能够无缝管理分布在多台计算机上的缓存。管理员首先通过 NCacheManager 工具指定群集拓扑和缓存策略。管理员可以指定多种设置,包括是将缓存存储在内存还是磁盘中、逐出策略和最大缓存大小等;这些设置和拓扑均可在运行时修改。此外,NCacheManager 还提供一系列统计数据,它们不但可用于监控缓存的运行状况,还可作为微调缓存设置以获得最优性能的指标。

在定义缓存群集时,您可以指定是应复制群集内的缓存还是应对其进行分区。复制的缓存群集所拥有的缓存内容与群集中每台机器上的内容均相同。因为没有单点故障,所以复制的缓存可提高可靠性;但是对群集的任何更新都必须复制到所有的群集。因此,对以读取为主的缓存或小群集来说,复制的群集是理想选择。另一方面,分区缓存在群集内的各个计算机之间划分缓存内容,并为更新和大型群集实现了更好的性能。

NCache 还提供了集成到 Microsoft 缓存应用程序块 (CAB) 的提供程序。Alachisoft 公司发布了一个NCache Express版本,这个版本是可以免费使用的,但是有如下限制:

支持两台服务器环境
客户端缓存不论是本地还是来自另外一台服务器
缓存复制拓扑(没有镜像,分区,分区的副本,或者客户端缓存)
最大的缓存尺寸是500M
不支持分布式ASP.NET Session State Cache
不支持分布式ASP.NET Output Cache
只支持32位(没有64位版本)
支持1.1/2.0/3.0/3.5客户端
NCache企业版特性如下:

缓存拓扑

本地缓存。
复制缓存。
分区缓存(自动分区)。
分区缓存(紧密定位)。
Client Cache 客户端缓存。
本地 .NET 客户端 (InProc & OutProc)。
本地 Java 客户端 (OutProc)。
远程 .NET & Java 客户端。
Partitioned Cache with with Replicas 复制分区缓存。
动态聚类
在运行时添加或删除节点。
串变化时进行事件通知。
ASP.NET 会话聚类
基于 .NET 1.1 的 HttpModule (没有改变代码)。
基于 .NET 2.0 的 Session Store Provider (没有改变代码)。
三方整合
NHibernate Level-2 Cache Provider.
Caching Application Block (CAB).
TierDeveloper.
数据到期
绝对的时间到期。
空闲时间到期。
缓存依赖关系
基于关键字的依赖。
基于文件的依赖。
基于多缓存关键字的依赖。
缓存与数据库同步
基于 SQL Server 2005 的 SqlDependency.
基于投票式的 DbDependency, 适用于SQL 2000, Oracle & OLEDB.
Clustered-Wide 事件通知
更新和删除所选择的关键字的事件。
插入,更新和删除任意关键字的事件。
自定义事件通知。
Object Query Language (OQL)
OQL 适用于基于属性的查询。
为查询创建属性的索引。
回收
固定的和可变大小的缓存。
Least Recently Used (LRU).
Least Frequently Used (LFU).
优先级的 FIFO.
存储选项
.NET Heap.
内存映射文件。
主要缓存及溢出缓存。
NCache 管理器
远程图形化 Cluster 配置。
远程 Cluster 监视器。
InProc 缓存实例监视器。
杂项
连读,连写,延迟写。
异步操作(添加,插入,删除)。
紧凑串行化。
大量操作 (添加,插入,删除,获取数据)。
数据组。
多缓存连接。
64 位版本。
安全。

本文来自云栖社区合作伙伴“doNET跨平台”,了解相关信息可以关注“opendotnet”微信公众号

目录
相关文章
|
7月前
|
缓存 Java 数据库
优化您的Spring应用程序:缓存注解的精要指南
优化您的Spring应用程序:缓存注解的精要指南
114 0
|
7月前
|
缓存 监控 中间件
中间件Cache-Aside策略应用程序直接与缓存和数据库进行交互
【5月更文挑战第8天】中间件Cache-Aside策略应用程序直接与缓存和数据库进行交互
85 4
|
7月前
|
存储 缓存 移动开发
HTML5 应用程序缓存
HTML5的离线缓存(Application Cache)允许网页存储资源以实现离线访问。通过manifest文件指定缓存内容和更新规则,比如列出要缓存的HTML、CSS、JS和图片。在HTML中引用manifest文件后,浏览器会根据文件变化更新缓存。但要注意,应用缓存不自动更新,需手动修改manifest触发,并且现代Web开发更多使用服务工作者(Service Workers)替代,以获得更优的离线体验和更新策略。
|
存储 缓存 数据库
极速Python编程:利用缓存加速你的应用程序
在软件开发中,缓存是一种常用的技术,用于提高系统性能和响应速度。Python提供了多种缓存技术和库,使我们能够轻松地实现缓存功能。本文将带您从入门到精通,逐步介绍Python中的缓存使用方法,并提供实例演示。
311 0
|
存储 缓存 移动开发
前端开发面试题—HTML5应用程序缓存 (离线存储)
今天分享一下我遇到的前端面试题,什么是HTML5应用程序缓存 (离线存储) ?
264 0
前端开发面试题—HTML5应用程序缓存 (离线存储)
|
缓存 前端开发 JavaScript
前端培训-中级阶段(23)- Manifest ApplicationCache应用程序缓存(2019-10-31期)
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。
180 0
前端培训-中级阶段(23)- Manifest  ApplicationCache应用程序缓存(2019-10-31期)
|
缓存 Java
面经 - 【多线程】在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
面经 - 【多线程】在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
440 0
|
缓存 区块链 Windows
应用程序图标设置 系统图标缓存问题
应用程序图标设置 系统图标缓存问题
198 0
|
2天前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
114 85
|
2月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
79 6