浅谈C#库之Memcached

一、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库。

bash 复制代码
Install-Package EnyimMemcached

配置Memcached客户端

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

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

存储和读取数据

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

cs 复制代码
// 存储数据
string key = "exampleKey";
string value = "Hello, Memcached!";
client.Set(key, value);

// 读取数据
var cachedValue = client.Get<string>(key);

高级操作

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

四、Memcached的完整代码示例

cs 复制代码
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、尝试再次检索已删除的值,以验证删除操作是否成功。

相关推荐
正在走向自律7 分钟前
金仓数据库KingbaseES基础语法详解与实践指南
数据库·国产数据库·ddl·dml·kingbasees·sql语法·电科金仓
alonewolf_997 分钟前
MySQL全局优化详解与8.0新特性全面解读
数据库·mysql
ASS-ASH10 分钟前
快速处理虚拟机磁盘扩容问题
linux·数据库·vmware·虚拟机·磁盘扩容
爱写bug的野原新之助15 分钟前
数据库及navicat工具
数据库·网络爬虫·工具
青云交15 分钟前
Java 大视界 -- 基于 Java+Redis Cluster 构建分布式缓存系统:实战与一致性保障(444)
java·redis·缓存·缓存穿透·分布式缓存·一致性保障·java+redis clus
数据知道19 分钟前
一文掌握 MongoDB 存储引擎 WiredTiger 的原理
数据库·mongodb·数据库架构
Full Stack Developme23 分钟前
Mycat 2 实现 MySQL 读写分离,并且实现 主从同步
android·数据库·mysql
我是人✓27 分钟前
Spring IOC入门
java·数据库·spring
Hello.Reader28 分钟前
PyFlink DataStream 程序骨架、常用 Source/Sink、状态(State)、与 Table/SQL 互转一篇搞定
数据库·sql·linq
三不原则34 分钟前
故障案例:模型推理响应慢,排查 Redis 缓存集群问题
数据库·redis·缓存