searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

Redis 实现分布式缓存

2022-06-30 10:54:51
20
0

Redis 实现分布式缓存

IDistributedCache、StackExchangeRedis

Redis 学习教程:

Windows安装redis并将redis设置成服务开机自启:

https://blog.csdn.net/qq_40732336/article/details/122653953

 

Redis 中文网 https://www.redis.net.cn/

 

搭建 Master/Slaver 模式的 Redis 集群 https://blog.csdn.net/lupengfei1009/article/details/88323561#_154

 

使用 Redis Desktop Manager 连接 Redis

1565870987(1)

二,ASP.NET Core 使用分布式缓存

ASP.NET Core 中,支持使用多种数据库进行缓存,ASP.NET Core 提供了统一的接口给开发者使用。

 

IDistributedCache

 

ASP.NET Core 中,使用 IDistributedCache 为开发者提供统一的缓存使用接口,而不必关注使用的是何种数据库。

 

IDistributedCache]接口提供了以下方法操作的分布式的缓存实现中的项:

  • GetAsync –接受字符串键和检索缓存的项作为byte[]数组如果在缓存中找到。
  • SetAsync –中添加项 (作为byte[]数组) 到使用字符串键的缓存。
  • RefreshAsync –刷新缓存基于其密钥,重置其滑动到期超时值 (如果有) 中的项。
  • RemoveAsync –移除缓存项根据其字符串键值。

IDistributedCache 提供的常用方法如下:

官方文档很详细https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.extensions.caching.distributed.idistributedcache?view=aspnetcore-2.2

ASP.NET Core 中配置缓存

新建一个 ASP.NET Core WebApi 项目

Nuget 管理器安装

Microsoft.Extensions.Caching.StackExchangeRedis

ConfigureServices 中使用服务

 

services.AddDistributedMemoryCache();

配置 Redis 服务器

            services.AddStackExchangeRedisCache(options =>

            {

                options.Configuration = "localhost:6379";

                options.InstanceName = "mvc";

 

            });

InstanceName 是你自定义的实例名称,创建缓存时会以此名称开头。

这样就配置好了。

使用缓存

修改默认生成的 ValuesController.cs。

注入缓存服务

        private readonly IDistributedCache _cache;

        public ValuesController(IDistributedCache cache)

        {

            _cache = cache;

        }

设置缓存和使用缓存:

await _cache.GetAsync("{键名}");

 

_cache.SetAsync("键名", {值}, {设置});

删除原来的方法,添加以下代码:

        [HttpGet("Set")]

        public async Task<JsonResult> SetCache(string setkey, string setvalue)

        {

 

            string key = "key1";

            if (!string.IsNullOrEmpty(setkey))

                key = setkey;

            string value = DateTime.Now.ToLongTimeString();

            if (!string.IsNullOrEmpty(setvalue))

                value = setvalue;

            await _cache.SetStringAsync(key, value);

            return new JsonResult(new { Code = 200, Message = "设置缓存成功", Data = "key=" + key + "    value=" + value });

        }

 

        [HttpGet("Get")]

        public async Task<JsonResult> GetCache(string setkey)

        {

            string key = "key1";

            if (!string.IsNullOrEmpty(setkey))

                key = setkey;

            var value = await _cache.GetStringAsync(key);

            return new JsonResult(new { Code = 200, Message = "设置缓存成功", Data = "key=" + key + "    value=" + value });

 

        }

在 URL 添加 QueryString 可以设置缓存内容,如果没有带参数的话,就使用默认的值。

 

打开 https://localhost:5001/api/values/set 可以看到设置了默认值。

 

或者访问 https://localhost:5001/api/values/set?setkey=key11111&setvalue=asafesfdsreg

 

自定义设置缓存值。

1565872816(1)

打开 https://localhost:5001/api/values/get?setkey=key11111

 

可以获取缓存值。

 

设置缓存过期时间

使用 DistributedCacheEntryOptions 可以设置缓存过期时间

 

DistributedCacheEntryOptions 有三个属性,表示相对时间、绝对时间。

 

使用方法

        [HttpGet("Set")]

        public async Task<JsonResult> SetCache(string setkey, string setvalue)

        {

 

            string key = "key1";

            if (!string.IsNullOrEmpty(setkey))

                key = setkey;

            string value = DateTime.Now.ToLongTimeString();

            if (!string.IsNullOrEmpty(setvalue))

                value = setvalue;

 

            var options = new DistributedCacheEntryOptions()

            .SetSlidingExpiration(TimeSpan.FromSeconds(20));

 

            await _cache.SetStringAsync(key, value, options);

            return new JsonResult(new { Code = 200, Message = "设置缓存成功", Data = "key=" + key + "    value=" + value });

        }

缓存 20 秒,20秒过后此缓存将被清除。

————————————————

版权声明:本文为CSDN博主「今晚打老虎z」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_40732336/article/details/122654648

 

