研究一下国内比较流行的一款缓存memcached
windows版安装包下载地址:https://www.runoob.com/memcached/window-install-memcached.html
下载的安装包是解压缩就能使用的zip文件,解压缩完毕后会得到如下文件

可执行文件只有一个memcached.exe,使用该文件可以将memcached作为系统服务启动,执行此文件时会出现报错信息,如下:

此处出现问题的原因是注册系统服务时需要使用管理员权限,当前账号权限不足导致安装服务失败,切换管理员账号权限启动命令行
然后再次执行安装服务的命令即可,如下:

memcached.exe -d install

服务安装完毕后可以使用命令启动和停止服务,如下:

    memcached.exe -d start       # 启动服务memcached.exe -d stop     # 停止服务

也可以在任务管理器中进行服务状态的切换,变更缓存为Memcached

由于memcached未被springboot收录为缓存解决方案,因此使用memcached需要通过手工硬编码的方式来使用,于是前面的套路都不适用了,需要自己写了。

memcached目前提供有三种客户端技术,分别是Memcached Client for Java、SpyMemcached和Xmemcached,其中性能指标各方面最好的客户端是Xmemcached,本次整合就使用这个作为客户端实现技术了。下面开始使用Xmemcached

步骤①:导入xmemcached的坐标

 <dependency><groupId>com.googlecode.xmemcached</groupId><artifactId>xmemcached</artifactId><version>2.4.7</version></dependency>

