如何使用Redis实现分布式缓存
2021-01-14 18:46
716 查看
1 分布式缓存是什么
分布式缓存是由多个应用服务器共享的缓存,通常作为外部服务在访问它的应用服务器上维护。 分布式缓存可以提高 ASP.NET Core 应用程序的性能和可伸缩性,尤其是在应用程序由云服务或服务器场托管时。
2 Redis是什么?
Redis是一个高性能的 key-value 数据库。Redis性能极高,能读的速度是110000次/s,写的速度是81000次/s。
3 Redis 安装
这里我们不具体展开,你可以参考 https://www.runoob.com/redis/redis-install.html 按步骤进行安装。
4 使用 Redis 分布式缓存
首先,我们简单的创建一个控制器,实现一个简单方法,返回当前时间。我们可以看到每次访问这个接口,都可以看到当前时间。
[Route("api/[controller]")] [ApiController] public class CacheController : ControllerBase { [HttpGet] public string Get() { return DateTime.Now.ToString(); } }
然后,将Microsoft.Extensions.Caching.Redis的NuGet软件包安装到您的应用程序中。
Microsoft.Extensions.Caching.Redis
接着,使用依赖关系注入从应用中引用的服务,在Startup类的ConfigureServices()方法中配置:
public void ConfigureServices(IServiceCollection services) { // install-package Microsoft.Extensions.Caching.Redisservices.AddDistributedRedisCache(options => { options.InstanceName = ""; options.Configuration = "127.0.0.1:6379"; }); }
接着,控制器的构造函数中请求IDistributedCache实例
private IDistributedCache cache; public RedisCacheController(IDistributedCache cache) { this.cache = cache ?? throw new ArgumentNullException(nameof(cache)); }
最后,在Get方法中使用缓存
[HttpGet] public string Get() { //读取缓存 var now = cache.Get("cacheNow"); if (now == null) //如果没有该缓存 { cache.Set("cacheNow", Encoding.UTF8.GetBytes(DateTime.Now.ToString())); now = cache.Get("cacheNow"); return Encoding.UTF8.GetString(now); } else { return Encoding.UTF8.GetString(now); } }
相关文章推荐
- Redis 深度历险:如何使用 Redis 来实现简单限流策略
- 如何用分布式缓存服务实现Redis内存优化
- 如何使用 redis 实现分布式幂等服务中间件
- 如何使用Redis实现分布式锁?
- 程序员,你知道如何使用Redis才能实现高流量的限速器吗?
- 使用redis如何实现动态时间段内统计排序?
- .net core系列之《.net core中使用集成IDistributedCache接口的Redis和MongoDB实现分布式缓存》
- 使用 Redis 如何设计分布式锁?使用 Zookeeper 来设计分布式锁可以吗?以上两种分布式锁的实现方式哪种效率比较高?
- 如何使用 redis 实现分布式幂等服务中间件
- 【Redis面试题】如何使用Redis实现微信步数排行榜?
- 使用 Redis 如何实现查询附近的人?「视频版」——面试突击 003 期
- 使用redis如何实现分布式锁
- 在AspNetCore 中 使用Redis实现分布式缓存
- 在ASPNETCORE 中 使用REDIS实现分布式缓存
- Spring Boot使用Redis如何实现Session共享
- 分布式缓存技术redis学习系列(五)——spring-data-redis与JedisPool的区别、使用ShardedJedisPool与spring集成的实现及一致性哈希分析
- 我在生产项目里是如何使用Redis发布订阅的?(二)Java版代码实现(含源码)
- 如何使用redis实现分布式锁
- 使用Redis如何实现分布式锁?
- 如何使用Spring+redis实现对session的分布式管理