springboot使用memcache缓存
Memcached简介
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
Memcached 的守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。
存储方式
Memcached 安装
我是在windows下安装使用的。
32位请下载这里: 链接: https://pan.baidu.com/s/1qPxMDPEtsCFBWaG3bsVT6Q 密码: hrih
下载之后解压就行。
64位先下载32位,进行解压,接着下载这里:链接: https://pan.baidu.com/s/1X3MeLgB5QObksm35LKZ-eg 密码: xbn4
解压之后,把里面的三个文件复制到32位的里面,覆盖即可。
我解压之后放在E盘:
使用管理员权限运行以下命令
E:\memcache\memcached.exe -d install
启动关闭卸载memcache
启动: E:\memcache\memcached.exe -d start
关闭: E:\memcache\memcached.exe -d stop
卸载: E:\memcache\memcached.exe -d uninstall
在spring boot中使用memcache作为缓存
1.pom.xml依赖
<!--memcache-->
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>com.whalin</groupId>
<artifactId>Memcached-Java-Client</artifactId>
<version>3.0.2</version>
</dependency>
2.application.properties
memcache.servers=127.0.0.1:11211
memcache.failover=true
memcache.initConn=10
memcache.minConn=20
memcache.maxConn=1000
memcache.maintSleep=50
memcache.nagle=false
memcache.socketTO=3000
memcache.aliveCheck=true
3.MemcacheConfiguration
@Configuration
public class MemcacheConfiguration { @Value("${memcache.servers}")
private String[] servers;
@Value("${memcache.failover}")
private boolean failover;
@Value("${memcache.initConn}")
private int initConn;
@Value("${memcache.minConn}")
private int minConn;
@Value("${memcache.maxConn}")
private int maxConn;
@Value("${memcache.maintSleep}")
private int maintSleep;
@Value("${memcache.nagle}")
private boolean nagel;
@Value("${memcache.socketTO}")
private int socketTO;
@Value("${memcache.aliveCheck}")
private boolean aliveCheck; @Bean
public SockIOPool sockIOPool () {
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(servers);
pool.setFailover(failover);
pool.setInitConn(initConn);
pool.setMinConn(minConn);
pool.setMaxConn(maxConn);
pool.setMaintSleep(maintSleep);
pool.setNagle(nagel);
pool.setSocketTO(socketTO);
pool.setAliveCheck(aliveCheck);
pool.initialize();
return pool;
} @Bean
public MemCachedClient memCachedClient(){
return new MemCachedClient();
} }
4.MemcacheController
@Controller
public class MemcacheController { @Autowired
private MemCachedClient memCachedClient; /**
* memcache缓存
*/
@RequestMapping("/memcache")
@ResponseBody
public String memcache() throws InterruptedException{
// 放入缓存
boolean flag = memCachedClient.set("mem", "name");
// 取出缓存
Object value = memCachedClient.get("mem");
System.out.println(value);
// 3s后过期
memCachedClient.set("num", "666", new Date(3000));
/*memCachedClient.set("num", "666", new Date(System.currentTimeMillis()+3000));与上面的区别是当设置了这个时间点
之后,它会以服务端的时间为准,也就是说如果本地客户端的时间跟服务端的时间有差值,这个值就会出现问题。
例:如果本地时间是20:00:00,服务端时间为20:00:10,那么实际上会是40秒之后这个缓存key失效*/
Object key = memCachedClient.get("num");
System.out.println(key);
//多线程睡眠3s
Thread.sleep(3000);
key = memCachedClient.get("num");
System.out.println(value);
System.out.println(key );
return "success";
}
}
5.控制台输出:
name
666
name
null
总结:memcache通过set方法把值存入都memcache缓存中;通过get方法把值取出来;通过设置过期时间,使其失效。
* Memcache:不支持持久化、只支持key-value键值、多线程 、集群分布式
* Redis:支持持久化、丰富的数据类型、单线程 、集群分布式
* Ehcache:直接在jvm虚拟机中缓存,速度快,效率高,单个应用或者对缓存访问要求很高的应用,用ehcache。核心程序仅仅依赖slf4j。
springboot使用memcache缓存的更多相关文章
- 使用Memcache缓存mysql数据库操作的原理和缓存过程浅析
转载自脚本之家 http://www.jb51.net/article/51831.htm 作者:忙碌的松鼠 对于大型网站如facebook,ebay等网站,如果没有Memcache做为中间缓存层, ...
- memcached基于socket访问memcache缓存服务器
memcached基于socket访问memcache缓存服务器 操作memcache常用三种方法: .memcache基于php_memcache.dll扩展(php扩展) .memcached基于 ...
- phalcon: 缓存片段,文件缓存,memcache缓存
几种缓存,需要用到前端配置,加后端实例配合着用 片段缓存: public function indexAction() { //渲染页面 $this->view->setTemplateA ...
- 01-08-05【Nhibernate (版本3.3.1.4000) 出入江湖】NHibernate二级缓存:第三方MemCache缓存
一.准备工作 [1]根据操作系统(位数)选择下载相应版本的MemCache, MemCache的下载和安装,参看: http://www.cnblogs.com/easy5weikai/p/37606 ...
- 整理php操作memcache缓存为基础的方法
php操作memcache共享缓存方法 采用memcache的前提下,是需要在服务器端被配置memcahche环境! 证实memcahce经过正常的连接可以在程序中使用! <?php /** * ...
- memcache缓存安装配置
memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度.目前用memcache解决互联网上的大用户读取是非常流行的一种用法. 下载安装 前提要先安装libev ...
- DedeCMS V5.7开启memcache缓存的方法配置说明
一.安装Memcache服务:1.1.linux下的Memcache安装:-------------------------1. 下载 memcache的linux版本,注意 memcached 用 ...
- Windows服务器安装Memcache缓存服务及PHP扩展
一.Windows服务器安装Memcache缓存服务,需要下载windows稳定版Memcache程序memcached.zip,下载后解压到自定义服务目录,如D:\phpStudy\tools\me ...
- Memcache缓存
memcache 是服务器缓存系统,以键值对方式保存数据到内存中,把对象序列化后,理论上可支持所有的数据类型.使用情景:怎么用都可以,注意的是它只把数据保存到内存中,重启memcache 服务后丢失, ...
随机推荐
- Flink+Druid构建实时OLAP的探索
场景 k12在线教育公司的业务场景中,有一些业务场景需要实时统计和分析,如分析在线上课老师数量.学生数量,实时销售额,课堂崩溃率等,需要实时反应上课的质量问题,以便于对整个公司的业务情况有大致的了解. ...
- python小白手册之字符串的私有方法和公用方法
#字符串方法. name=input('1111') if name.isalnum(): print(是否由数字字母) isdigit isdecimal判断数字 strip去空格或者其他 name ...
- OSI七层网络模型与TCP/IP四层模型
1.OSI七层结构图: 2.TCP/IP四层结构图: 3.各层对应的协议 4.OSI七层和TCP/IP四层的区别 OSI网络模型和TCP/IP网络模型对应关系: 5.交换机工作在OSI的哪一层 如果有 ...
- Reactive 漫谈
目录 概念 面向流设计 异步化 响应式宣言 参考文档 概念 Reactive Programming(响应式编程)已经不是一个新东西了. 关于 Reactive 其实是一个泛化的概念,由于很抽象,一些 ...
- windows+appium自动化,Desired Capabilities参数填写,查看界面信息
前言: 安装JDK并配置环境变量. 安装sdk并配置对应环境变量. 安装appium客户端. 手机打开开发者模式,并启用调试模式. 1.打开Appium客户端,点击Start Server V1.9. ...
- Oracle面对“数据倾斜列使用绑定变量”场景的解决方案
1.背景知识介绍 2.构造测试用例 3.场景测试 4.总结 1.背景知识介绍 我们知道,Oracle在传统的OLTP(在线事务处理)类系统中,强烈推荐使用绑定变量,这样可以有效的减少硬解析从而 ...
- 玩转 SpringBoot 2 快速搭建 | IntellJ IDEA篇
IntellJ IDEA 介绍 IntelliJ IDEA 简称 IDEA,目前被认为是最好用的开发Java 语言开发工具之一.不过是收费的.和其同类型的工具有 Eclipse 和 MyEclip ...
- jvm系列(五):Java GC 分析
Java GC就是JVM记录仪,书画了JVM各个分区的表演. 什么是 Java GC Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之 ...
- jQuery事件以及动画
jQuery事件以及动画 一.jQuery事件 加载DOM 在页面加载完毕后, 浏览器会通过 JavaScript 为 DOM 元素添加事件. 在常规的 JavaScript 代码中, 通常使用 wi ...
- Python 基础 2-3 列表的反转与排序
引言 列表是按照特定格式排序而成的,有时候这种排序方式我们并不喜欢,我们希望它可以按照我们的方式来进行正序或者倒序排序,或其他的排序方式 反转与排序 比如说我这里有一组列表,里面存放的全部都是数值,但 ...