这是全部的总结 NCache 特征。 请访问 产品页面 or 文档 有关每个功能的更多详细信息。
专栏 |
---|
.NET 和 Java 支持 |
- 缓存客户端:.NET、Java、Node.js、Python
|
- .NET 版本:服务器端代码 (.NET)
|
- Java版:服务器端代码(Java)
|
- Java Maven 包
|
- .NET NuGet 包
|
- Node.js 和 Python 包
|
Windows 和 Linux 支持 |
- Windows(缓存服务器、缓存客户端) |
- Linux(缓存服务器、缓存客户端) |
Docker 和 Kubernetes 支持 |
- Docker(Linux、Windows) |
- Kubernetes(本地) |
- Azure Kubernetes Service (AKS) |
- AWS 弹性 Kubernetes 服务 (EKS) |
- 红帽 OpenShift Kubernetes |
- 谷歌 Kubernetes 引擎 (GKE) |
性能和可伸缩性 |
- 缓存性能 超快速 |
- 缓存可扩展性 可扩展性极强 (2 万次操作/秒,5 节点集群) |
- 批量操作API |
- 异步操作API |
- 压缩 |
- 快速紧凑的序列化 |
- 索引 |
- 多网卡绑定 |
- 流水线 |
缓存弹性(高可用性) |
- 动态缓存集群 |
- 点对点架构 |
- 连接故障转移 |
- 裂脑检测和自动恢复 |
- 动态配置 |
- 多个集群 |
- 命名缓存 |
- 通信协议( TCP ) |
- 集群特定事件 |
- 在维护模式下停止重新分区 |
缓存拓扑 |
- 本地缓存 |
- 客户端缓存(近缓存) |
- 镜像缓存 |
- 复制缓存 |
- 分区缓存 |
- 分区副本缓存 |
- 分区数据平衡 |
- 自动负载平衡 |
- 分区数据亲和性 |
- 现场持久性 |
- 单跳数据访问 |
WAN 复制(多数据中心) |
- 主动 - 被动 |
- 活动 – 活动(2 个数据中心) |
- 活动 – 活动(3 个以上数据中心) |
- 多重主动 – 多重被动 |
- 解决冲突 |
- 重复数据删除 |
- 数据安全 |
安全与加密 |
- 身份验证(活动目录/LDAP) |
- 授权 |
- 数据加密 |
- 安全通信(TLS) |
缓存管理和监控 |
- 管理工具(Web GUI) |
- 监控工具(Web GUI) |
- PerfMon 计数器 |
- JMX 计数器 |
- SNMP 计数器 |
- 管理工具(命令行) |
- 管理和监控 API(.NET 和 Java) |
- 游乐场(现场+安装) |
网络应用程序(Java + 其他) |
- Spring Boot 会话 |
- Spring Boot 会议(多站点) |
- Java 网络会话 |
- Java Web 会话(多站点) |
- Node.js 网络会话 |
- Node.js Web 会话(多站点) |
专栏 |
---|
网络应用程序 (.NET) |
- 应用服务提供商.NET Core 会议 |
- 应用服务提供商.NET Core 会话(多站点) |
- 应用服务提供商.NET Core SignalR Backplane |
- 应用服务提供商.NET Core 响应缓存 |
- 应用服务提供商.NET Core ID分布式缓存 |
- 应用服务提供商.NET Core 身份服务器 |
- ASP.NET 和 ASP.NET Core 会话分享 |
- ASP.NET 会话 |
- ASP.NET 会话(多站点) |
- ASP.NET View State |
- ASP.NET 输出缓存 |
- ASP.NET SignalR Backplane |
Java 集成 |
- 休眠二级缓存 |
- 春季缓存 |
- JCache API |
- Java 持久性 API (JPA) 缓存 |
.NET 集成 |
- EF核心缓存 |
- 实体框架 6 缓存 |
- NHibernate 二级缓存 |
对象缓存功能 |
- 获取、添加、插入、删除、存在、清除缓存 |
- 到期 |
- 锁定和解锁 |
- 大对象流API |
- 项目版本控制 |
- 多个对象版本 |
- 交易 (部分支持) |
- 分布式数据结构 |
数据分组 |
-团体 |
- 标签 |
- 命名标签 |
查询(类似 SQL) |
- SQL 搜索 |
- SQL更新和删除 |
- 标签、命名标签和组上的 SQL |
- LINQ 查询 (.NET) |
通读、通写、缓存加载器/刷新器 |
- 通读 |
- 直写、后写 |
- 到期时自动重新加载和数据库同步(通读) |
- 装载机 |
- 复习 |
与数据源同步 |
- SQL 依赖关系(SQL Server) |
- Oracle 依赖关系(Oracle) |
- 数据库依赖性(任何数据库) |
- 文件依赖性 |
- 自定义依赖项(任何来源) |
管理数据关系 |
- 基于密钥的缓存依赖性 |
- 基于密钥的多缓存依赖性 |
事件和连续查询 |
- 项目级事件(onInsert/onRemove) |
- 缓存级别事件(添加/插入/删除) |
- 连续查询 |
Pub/Sub 消息传递(Kafka 风格) |
- 话题 |
- 队列 |
- 持久订阅 |
- 消息持久化 |
- 主题分区 |
- 消息排序 |
- 消息传递保证 |
- 模式管理 |
- 实时流(卡夫卡式) |
全文搜索 |
- 全文搜索(Lucene API) |
- 架构执行 |
- 索引迁移 |
- 数据摄取 |
大数据处理与分析 |
- Map-Reduce 查询 |
- 聚合器 |
- 入口处理器 |
缓存大小管理(驱逐策略) |
- 最大缓存大小(以 MB 为单位) |
- LRU 驱逐(最近最少使用) |
- LFU 驱逐(最不常用) |
- 优先驱逐 |
- 不要驱逐选项 |
NCache 为 Java 和 .NET 提供强大的支持。
特色区 | NCache |
---|---|
缓存客户端:.NET、Java、Node.js、Python |
官方支持.NET、Java、Node.js 和 Python 客户端。 |
.NET版本 服务器端代码 (.NET) |
本机运行 .NET 服务器端代码。 |
Java版 服务器端代码(Java) |
本机运行 Java 服务器端代码。 |
Java Maven 包 |
提供全套 Maven 包。 |
.NET NuGet 包 |
提供全套 NuGet 包。 |
Node.js 和 Python 包 |
提供全套 Node.js 和 Python 包。 |
NCache 为Linux和Windows提供强大的支持。
特色区 | NCache |
---|---|
Windows(缓存服务器、缓存客户端) |
Windows 正式支持缓存服务器和缓存客户端 |
Linux(缓存服务器、缓存客户端) |
Linux 正式支持缓存服务器和缓存客户端 |
NCache 为 Docker 和 Kubernetes 提供强大的支持。
特色区 | NCache |
---|---|
Docker(Linux、Windows) |
Linux 和 Windows Docker 镜像正式支持 NCache 服务器 |
Kubernetes (本地) |
NCache 可以无缝部署在任何 Kubernetes 集群内。 NCache 服务器可以是基于 Linux 或 Windows 的 Pod。 运行 NCache 管理中心可以从Kubernetes内部和外部进行访问和管理 NCache 簇。 |
Azure Kubernetes Service (AKS) |
NCache 可以无缝部署在任何 Azure Kubernetes (AKS) 集群内。 NCache 服务器可以是基于 Linux 或 Windows 的 Pod。 运行 NCache 管理中心可从 AKS Kubernetes 内部和外部访问和管理 NCache 簇。 |
AWS 弹性 Kubernetes 服务 (EKS) |
NCache 可以无缝部署在任何 AWS Elastic Kubernetes (EKS) 集群内。 NCache 服务器可以是基于 Linux 或 Windows 的 Pod。 运行 NCache 管理中心可从 EKS Kubernetes 内部和外部访问和管理 NCache 簇。 |
谷歌 Kubernetes 引擎 (GKE) |
NCache 可以无缝部署在任何 Google Kubernetes Engine (GKE) 集群内。 NCache 服务器可以是基于 Linux 或 Windows 的 Pod。 运行 NCache 管理中心可从 GKE Kubernetes 内部和外部访问和管理 NCache 簇。 |
红帽 OpenShift Kubernetes |
NCache 可以无缝部署在任何红帽 OpenShift Kubernetes 集群内。 NCache 服务器可以是基于 Linux 或 Windows 的 Pod。 运行 NCache 管理中心可从 OpenShift Kubernetes 内部和外部访问和管理 NCache 簇。 |
NCache 速度极快且可扩展。 怎么看 NCache 实现这一点。
特色区 | NCache |
---|---|
缓存性能 |
超快速 2 万次操作/秒,5 节点集群 NCache 速度极快。 请看它的 绩效基准 可以进一步扩展。 您可以进行基准测试 NCache 在您自己的环境中使用提供的压力测试工具 NCache. |
缓存可扩展性 |
可扩展性极强 2 万次操作/秒,5 节点集群 NCache 提供线性可扩展性,这意味着当您向集群添加更多节点时,性能会以线性方式提高。 请看它的 绩效基准. 您可以进行基准测试 NCache 在您自己的环境中使用提供的压力测试工具 NCache. |
批量操作API |
批量获取、添加、插入和删除。 这涵盖了大多数主要的缓存操作,并提供了巨大的性能提升。 |
异步操作API |
提供异步添加、插入和删除。 异步操作将控制权返回给应用程序并在后台执行缓存操作。 大大提高了应用程序的响应时间。 |
压缩 |
将此值与项目大小阈值一起指定,并且只有大于阈值的项目才会被压缩。 其余部分未压缩缓存。 提供此大小阈值是因为压缩较小的项目通常会减慢速度。 并且,您可以在运行时通过“热应用”配置“压缩”。 |
快速紧凑的序列化 |
紧凑序列化速度非常快,因为它使用预编译代码进行序列化,还因为它在序列化对象中存储类型 ID 而不是长类型名称。 这几乎快了 10 倍。 一旦您注册了紧凑序列化的类, NCache 生成序列化代码并在运行时将其编译到内存中,并使用此预编译代码进行序列化。 您可以在您选择的对象上混合紧凑序列化和常规序列化。 |
指数 |
NCache 允许您定义对象属性的索引。 NCache 然后在连接时为这些索引生成数据提取代码,在内存中编译它,并在客户端使用它来提取所有数据。 这比使用反射要快得多。 NCache 还会自动在标签、命名标签和组上创建索引。 过期和驱逐政策。 |
多网卡绑定 |
您可以将两个 NIC 分配给缓存服务器。 第一个可用于客户端与缓存服务器通信,第二个可用于集群中的多个缓存服务器相互通信。 这极大地提高了您的带宽可扩展性。 您还可以为缓存客户端分配特定的 NIC,以用于与缓存服务器通信。 |
流水线 |
NCache 使用 Pipelines 在客户端和服务器之间进行高性能 IO 操作。 通过管道,您可以显着提高可扩展性。 默认情况下,所有缓存都会启用管道操作,但可以通过配置禁用管道操作。 |
缓存弹性意味着缓存在运行时的灵活性。 您是否能够在运行时执行以下操作而无需停止缓存或应用程序?
NCache 提供了一种自我修复的动态缓存集群,使 NCache 高弹性。 阅读更多相关信息,请访问 自愈动态集群.
特色区 | NCache |
---|---|
动态缓存集群 |
NCache 是高度动态的,允许您在运行时添加或删除缓存服务器,而不会中断缓存或您的应用程序。 当您这样做时,数据会在运行时自动重新平衡(称为状态传输),并且不会对缓存或其客户端造成任何中断。 也没有性能下降。 |
点对点架构 |
NCache 缓存集群具有点对点架构。 这意味着集群中没有“主/从”,也没有“多数规则”。 所有节点都是平等的。 有一个“协调器”节点,它是最高级的节点。 如果它出现故障,下一个最高级的节点会自动接管此角色。 这意味着如果任何服务器出现故障,集群始终保持正常运行。 |
连接故障转移 (集群、客户端/服务器) |
NCache 在缓存客户端和服务器之间以及缓存集群内提供完整的连接故障转移支持。 如果缓存服务器出现故障, NCache 客户端继续与集群中的其他服务器一起工作,不会出现任何中断。 集群通过重新平衡其数据并在需要时重新创建副本来自动管理自身。 |
脑裂检测和自动恢复 |
提供裂脑检测并通过以下方式通知您 NCache 发生这种情况时的事件并提供自动恢复。 |
动态配置 |
NCache 集群配置不是硬编码的,当您在运行时添加或删除服务器时,集群中的所有其他服务器都会意识到这一点。 NCache 客户端还可以在运行时从缓存集群了解所有服务器和各种其他配置。 此外,“热应用”功能允许您在运行时更改大量配置,而无需停止任何操作。 |
多个集群 |
NCache 允许您在同一组缓存服务器上创建相同或不同拓扑的多个缓存集群。 |
命名缓存 |
NCache 允许您在同一组缓存服务器上创建多个命名缓存。 |
通信协议 |
TCP |
集群特定事件 |
NCache 提供有关集群中更改的事件,例如:MemberJoined、MemberLeft、CacheStopped 等。 这些事件可以本地传递到 Java 和 .NET 应用程序。 |
在维护模式下停止重新分区 |
NCache 允许您停止缓存服务器以进行“维护模式”,在这种情况下,即使该服务器已离开集群, NCache 不进行自动重新分区。 反而, NCache 在没有此节点的情况下继续工作,直到恢复为止。 此行为与离开集群的节点自动触发重新分区的标准行为不同。 |
缓存拓扑决定数据存储、复制和客户端连接策略。 不同类型的用途有不同的拓扑。 阅读更多详细信息 NCache 缓存拓扑位于 缓存拓扑.
特色区 | NCache |
---|---|
本地缓存 |
InProc 和 OutProc。 InProc 速度要快得多,并为您提供“InProc 速度”,但如果同一台计算机上有多个实例,则内存消耗会更高。 由于 IPC 和序列化成本,OutProc 稍微慢一些,但可以节省内存消耗,因为每台机器只有一份副本。 |
客户端缓存 (靠近缓存) |
客户端缓存只是一个本地缓存(InProc/OutProc) NCache remote client 保留从缓存集群获取的所有数据的副本的机器。 该客户端缓存还与缓存集群保持同步,因此如果缓存集群中的任何数据发生更改,客户端缓存也会立即更新。 用它, NCache 客户端可以获得超高速本地缓存的优势,而不会影响数据完整性,也不会将缓存大小限制为仅一个客户端的内存。 |
镜像缓存 |
镜像缓存是 2 节点主动-被动缓存。 所有客户端都连接到主动节点,并且数据镜像是异步完成的。 如果主动节点出现故障,被动节点会自动变为主动节点,并且所有客户端都会自动连接到该节点。 |
复制缓存 |
在复制缓存中,整个缓存被复制到集群中的所有节点上。 您可以拥有 2 个以上的节点,并且所有节点都处于活动状态,这意味着客户端直接连接到它们以进行读写操作。 更新是在集群内同步完成的,因此比其他拓扑慢,但仍然相当快。 读取速度超快。 每个客户端仅连接到一个节点。 您可以启用负载平衡或指定客户端用于连接的有序服务器列表。 |
分区缓存 |
如果任何服务器出现故障,则支持完全故障转移(尽管在这种情况下会丢失数据)。 分区缓存是一种非常强大的拓扑结构。 您可以在不进行复制的情况下进行分区,以加快缓存速度,并且还可以使用更少的内存,因为如果某些数据从缓存中丢失,您始终可以重新加载这些数据。 在分区缓存中,整个缓存被分区,每个缓存服务器获得一个分区。 当您添加/删除节点时,所有分区都会被创建或删除,并且它们的存储桶会在运行时自动重新分配。 即使没有添加或删除分区,但当任何分区被太多数据淹没时,也会提供数据重新平衡功能。 |
分区副本缓存 |
与分区缓存相同(请参阅上文)。 还为保存在另一个缓存服务器上的每个分区提供一个副本。 如果节点出现故障,这可以提供防止数据丢失的可靠性。 就像分区一样,副本也是动态创建的。 数据平衡也会更新副本。 |
分区数据平衡 |
当您从集群中添加/删除缓存服务器时,数据会自动重新平衡。 当一台缓存服务器的数据比其他服务器多得多时,数据也会自动重新平衡。 您可以为此配置差异阈值。 在这种情况下,您可以关闭自动重新平衡,并根据需要手动执行。 这适用于分区缓存和分区副本缓存。 |
自动负载平衡 |
在复制缓存拓扑的情况下,客户端在服务器节点之间保持平衡。 对于分区缓存拓扑,所有客户端都连接到所有节点以进行单跳操作,因此也是平衡的。 |
分区数据亲和性 |
NCache 提供数据亲和力。 要使用它,您可以在某个项目的 {} 内指定其他项目的键,然后该项目与具有相同关联性的其他项目保留在同一分区上。 |
现场持久性 |
NCache 允许您为任何缓存打开实时持久性,在这种情况下,其所有数据都保留在 LiteDB 持久性存储中。 这是一个二进制持久存储,反映了缓存集群中的所有存储桶。 持久性是在运行时实时完成的。 如果需要,您可以从其持久副本恢复缓存。 |
单跳数据访问 |
在所有缓存拓扑中, NCache 客户端能够在单跳中访问缓存的数据。 |
对于许多应用程序部署在多个数据中心(云中的多个区域或可用区)的客户来说,WAN 复制是一项重要功能,无论是出于灾难恢复目的还是为了区域流量的负载平衡。
WAN 复制背后的想法是,它不能因为 WAN 的高延迟而减慢每个地理位置的缓存。 NCache 提供桥接拓扑来处理所有这些。
了解更多关于它 广域网复制 NCache.
特色区 | NCache |
---|---|
主动 - 被动 |
桥接拓扑主动-被动 您可以在主动站点和被动站点之间创建桥梁。 主动站点将所有更新提交到网桥,然后网桥将它们复制到被动站点。 |
主动——主动 (2 个数据中心) |
桥接拓扑主动-主动 您可以在两个活动站点之间创建桥接。 两者都将更新提交到 Bridge,该 Bridge 会根据“最后更新获胜”规则或通过您提供的自定义冲突解决处理程序来处理冲突。 然后,桥确保两个站点具有相同的更新。 |
主动——主动 (3 个以上数据中心) |
桥接拓扑主动-主动 您可以在三个或更多活动站点之间创建桥。 所有人都将其更新提交到 Bridge,该 Bridge 会根据“最后更新获胜”规则或通过您提供的自定义冲突解决处理程序来处理冲突。 然后,桥确保所有站点都具有相同的更新。 |
多重主动 – 多重被动 |
NCache 允许您在多个主动站点和多个被动站点之间创建桥梁。 |
解决冲突 |
默认情况下,使用“最后更新获胜”算法来解决冲突。 但是您可以指定一个“自定义冲突解决处理程序”,调用该处理程序来通过比较两个对象的内容并决定哪一个获胜来解决冲突。 |
重复数据删除 |
NCache Bridge 通过删除重复项来优化复制队列。 如果同一个密钥被更新多次,它只会复制最后一次。 |
数据保障及安全 |
您可以使用 3DES 和 AES 算法对数据进行加密,以便在通过 Bridge 跨 WAN 传输到其他站点之前将其缓存为加密数据。 否则,您可以在跨 WAN 的多个数据中心之间使用 VPN 以确保安全。 |
许多应用程序处理敏感数据或任务关键型,因此安全性对它们来说是一个非常重要的问题。
NCache 基于身份验证和授权,提供对缓存及其服务器的受限访问,以将人们分为不同的用户组。 而且,它还允许数据在传输到缓存之前在客户端应用程序进程内进行加密。
NCache 为安全提供有力支撑。
特色区 | NCache |
---|---|
认证 (活动目录/LDAP) |
您可以根据 Active Directory 或 LDAP 对用户进行身份验证。 如果启用安全性,则未经身份验证和授权,任何人都无法访问缓存。 |
授权 |
您可以将用户授权为“用户”或“管理员”。 用户只能访问缓存进行读写操作,而“管理员”可以管理缓存服务器和集群。 |
数据加密 |
您可以启用加密和 NCache 在将客户端上的所有项目发送到缓存之前自动对其进行加密。 并且,该数据在缓存中保持加密状态。 解密也在客户端进程内自动且透明地发生。 目前,提供了 3DES 和 AES128 / AES196 / AES256 加密,并且正在添加更多加密。 |
安全通信 (TLS) |
NCache 为客户端/服务器通信的安全传输提供 TLS。 此外,还提供强加密 NCache 因此您可以通过不安全的连接加密数据。 |
缓存管理是内存分布式存储的一个非常重要的方面。 一个好的缓存应该提供以下功能:
NCache 为所有这些领域提供了强有力的支持。 阅读更多相关信息,请访问 管理和监控工具.
特色区 | NCache |
---|---|
管理工具(Web GUI) |
NCache 管理中心是一个功能强大的 Web GUI 工具 NCache。 它为您提供了资源管理器风格的视图,并让您可以从一个位置快速管理缓存集群。 这包括缓存创建/编辑和许多其他功能。 |
授权 |
监控工具(Web GUI) NCache Monitor 是管理中心的一部分,是一个功能强大的 Web GUI 工具,可让您监控 NCache 来自单个位置的集群范围内的活动。 它还可以让您监控所有 NCache 来自单一位置的客户。 并且,您可以合并非NCache PerfMon 计数器用于比较 NCache 统计数据。 这种实时比较通常非常重要。 |
PerfMon 计数器 |
NCache 提供了一组丰富的 PerfMon 计数器,可以从 NCache 经理 NCache Monitor,或任何支持 PerfMon 监控的第三方工具。 |
JMX计数器 |
NCache 为其 Java 客户端提供了一组丰富的 JMX 计数器,可以从任何支持 JMX 监控的第三方工具中看到这些计数器。 |
SNMP 计数器 |
NCache 为其 Java 客户端提供了一组丰富的 SNMP 计数器,可以从任何支持 SNMP 计数器的第三方工具中查看这些计数器。 |
管理工具 (命令行) |
NCache 提供强大的命令行工具。 您可以创建一个缓存,添加 remote client为它添加服务器节点,启动/停止缓存等等。 从脚本(Linux 或 Windows)中使用这些工具并自动执行各种缓存管理任务。 |
管理和监控 API(.NET 和 Java) |
NCache 提供Java和.NET API来管理和监控缓存和客户端。 使用此 API,您可以停止/启动缓存、获取连接客户端的统计信息或获取缓存集群的运行状况信息。 |
游乐场(现场+安装) |
NCache Playground 提供了一种快速、互动的方式来熟悉 NCache。 通过 Playground,您可以轻松探索 NCache 示例、运行它们、进行更改并执行它们,而无需开发环境。 |
Web 应用程序需要的最重要的东西是 Web 会话存储。 NCache 为 Java 和 Node.js Web 应用程序提供强大的支持,如下所示。
特色区 | NCache |
---|---|
Spring Boot 会话 |
NCache 已经实现了与 Spring Boot 的集成来存储其 Session。 NCache 提供智能会话复制,并且比任何用于会话的数据库存储都要快得多。 |
Spring Boot 会话(多站点) |
NCache 允许您跨多个数据中心共享 Spring Boot 会话。 这适用于您不想将所有会话复制到每个数据中心,但希望能够将流量从一个数据中心溢出到另一个数据中心而不丢失 Java Web 会话的情况。 随着用户的移动,会话从一个数据中心移动到下一个数据中心。 |
Java 网络会话 |
NCache 已经实现了 JSP Servlet Session Provider (Java Servlet 4.0+)。 您无需更改任何代码即可使用它。 只需更改 web.xml NCache 提供智能会话复制,并且比任何用于会话的数据库存储都要快得多。 |
Java 网络会话 (多站点) |
NCache 允许您跨多个数据中心共享 Java Web 会话。 这适用于您不想将所有会话复制到每个数据中心,但希望能够将流量从一个数据中心溢出到另一个数据中心而不丢失 Java Web 会话的情况。 随着用户的移动,会话从一个数据中心移动到下一个数据中心。 |
Node.js Web 会话 |
NCache 已经实现了一个提供程序来存储 Node.js Web 会话。 NCache 提供智能会话复制,并且比任何用于会话的数据库存储都要快得多。 |
Node.js Web 会话 (多站点) |
NCache 允许您跨多个数据中心共享 Node.js Web 会话。 这适用于您不想将所有会话复制到每个数据中心,但希望能够将流量从一个数据中心溢出到另一个数据中心而不丢失 Java Web 会话的情况。 随着用户的移动,会话从一个数据中心移动到下一个数据中心。 |
Web 应用程序需要的最重要的东西是 Web 会话存储。 NCache 为ASP提供强有力的支持.NET Core 和 ASP.NET Web 应用程序,如下所示。
特色区 | NCache |
---|---|
ASP.NET Core 会议 |
NCache 已实施 ASP.NET Core 会话提供者。 在这之中, NCache 还实现了特殊的锁定来处理并发控制。 NCache 提供智能会话复制,并且比任何用于会话的数据库存储都要快得多。 |
ASP.NET Core 会话(多站点) |
NCache 允许您共享 ASP.NET Core 跨多个数据中心的会话。 这适用于您不想将所有会话复制到每个数据中心,但希望能够将流量从一个数据中心溢出到另一个数据中心而不丢失 ASP 的情况.NET Core 会话。 随着用户的移动,会话从一个数据中心移动到下一个数据中心。 |
ASP.NET Core SignalR Backplane |
NCache 已实施 ASP.NET Core SignalR Backplane 适用于在负载平衡的多服务器 Web 场中运行的高流量实时 Web 应用程序。 SignalR 使用 Pub/Sub 消息传递 NCache 将消息从一个 Web 服务器发送到另一个 Web 服务器。 |
ASP.NET Core 响应缓存 |
NCache 已实施 ASP.NET Core 用于在负载平衡的多服务器 Web 场中运行的应用程序的响应缓存中间件。 响应缓存确定 Web 响应何时可缓存,将响应存储在 NCache,并提供来自缓存的响应。 |
ASP.NET Core ID分布式缓存 |
NCache 已经实现了 IDistributedCache 提供程序,允许您使用 NCache 如果您的 ASP 不需更改任何代码.NET Core 应用程序已在使用 IDistributedCache 接口。 |
ASP.NET Core 身份服务器 |
您可以使用 NCache 作为ASP.NET Core IdentityServer4 缓存和数据存储。 |
ASP.NET 和 ASP.NET Core 会话分享 |
NCache 允许您在 ASP.NET 和 ASP 之间共享会话.NET Core 领域广泛应用,提供了卓越的解决方案。 |
ASP.NET 会话 |
NCache 已为 .NET 4.8 实现了 ASP.NET 会话状态提供程序 (SSP)。 您无需更改任何代码即可使用它。 只需更改 web.config 即可。 NCache 还提供灵活的会话锁定选项来处理机器人淹没 ASP.NET 网站。 NCache 提供智能会话复制,并且比任何用于会话的数据库存储都要快得多。 |
ASP.NET 会话 (多站点) |
NCache 允许您跨多个数据中心共享 ASP.NET 会话。 这适用于您不想将所有会话复制到每个数据中心,但希望能够将流量从一个数据中心溢出到另一个数据中心而不丢失 ASP.NET 会话的情况。 随着用户的移动,会话从一个数据中心移动到下一个数据中心。 |
ASP.NET View State |
是的。 NCache 有一个 ASP.NET View State 缓存模块。 无需更改任何代码即可使用它。 只需修改配置文件即可。 以下是支持的一些高级功能 NCache:
|
ASP.NET 输出缓存 |
NCache 已实现 ASP.NET 输出缓存提供程序。 它允许您将 ASP.NET 页面输出缓存在内存分布式存储中,并在网络场中共享。 |
ASP.NET SignalR Backplane |
NCache 已经实施 ASP.NET SignalR Backplane 适用于在负载平衡的多服务器 Web 场中运行的高流量实时 Web 应用程序。 SignalR 使用 Pub/Sub 消息传递 NCache 将消息从一个 Web 服务器发送到另一个 Web 服务器。 |
Hibernate 是一个非常强大且流行的对象关系映射引擎。 而且,幸运的是,它还具有二级缓存提供程序架构,允许您插入第三方缓存,而无需对 Hibernate 应用程序进行任何代码更改。 NCache 已经实现了这个 Hibernate 二级缓存提供程序。
我们 休眠二级缓存 了解详情。
同样,Spring Framework 是一个 Java 开源应用程序框架,由多个提供一系列服务的模块组成。 看 Spring数据集成 了解详情。
特色区 | NCache |
---|---|
休眠二级缓存 |
NCache 提供了一个 Hibernate 二级缓存提供程序,您可以将其插入到您的 Java 应用程序中,而无需更改任何代码。 NCache 在这方面还实现了数据库同步功能,因此您可以指定哪些类应该与数据库同步。 NCache 允许您为此指定 OracleDependency、SqlDependency 或 DbDependency。 |
弹簧缓存 |
NCache 完全支持与 Spring Framework 5.1 及更高版本的缓存集成。 |
缓存API |
NCache 提供 JCache API 的实现。 NCache 还扩展了 JCache API 的功能: NCache 提供但 JCache 不支持。 因此,您可以插入或拔出 NCache 无需更改任何代码即可使用 JCache 的任何应用程序。 |
Java 持久性 API (JPA) 缓存 |
NCache 提供与 JPA 的集成作为其缓存提供程序。 |
特色区 | NCache |
---|---|
EF 核心缓存 |
扩展方法 NCache 已实现用于缓存的 EF Core 扩展方法,使 EF 应用程序使用缓存变得非常简单。 它还可以完全控制应用程序如何缓存数据。 |
实体框架 6 缓存 |
自定义 ADO.NET 提供程序 NCache 已经为 Entity Framework 6 实现了后台二级缓存。您可以插入 NCache 到您的 EF 应用程序,在分析模式下运行它,并快速查看它正在使用的所有查询。 然后,您可以决定应缓存哪些查询以及跳过哪些查询。 |
NHibernate 二级缓存 |
NCache 提供 NHibernate L2 缓存提供程序,您可以通过 web.config 或 app.config 更改来插入该提供程序。 NCache 在此还实现了数据库同步功能,因此您可以指定哪些类应与数据库同步。 NCache 允许您为此指定 SqlDependency、OracleDependency 或 DbDependency。 |
特色区 | NCache |
---|---|
获取、添加、插入、删除、存在、清除缓存 |
NCache 提供这些操作的更多变化,从而为用户提供更多控制。 |
到期 |
提供绝对和滑动到期时间。 绝对过期对于来自数据库且必须在已知时间后过期的数据很有用,因为它可能会过时。 滑动过期意味着在一段时间不活动后过期,这对于会话和其他不再需要时必须删除的临时数据很有好处。 |
锁定和解锁 |
NCache 提供锁定和解锁。 Lock API 用于独占锁定缓存项,以便其他人无法读取或写入它。 该项目将保持锁定状态,直到锁定到期或解锁。 NCache 还提供“GetAndLock()”(在获取项目之前锁定项目)和“InsertAndUnlock()”(更新项目然后解锁它),所有这些都在一次调用中完成。 |
大对象流API |
对于大型物体, NCache 允许缓存客户端以“GetChunk()”方式获取它们并以“AppendChunk()”方式更新它们。 有了这个, NCache 客户端可以从缓存中流入或流出大对象。 |
项目版本控制 |
这确保只有一个客户端可以更新一项,并且除非缓存客户端首先获取最新版本然后更新它,否则所有将来的更新都将失败。 |
多个对象版本 |
NCache 允许不同应用程序将同一类的两个不同版本存储在缓存中。 每个应用程序都会检索自己的版本,并且缓存会保留一个超集。 |
交易 |
部分支持 显式锁定 |
分布式数据结构 |
NCache 提供分布式数据结构,如列表、队列、集合、字典和计数器。 |
特色区 | NCache |
---|---|
组别 |
NCache 使您能够将缓存的项目分组到一个组中。 您可以稍后获取或删除属于某个组的所有项目。 您也可以只获取密钥,然后只获取它们的子集。 |
标签 |
NCache 提供了一个称为标签的概念。 标签是一个字符串,您可以将其分配给一个或多个缓存项目。 并且一项缓存项可以分配多个标签。 而且,稍后,您可以获取属于一个或多个标签的项目以操作它们。 您还可以在 SQL 或 LINQ 搜索中包含标签作为条件的一部分。 |
命名标签 |
NCache 提供命名标签功能,您可以将“键”和“标签”分配给一个或多个缓存项目。 并且,单个缓存项目可以获得多个命名标签。 稍后,您可以获取属于一个或多个命名标签的项目。 您还可以在 SQL 和 LINQ 查询中使用命名标签作为条件的一部分。 |
特色区 | NCache |
---|---|
SQL搜索 |
NCache 提供丰富的基于 SQL 的搜索功能。 您可以根据对象属性而不是仅根据键来搜索缓存。 您还可以在 SQL 查询中包含组、标签和命名标签。 |
SQL更新和删除 |
NCache 允许您执行 UPDATE SQL 查询,该查询会更新缓存的项目,而无需先将它们加载到客户端。 NCache 还允许您执行删除缓存项目的 DELETE SQL 语句。 |
标签、命名标签和组上的 SQL |
NCache 允许您将标签、命名标签和组名称作为 SQL 搜索条件的一部分。 |
LINQ 查询 (.NET) |
NCache 允许您使用 .NET 应用程序中的 LINQ 查询来搜索缓存。 LINQ 是 .NET 中流行的对象查询语言 NCache 已经实现了一个 LINQ 提供程序。 因此,如果您习惯使用 LINQ,则可以像使用 LINQ 一样搜索缓存 NCache SQL。 |
许多人使用内存分布式存储作为“侧面缓存”,直接从数据库获取数据并将其放入缓存中。 另一种方法是“缓存通过”,您的应用程序只需向缓存请求数据。 而且,如果数据不存在,内存中分布式存储会从您的数据源获取数据。
直写也是如此。 后写只不过是一种直写式,其中缓存立即更新并将控制权返回给客户端应用程序。 而且,数据库或数据源是异步更新的,因此应用程序无需等待。
NCache 在这方面提供了强大的能力。
特色区 | NCache |
---|---|
通读 |
NCache 允许您实现多个通读处理程序并将其注册为“命名提供程序”。 然后,客户可以告诉 NCache 在“缓存未命中”时使用特定的通读。 NCache 还允许您在运行时添加通读处理程序,而无需停止缓存。 |
直写、后写 |
NCache 允许您实现多个直写处理程序并注册 NCache 作为“指定提供者”。 然后,每当应用程序更新缓存的项目并告诉 NCache 也叫直写, NCache 服务器调用您的直写处理程序。 如果您启用了 write-behind,那么 NCache 立即更新缓存并将数据库更新排队,后台线程处理它并调用直写处理程序。 |
到期时自动重新加载和数据库同步(通读) |
如果您已经实现了通读处理程序, NCache 允许您使用它来指定每当缓存项过期时,而不是将其从缓存中删除, NCache 应该调用您的通读处理程序来读取该对象的新副本并用它更新缓存。 您可以在启用数据库同步、更新数据库中的行以及相应的缓存项将从缓存中删除但现在在通读的帮助下重新加载时指定相同的内容。 |
装载机 |
NCache 让您实现一个 Loader 并将其注册到缓存集群。 NCache 然后在启动时调用它来预填充缓存。 缓存加载器是从数据源/数据库读取数据并在启动时填充缓存的代码。 |
复习 |
NCache 允许您实现 Refresher,使您可以定期将数据库与缓存同步。 该进程在后台运行,不会影响应用程序性能。 |
对于任何优秀的内存分布式存储来说,数据库同步都是一个非常重要的功能。 由于大多数被缓存的数据都来自关系数据库,因此总是存在其他应用程序或用户可能更改数据并导致缓存的数据变得过时的情况。
为了处理这些情况,一个好的内存分布式存储应该允许您指定缓存项和数据库中的数据之间的依赖关系。 然后,每当数据库中的数据发生更改时,缓存就会意识到它并使其数据无效或重新加载新副本。
此外,一个好的缓存应该允许您将缓存与非关系数据源同步,因为现实生活中也充满了这些情况。
NCache 提供了非常强大的数据库同步功能。
特色区 | NCache |
---|---|
SQL 依赖 (SQL 服务器) |
NCache 为 SQL Server 提供 SqlDependency 支持。 您可以将缓存项目与 SQL Server 数据库中基于 SQL 语句的数据集关联。 然后,每当该数据集发生更改(添加、更新或删除)时,MS SQL 就会向 NCache 和 NCache 使此缓存项目无效或重新加载它(如果您已使用 ReadThrough 启用它)。 此功能允许您将缓存与 SQL Server 数据库同步。 如果您遇到某些应用程序或用户直接更新数据库中的数据的情况,您可以启用此功能以确保缓存保持新鲜。 |
Oracle 依赖项 (Oracle) |
NCache 为 Oracle 提供 OracleDependency 支持。 您可以将缓存项目与 Oracle 数据库中基于 SQL 语句的数据集关联。 然后,每当该数据集发生更改(添加、更新或删除)时,Oracle 都会向 NCache 和 NCache 使此缓存项目无效或重新加载它(如果您已使用 ReadThrough 启用它)。 此功能允许您将缓存与 Oracle 数据库同步。 如果您遇到某些应用程序或用户直接更新数据库中的数据的情况,您可以启用此功能以确保缓存保持最新。 |
数据库依赖(任何数据库) |
NCache 支持您将缓存与任何 OLEDB 数据库同步。 这种同步是基于轮询的。 而且,虽然它不如数据库通知那么实时,但效率更高。 它更有效,因为在一项民意调查中, NCache 在 OracleDependency 的情况下,可以同步数千个缓存项目,而不是从 Oracle 接收数千个单独的数据库通知。 |
文件依赖 |
NCache 允许您指定对外部文件的依赖关系。 然后 NCache 监视此文件是否有任何更新以及发生这种情况时, NCache 使相应的缓存项无效。 这允许您使缓存的项目与非关系数据源保持同步。 |
自定义依赖 (任何来源) |
NCache 允许您实现自定义依赖项并将您的代码注册到缓存集群。 然后, NCache 调用您的代码来监视某些自定义数据源的任何更改。 当发生更改时,您会在内部触发依赖项更新 NCache 这会导致从缓存中删除相应的缓存项。 当您需要将缓存项与平面文件无法捕获的非关系数据源同步时,此功能非常有用。 因此,自定义依赖项处理这种情况。 |
由于大部分被缓存的数据来自关系数据库,因此它在各种数据项之间具有关系。 所以,一个好的缓存应该允许你在缓存中指定这些关系,然后保持数据的完整性。 它应该允许您自动处理缓存中的一对一、一对多和多对多数据关系,而不会给您的应用程序增加这项任务的负担。
特色区 | NCache |
---|---|
基于键的缓存依赖性 |
您可以指定缓存项 A 依赖于缓存项 B,然后缓存项 B 又依赖于缓存项 C。 然后,如果 C 被更新或删除,B 会自动从缓存中删除,并且也会触发 A 从缓存中删除。 并且,所有这一切都是由缓存自动完成的。 使用此功能,您可以跟踪缓存中的一对一、一对多和多对多关系,并在更新或删除相关项时使缓存项无效。 |
基于密钥的多缓存依赖性 |
这是基于键的缓存依赖关系的扩展,只不过它允许您跨多个缓存创建此依赖关系。 |
特色区 | NCache |
---|---|
项目级别事件 ( onInsert / onRemove ) |
NCache 每当根据客户端兴趣更新或删除特定缓存项目时,都可以向客户端发送事件。 您可以使用以下方式注册 Java 和 .NET 回调 NCache 在这些情况下会调用客户端和您的回调。 NCache 使用自己的套接字级协议来进行此事件传播,因此速度非常快。 |
缓存级别事件 (添加/插入/删除) |
如果打开, NCache 每当从缓存中添加、更新或删除任何项目时,都会向所有客户端发送事件通知。 您可以使用以下方式注册 Java 和 .NET 回调 NCache 在这些情况下会调用客户端和您的回调。 |
连续查询 |
NCache 提供强大的连续查询(CQ)功能。 CQ 允许您指定一个 SQL 查询 NCache 监视缓存中的任何添加、更新或删除。 并且,每当发生这种情况时,您的应用程序都会收到通知。 将此功能视为与 OracleDependency 等效,但针对的是缓存而不是数据库。 |
特色区 | NCache |
---|---|
话题 |
NCache 允许您的应用程序通过 Topic 进行 Kafka 风格的 Pub/Sub 风格的消息传递。 |
队列 |
NCache 允许您的应用程序通过队列执行 Kafka 风格的 Pub/Sub 风格的消息传递。 |
持久订阅 |
持久订阅允许客户端断开连接 NCache 以任何理由不丢失他们的消息。 当他们重新连接时,他们会看到断开连接时发送的所有消息。 |
消息持久化 |
NCache 允许您将所有消息保留在其 Pub/Sub 消息传递中。 |
主题分区 |
NCache 允许您将一个主题映射到一个或多个分区(Kafka 风格)。 然后, NCache 确保在每个分区内,针对该主题发布的所有消息始终都是有序的,以便可以以相同的方式使用它们。 这与 Kafka 的行为非常相似。 |
消息排序 |
将主题映射到分区后,然后, NCache 确保在每个分区内,针对该主题发布的所有消息始终按顺序排序,以便可以以相同的方式使用它们。 这与 Kafka 的行为非常相似。 |
消息传递保证 |
NCache 让您选择消息传递选项,它可以保证消息将保留在 Pub/Sub 主题中,直到根据需要传递为止。 |
模式管理 |
NCache 让您可以在其 Pub/Sub 消息传递(Kafka 风格)中进行架构管理。 |
实时流 (卡夫卡风格) |
NCache 采用了开源 Kafka Streams 并实现了 NCache 它的 Pub/Sub 消息传递提供商。 这意味着您可以使用流行的 Kafka Streams(.NET 和 Java)来对抗 NCache 由于是内存分布式存储,它比 Kafka 快得多。 |
特色区 | NCache |
---|---|
全文搜索 (Lucene API) |
NCache 通过行业标准 Lucene 提供全文搜索。 NCache 在其内存分布式存储中实现了 Lucene,因此它具有超快和线性可扩展性。 |
架构执行 |
NCache 使用行业标准 Lucene 在全文搜索中提供方案执行。 这样,您可以确保所有被索引的文档都遵循架构。 |
索引迁移 |
NCache 使用行业标准 Lucene 在全文搜索中提供索引迁移。 这样,您就可以将现有的 Lucene 索引 NCache 全文搜索。 |
资料撷取 |
NCache 使用行业标准 Lucene 在全文搜索中提供数据摄取。 这样,您可以轻松地将现有数据源中的大量数据注入到 NCache 全文搜索索引。 |
特色区 | NCache |
---|---|
Map-Reduce 查询 |
NCache 提供了一个 MapReduce 框架,您的程序可以在缓存服务器上运行以并行处理大数据。 |
聚合器 |
NCache 提供与 MapReduce 框架配合使用的聚合器并为您提供统计数据。 |
入口处理器 |
NCache 完全支持入口处理器在缓存节点上并行执行。 |
特色区 | NCache |
---|---|
最大缓存大小(以 MB 为单位) | 支持 |
LRU 驱逐 (最近最少使用) |
支持 |
LFU 驱逐 (最不常用) |
支持 |
优先驱逐 |
NCache 还允许您为某些缓存项目指定“不驱逐”优先级,然后它们不会被驱逐。 |
不要驱逐选项 |
NCache 允许您为整个缓存指定“不逐出”选项。 然后,即使缓存已满,也不会清除任何内容。 相反,客户端应用程序在尝试将数据添加到缓存时会收到一条错误,指出缓存已满。 |