步骤②:配置memcached,制作memcached的配置类

 @Configurationpublic class XMemcachedConfig {@Beanpublic MemcachedClient getMemcachedClient() throws IOException {MemcachedClientBuilder memcachedClientBuilder = new XMemcachedClientBuilder("localhost:11211");MemcachedClient memcachedClient = memcachedClientBuilder.build();return memcachedClient;}

memcached默认对外服务端口11211。

步骤③:使用xmemcached客户端操作缓存,注入MemcachedClient对象

  @Servicepublic class SMSCodeServiceImpl implements SMSCodeService {@Autowiredprivate CodeUtils codeUtils;@Autowiredprivate MemcachedClient memcachedClient;public String sendCodeToSMS(String tele) {String code = codeUtils.generator(tele);try {//数据放入缓存中memcachedClient.set(tele,10,code);} catch (Exception e) {e.printStackTrace();}return code;}public boolean checkCode(SMSCode smsCode) {String code = null;try {code = memcachedClient.get(smsCode.getTele()).toString();} catch (Exception e) {e.printStackTrace();}return smsCode.getCode().equals(code);}}

设置值到缓存中使用set操作,取值使用get操作,其实更符合我们开发者的习惯。

上述代码中对于服务器的配置使用硬编码写死到了代码中,将此数据提取出来,做成独立的配置属性。

定义配置属性
以下过程采用前期学习的属性配置方式进行,当前操作有助于理解原理篇中的很多知识。

定义配置类,加载必要的配置属性,读取配置文件中memcached节点信息

      @Component@ConfigurationProperties(prefix = "memcached")@Datapublic class XMemcachedProperties {private String servers;private int poolSize;private long opTimeout;}

定义memcached节点信息

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

在memcached配置类中加载信息

    @Configurationpublic class XMemcachedConfig {@Autowiredprivate XMemcachedProperties props;@Beanpublic MemcachedClient getMemcachedClient() throws IOException {MemcachedClientBuilder memcachedClientBuilder = new XMemcachedClientBuilder(props.getServers());memcachedClientBuilder.setConnectionPoolSize(props.getPoolSize());memcachedClientBuilder.setOpTimeout(props.getOpTimeout());MemcachedClient memcachedClient = memcachedClientBuilder.build();return memcachedClient;}}

总结

  1. memcached安装后需要启动对应服务才可以对外提供缓存功能,安装memcached服务需要基于windows系统管理员权限
  2. 由于springboot没有提供对memcached的缓存整合方案,需要采用手工编码的形式创建xmemcached客户端操作缓存
  3. 导入xmemcached坐标后,创建memcached配置类,注册MemcachedClient对应的bean,用于操作缓存
  4. 初始化MemcachedClient对象所需要使用的属性可以通过自定义配置属性类的形式加载

SpringBoot整合Memcached缓存相关推荐

  1. SpringBoot整合Redis缓存

    SpringBoot整合Redis缓存 一.缓存概念知识 1.是什么缓存 2.缓存的优缺点 3.为什么使用缓存 二.Redis概念知识 1.Redis简介 2.为什么用Redis作为缓存 3.Redi ...

  2. SpringBoot整合j2cache缓存

    jetcache可以在限定范围内构建多级缓存,但是灵活性不足,不能随意搭配缓存,本节介绍一种可以随意搭配缓存解决方案的缓存整合框架,j2cache.下面就来讲解如何使用这种缓存框架,以Ehcache与 ...

  3. SpringBoot整合redis缓存(一)

    一. 准备工作 1.Linux系统 2.安装redis(也可以安装docker,然后再docker中装redis,本文章就直接用Linux安装redis做演示)redis下载地址:http://dow ...

  4. SpringBoot整合Redis缓存中间件

    首先在pom.xml中引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifac ...

  5. springboot整合redis缓存报错

    一.问题现象 二.解决办法

  6. SpringBoot整合(四)整合Ehcache、Redis、Memcached、jetcache、j2cache缓存

    ​ 企业级应用主要作用是信息处理,当需要读取数据时,由于受限于数据库的访问效率,导致整体系统性能偏低. ​ 为了改善上述现象,开发者通常会在应用程序与数据库之间建立一种临时的数据存储机制,该区域中的数 ...

  7. 【Java笔记+踩坑】SpringBoot基础3——开发。热部署+配置高级+整合NoSQL/缓存/任务/邮件/监控

      导航: [黑马Java笔记+踩坑汇总]JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud/SpringCloudAlibaba+黑马旅游+谷粒商城 目录 ...

  8. SpringBoot整合第三方技术学习笔记(自用)

    SpringBoot整合第三方技术学习笔记 搬运黑马视频配套笔记 KF-4.数据层解决方案 KF-4-1.SQL 回忆一下之前做SSMP整合的时候数据层解决方案涉及到了哪些技术?MySQL数据库与My ...

  9. springboot整合shiro-关于登出时,redis中缓存没有清理干净的问题

    原文地址,转载请注明出处: https://blog.csdn.net/qq_34021712/article/details/84722724 ©王赛超 如果是跟着我的shiro系列博客敲下来的,其 ...

  10. 【SpringBoot整合缓存】-----Redis缓存篇

    本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringBoot相关知识相关知识,打造完整的SpringBoot学习步骤,提升工程化编码能力和思维能力,写出高质量代码.希望大家都能够从中有所收 ...

最新文章

  1. Java BufferImage图片处理(获取宽高、图片截取、转换灰度图)
  2. Check for Palindromes(算法)
  3. Go语言在扫码支付系统中的成功实践
  4. maven 打包部署时访问远程仓库中没有的jar
  5. C#反编译工具Reflector.exe教程
  6. 淘宝抢券python代码,能够对实时抢券和清空购物车。
  7. 实习总结与收获(2021.6.7-2021.8.27)
  8. NLP学习实践天池新人赛打卡第一天
  9. 鼠标移动效果html5,js实现鼠标左右移动,图片也跟着移动效果
  10. 【马司机带带我】君子日三省吾身
  11. 正则表达式(Regular Expression)——入门笔记(常用正则表达式符号、正则表达式在线调试工具)
  12. 第九章 更自由,更开放,大数据的机遇和挑战
  13. 金蝶物料辅助属性改造
  14. 视觉和imu(惯性传感器)( 一)
  15. 解决Macbook在win7系统下不能识别USB设备,完全没反应
  16. 【源码篇】聊聊源码mybatis(更新分析)
  17. AJAX之四 Ajax控件工具集
  18. hyperloglog计算uv原理
  19. AccessibilityService-微信自动抢红包
  20. qq打开网页时提示用浏览器打开html,微信QQ打开网页时提示用浏览器打开

热门文章

  1. Eclipse官方下载步骤
  2. Java流程控制语句-顺序结构
  3. 今晚7:30 | 推荐系统中的异构关系学习——香港大学计算机学院助理教授黄超
  4. cas27647-84-3四羧基苯基卟啉锌;四羧基苯基锌卟啉TCPP-Zn(2+)/分子量:850.116160000001
  5. 一级建造师-通信-五种施工顺序-口诀
  6. 一个英文字母,一个中文各占多少字节
  7. python文件或目录损坏且无法读取,data\sogoupy\verify.ini已损坏且无法读取,啥意思?谢谢?...
  8. hihoCoder 1096 Divided Product 微软苏州校招笔试 12月27日
  9. flink-HA集群搭建和问题记录
  10. Java实现 LeetCode 313 超级丑数