java连接Redis存储对象或值,用byte[]、String两种方式
一、创建Maven项目
二、在pom.xml中添加相关依赖(本案例中用到以下依赖)
<dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.68</version> </dependency> </dependencies>
三、连接Redis,简单设置键值,获取值(连接Redis相对比较简单,直接new,传入host和port就可以)
package com.lx; import org.junit.Test; import redis.clients.jedis.Jedis; public class Demo { @Test public void test(){ //连接Redis Jedis jedis = new Jedis("127.0.0.1",6379); // jedis.set("name","测试"); //根据key值获取value String value = jedis.get("name"); //打印 System.out.println(value); //关闭资源 jedis.close(); } }
四、以byte[]方式存储对象
1、首先创建User实体(@NoArgsConstructor和@AllArgsConstructor注解分别代表无参构造方法和有参构造方法)
package com.entiy; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; @Data @NoArgsConstructor @AllArgsConstructor public class User implements Serializable { private Integer id; private String name; }
2、编写测试代码
SerializationUtils.serialize(key)方法可以把String类型转换为byte[]类型
SerializationUtils.deserialize(byteValue)方法可以把byte[]类型转换成String类型
package com.lx; import com.entiy.User; import com.sun.xml.internal.txw2.output.DumpSerializer; import org.junit.Test; import org.springframework.util.SerializationUtils; import redis.clients.jedis.Jedis; //以byte[]方式存储 public class Demo2 { @Test public void setTest(){ //连接Redis Jedis jedis = new Jedis("127.0.0.1",6379); //定义key值 String key = "user"; //定义value值 User value = new User(1,"lw_20171224"); //key值转换成字节 byte[] byteKey = SerializationUtils.serialize(key); //value值转换成字节 byte[] byteValue = SerializationUtils.serialize(value); //存储到Redis中 jedis.set(byteKey,byteValue); //关闭资源 jedis.close(); } @Test public void getTest(){ //连接Redis Jedis jedis = new Jedis("127.0.0.1",6379); //定义key值 String key = "user"; //把key值转换成byte[] byte[] byteKey = SerializationUtils.serialize(key); //根据key值获取到byte[]value byte[] byteValue = jedis.get(byteKey); //把byte[]value转换成User类型 User value = (User) SerializationUtils.deserialize(byteValue); //打印 System.out.println(value); //关闭资源 jedis.close(); } }
四、以String方式存储对象
1、首先创建实体(本案例使用上一案例的User实体)
2、编写测试代码
JSON.toJSONString(value)方法可以把String类型转换为Json类型
JSON.parseObject(jsonValue,User.class)方法可以把Json类型转换成任意类型
package com.lx; import com.alibaba.fastjson.JSON; import com.entiy.User; import org.junit.Test; import redis.clients.jedis.Jedis; //以String方式存储 public class Demo3 { @Test public void setTest(){ //连接Redis Jedis jedis = new Jedis("127.0.0.1",6379); //定义key值 String key = "String_user"; //定义value值 User value = new User(2,"lw_20171224"); //value值转换成json字符串 String jsonValue = JSON.toJSONString(value); //存储到Redis中 jedis.set(key,jsonValue); //关闭资源 jedis.close(); } @Test public void getTest(){ //连接Redis Jedis jedis = new Jedis("127.0.0.1",6379); //定义key值 String key = "String_user"; //根据key值获取json类型value值 String jsonValue = jedis.get(key); //把json类型value转换成User类型 User value = JSON.parseObject(jsonValue,User.class); //打印 System.out.println(value); //关闭资源 jedis.close(); } }
上述案例可以下载RedisDesktopManager软件 Redis图形化工具进行查看,登录软件前必须启动Redis服务,否则登陆失败