SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解

Memcached下载和安装

是一个国内使用量还是比较大的技术

打开文件夹

我们需要在命令行窗口启动

注意要以管理员方式运行

先尝试进入指定文件

然后又再次运行

下载

memcached.exe -d install

启动

memcached.exe -d start

停止

memcached.exe -d stop

memcached.exe -d install
memcached.exe -d start
memcached.exe -d stop

我们打开任务管理器 发现成功运行

Memcached缓存技术

问题是springboot提供整合技术

还没有纳入到整合中

需要使用硬编码的方式实现给客户端初始化管理

我们打开idea

首先得导入坐标

<!--        memcached的依赖--><dependency><groupId>com.google.code.maven-play-plugin.spy</groupId><artifactId>memcached</artifactId><version>2.4.2</version></dependency>

因为springboot没有整合

根本没有配置

所以我们直接采取硬编码的形式

找到业务层的实现类

准备书写代码

我们做一个配置类

目的是为了让Mencached被spring容器加载

配置一个客户端对象

然后加载为spring容器的bean

package com.example.demo.config;import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.spy.memcached.MemcachedClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.io.IOException;@Configuration
public class XMemcachedConfig {@Beanpublic MemcachedClient getmemcachedClient() throws IOException {//配置服务器端口MemcachedClientBuilder memcachedClientBuilder = new XMemcachedClientBuilder("localhost:11211");//构建启动MemcachedClient memcachedClient=memcachedClientBuilder.build();return memcachedClient;}}

我们直接进行依赖注入

我们接下来补全业务层的代码

书写完毕

package com.example.demo.service.impl;import com.example.demo.domain.SMSCode;
import com.example.demo.service.SMSCodeService;
import com.example.demo.utils.CodeUtils;
import net.rubyeye.xmemcached.MemcachedClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;@Service
public class SMSCodeServiceImpl implements SMSCodeService {@Autowiredprivate CodeUtils codeUtils;@Autowiredprivate MemcachedClient memcachedClient;//以下是Springboot中使用xmemcached@Overridepublic String sendCodeToSMS(String tele) {String code=codeUtils.generator(tele);try{memcachedClient.set(tele,0,code);}catch (Exception e){e.printStackTrace();}return code;}@Overridepublic boolean checkCode(SMSCode smsCode) {String code=null;try{code=memcachedClient.get(smsCode.getTele().toString());}catch (Exception e){e.printStackTrace();}return smsCode.getCode().equals(code);}
}

我们要去改一下缓存的注释

我们把之前采用的缓存方案全部注释掉

# 专门用来配置的对象datasource
spring:datasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTCusername: rootpassword: 123456devtools:restart:# 设置不参与热部署的文件或文件夹exclude: static/**,public/**,config/application.yml

启动成功

去postman发起请求测试

我们通过修改客户端的数值

能改变一些设置

如设置缓存失效时间

硬编码

就是手搓客户端对象

然后交给spring容器管理后

在业务层的实现类注入

使用缓存的时候使用set

获取缓存数据的时候使用get

但是我们这边还有个问题

就是在书写客户端的时候

这个数据应该从配置文件里去处理

先写一个类

这个类有成员属性 代表的是各种配置信息

我们需要做的是自定义配置

memcached:servers: localhost:11211poolSize: 10opTimeout: 3000

然后在类里面去读取

package com.example.demo.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "memcached")
@Data
public class XMemcachedProperties {private String servers;private int poolSize;private long opTimeout;
}

这样我们的类就能成功加载

@Component注解又能让这个类被spring容器管理

我们在这边直接注入就行

只不过是数值换了一个地方加载

package com.example.demo.config;import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.io.IOException;@Configuration
public class    XMemcachedConfig {@Autowiredprivate XMemcachedProperties memcachedProperties;@Beanpublic MemcachedClient getmemcachedClient() throws IOException {//配置服务器端口MemcachedClientBuilder memcachedClientBuilder = new XMemcachedClientBuilder(memcachedProperties.getServers());//配置数据库连接池最大连接量memcachedClientBuilder.setConnectionPoolSize(memcachedProperties.getPoolSize());//配置缓存时间memcachedClientBuilder.setConnectTimeout(memcachedProperties.getOpTimeout());//构建启动MemcachedClient memcachedClient=memcachedClientBuilder.build();return memcachedClient;}}

发起请求

成功

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot原理篇-bean管理

springboot原理篇-bean管理&#xff08;二&#xff09; 我们今天主要学习IOC容器中Bean的其他使用细节&#xff0c;主要学习以下三方面&#xff1a; 如何从IOC容器中手动的获取到bean对象bean的作用域配置管理第三方的bean对象 一、获取Bean 了解即可&#xff0c;默认情况下…

管理员如何踢掉登录用户?

这是 Spring Security 学习小组有小伙伴提的一个问题&#xff1a; 感觉这个问题还有点意思&#xff0c;拿出来和各位小伙伴一起分享下。 一 问题分析 首先大家注意限制条件&#xff1a;常规 Session 方案。 如果不是这几个字&#xff0c;这个问题根本就不是问题&#xff0c;…

确定线性稳压器的包装限制范围

工程师喜欢低压差 (LDO) 线性稳压器&#xff0c;因为它们简单、易于使用、价格低廉和低噪声。典型的线性稳压器仅需要几个外部电容器和电阻器即可完全实现 DC/DC 转换器。 通常&#xff0c;工程师根据数据表前面列出的一些规格来选择线性稳压器&#xff0c;这些规格概述了稳压…

vim 的 map+noremap

经常在 vim 的配置文件中&#xff0c;看到对于改键的设置。 他们的区别主要有两种 1 用于哪种模式。 2 是否用于递归。

基于Python的花卉识别分类系统【W9】

简介&#xff1a; 基于Python的花卉识别分类系统利用深度学习和计算机视觉技术&#xff0c;能够准确识别和分类各种花卉&#xff0c;如玫瑰、郁金香和向日葵等。这种系统不仅有助于植物学研究和园艺管理&#xff0c;还在生态保护、智能农业和市场销售等领域展现广泛应用前景。随…

【学习笔记】MySQL(Ⅱ)

MySQL(Ⅱ) 7、 进阶篇 —— 存储引擎 7.1、MySQL 体系结构 7.2、存储引擎 7.2.1 InnoDB 7.2.2 MyISAM 7.2.3 Memory 7.2.4 InnoDB、MyISAM、Memory 的比较8、 拓展篇 —— 在 Linux 上安装数据库9、进阶篇 —— 索引 …

开源项目大合集(热门)

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

java基础知识总结【markdown】

java基础知识总结【markdown】 开发工具Java数据类型浮点数使用陷阱: 2.7 和 8.1 / 3 比较 常用字符编码基本数据类型转换关键字&#xff0c;保留字**原码、反码、补码** 开发工具 editplus、notepad、Sublime Text、IDEA、Eclipse Java数据类型 浮点数使用陷阱: 2.7 和 8.1 …

小熊家政帮day22-day23 订单系统优化(订单状态机、练习分库分表、索引、订单缓存)

目录 1 状态机1.1 状态机介绍1.1.1 当前存在的问题1.1.2 使用状态机解决问题 1.2 实现订单状态机1.2.1 编写订单状态机1.2.1.1 依赖引入1.2.1.2 订单状态枚举类1.2.1.3 状态变更事件枚举类1.2.1.4 定义订单快照类1.2.1.5 定义事件变更动作类1.2.1.5 定义订单状态机类1.2.1.6 状…

【linux网络(四)】传输层协议详解(上)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux网络 1. 前言2. UDP协议…

【ARM】MDK出现报错error: A\L3903U的解决方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决MDK出现报错error: A\L3903U这样类型的报错 2、 问题场景 电脑或者软件因为意外情况导致崩溃&#xff0c;无法正常关闭&#xff0c;强制电脑重启之后&#xff0c;打开工程去编译出现下面的报错信息&#xff08;…

WPF 深入理解二、布局

布局与控件 常用得布局属性 HorizontalAlignment:用于设置元素的水平位置VerticalAlignment: 用于设置元素的垂直位置Margin: 指定元素与容器的边距Height: 指定元素的高度Width: 指定元素的宽度WinHeight/winWidth:指定元素的最小高度和宽度MaxHeight/MaxWidth: 指定元素的最…

压缩映射定理证明

收缩映射定理&#xff08;又称Banach不动点定理&#xff09;是一个重要的结果&#xff0c;特别是在分析和应用数学中。 定理&#xff08;收缩映射定理&#xff09;&#xff1a;假设是一个从度量空间 (X,d) 到自身的函数&#xff0c;如果 是一个收缩映射&#xff0c;即存在常数 …

华为---VLAN-配置Eth-Trunk链路聚合(三)

6.3 配置Eth-Trunk链路聚合 6.3.1 原理概述 在没有使用Eth-Trunk前&#xff0c;百兆以太网的双绞线在两个互连的网络设备间的带宽仅为100Mbit/s。若想达到更高的数据传输速率&#xff0c;则需要更换传输媒介&#xff0c;使用千兆光纤或升级成为千兆以太网。这样的解决方案成本…

GenICam标准(五)

系列文章目录 GenICam标准&#xff08;一&#xff09; GenICam标准&#xff08;二&#xff09; GenICam标准&#xff08;三&#xff09; GenICam标准&#xff08;四&#xff09; GenICam标准&#xff08;五&#xff09; GenICam标准&#xff08;六&#xff09; 文章目录 系列文…

【Stable Diffusion教程】AI绘画工具SD如何安装使用?三种方法带你轻松上手!(附安装包和云端部署教程)

大家好&#xff0c;我是向阳 AI绘画专业工具Stable Diffusion在哪里用怎么安装&#xff1f;这一期给大家介绍三种使用SD的方法&#xff0c;无论你有没有专业显卡都能轻松上手SD哦&#xff5e; 一、SD本地部署秋葉安装包安装方法 如果你有进一步的需求&#xff0c;想要学习SD…

丘钛微注册陷入“停滞”IPO中止:营收净利润连年下滑,毛利率骤降

《港湾商业观察》施子夫 王璐 从2021年6月末算起&#xff0c;在冲刺创业板这条道路上&#xff0c;昆山丘钛微电子科技股份有限公司&#xff08;以下简称&#xff0c;丘钛微&#xff09;已经耗时了三年。 实际上在三年中&#xff0c;丘钛微早在2022年8月17日就首发过会&#…

52.Python-web框架-Django - 多语言编译-fuzzy错误

目录 1.起因 2.原因 3.解决方法 3.1手动移除fuzzy标记 3.2重新生成po文件&#xff0c;并检查是否还存在fuzzy标记 3.3重新编译生成mo文件 1.起因 在Django的国际化和本地化过程中&#xff0c;当你发现某些字段仅显示msgid&#xff0c;而不显示msgstr时&#xff0c;可能是…

燃气守护神:燃气管网安全运行监测解决方案

在这个智能科技日新月异的时代&#xff0c;燃气安全却时有发生&#xff0c;严重危害人们的生命财产安全&#xff0c;因此旭华智能根据相关政策要求并结合自身优势&#xff0c;打造了一套燃气管网安全运行监测解决方案&#xff0c;他犹如一位“燃气守护神”&#xff0c;悄然守护…

计算机组成原理之存储器

文章目录 存储器概述存储器的分类情况按照存储器在系统中的作用分类按存储介质分类按存取方式分类 主存储器的技术指标 存储器概述 程序的局部性原理&#xff08;构成多级存储系统的依据&#xff09;&#xff1a;在某一个时间段你频繁访问某一局部的存储器地址空间&#xff0c;…