浅谈C#库之Memcached

news/2024/12/1 5:26:28/

一、Memcached库介绍

Memcached是一个开源的高性能分布式内存缓存系统,它通过将数据存储在内存中来加速动态Web应用。以下是Memcached的一些关键特点:

1、高性能:Memcached使用内存进行数据存储,访问速度极快。

2、分布式:支持多节点分布式部署,具备良好的扩展性。

3、简单易用:API简单直观,易于集成到各种编程语言中,包括C#。

4、轻量级:占用资源少,安装配置简单。

二、Memcached的工作原理

Memcached的核心是一个Key-Value存储系统,支持以下基本操作:

  • set:将数据存储到缓存中。
  • get:从缓存中读取数据。
  • delete:从缓存中删除数据。
  • incr/decr:对缓存中的数值进行增加或减少操作。

Memcached采用LRU(Least Recently Used,最近最少使用)算法管理缓存数据。当缓存容量达到上限时,会自动删除最久未使用的数据,以腾出空间存储新的数据。

三、使用Memcached的方法

在C#中使用Memcached,通常需要依赖于第三方库,如Enyim.Caching。以下是使用Enyim.Caching库的基本步骤:

安装Enyim.Caching库

通过NuGet包管理器安装Enyim.Caching库。

Install-Package EnyimMemcached

配置Memcached客户端

在代码中配置Memcached服务器地址。

var serviceProvider = new ServiceCollection().AddEnyimMemcached(options =>{options.AddServer("127.0.0.1", 11211); // 配置Memcached服务器地址}).BuildServiceProvider();
var client = serviceProvider.GetService<IMemcachedClient>();

存储和读取数据

使用Memcached客户端进行数据的存储和读取。

// 存储数据
string key = "exampleKey";
string value = "Hello, Memcached!";
client.Set(key, value);// 读取数据
var cachedValue = client.Get<string>(key);

高级操作

Enyim.Caching还支持其他高级操作,如删除数据、增加和减少数值等。



四、Memcached的完整代码示例

using System;
using Enyim.Caching;
using Enyim.Caching.Memcached;class Program
{static void Main(string[] args){// 创建Memcached客户端var memcachedClient = new MemcachedClient();// 添加服务器节点memcachedClient.AddServer("127.0.0.1", 11211); // 替换为你的Memcached服务器地址和端口// 设置缓存项string key = "myKey";string value = "Hello, World!";memcachedClient.Store(StoreMode.Set, key, value, TimeSpan.FromMinutes(10)); // 设置10分钟过期时间Console.WriteLine($"Stored value for key '{key}': {value}");// 获取缓存项string cachedValue = memcachedClient.Get<string>(key);Console.WriteLine($"Retrieved value for key '{key}': {cachedValue}");// 删除缓存memcachedClient.Remove(key);Console.WriteLine($"Removed key '{key}' from cache.");// 检查是否删除成功try{string deletedValue = memcachedClient.Get<string>(key);Console.WriteLine($"Retrieved value for key '{key}': {deletedValue}");}catch (Exception ex){Console.WriteLine($"Error retrieving key '{key}': {ex.Message}");}// 保持控制台打开,直到用户按下任意键Console.WriteLine("Press any key to exit...");Console.ReadKey();}
}

这个示例程序执行了以下操作:

1、创建了一个MemcachedClient实例。

2、向客户端添加了一个Memcached服务器节点。

3、使用Store方法将一个字符串值存储到缓存中,并设置了10分钟的过期时间。

4、使用Get<T>方法从缓存中检索该值。

5、使用Remove方法从缓存中删除该值。

6、尝试再次检索已删除的值,以验证删除操作是否成功。


http://www.ppmy.cn/news/1551397.html

相关文章

[毕业设计]最全计算机专业毕业设计选题推荐汇总(源码+论文)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云等平台优质作者。大学毕业那年&#xff0c;曾经有幸协助指导老师做过毕业设计课题分类、论文初选&#xff08;查看论文的格式&#xff09;、代码刻录等打杂的事…

JVM_栈详解一

1、栈的存储单位 **栈中存储什么&#xff1f;**&#xff0c; 每个线程都有自己的栈&#xff0c;栈中的数据都是以栈帧&#xff08;Stack Frame&#xff09;的格式存在。在这个线程上正在执行的每个方法都各自对应一个栈帧&#xff08;Stack Frame&#xff09;。 栈帧是一个内存…

存储过程与自然语言处理逻辑的不同与结合

在现代软件开发中&#xff0c;存储过程与自然语言处理&#xff08;NLP&#xff09;逻辑都发挥着重要作用。存储过程是一种在数据库内部运行的预编译程序&#xff0c;通常用于处理与数据相关的任务&#xff0c;例如插入、更新、删除数据以及复杂的查询操作。而自然语言处理&…

C++趣味编程:基于树莓派Pico的模拟沙漏-倾斜开关与LED的互动实现

沙漏,作为一种古老的计时工具,利用重力让沙子通过狭小通道,形成了计时效果。在现代,我们可以通过电子元件模拟沙漏的工作原理。本项目利用树莓派Pico、倾斜开关和LED,实现了一个电子沙漏。以下是项目的详细技术解析与C++代码实现。 一、项目概述 1. 项目目标 通过倾斜开关…

Ubuntu Server 22.04.5 从零到一:详尽安装部署指南

文章目录 Ubuntu Server 22.04.5 从零到一&#xff1a;详尽安装部署指南一、部署环境二、安装系统2.1 安装2.1.1 选择安装方式2.1.2 选择语言2.1.3 选择不更新2.1.4 选择键盘标准2.1.5 选择安装版本2.1.6 设置网卡2.1.7 配置代理2.1.8 设置镜像源2.1.9 选择装系统的硬盘2.1.10 …

mysql集群NDB方式部署

1. 基本信息 部署机器角色部署路径192.168.0.1管理节点部署目录: /alidata1/mysql-cluster-8.4.3192.168.0.2管理节点192.168.0.3数据/SQL节点数据目录:192.168.0.4数据/SQL节点/alidata1/mysql-cluster-8.4.3/data/ndb-mgmd192.168.0.5数据节点 – 新增/alidata1/mysql-clust…

【设计模式】【结构型模式(Structural Patterns)】之代理模式(Proxy Pattern)

1. 设计模式原理说明 代理模式&#xff08;Proxy Pattern&#xff09; 是一种结构型设计模式&#xff0c;允许你提供一个替身或占位符对象来控制对另一个对象的访问。代理模式的主要目的是控制对真实对象的访问&#xff0c;可以用来添加额外的功能&#xff08;如延迟加载、权限…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-38

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…