分布式缓存 - 缓存服务器 - redis
如果一般的缓存可以解决问题,就不必使用分布式缓存 ;
一般使用分布式缓存 都是使用 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的更多相关文章
- 【原创】分布式之缓存击穿 【原创】自己动手实现静态资源服务器 【原创】自己动手实现JDK动态代理
[原创]分布式之缓存击穿 什么是缓存击穿 在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示 因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查 ...
- 如何用分布式缓存服务实现Redis内存优化
Redis是一种支持Key-Value等多种数据结构的存储系统,其数据特性是“ALL IN MEMORY”,因此优化内存十分重要.在对Redis进行内存优化时,先要掌握Redis内存存储的特性比如字符 ...
- Memcached-高性能的分布式内存缓存服务器
Memcached是高性能的分布式内存缓存服务器,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等, 由国外社区网站 LiveJou ...
- 分布式二级缓存组件实战(Redis+Caffeine实现)
前言 在生产中已有实践,本组件仅做个人学习交流分享使用.github:https://github.com/axinSoochow/redis-caffeine-cache-starter 个人水平有 ...
- Lind.DDD.Caching分布式数据集缓存介绍
回到目录 戏说当年 大叔原创的分布式数据集缓存在之前的企业级框架里介绍过,大家可以关注<我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器>,而今天主要对Lind.DDD.Cachin ...
- CYQ.Data V5 分布式自动化缓存设计介绍(二)
前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但 ...
- 缓存与ABP Redis Cache
缓存与ABP Redis Cache 为什么要用缓存 为什么要用缓存呢,说缓存之前先说使用缓存的优点. 减少寄宿服务器的往返调用(round-trips). 如果缓存在客户端或是代理,将减少对服务器的 ...
- 如何提高缓存命中率(Redis)
缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据. 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作.原因可能是由于缓存中根本不存在,或者缓存已经过期. 通常来讲 ...
- 网站缓存技术(Redis、Memcached、Ehcache)
Redis 是什么? 通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等等. 分类的标准也不一,Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点 ...
- Mybatis的二级缓存、使用Redis做二级缓存
目录 什么是二级缓存? 1. 开启二级缓存 如何使用二级缓存: userCache和flushCache 2. 使用Redis实现二级缓存 如何使用 3. Redis二级缓存源码分析 什么是二级缓存? ...
随机推荐
- 【Java】Main方法的命令行参数
可以使用命令行注入参数执行
- 【JDBC】自定义事务注解实现
参考自: https://blog.csdn.net/qq_28986619/article/details/94451889 数据源选型,我采用的是C3P0,下面是需要的依赖: <?xml v ...
- 【H5】16 表单 其五 表单验证
在将数据提交到服务器之前,重要的是确保以正确的格式填写所有必需的表单控件.这称为客户端表单验证,可帮助确保所提交的数据符合各种表单控件中规定的要求.本文将引导您通过基本概念和客户端表单验证示例. 先决 ...
- 【SpringMVC】11 拦截器
拦截器是AOP具体的应用 只能使用SpringMVC自己的组件有效 之拦截访问控制器方法的请求, 如果访问的是jsp.html.css.img.js这一类的静态资源,则不会拦截 演示: 编写一个拦截器 ...
- MyBatis-Plus文件上传方法
网站的文件上传方法 本地存储上传 // 本地存储方式 MultipartFile接受文件 @PostMapping("/save") public Result save(Stri ...
- 【转载】英特尔CEO:如果美出口管制太严,中国就必须生产自己的芯片
原文地址: https://mbd.baidu.com/newspage/data/landingsuper?context={"nid"%3A"news_9816136 ...
- 字符串系列目录&&说明
字符串准备写成一个系列. 目录 \(\text{KMP笔记}\) \(\text{Manacher笔记}\) [] [] [] 格式与说明 下面的说明和格式将被应用于整个系列. 说明 所有字符串的下标 ...
- java关于二维数组的操作
代码: ''' package tests; public class Yanghui { public static void main(String[] args) { //声明二维数组的三种方式 ...
- RabbitMQ普通集群同一宿主机docker搭建
1.准备3个节点安装rabbitmq,搭建集群(注意:每个节点启动间隔15~20s,如果启动失败,需删除宿主机文件重新启动) 2.宿主机文件目录手动创建,并设置可操作权限 准备宿主机文件目录 cd / ...
- Spring Security入门教程 通俗易懂 超详细 【内含案例】
Spring Security的简单使用 推荐 Java 常见面试题 简介 SSM 整合 Security 是比较麻烦的,虽然Security的功能比 Shiro 强大,相反却没有Shiro的使用量多 ...