参考这篇博文在本机安装了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. VS2019打开项目加载失败:无法找到 .NET Core SDK。请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配。

    问题描述: 用VS2019创建了asp.net core项目,正常运行:过几天后,再次打开,发现无法加载项目,报错无法找到.net core sdk.   分析过程: 首先怀疑环境变量的问题,重新设置 ...

  2. Java Web 深入分析(5) Java ClassLoader 工作机制

    Classloader 有3个作用 将class加载到JVM中去 审查每个类由谁去加载,是一种父优先的等级加载 把Class字节码统一编译成JVM统一要求的对象格式 ClassLoader的等级加载机 ...

  3. tint2

    #---------------------------------------------# TINT2 CONFIG FILE#---------------------------------- ...

  4. 提高前端开发效率的N种方法

    一.使用固定的html模板和css公共样式 事先把模板建好,每次需要用的时候直接拿来就行,不再需要为浏览器兼容问题考虑太多时间 这里我整理了一套,希望对大家有帮助:http://www.cnblogs ...

  5. vue 实现的评分小星星组件,包括半星

    github源码地址:https://github.com/13476075014/node-vue/blob/master/mynodeproject/13.sell/sell/src/compon ...

  6. 数组的新API

    话不多数,直接上代码: 第一个输出1,2,3,4,5 在函数体中第一个console依次输出1,2,3,4,5 然后再将里面的内容逐个+1,所以第二个输出值为:2,3,4,5,6 但是这都不会改变原数 ...

  7. 使用NSFileManager管理文件系统

    文件系统作为被所有进程使用的基本资源之一,在macOS和iOS中主要用于处理数据文件.应用程序以及与操作系统自身相关的持久存储. iOS中的文件系统格式为HFS Plus,macOS中的主要格式也是H ...

  8. EF Migraiton错误解决

    System.Runtime.Serialization.SerializationException: Type is not resolved for member 'Oracle.Managed ...

  9. 什么是OAuth授权

    什么是OAuth授权?   一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和密 ...

  10. 关于operator void* 操作符

    在<大规模C++程序设计>这本书中谈到了迭代器模式. 他提供了这样的一个迭代器的例子     这个for循环中判断终止的写法,有点意思,做一下记录. 这个地方的本质是这样的:C++ 编译器 ...