环境:centos7
安装memcache:
yum list memcached #查看可用的memcache软件包
yum install memcached #安装memcache
systemctl start memcache #启动memcache服务
yum list telnet #查看telnet的可用软件包
yum install telnet #安装telnet,连接memcache需要用到telnet的命令
telnet localhost 11211 #11211是memcache的默认启动端口
memcache常用的命令有:
get, set, add, replace, delete, incr, decr, gets, append, prepend, cas
详细命令参考:http://www.runoob.com/memcached/memcached-tutorial.html
个人感觉telnet不方便操作。
为了能够使用外部计算机通过telnet连接到memcache服务,需要关闭centos的防火墙,centos7中关闭防火墙的方式,不再使用之前的:service iptables stop,而是使用命令:
systemctl stop firewalld
以上为memcache环境搭建。
使用java操作memcache:
引入依赖:
<!-- memcache操作需要的依赖 -->
<dependency>
<groupId>com.google.code.simple-spring-memcached</groupId>
<artifactId>spymemcached</artifactId>
<version>2.8.4</version>
</dependency>
java代码如下:
package com.hurricane.learn.cache.memcache;
import java.net.InetSocketAddress;
import com.hurricane.learn.cache.entity.User;
import net.spy.memcached.CASValue;
import net.spy.memcached.MemcachedClient;
public class App {
public static void main(String[] args){
MemcachedClient client = null;
try {
client = new MemcachedClient(new InetSocketAddress("192.168.137.100", 11211));
User user = new User();
user.setUsername("hurricane");
user.setAge(12);
//连接客户端
//add
client.add("user", 0, user);
Object getUser = client.get("user");
if (getUser instanceof User) {
System.out.println(getUser);
}
//set
client.set("user2", 0, user);
getUser = client.get("user2");
if (getUser instanceof User) {
System.out.println(getUser);
}
//append prepend
client.set("str", 0, "aaa");
CASValue<Object> casToken = client.gets("str");
System.out.println(casToken.getCas());
client.append(casToken.getCas(), "str", "bbb");
casToken = client.gets("str");
System.out.println(casToken.getCas());
client.prepend(casToken.getCas(), "str", "ccc");
System.out.println(client.get("str"));
//replace
client.replace("str", 0, "hhh");
System.out.println(client.get("str"));
//delete
client.delete("str");
System.out.println(client.get("str"));
//incr decr无法正常执行,因为保存到memcache的过程中java将int基本类型转成了Integer对象
client.set("age", 0, 1111110L);
// client.incr("age", 3);
// client.decr("age", 3);
System.out.println(client.get("age").getClass());
} catch (Exception e) {
System.out.println("发生错误");
}finally {
if (client!=null) {
//关闭客户端
client.shutdown();
client=null;
}
}
}
}