如果一般的缓存可以解决问题,就不必使用分布式缓存 ;

一般使用分布式缓存 都是使用 redis ;

使用教程:

1. 安装包 Microsoft.Extensions.Caching.StackExchangeRedis

2. 注册 redis 服务

  // 注册 redis 缓存
builder.Services.AddStackExchangeRedisCache(option =>
{
option.Configuration = "192.168.33.200";
option.InstanceName = "test"; /// 起一个名字避免混乱z's
});

3. 在 controller DI注入接口

using ClassLibrary1;
using ClassLibrary2;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using System.Text.Json;
using WebApplication1.IServices;
using WebApplication1.Utility.SwaggerExt; namespace WebApplication1.Controllers
{
[ApiController]
[Route("[controller]")]
[ApiExplorerSettings(IgnoreApi = false, GroupName = nameof(ApiVersions.frontAPI))]
public class HomeController : ControllerBase
{
public readonly IDistributedCache distCache;
public HomeController(IDistributedCache distCache)
{
this.distCache = distCache;
}
/// <summary>
/// 测试缓存API
/// 创建缓存 CreateEntry
/// 删除缓存 Remove
/// 获取换粗 TryGetValue
/// </summary>
/// <param name="i"></param>
/// <param name="y"></param>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult<Book?>> GetBookById(long id)
{
Book? book;
string s = await distCache.GetStringAsync("Book" + id);
if(s == null)
{
// 没有缓存 从数据库获取信息
book = await MyDbContext.GetByIdAsync(id);
// 存入缓存 SetStringAsync(key,string)
distCache.SetStringAsync("Book" + id,JsonSerializer.Serialize(book));
}else
{
// 从缓存里面获取到了 s 反序列化得到
book = JsonSerializer.Deserialize<Book?>(s);
} if(book == null)
{
return NotFound("不存在");
}else
{
return Ok(book);
}
}
}
}

分布式缓存 - 缓存服务器 - redis的更多相关文章

  1. 【原创】分布式之缓存击穿 【原创】自己动手实现静态资源服务器 【原创】自己动手实现JDK动态代理

    [原创]分布式之缓存击穿   什么是缓存击穿 在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示 因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查 ...

  2. 如何用分布式缓存服务实现Redis内存优化

    Redis是一种支持Key-Value等多种数据结构的存储系统,其数据特性是“ALL IN MEMORY”,因此优化内存十分重要.在对Redis进行内存优化时,先要掌握Redis内存存储的特性比如字符 ...

  3. Memcached-高性能的分布式内存缓存服务器

    Memcached是高性能的分布式内存缓存服务器,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等, 由国外社区网站 LiveJou ...

  4. 分布式二级缓存组件实战(Redis+Caffeine实现)

    前言 在生产中已有实践,本组件仅做个人学习交流分享使用.github:https://github.com/axinSoochow/redis-caffeine-cache-starter 个人水平有 ...

  5. Lind.DDD.Caching分布式数据集缓存介绍

    回到目录 戏说当年 大叔原创的分布式数据集缓存在之前的企业级框架里介绍过,大家可以关注<我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器>,而今天主要对Lind.DDD.Cachin ...

  6. CYQ.Data V5 分布式自动化缓存设计介绍(二)

    前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但 ...

  7. 缓存与ABP Redis Cache

    缓存与ABP Redis Cache 为什么要用缓存 为什么要用缓存呢,说缓存之前先说使用缓存的优点. 减少寄宿服务器的往返调用(round-trips). 如果缓存在客户端或是代理,将减少对服务器的 ...

  8. 如何提高缓存命中率(Redis)

    缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据. 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作.原因可能是由于缓存中根本不存在,或者缓存已经过期. 通常来讲 ...

  9. 网站缓存技术(Redis、Memcached、Ehcache)

    Redis 是什么? 通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等等. 分类的标准也不一,Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点 ...

  10. Mybatis的二级缓存、使用Redis做二级缓存

    目录 什么是二级缓存? 1. 开启二级缓存 如何使用二级缓存: userCache和flushCache 2. 使用Redis实现二级缓存 如何使用 3. Redis二级缓存源码分析 什么是二级缓存? ...

随机推荐

  1. 【OracleDB】 04 DDL

    Create 创建表 创建数据表,语法和MySQL基本一样 演示案例练习: 打开PLSQL,新建一个SQL脚本窗口 编写SQL语句 -- 创建学生信息表 CREATE TABLE tb_student ...

  2. 人形机器人(humanoid)(双足机器人、四足机器人) —— 硬件测试的方法

    硬件测试的方法: 硬件的稳定性.鲁棒性.为机器人设定好固有的执行策略,然后长时间的让机器人重复执行这些既定好的动作.该种测试方法主要测试硬件的设计是否合理,硬件在长时间的运行中是否可以稳定运行而不是出 ...

  3. 强化学习中的“sample efficiency”应该如何翻译 —— “样本效率”还是“采样效率”

    问题: 强化学习中的"sample efficiency"应该如何翻译 -- "样本效率"还是"采样效率" 答案: 具体看上下文内容.如果是 ...

  4. Tensorflow1.14中placeholder.shape和tf.shape(placeholder)的区别

    最近在看TensorFlow的代码,还是1.14版本的TensorFlow的,代码难度确实比pytorch的难上不是多少倍,pytorch的代码看一遍基本能看懂个差不多,TensorFlow的代码看一 ...

  5. tensorflow1.x——如何在python多线程中调用同一个session会话

    如何在python多线程中调用同一个session会话? 这个问题源于我在看的一个强化学习代码: https://gitee.com/devilmaycry812839668/scalable_age ...

  6. java主线程等待多个子线程中任意一个有结果后,主线程继续执行

    1.背景 2.代码 package com.qianxingniwo.ls; import org.junit.Test; import java.util.concurrent.atomic.Ato ...

  7. 如何在 Recovery 中启用应用

    如果因为禁用了某个应用手机无法开机,那么你需要这个方法来救命 https://xdaforums.com/t/enable-or-disable-apps-directly-from-the-file ...

  8. QGroupBox自定义样式(仿DotNetBar)

    QSS如下: QGroupBox { border:1px solid gray; border-radius:5px; margin-top:3ex; font-size:10pt; color:# ...

  9. BST 二叉搜索树 BinarySearchTree C++实现(递归/非递归)

    目录 二叉搜索树 基本概念 常用结论 用途 二叉搜索树的性能分析 二叉搜索树的操作 查找 插入 删除 代码实现 BSTree.hpp test.cc 二叉搜索树 基本概念 二叉搜索树(BST,Bina ...

  10. C# Winform 使用 BarTender打印条码

    目录 - 1. 使用软件BarTender 设计打印模板 - 2. Winfrom集成打印 - 3.最终效果 - 1. 使用软件BarTender 设计打印模板 贴一个入门级使用教程:https:// ...