Login
网站首页 > 文章中心 > 其它

Java 序列化介绍及 Redis 序列化方式

作者:小编 更新时间:2023-08-07 11:06:18 浏览量:303人看过

Java 序列化介绍及 Redis 序列化方式

什么是 java 序列化?什么情况下需要序列化?

1、序列化与反序列化

Java 序列化介绍及 Redis 序列化方式-图1

序列化:将 Java 对象转换成字节流的过程.

反序列化:将字节流转换成 Java 对象的过程.

2、什么情况下需要序列化

想把内存中的对象状态保存到一个文件中或者数据库中的时候(最常用,如保存到redis);

想用套接字在网络上传送对象的时候;

想通过RMI传输对象的时候;

3、序列化的实现

类实现 Serializable 接口即可,这个接口没有需要实现的方法.实现 Serializable 接口是为了告诉 jvm 这个类的对象可以被序列化.

4、注意事项

某个类可以被序列化,则其子类也可以被序列化

Java 序列化介绍及 Redis 序列化方式-图2

声明为 static 和 transient 的成员变量,不能被序列化.static 成员变量是描述类级别的属性,transient 表示临时数据

反序列化读取序列化对象的顺序要保持一致

5、具体使用

以 User 实体类为例:

@Data
@EqualsAndHashCode(callSuper = false)
@AllArgsConstructor
@NoArgsConstructor
//实现序列化
public class User implements Serializable {

private Integer age;
}


Java 序列化介绍及 Redis 序列化方式-图3

测试:

@Test
public void test1() throws IOException, ClassNotFoundException {
System.out.println(readUser.toString());
}

在项目根目录可以找到 user.txt 文件并看到输出结果.

6、Redis 序列化方式

我使用的是 spring-data-redis, spring-data-redis默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略

redisTemplate 可自定义各种 key 和各种 value 的序列化方式:

defaultSerializer: 默认序列化策略

key:普通key,非hash

value:普通value,非hash

hashKey:hash的filed

hashValue:hash的value

总共有以下几个序列化类:

JacksonJsonRedisSerializer: 序列化object对象为json字符串

JdkSerializationRedisSerializer: 序列化java对象(被序列化的对象必须实现Serializable接口),无法转义成对象.

StringRedisSerializer: 简单的字符串序列化

GenericToStringSerializer:类似StringRedisSerializer的字符串序列化

**StringRedisTemplate **默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的.序列化类为:StringRedisSerializer**RedisTemplate **默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的.序列化类为:JdkSerializationRedisSerializer

7、Redis 推荐序列化类

key和hashKey: 推荐使用 StringRedisSerializer: 简单的字符串序列化

以上就是土嘎嘎小编为大家整理的Java 序列化介绍及 Redis 序列化方式相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章