【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 服务器连接字符串。此外,你可以根据需要调整缓存键、数据获取逻辑和过期时间。

相关推荐
jerry6094 小时前
7天用Go从零实现分布式缓存GeeCache(改进)(未完待续)
分布式·缓存·golang
冷眼Σ(-᷅_-᷄๑)5 小时前
Path.Combine容易被忽略的细节
c#·.net
sam-1237 小时前
k8s上部署redis高可用集群
redis·docker·k8s
看山还是山,看水还是。7 小时前
Redis 配置
运维·数据库·redis·安全·缓存·测试覆盖率
谷新龙0017 小时前
Redis运行时的10大重要指标
数据库·redis·缓存
精进攻城狮@8 小时前
Redis缓存雪崩、缓存击穿、缓存穿透
数据库·redis·缓存
渗透测试老鸟-九青8 小时前
通过投毒Bingbot索引挖掘必应中的存储型XSS
服务器·前端·javascript·安全·web安全·缓存·xss
材料苦逼不会梦到计算机白富美11 小时前
golang分布式缓存项目 Day6 防止缓存击穿
分布式·缓存·golang
SongYuLong的博客11 小时前
C# (定时器、线程)
开发语言·c#
百锦再12 小时前
详解基于C#开发Windows API的SendMessage方法的鼠标键盘消息发送
windows·c#·计算机外设