【C#与Redis】--实践案例--案例 1:使用 Redis 实现缓存

在使用 Redis 实现缓存的案例中,我们可以使用 StackExchange.Redis 库,这是一个为 .NET 提供的 Redis 客户端库。以下是一个简单的使用 Redis 缓存的 C# 示例:

  1. 首先,你需要安装 StackExchange.Redis 库。可以通过 NuGet 包管理器控制台执行以下命令:
bash 复制代码
Install-Package StackExchange.Redis
  1. 然后,你可以创建一个简单的缓存管理器类,如下所示:
csharp 复制代码
using System;
using StackExchange.Redis;

public class RedisCacheManager
{
    private readonly Lazy<ConnectionMultiplexer> _lazyConnection;

    public RedisCacheManager(string connectionString)
    {
        _lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
        {
            return ConnectionMultiplexer.Connect(connectionString);
        });
    }

    private IDatabase GetDatabase()
    {
        return _lazyConnection.Value.GetDatabase();
    }

    public T Get<T>(string key)
    {
        var database = GetDatabase();
        var value = database.StringGet(key);

        if (value.HasValue)
        {
            return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(value);
        }

        return default(T);
    }

    public void Set<T>(string key, T value, TimeSpan? expiry = null)
    {
        var database = GetDatabase();
        var serializedValue = Newtonsoft.Json.JsonConvert.SerializeObject(value);

        if (expiry.HasValue)
        {
            database.StringSet(key, serializedValue, expiry);
        }
        else
        {
            database.StringSet(key, serializedValue);
        }
    }

    public bool Remove(string key)
    {
        var database = GetDatabase();
        return database.KeyDelete(key);
    }
}
  1. 然后,你可以在应用程序中使用这个缓存管理器:
csharp 复制代码
class Program
{
    static void Main()
    {
        // 替换为你的 Redis 服务器连接字符串
        string redisConnectionString = "your_redis_connection_string";

        var cacheManager = new RedisCacheManager(redisConnectionString);

        // 示例使用缓存
        string key = "example_key";
        string data = "example_data";

        // 从缓存获取数据
        string cachedData = cacheManager.Get<string>(key);

        if (cachedData == null)
        {
            // 如果缓存中没有数据,则从其他数据源获取数据
            Console.WriteLine("Data not found in cache. Fetching from another data source.");

            // 模拟从其他数据源获取数据
            cachedData = data;

            // 将数据放入缓存,设置过期时间为 1 小时
            cacheManager.Set(key, cachedData, TimeSpan.FromHours(1));
        }
        else
        {
            Console.WriteLine("Data found in cache.");
        }

        // 使用从缓存或其他数据源获取的数据
        Console.WriteLine($"Data: {cachedData}");

        // 清除缓存
        cacheManager.Remove(key);

        Console.ReadLine();
    }
}

请确保替换代码中的 your_redis_connection_string 为你的 Redis 服务器连接字符串。此外,你可以根据需要调整缓存键、数据获取逻辑和过期时间。

相关推荐
2501_930707784 小时前
使用C#代码使用条件格式为 Excel 隔行设置颜色
c#·excel
行百里er6 小时前
5 分钟跑起 Redis(Docker 版)
redis·后端·docker
福大大架构师每日一题6 小时前
redis 8.10.2发布:安全修复集中落地,事务 ACL、集群总线与模块稳定性全面加固
redis
Pioneer000016 小时前
我用 Redis + 网关做多模型 API 路由:缓存命中率 95%+ 的工程实践
人工智能·redis·后端·缓存·性能优化·架构
何以解忧唯有撸码7 小时前
【开源】c#造个轮子-日程安排工具
c#·自定义控件
周杰伦fans7 小时前
CAD菜单栏和工具栏都不见了,怎么显示?
其他·c#
曹牧7 小时前
C#:HashSet<T> 去重
c#
czhc11400756637 小时前
起点、口径与因果:今天用错的七把尺子
c#
Hui Baby7 小时前
Redis Streams 发布订阅
redis
hweiyu0021 小时前
Redis命令:MSETNX
redis·缓存