参考这篇博文在本机安装了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的更多相关文章

  1. Java 连接 Memcached 服务

    原文:http://www.runoob.com/memcached/java-memcached.html mac下安装和配置Memcached:http://www.pchou.info/open ...

  2. Memcached常用语法与java连接服务

    memcached常用语法及java使用方式 Author:SimpleWu Memcached 存储命令 Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中 ...

  3. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  4. Java操作Memcached

    本文复制其他播客,有好的技术文章希望各位大神能告知... 谢谢. 如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; import j ...

  5. memcached—Java操作Memcached实例

    前面博客介绍了如何在Windows操作系统中安装Memcached,总结一下如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; imp ...

  6. Mongodb系列- java客户端简单使用(CRUD)

    Mongodb提供了很多的客户端: shell,python, java, node.js...等等. 以 java 为例实现简单的增删改查 pom文件: <dependencies> & ...

  7. springboot连接mongodb进行CRUD

    springboot连接mongodb进行CRUD的过程: 在执行以下操作前已安装了mongodb并创建了用户和数据库,使用Robo 3T可成功连接. 1.创建springboot项目,加入以下mav ...

  8. Java连接远程Redis

    redis-server &  //后台启动redis redis-cli //使用redis   打开redis.conf文件在NETWORK部分有说明   /usr/local/src   ...

  9. Java连接SQLServer2008终极解决办法(亲身上机演练版)

    今天我一学妹问我,Java连接SQLServer2008数据库的问题,一直无法连接成功.想起自己刚开始学习的时候,在网上找各种文章,然后实际上机验证操作,花了一两天时间才搞定,一把辛酸泪呀!记得当时是 ...

随机推荐

  1. Android 把枪/PDA 扫描头自回车没用 处理方法

    XML 控件加上属性 android:imeOptions="actionNone"

  2. Go Select使用

    原文:https://golangbot.com/pointers/ 作者:Nick Coghlan 译者:Noluye 什么是 select? select 语句用于在多个发送/接收信道操作中进行选 ...

  3. Linux命令——diff、patch

    简介 diff以行为单位比较不同ASCII文件差异,可以输出一组指令,用于指导如何更改一个文件使其与第二个文件相同.diff在软件开发时多用于比较新旧版本代码,和patch连用可以将文件间区别做成补丁 ...

  4. 快速认识Python

    1.数字和表达式 什么是表达式,1+2*3 就是一个表达式,这里的加号和乘号叫做运算符,1.2.3叫做操作数.1+2*3 经过计算后得到的结果是7,就1+2*3 = 7.我们可以将计算结果保存在一个变 ...

  5. Array 和 ArrayList 有何区别?(未完成)

    Array 和 ArrayList 有何区别?(未完成)

  6. JVM内存空间划分与作用详解

    在之前已经对Java的字节码进行了非常详细而又系统的学习了,接下来开启jvm内存相关的新篇章,在一个新知识开头之前肯定得理论化的对其进行一个整体的介绍,所以摒弃浮躁,先来看看相关的理论,主要是看一下J ...

  7. ASP.NET Core 2.0身份和角色管理入门

    见  https://blog.csdn.net/mzl87/article/details/84892916 https://www.codeproject.com/Articles/1235077 ...

  8. vimrc config and NERDTree

    nmap <C-N> :tabnext<CR> 下载和配置 NERDTree插件的官方地址如下,可以从这里获取最新的版本 https://github.com/scrooloo ...

  9. JAVA遇见HTML——Servlet篇:Servlet基础

    代码实现: HelloServlet package servlet; import java.io.IOException; import java.io.PrintWriter; import j ...

  10. 关于反编译pyc的一点技巧

    现在最流行的是用 https://github.com/rocky/python-uncompyle6 但是有些python小版本不一样,比如2.7.6的某版本,开头的magic number在这个项 ...