面试题答案
一键面试以下是使用 C# 结合 StackExchange.Redis 实现将用户对象存入 Redis 缓存以及从缓存中读取用户对象功能的主要代码片段:
- 引入必要的命名空间:
using StackExchange.Redis;
using System.Text.Json;
- 定义用户类:
public class User
{
public string Name { get; set; }
public int Age { get; set; }
}
- 连接 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;
}
}
- 使用示例:
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 服务器配置修改连接字符串。