MST

星途 面试题库

面试题:C# 中如何使用 StackExchange.Redis 实现简单的缓存数据存储与读取

假设你要使用 C# 结合 StackExchange.Redis 来缓存用户信息(以键值对形式,键为用户ID,值为用户对象),请写出主要代码片段来实现将用户对象存入 Redis 缓存以及从缓存中读取用户对象的功能。
14.5万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

以下是使用 C# 结合 StackExchange.Redis 实现将用户对象存入 Redis 缓存以及从缓存中读取用户对象功能的主要代码片段:

  1. 引入必要的命名空间:
using StackExchange.Redis;
using System.Text.Json;
  1. 定义用户类:
public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
}
  1. 连接 Redis 并进行缓存操作:
public class RedisCacheManager
{
    private readonly ConnectionMultiplexer _redis;
    private readonly IDatabase _database;

    public RedisCacheManager(string connectionString)
    {
        _redis = ConnectionMultiplexer.Connect(connectionString);
        _database = _redis.GetDatabase();
    }

    // 存入用户对象到 Redis 缓存
    public void SetUserToCache(string userId, User user)
    {
        var serializedUser = JsonSerializer.Serialize(user);
        _database.StringSet(userId, serializedUser);
    }

    // 从 Redis 缓存读取用户对象
    public User GetUserFromCache(string userId)
    {
        var value = _database.StringGet(userId);
        if (value.HasValue)
        {
            return JsonSerializer.Deserialize<User>(value);
        }
        return null;
    }
}
  1. 使用示例:
class Program
{
    static void Main()
    {
        var cacheManager = new RedisCacheManager("localhost:6379");

        // 创建用户对象
        var user = new User { Name = "John", Age = 30 };

        // 存入缓存
        cacheManager.SetUserToCache("1", user);

        // 从缓存读取
        var retrievedUser = cacheManager.GetUserFromCache("1");
        if (retrievedUser != null)
        {
            Console.WriteLine($"Name: {retrievedUser.Name}, Age: {retrievedUser.Age}");
        }
    }
}

上述代码首先引入了必要的命名空间,定义了一个简单的用户类。然后在 RedisCacheManager 类中,通过构造函数连接到 Redis 服务器,并提供了 SetUserToCache 方法用于将用户对象序列化后存入 Redis,GetUserFromCache 方法用于从 Redis 读取并反序列化用户对象。在 Main 方法中展示了如何使用这些方法进行缓存操作。请根据实际的 Redis 服务器配置修改连接字符串。