一、Memached介绍

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
  为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。

二、安装步骤

windows安装

参考教材https://www.runoob.com/memcached/window-install-memcached.html

linux(Ubuntu/Debian)安装

  1. 要先安装libevent库
    sudo apt-get install libevent ibevent-dev

  2. 自动安装
    sudo apt-get install memcached

  3. 或者源代码的方式安装

从其官方网站(http://memcached.org)下载memcached
解压源码 tar -zxvf memcached-1.x.x.tar.gz
进入目录
配置 ./configure --prefix=/path/to/memcached
编译 make && make test
安装 sudo make install

更多参考https://www.runoob.com/memcached/memcached-install.html

安装完成后memcached已经启动了,我们先杀掉进程然后按照自己的方式作为后台服务启动。
/usr/bin/memcached -p 11211 -m 64m -d -u root
最后打开cmd,输入 telnet ip 11211来连接memcached进行测试。
注意: 我的自动安装后是在/usr/bin目录,实际情况要根据进程信息显示的目录为准。

  1. set foo 0 0 3 

  2. bar 

  3. STORED 

  4. get foo 

  5. VALUE foo 0 3 

  6. bar 

  7. END 

  8. quit 

三、完成整合

  1. 创建springboot项目memcached-demo
  2. 在 pomx 包中添加 spymemcached 的引用,Spymemcached 是一个采用 Java 开发的异步、单线程的 Memcached 客户端, 使用 NIO 实现。
  1. <dependency> 

  2. <groupId>net.spy</groupId> 

  3. <artifactId>spymemcached</artifactId> 

  4. <version>2.12.2</version> 

  5. </dependency> 

  1. 在application.properties文件填写配置信息
    memcached.ip=XXX
    memcached.port=11211
  2. 对应的配置读取类MemcachedConfig
@Component
@ConfigurationProperties(prefix = "memcached")
public class MemcachedConfig { private String ip; private int port; public String getIp() {
return ip;
} public void setIp(String ip) {
this.ip = ip;
} public int getPort() {
return port;
} public void setPort(int port) {
this.port = port;
}
}
  1. 项目启动时创建MemcachedClient实例
@SpringBootApplication
public class MemcachedDemoApplication { public static void main(String[] args) {
SpringApplication.run(MemcachedDemoApplication.class, args);
} final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired
private MemcachedConfig memcachedConfig; @Bean(name = "memcachedClient")
public MemcachedClient getMemcachedClient(){
try {
MemcachedClient client = new MemcachedClient(new InetSocketAddress(memcachedConfig.getIp(), memcachedConfig.getPort()));
return client;
} catch (IOException e) {
logger.error("初始化MemcachedClient失败,{}",e.getMessage());
e.printStackTrace();
}
return null;
}
}
  1. 编写测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class MemcachedDemoApplicationTests { @Autowired
private MemcachedClient client; @Test
public void contextLoads() {
client.set("testKey",1000,"testValue");
System.out.println("============testKey的值为:"+client.get("testKey"));
} }

四、测试总结

运行测试类MemcachedDemoApplicationTests中的contextLoads方法,控制台输出如下:

2019-05-06 19:52:26.693 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/198.13.40.234:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2019-05-06 19:52:27.312 INFO 10348 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-05-06 19:52:27.668 INFO 10348 --- [ main] cn.sp.MemcachedDemoApplicationTests : Started MemcachedDemoApplicationTests in 2.966 seconds (JVM running for 4.14)
============testKey的值为:testValue
2019-05-06 19:52:28.052 INFO 10348 --- [ Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
2019-05-06 19:52:28.059 INFO net.spy.memcached.MemcachedConnection: Shut down memcached client

Memcached上手起来还是比较简单,但是还有些其他命令需要熟悉,以及多台Memcached 的使用问题。
代码地址,点击这里

SpringBoot整合Memached的更多相关文章

  1. spring-boot整合mybatis(1)

    sprig-boot是一个微服务架构,加快了spring工程快速开发,以及简便了配置.接下来开始spring-boot与mybatis的整合. 1.创建一个maven工程命名为spring-boot- ...

  2. SpringBoot整合Mybatis之项目结构、数据源

    已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...

  3. springboot整合mq接收消息队列

    继上篇springboot整合mq发送消息队列 本篇主要在上篇基础上进行activiemq消息队列的接收springboot整合mq发送消息队列 第一步:新建marven项目,配置pom文件 < ...

  4. springboot整合mybaits注解开发

    springboot整合mybaits注解开发时,返回json或者map对象时,如果一个字段的value为空,需要更改springboot的配置文件 mybatis: configuration: c ...

  5. SpringBoot整合Redis、ApachSolr和SpringSession

    SpringBoot整合Redis.ApachSolr和SpringSession 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多 ...

  6. SpringBoot整合ElasticSearch实现多版本的兼容

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...

  7. SpringBoot整合Kafka和Storm

    前言 本篇文章主要介绍的是SpringBoot整合kafka和storm以及在这过程遇到的一些问题和解决方案. kafka和storm的相关知识 如果你对kafka和storm熟悉的话,这一段可以直接 ...

  8. SpringBoot整合SpringCloud搭建分布式应用

    什么是SpringCloud? SpringCloud是一个分布式的整体解决方案.SpringCloud为开发者提供了在分布式系统中快速构建的工具,使用SpringCloud可以快速的启动服务或构建应 ...

  9. SpringBoot整合RabbitMQ-整合演示

    本系列是学习SpringBoot整合RabbitMQ的练手,包含服务安装,RabbitMQ整合SpringBoot2.x,消息可靠性投递实现等三篇博客. 学习路径:https://www.imooc. ...

随机推荐

  1. WF中的Bookmark

    最近在学习WF, 把自己的一些学习心得放上来 Bookmark允许你以事件驱动的方式与一个Workflow内的Activity进行交互. 如果把启动一个workflow比做开始读一本书, 在Workf ...

  2. mysql分页查询-limit

    分页查询的sql: select * from table limit 4,10; 4表示查询的索引,索引是从0开始,4表示从第五条数据开始查询,10表示要查询多少条数据,10表示查询十条数据 如果从 ...

  3. 怎样解决 no jzmq in java.library.path

    1. 确保zmq的各种library有安装正确.检查方法:查看/usr/local/lib, 看里面有没有libjzmq.a, libjzmq.dylib, libzmq.a, libjzmq.dyl ...

  4. Fastjson 简介

    Fastjson is a Java library that can be used to convert Java Objects into their JSON representation. ...

  5. android DHCP流程【转】

    本文转载自:http://blog.csdn.net/myvest/article/details/51483647 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   1 ...

  6. Program received signal SIGSEGV, Segmentation fault.

    GDB调试的时候出现了: Program received signal SIGSEGV, Segmentation fault.(程序收到信号SIGSEGV,分段故障) SIGSEGV:在POSIX ...

  7. 【Redis笔记(四)】 Redis数据结构 - list链表

    原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/50573605 经过前面的介绍,我们学习了Redis中string字符串.hash ...

  8. Css的使用细谈

    Css的使用细谈 Css可以通过简单的更改CSS文件,改变网页的整体表现形式,可以减少我们的工作量,所以她是每一个网页设计人员的必修课. Css简介              (1) CSS是用于布局 ...

  9. H3C-路由器密码恢复

    路由器密码恢复: 1.先关闭电源,重新启动路由器,注意终端上显示 press CTRL+B to enter extended boot menu 的时候,我们迅速按下ctrl+B,这样将进入扩展启动 ...

  10. 「网络流24题」「LuoguP3358」 最长k可重区间集问题(费用流

    题目描述 对于给定的开区间集合 I 和正整数 k,计算开区间集合 I 的最长 k可重区间集的长度. 输入输出格式 输入格式: 的第 1 行有 2 个正整数 n和 k,分别表示开区间的个数和开区间的可重 ...