Java连接Memcached进行CRUD
参考这篇博文在本机安装了Memcached
在 Java 中常用的memcached有三个:
- Memcached Client for Java
- SpyMemcached
- XMemcached
这里使用的是xmemcached
1.添加memcached依赖
<!-- https://mvnrepository.com/artifact/com.googlecode.xmemcached/xmemcached -->
<dependency>
<groupId>com.googlecode.xmemcached</groupId>
<artifactId>xmemcached</artifactId>
<version>2.4.6</version>
</dependency>
2.Memcached增删查方法封装编写
package com.example.memcached.service; import com.example.memcached.entity.Passenger;
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClient;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;
import net.rubyeye.xmemcached.utils.InetSocketAddressWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.concurrent.TimeoutException; public class Memcached { protected static String ip = "localhost";
protected static String port = "11211";
/**失效时间(秒)3600*24 一天*/
protected int exptime = 3600 * 24; protected static MemcachedClient memcachedClient; public static MemcachedClient getMemcachedClient() throws IOException {
if (memcachedClient == null) {
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(ip + ":" + port));
memcachedClient = builder.build();
}
return memcachedClient;
} /**
* 设置缓存
* @return
*/
public boolean set(Passenger passenger) {
boolean result = false;
try {
result = getMemcachedClient().set(passenger.getName(), exptime, passenger);
} catch (TimeoutException | InterruptedException | MemcachedException | IOException e) {
//ignore
}
return result;
} /**
* 获取缓存
* @return
*/
public Passenger get(String key){
Passenger passenger = new Passenger();
try {
passenger = getMemcachedClient().get(key);
if (passenger == null) {
passenger = new Passenger();
passenger.setName(key);
passenger.setPassword("无值");
this.set(passenger);
}
} catch (TimeoutException | InterruptedException | MemcachedException | IOException e) {
passenger.setPassword("出错了");
}
return passenger;
} /**
* 删除缓存
* @param key
* @return
*/
public Boolean delete(String key) {
boolean result = false;
try {
result = getMemcachedClient().delete(key);
} catch (TimeoutException | InterruptedException | MemcachedException | IOException e) {
//ignore
}
return result;
}
}
3.示例对象类
import org.springframework.data.mongodb.core.mapping.Document; import java.io.Serializable; //必须实现Serializable接口,否则会报Non-serializable object的错
public class Passenger implements Serializable { private String name;
private String password; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}
4.简单测试controller
import com.example.memcached.service.Memcached;
import com.example.memcached.entity.Passenger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("/mem")
public class MemcachedController {
//请求头图方便就这样了
@RequestMapping("/insert/{name}/{password}")
public String insert(@PathVariable String name,@PathVariable String password) throws Exception {
Memcached memcached = new Memcached();
Passenger passenger = new Passenger();
passenger.setName(name);
passenger.setPassword(password);
Boolean set = memcached.set(passenger);
return set.toString();
} @RequestMapping("/query/{key}")
public String query(@PathVariable String key){
Memcached memcached = new Memcached();
Passenger passenger = memcached.get(key);
return passenger.getPassword();
}
}
结果:
1 添加键值,返回添加结果true
2 查询刚插入的键值的值成功,返回helloworld
Java连接Memcached进行CRUD的更多相关文章
- Java 连接 Memcached 服务
原文:http://www.runoob.com/memcached/java-memcached.html mac下安装和配置Memcached:http://www.pchou.info/open ...
- Memcached常用语法与java连接服务
memcached常用语法及java使用方式 Author:SimpleWu Memcached 存储命令 Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- Java操作Memcached
本文复制其他播客,有好的技术文章希望各位大神能告知... 谢谢. 如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; import j ...
- memcached—Java操作Memcached实例
前面博客介绍了如何在Windows操作系统中安装Memcached,总结一下如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; imp ...
- Mongodb系列- java客户端简单使用(CRUD)
Mongodb提供了很多的客户端: shell,python, java, node.js...等等. 以 java 为例实现简单的增删改查 pom文件: <dependencies> & ...
- springboot连接mongodb进行CRUD
springboot连接mongodb进行CRUD的过程: 在执行以下操作前已安装了mongodb并创建了用户和数据库,使用Robo 3T可成功连接. 1.创建springboot项目,加入以下mav ...
- Java连接远程Redis
redis-server & //后台启动redis redis-cli //使用redis 打开redis.conf文件在NETWORK部分有说明 /usr/local/src ...
- Java连接SQLServer2008终极解决办法(亲身上机演练版)
今天我一学妹问我,Java连接SQLServer2008数据库的问题,一直无法连接成功.想起自己刚开始学习的时候,在网上找各种文章,然后实际上机验证操作,花了一两天时间才搞定,一把辛酸泪呀!记得当时是 ...
随机推荐
- Unable to resolve service for type 'Microsoft.AspNetCore.Http.IHttpContextAccessor'
An unhandled exception occurred while processing the request. InvalidOperationException: Unable to r ...
- 【Transact-SQL】统计某字段中的值第一次出现后的2小时内出现的次数
原文:[Transact-SQL]统计某字段中的值第一次出现后的2小时内出现的次数 table1 name createdate a 2011-03-01 10:00:00 a 2011-03-01 ...
- static的用法详解
一.静态类 [1] 仅包含静态成员. [2] 静态类的本质,是一个抽象的密封类,所以不能被继承,也不能被实例化.也就是说,不能使用 new 关键字创建静态类类型的变量. [4] 不能包含实例构造函数. ...
- ThinkPad T420i 上 Ubuntu 12.04 实现指纹识别登录
ThinkPad T420i 上 Ubuntu 12.04 实现指纹识别登录 # add ppa add-apt-repository ppa:fingerprint/fprint # update ...
- opencv-01--图像的遍历
遍历图像的4种方式 一.at<typename>(i,j) Mat类提供了一个at的方法用于取得图像上的点,它是一个模板函数,可以取到任何类型的图像上的点.下面我们通过一个图像处理中的实际 ...
- Java基础加强-反射机制
反射的基石 -> Class 类(字节码)/*只要是在源程序中出现的类型,都要各自的Class实例对象,例如:int,int[],void*/如何得到各个字节码对应的实例对象(Class类型) ...
- 清除keil编译中间文件的脚本
清除keil编译生成的中间文件,减小项目体积. keykill.bat del *.bak /s del *.ddk /s del *.edk /s del *.lst /s del *.lnp /s ...
- NORDIC 关闭浮点运算FPU
1.打开FPU中断 NVIC_SetPriority(FPU_IRQn, APP_IRQ_PRIORITY_LOW);NVIC_EnableIRQ(FPU_IRQn); 2.中断中关闭FPU void ...
- less注释
less中的注释 1.可以使用css中的注释(/***/) 2.也可以用//注释 //编译时会自动过滤掉 /**我是会被编译的*/ ul{ // padding: 0px; // height: ...
- Why do we name variables in Tensorflow?
Reference:Stack Overflow. The name parameter is optional (you can create variables and constants wit ...