项目组成:(本质上就是序列化与反序列化的同时操作)
user类:
package jedis;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Setter@Getter@Data
class User implements Serializable {
private static final long serialVersionUID=-4235509122507469283L;
private Long id;
private String name;
public User() {
}
public User(Long id, String name) {
this.id = id;
this.name = name;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
protected void finalize() throws Throwable {
super.finalize();
}
}
序列化与反序列化工具:
SerializeUtils工具类
package jedis;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public final class SerializeUtils {
//序列化
public static byte[] serialize(Object object){
ObjectOutputStream oos=null;
ByteArrayOutputStream baos=null;
try {
baos=new ByteArrayOutputStream();
oos=new ObjectOutputStream(baos);
oos.writeObject(object);
byte[]bytes=baos.toByteArray();
return bytes;
}catch (Exception e){
throw new RuntimeException(e);
}
}
//反序列化
public static <T>T deserialize(byte[]bytes){
if(bytes==null)
return null;
ByteArrayInputStream bais=null;
try {
bais=new ByteArrayInputStream(bytes);
ObjectInputStream ois=new ObjectInputStream(bais);
return (T)ois.readObject();
}catch (Exception e){
throw new RuntimeException(e);
}
}
}
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>redis</groupId>
<artifactId>jedis</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>jedis Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
</dependency>
<!-- JUnit4测试工具 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.caches/mybatis-redis -->
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-redis</artifactId>
<version>1.0.0-beta2</version>
</dependency>
<!-- lombok插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<finalName>jedis</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
JedisTest测试类:
package jedis;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Map;
public class JedisTest {
@Test
public void testHello(){
//1.获得连接对象
Jedis jedis=new Jedis("192.168.159.138",6379);
//2获得数据
String username=jedis.get("username");
System.out.println(username);
//3存储
jedis.set("addr","广东东莞");
System.out.println(jedis.get("addr"));
jedis.set("foo","bar");
String value=jedis.get("foo");
System.out.println(value);
}
@Test
public void testHash(){
//1.获得连接对象
Jedis jedis=new Jedis("192.168.159.138",6379);
Map<String,String>user=new HashMap<>();
user.put("name","zhouzhou");
user.put("password","123456");
user.put("email","1404031711@qq.com");
Map<String,String>ret=jedis.hgetAll("user:1001");
System.out.println(ret);
}
@Test
public void testSaveObject(){
User u=new User(1L,"zhouzhou");
Jedis jedis=new Jedis("192.168.159.138",6379);
jedis.set("user:1".getBytes(),SerializeUtils.serialize(u));
User u2= SerializeUtils.deserialize(jedis.get("user:1".getBytes()));
System.out.println(u2);
}
}
测试结果如下: