浅谈C#之内存缓存

一、基本介绍

MemoryCache是一个基于内存的缓存服务,它是System.Runtime.Caching命名空间的一部分。它允许开发人员将频繁使用的数据或昂贵的计算结果存储在内存中,以便快速和有效地访问。

MemoryCache使用键值对来存储数据,数据在被添加到缓存时会附带一个过期时间。当缓存项目到达其过期时间或者系统在资源压力下时(例如,可用的物理内存太低),该项目会从缓存中删除。

二、简单示例

cs 复制代码
using System;
using System.Runtime.Caching;

class Program
{
    static void Main(string[] args)
    {
        // 创建内存缓存对象
        MemoryCache cache = MemoryCache.Default;

        // 添加数据到缓存
        cache.Add("key", "value", DateTimeOffset.Now.AddMinutes(10));

        // 获取缓存数据
        object cachedData = cache.Get("key");
        Console.WriteLine(cachedData); // 输出:value
    }
}

对于分布式缓存,可以使用第三方库如StackExchange.Redis或者Microsoft.Extensions.Caching.Redis来实现。以下是一个使用StackExchange.Redis的简单示例:

cs 复制代码
using StackExchange.Redis;
using System;

class Program
{
    static void Main(string[] args)
    {
        // 创建 Redis 连接
        ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
        // 获取 Redis 数据库
        IDatabase db = redis.GetDatabase();

        // 添加数据到缓存
        db.StringSet("key", "value");

        // 获取缓存数据
        string cachedData = db.StringGet("key");
        Console.WriteLine(cachedData); // 输出:value
    }
}

如果你想要设置缓存的过期时间,可以使用MemoryCacheEntryOptions来设置滑动过期时间(SlidingExpiration)、绝对过期时间(AbsoluteExpiration)和相对于现在的绝对过期时间(AbsoluteExpirationRelativeToNow)。

cs 复制代码
var options = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(20));
cache.SetString(key, value, options);
相关推荐
一拳一个娘娘腔1 小时前
CVE-2026-43284 — Dirty Frag 深度拆解:当零拷贝遇上原地解密,页缓存成了攻击者的画板
linux·缓存
lx188548698961 小时前
Redis大Key阻塞:单线程CPU100%的致命陷阱
数据库·redis·缓存
IT策士1 小时前
Redis 从入门到精通:位图、HyperLogLog、GEO
数据库·redis·缓存
布局呆星2 小时前
Spring Boot + Redis 缓存实战:@Cacheable、序列化踩坑、缓存一致性,一次讲透
spring boot·redis·缓存
努力成为AK大王3 小时前
计算机底层核心原理:CPU、总线、缓存与内存深度解析
缓存·内存·cpu
闪电悠米3 小时前
黑马点评-Redis 消息队列-04_stream_seckill_order
数据库·redis·分布式·缓存·oracle·junit·lua
通信侠4 小时前
android相机热启动缓存帧解决方案(任务快照)
android·缓存·blur·tasksnapshot·mtkcam
Albert Edison19 小时前
【Redis】Centos7.9 安装 Redis 5 教程
数据库·redis·缓存
Steadfast_GG19 小时前
Redis中的通用命令
redis·缓存
颜笑晏晏1 天前
长输入短输出场景下的 SGLang 推理性能实测前缀缓存、PD 分离配比与参数调优
缓存·推理优化·sglang·ai infra·pd分离