
一、今日目标安装 RedisWindows/Linux学会StackExchange.Redis / CSRedis二选一封装RedisHelper 通用帮助类企业标准学会在项目中注入 使用缓存背会 Redis 高频面试题二、Redis 安装超级简单Windows开发用直接下载解压运行https://github.com/tporadowski/redis/releasesredis-server.exe # 启动 redis-cli.exe # 客户端Linux部署用sudo apt install redis-server systemctl start redis systemctl enable redis三、.NET 2 大 Redis 客户端企业真实使用1. CSRedis推荐简单、稳定、支持高级功能Install-Package CSRedisCore优点轻量、API 友好支持异步、锁、哈希、列表、队列支持集群、哨兵企业使用率极高2. StackExchange.RedisInstall-Package StackExchange.Redis优点官方最主流性能强缺点容易超时、复杂四、企业级 RedisHelper 完整封装直接复制位置DDD 规范Infrastructure/ Commons/ Redis/ MyRedisHelper.cs完整代码CSRedis 版using CSRedis; namespace Admin.NET.Infrastructure.Commons.Redis; /// summary /// Redis 帮助类企业通用 /// /summary public class MyRedisHelper { private readonly CSRedisClient _redis; public MyRedisHelper(string connectionString) { _redis new CSRedisClient(connectionString); } #region String public async Task SetAsyncT(string key, T value, int expireMinutes 60) { await _redis.SetAsync(key, value, expireMinutes * 60); } public async TaskT GetAsyncT(string key) { return await _redis.GetAsyncT(key); } public async Taskbool ExistsAsync(string key) { return await _redis.ExistsAsync(key); } public async Tasklong DeleteAsync(string key) { return await _redis.DelAsync(key); } #endregion #region Hash public async Task HashSetAsyncT(string key, string field, T value) { await _redis.HSetAsync(key, field, value); } public async TaskT HashGetAsyncT(string key, string field) { return await _redis.HGetAsyncT(key, field); } #endregion #region 过期 public async Task ExpireAsync(string key, int expireMinutes) { await _redis.ExpireAsync(key, TimeSpan.FromMinutes(expireMinutes)); } #endregion }五、Program.cs 中注册全局单例// 注册 Redis var redisConn builder.Configuration[Redis:ConnectionString]!; builder.Services.AddSingleton(new MyRedisHelper(redisConn));appsettings.json 中配置Redis: { ConnectionString: 127.0.0.1:6379,password,defaultDatabase0 }六、使用Service 中注入private readonly MyRedisHelper _redis; public UserService(MyRedisHelper redis) { _redis redis; } // 存缓存 await _redis.SetAsync(user:1, user, 30); // 取缓存 var user await _redis.GetAsyncUser(user:1);七、高频面试题必背简历加分1. Redis 是什么为什么快内存数据库读写速度 10w QPS单线程 IO 多路复用内存操作比数据库快 100~1000 倍2. Redis 缓存使用场景接口缓存菜单 / 权限缓存登录用户信息分布式锁计数器、限流队列3. 缓存穿透、击穿、雪崩穿透查不存在的数据 → 数据库压力大解决方案缓存空值、布隆过滤器击穿热点 Key 过期 → 大量请求打库解决方案互斥锁、永不过期雪崩大量 Key 同时过期解决方案随机过期时间、集群、多级缓存4. Redis 淘汰策略volatile-lru、allkeys-lru企业最常用5. 为什么用 Redis 不用内存缓存分布式共享缓存持久化支持多种数据结构支持多服务器共享6. Redis 持久化RDB快照、AOF日志八、今日练习安装 Redis安装 CSRedisCore封装 RedisHelper在 UserService / MenuService 加入缓存测试存、取、删除、过期