Redis】Redis如何存储和操作Java对象_第2页回答

2021-03-26 10:04发布

12条回答
我的网名不再改
2楼 · 2021-03-27 20:02

根据redis的存储原理,Redis的key和value都支持二进制安全的字符串


1.利用序列化和反序列化的方式

存储java对象我们可以通过对象的序列化与反序列化完成存储于取出,这样就可以使用redis存储java对象了


步骤:创建一个序列化和反序列化的工具类


public class SerializeUtil {  

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) {  

}  

return null;  

}  

public static Object unserialize(byte[] bytes) {  

ByteArrayInputStream bais = null;  

try {  

//反序列化  

bais = new ByteArrayInputStream(bytes);  

ObjectInputStream ois = new ObjectInputStream(bais);  

return ois.readObject();  

} catch (Exception e) {  

}  

return null;  

}  

}


每次存储和取出对象时都是需要调用方法序列与反序列的


方法2:将java对象转换为json字符串,利用json与java对象之间可以相互转换的方式进行存值和取值

具体存值和取值在上一篇文章中有写json与java对象的相互转换问题

帅帅马
3楼 · 2021-03-28 20:35

根据redis的存储原理,Redis的key和value都支持二进制安全的字符串


1.利用序列化和反序列化的方式

存储java对象我们可以通过对象的序列化与反序列化完成存储于取出,这样就可以使用redis存储java对象了


步骤:创建一个序列化和反序列化的工具类


public class SerializeUtil {  

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) {  

}  

return null;  

}  

public static Object unserialize(byte[] bytes) {  

ByteArrayInputStream bais = null;  

try {  

//反序列化  

bais = new ByteArrayInputStream(bytes);  

ObjectInputStream ois = new ObjectInputStream(bais);  

return ois.readObject();  

} catch (Exception e) {  

}  

return null;  

}  

}


每次存储和取出对象时都是需要调用方法序列与反序列的


方法2:将java对象转换为json字符串,利用json与java对象之间可以相互转换的方式进行存值和取值

具体存值和取值在上一篇文章中有写json与java对象的相互转换问题


小小收藏家
4楼 · 2021-03-28 20:56

根据redis的存储原理,Redis的key和value都支持二进制安全的字符串


1.利用序列化和反序列化的方式

存储java对象我们可以通过对象的序列化与反序列化完成存储于取出,这样就可以使用redis存储java对象了


步骤:创建一个序列化和反序列化的工具类


public class SerializeUtil {  

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) {  

}  

return null;  

}  

public static Object unserialize(byte[] bytes) {  

ByteArrayInputStream bais = null;  

try {  

//反序列化  

bais = new ByteArrayInputStream(bytes);  

ObjectInputStream ois = new ObjectInputStream(bais);  

return ois.readObject();  

} catch (Exception e) {  

}  

return null;  

}  

}


每次存储和取出对象时都是需要调用方法序列与反序列的


方法2:将java对象转换为json字符串,利用json与java对象之间可以相互转换的方式进行存值和取值

具体存值和取值在上一篇文章中有写json与java对象的相互转换问题



征戰撩四汸
5楼 · 2021-11-23 10:28

1.利用序列化和反序列化的方式

存储java对象我们可以通过对象的序列化与反序列化完成存储于取出,这样就可以使用redis存储java对象了


步骤:创建一个序列化和反序列化的工具类


public class SerializeUtil {  

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) {  

}  

return null;  

}  

public static Object unserialize(byte[] bytes) {  

ByteArrayInputStream bais = null;  

try {  

//反序列化  

bais = new ByteArrayInputStream(bytes);  

ObjectInputStream ois = new ObjectInputStream(bais);  

return ois.readObject();  

} catch (Exception e) {  

}  

return null;  

}  

}


每次存储和取出对象时都是需要调用方法序列与反序列的


方法2:将java对象转换为json字符串,利用json与java对象之间可以相互转换的方式进行存值和取值


相关问题推荐

  • 回答 1

    redis,你要搞高并发的话,不可避免,要把底层的缓存搞得很好mysql,高并发,做到了,那么也是通过一系列复杂的分库分表,订单系统,事务要求的,QPS到几万,比较高了要做一些电商的商品详情页,真正的超高并发,QPS上十万,甚至是百万,一秒钟百万的请求量光...

  • 虚拟机安装RedisLinux Redis 2021-01-18 09:45
    回答 1

    1。重现安装liunx系统,最好下其他版本的镜像,再下载redis2。可以去网上下载其他人的已经安装好redis的镜像,直接可以用

  • 回答 2

    1、在线安装方式,找到安装的地址,删除安装目录,重新拉取rpm包,测试是否是环境问题,如果环境本身没有问题再查看自己的安装步骤,逐个命令的排查,锁定问题;2、离线安装方式,找到自己的安装包,确定安装包本身没有问题,那么查看tar解压后的安装目录结构...

  • 回答 2

    RDB定时快照方式(snapshot): RDB 将数据库的快照(snapshot)以二进制的方式保存到磁盘中。AOF基于语句追加文件的方式:则以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到 AOF 文件,以此达到记录数据库状态的目的。一般来说, 如果想...

  • 回答 1

    区别:RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。 AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不...

没有解决我的问题,去提问