浅谈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);
相关推荐
独自破碎E6 小时前
Spring Boot工程启动以后,怎么将数据库中已有的固定内容打入到Redis缓存中?
数据库·spring boot·缓存
此生只爱蛋7 小时前
【Redis】数据类型补充
数据库·redis·缓存
忧郁蓝调2610 小时前
Redis不停机数据迁移:基于 redis-shake 的跨实例 / 跨集群同步方案
运维·数据库·redis·阿里云·缓存·云原生·paas
奋斗べ青年.12 小时前
【redis】了解redis的主从和集群搭建
数据库·redis·缓存
五阿哥永琪16 小时前
Caffeine 本地缓存
缓存
optimistic_chen16 小时前
【Redis 系列】常用数据结构---String类型
数据结构·数据库·redis·缓存·string
大猫子的技术日记16 小时前
Redis 快速上手实战教程:从零搭建高性能缓存系统
数据库·redis·缓存
修炼室16 小时前
Freebase + Virtuoso 大规模导入实战:切片 Chunk、调大缓存、脚本化监控进度(可复现)
缓存
风筝在晴天搁浅17 小时前
hot100 146.LRU缓存
java·缓存
予枫的编程笔记1 天前
Redis 核心数据结构深度解密:从基础命令到源码架构
java·数据结构·数据库·redis·缓存·架构