0条评论
0 / 1000
天翼云文档找茬小助手
41文章数
7粉丝数
天翼云文档找茬小助手
41 文章 | 7 粉丝

Redis 实现分布式缓存

2022-06-30 10:54:51
20
0

Redis 实现分布式缓存

IDistributedCache、StackExchangeRedis

Redis 学习教程:

Windows安装redis并将redis设置成服务开机自启:

https://blog.csdn.net/qq_40732336/article/details/122653953

 

Redis 中文网 https://www.redis.net.cn/

 

搭建 Master/Slaver 模式的 Redis 集群 https://blog.csdn.net/lupengfei1009/article/details/88323561#_154

 

使用 Redis Desktop Manager 连接 Redis

1565870987(1)

二,ASP.NET Core 使用分布式缓存

ASP.NET Core 中,支持使用多种数据库进行缓存,ASP.NET Core 提供了统一的接口给开发者使用。

 

IDistributedCache

 

ASP.NET Core 中,使用 IDistributedCache 为开发者提供统一的缓存使用接口,而不必关注使用的是何种数据库。

 

IDistributedCache]接口提供了以下方法操作的分布式的缓存实现中的项:

  • GetAsync –接受字符串键和检索缓存的项作为byte[]数组如果在缓存中找到。
  • SetAsync –中添加项 (作为byte[]数组) 到使用字符串键的缓存。
  • RefreshAsync –刷新缓存基于其密钥,重置其滑动到期超时值 (如果有) 中的项。
  • RemoveAsync –移除缓存项根据其字符串键值。

IDistributedCache 提供的常用方法如下:

官方文档很详细https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.extensions.caching.distributed.idistributedcache?view=aspnetcore-2.2

ASP.NET Core 中配置缓存

新建一个 ASP.NET Core WebApi 项目

Nuget 管理器安装

Microsoft.Extensions.Caching.StackExchangeRedis

ConfigureServices 中使用服务

 

services.AddDistributedMemoryCache();

配置 Redis 服务器

            services.AddStackExchangeRedisCache(options =>

            {

                options.Configuration = "localhost:6379";

                options.InstanceName = "mvc";

 

            });

InstanceName 是你自定义的实例名称,创建缓存时会以此名称开头。

这样就配置好了。

使用缓存

修改默认生成的 ValuesController.cs。

注入缓存服务

        private readonly IDistributedCache _cache;

        public ValuesController(IDistributedCache cache)

        {

            _cache = cache;

        }

设置缓存和使用缓存:

await _cache.GetAsync("{键名}");

 

_cache.SetAsync("键名", {值}, {设置});

删除原来的方法,添加以下代码:

        [HttpGet("Set")]

        public async Task<JsonResult> SetCache(string setkey, string setvalue)

        {

 

            string key = "key1";

            if (!string.IsNullOrEmpty(setkey))

                key = setkey;

            string value = DateTime.Now.ToLongTimeString();

            if (!string.IsNullOrEmpty(setvalue))

                value = setvalue;

            await _cache.SetStringAsync(key, value);

            return new JsonResult(new { Code = 200, Message = "设置缓存成功", Data = "key=" + key + "    value=" + value });

        }

 

        [HttpGet("Get")]

        public async Task<JsonResult> GetCache(string setkey)

        {

            string key = "key1";

            if (!string.IsNullOrEmpty(setkey))

                key = setkey;

            var value = await _cache.GetStringAsync(key);

            return new JsonResult(new { Code = 200, Message = "设置缓存成功", Data = "key=" + key + "    value=" + value });

 

        }

在 URL 添加 QueryString 可以设置缓存内容,如果没有带参数的话,就使用默认的值。

 

打开 https://localhost:5001/api/values/set 可以看到设置了默认值。

 

或者访问 https://localhost:5001/api/values/set?setkey=key11111&setvalue=asafesfdsreg

 

自定义设置缓存值。

1565872816(1)

打开 https://localhost:5001/api/values/get?setkey=key11111

 

可以获取缓存值。

 

设置缓存过期时间

使用 DistributedCacheEntryOptions 可以设置缓存过期时间

 

DistributedCacheEntryOptions 有三个属性,表示相对时间、绝对时间。

 

使用方法

        [HttpGet("Set")]

        public async Task<JsonResult> SetCache(string setkey, string setvalue)

        {

 

            string key = "key1";

            if (!string.IsNullOrEmpty(setkey))

                key = setkey;

            string value = DateTime.Now.ToLongTimeString();

            if (!string.IsNullOrEmpty(setvalue))

                value = setvalue;

 

            var options = new DistributedCacheEntryOptions()

            .SetSlidingExpiration(TimeSpan.FromSeconds(20));

 

            await _cache.SetStringAsync(key, value, options);

            return new JsonResult(new { Code = 200, Message = "设置缓存成功", Data = "key=" + key + "    value=" + value });

        }

缓存 20 秒,20秒过后此缓存将被清除。

————————————————

版权声明:本文为CSDN博主「今晚打老虎z」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_40732336/article/details/122654648

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0