Java操作Redis存储对象类型数据
背景描述
关于JAVA去操作Redis时,如何存储一个对象的数据,大家是非常关心的问题,虽然官方提供了存储String,List,Set等等类型,但并不满足我们现在实际应用。存储一个对象是是非常常见的。经过网上查找资料和实践操作后,整理出Redis如果存储一个对象的demo代码,如果有错误的地方大家可以留言指出。
参考资料
参考地址:
原理
在存储对象时先进行序列化,取出数据时再进行反序列化。
Redis版本
Redis3.0
https://mvnrepository.com/artifact/redis.clients/jedis
Demo如下
Bean代码
package com.obj.bean;
import java.io.Serializable;
public class Person implements Serializable {
/**
* 序列化
*/
private static final long serialVersionUID = 1L;
public String userName;
public String password;
public int age;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
序列化工具类代码
package com.serial.tool;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class SerializeObjectTool {
//序列化
public static byte[] serialize(Object obj) {
ObjectOutputStream obi = null;
ByteArrayOutputStream bai = null;
try {
bai = new ByteArrayOutputStream();
obi = new ObjectOutputStream(bai);
obi.writeObject(obj);
byte[] byt = bai.toByteArray();
return byt;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
// 反序列化
public static Object unserizlize(byte[] byt) {
ObjectInputStream oii = null;
ByteArrayInputStream bis = null;
bis = new ByteArrayInputStream(byt);
try {
oii = new ObjectInputStream(bis);
Object obj = oii.readObject();
return obj;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
测试代码
package com.redis.client;
import com.obj.bean.Person;
import com.serial.www.dfgjpt.com/ tool.SerializeObjectTool;
import redis.clients.jedis.Jedis;
public class RedisObjectClient www.gouyiflb.cn{
public static void main(String[] args) {
// TODO Auto-generated method stub
Jedis redis = new Jedis(www.thd178.com"10.190.130.143", 6379);
redis.auth("sa123456");
// 存对象
Person p = new Person(); // peson类记得实现序列化接口 Serializable
p.setAge(20);
p.setUserName("姚波");
p.setPassword("123456");
byte[] personByte = SerializeObjectTool.serialize(p);
redis.set("person".getBytes(www.dasheng178.com/), personByte);
//取对象
byte[] byt = redis.get("person".getBytes());
Object obj = SerializeObjectTool. www.tygj178.com unserizlize(byt);
if (obj instanceof Person) {
System.out.println(www.michenggw.com ((Person) obj).getUserName());
System.out.println(((Person) obj).getPassword());
System.out.println(((Person) obj).getAge());
}
}
}
运行结果
Java操作Redis存储对象类型数据的更多相关文章
- Java连接Redis,存储对象获取对象()byte和json),连接池
Java连接Redis Jedis连接Redis,Lettuce连接Redis Jedis连接Redis 1. 创建maven项目 2. 引入依赖 <dependencies> <d ...
- [redis] redis 对string类型数据操作
package com.xwolf.java.redis; import org.junit.Before; import org.junit.Test; import redis.clients.j ...
- 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!
转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...
- Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术
3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...
- Redis基础知识、命令以及java操作Redis
1 nosql的概念 sql:操作(关系型)数据库的标准查询语言 关系型数据库(rdbms):以关系(由行和列组成的二维表)模型为核心数据库,有表的储存系统.(mysql.oracle.sqlserv ...
- Redis 存储对象信息是用 Hash 还是 String
Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject 中的 type,则是代表一个 value 对象具体是何种数据类型,它包含字符串(St ...
- Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等
NoSQL的引言 Redis数据库相关指令 Redis持久化相关机制 SpringBoot操作Redis Redis分布式缓存实现 Resis中主从复制架构和哨兵机制 Redis集群搭建 Redis实 ...
- 使用 Java 操作 Redis
Jedis 1. 概述 Jedis 是一款使用 Java 操作 Redis 的工具,有点类似于 JDBC 2. 引入依赖 <dependency> <groupId>redis ...
- java 操作redis
使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...
随机推荐
- thinkphp模板如何转换时间格式?
<!-- 如果有日期输出,即$data.time不为空且不为0,则格式化时间戳,否则默认当前时间戳,并格式化成日期格式 --> {$data.time|default=time()|dat ...
- redis相关目录
redis的docker化安装 redis的主从配置
- is 和 isinstance的区别 and issubclass
定义一个子类和父类 class A: pass class B(A): pass is print(type(b) is B) # 结果: True print(type(b) is A) # 结果: ...
- 八、USB驱动分析
学习目标:分析USB驱动源码结构. 一.Windows下USB驱动理论问题 1. 当usb设备接入PC时,右下角弹出"发现AAA",并弹出对话框,提示安装驱动程序.没有驱动程序,W ...
- 学习photoshop心得
简要的学习了ps的三大功能p图,抠图,作图, p图主要是学了换脸这一效果,用到套索工具,把范冰冰的脸接到郭德纲身上, 首先使用套索工具把脸圈起来 然后移动到 另一个人脸上 再然后混合图层,自动混合 差 ...
- Jetson tx1 安装cuda错误
前两天安装Jetpack3.0的时候,看着网上的教程以为cuda会自动安装上,但是历经好几次安装,都安装不上cuda,也刷了好几次jetpack包.搜遍了网上的教程,也没有安装上.错误如下图所示: 这 ...
- UVa Problem 100 The 3n+1 problem (3n+1 问题)
参考:https://blog.csdn.net/metaphysis/article/details/6431937 #include <iostream> #include <c ...
- 设计模式——模版方法模式详解(论沉迷LOL对学生的危害)
. 实例介绍 在本例中,我们使用一个常见的场景,我们每个人都上了很多年学,中学大学硕士,有的人天生就是个天才,中学毕业就会微积分,因此得了诺贝尔数学奖:也有的人在大学里学了很多东西,过得很充实很满意 ...
- php杂记——2(数组的使用)
1.建立升序数组:range(); $numarr1 = range(1,4); //(1,2,3,4) $numarr2 = range(1,10,2); //(1,3,5,7,9) $letter ...
- 【C#】 语法糖
[C#] 语法糖 一, 扩展方法 1. 对某个类功能上的扩展 2. 特点: 使用方便,可以在不修改原代码的基础上进行扩展. 参照 linq,linq 就是一系列的扩展方法 3. 语法: 非泛型静态类, ...