浅谈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);
相关推荐
2301_793086877 小时前
Redis 04 Reactor
数据库·redis·缓存
1892280486111 小时前
NY243NY253美光固态闪存NY257NY260
大数据·网络·人工智能·缓存
青鱼入云12 小时前
redis怎么做rehash的
redis·缓存
FFF-X12 小时前
Vue3 路由缓存实战:从基础到进阶的完整指南
vue.js·spring boot·缓存
夜影风1 天前
Nginx反向代理与缓存实现
运维·nginx·缓存
编程(变成)小辣鸡1 天前
Redis 知识点与应用场景
数据库·redis·缓存
菜菜子爱学习2 天前
Nginx学习笔记(八)—— Nginx缓存集成
笔记·学习·nginx·缓存·运维开发
魏波.2 天前
常用缓存软件分类及详解
缓存
yh云想2 天前
《多级缓存架构设计与实现全解析》
缓存·junit
白仑色2 天前
Redis 如何保证数据安全?
数据库·redis·缓存·集群·主从复制·哨兵·redis 管理工具