asp.net core IDistributedCache
2022/2/11 22:13:26
本文主要是介绍asp.net core IDistributedCache,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
使用redis包
install-package Microsoft.Extensions.Caching.Redis
配置redis-server
builder.Services.AddDistributedRedisCache(options => { options.InstanceName = "book_"; // 用来区别其他应用 options.Configuration = "172.30.171.59:6379"; // redis-server });
使用IDistributedCache
private IDistributedCache MemoryCache { get; init; } private ILogger<CacheTestController> Logger { get; set; } public CacheTestController(IDistributedCache memoryCache, ILogger<CacheTestController> logger) { MemoryCache = memoryCache; Logger = logger; } [HttpGet("book")] public async Task<ActionResult<Book?>> GetBookById(int id) { Logger.LogInformation($"enter GetBookById, id={id}"); string key = $"book_{id}"; Book? book = null; if (await MemoryCache.GetAsync(key) == null) { Logger.LogInformation($"not found in cache, search in BookDbContext."); book = await new BookDbContext().GetBookByIdAsync(id); string val = JsonConvert.SerializeObject(book); DistributedCacheEntryOptions options = new DistributedCacheEntryOptions() { // set cache entry expiration timeout SlidingExpiration = TimeSpan.FromSeconds(20), AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(Random.Shared.Next(50, 100)), }; await MemoryCache.SetStringAsync(key, val, options); } else { Logger.LogInformation($"found book in cache."); string val = await MemoryCache.GetStringAsync(key); book = JsonConvert.DeserializeObject<Book>(val); } Logger.LogInformation($"GetAsync returns {book}"); if (book == null) return NotFound($"cannot find bood with id:{id}"); return book; }
注意点
虽然使用是SetStringAsync,但是在redis中保存的是Hash类型,不是string类型
试了一下SetAsync,保存的也是Hash类型。
await MemoryCache.SetAsync($"bk_{id}", Encoding.ASCII.GetBytes("hello"));
这篇关于asp.net core IDistributedCache的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#