常熟建设银行 招聘网站网盟推广合作
web/
2025/10/9 8:11:37/
文章来源:
常熟建设银行 招聘网站,网盟推广合作,国家建设标准网站,网站提示宏目录
1.protostuff 的 Maven 依赖
2.定义实体类
3.序列化工具类 ProtostuffSerializer 提供了序列化和反序列化方法
4.测试 利用 Jedis 提供的字节数组参数方法#xff0c;如#xff1a; public String set(String key, String value) public String set(byte[] key…目录
1.protostuff 的 Maven 依赖
2.定义实体类
3.序列化工具类 ProtostuffSerializer 提供了序列化和反序列化方法
4.测试 利用 Jedis 提供的字节数组参数方法如 public String set(String key, String value) public String set(byte[] key, byte[] value) public byte[] get(byte[] key) public String get(String key) 拥用这些 API 的支持就可以将 Java 对象序列化为二进制当应用需要获取 Java 对象时使用 public byte[] get(byte[] key) 函数将字节数组取出然后反序列化为 Java 对象即可。和很多 NoSQL 数据库 例如Memchache、Ehcache的客户端不同Jedis 本身没有提供序列化的工具也就是说开发者需要自己引入序列化的工具。序列化的工具有很多例如 XML、Json、谷歌的 Protobuf 、Facebook 的 Thrift 等等对于序列化工具的选择开发者可以根据自身的需求决定下面以 protostuff (Protobuf 的 Java 客户端)为例子进行说明。 1.protostuff 的 Maven 依赖 propertiesprotostuff.version1.0.11/protostuff.version/propertiesdependencies//redis客户端dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion2.8.2/version/dependency//protostuff 客户端dependencygroupIdcom.dyuproject.protostuff/groupIdartifactIdprotostuff-runtime/artifactIdversion${protostuff.version}/version/dependencydependencygroupIdcom.dyuproject.protostuff/groupIdartifactIdprotostuff-core/artifactIdversion${protostuff.version}/version/dependency/dependencies
2.定义实体类
package org.example.Entity;import java.io.Serializable;
import java.util.Date;public class Club implements Serializable {private int id; //idprivate String name;//名称private String info;//描述private Date createDate;//创建日期private int rank;public Club(int id, String name, String info, Date createDate, int rank) {this.id id;this.name name;this.info info;this.createDate createDate;this.rank rank;}public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getInfo() {return info;}public void setInfo(String info) {this.info info;}public Date getCreateDate() {return createDate;}public void setCreateDate(Date createDate) {this.createDate createDate;}public int getRank() {return rank;}public void setRank(int rank) {this.rank rank;}//测试使用Overridepublic String toString() {return Club{ id id , name name \ , info info \ , createDate createDate , rank rank };}
}3.序列化工具类 ProtostuffSerializer 提供了序列化和反序列化方法
package org.example.until;import com.dyuproject.protostuff.LinkedBuffer;
import com.dyuproject.protostuff.ProtostuffIOUtil;
import com.dyuproject.protostuff.Schema;
import com.dyuproject.protostuff.runtime.RuntimeSchema;
import org.example.Entity.Club;
//序列化工具类
public class ProtostuffSerializer {// 通过反射机制创建了 Club 类型的模式schemaprivate SchemaClub schema RuntimeSchema.createFrom(Club.class);//序列化public byte[] serialize(Club club){//初始化序列化缓冲LinkedBuffer buffer LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE);try {//序列化成字节数组return serializeInternal(club,schema,buffer);}catch (Exception e){throw new IllegalStateException(e.getMessage(),e);}finally {buffer.clear();}}//反序列化public Club deserialize(byte[] bytes){try {//拿到反序列化对象Club club deserializeInternal(bytes,schema.newMessage(),schema);if (club ! null){return club;}}catch (Exception e){throw new IllegalStateException(e.getMessage(),e);}return null;}//返回序列化数组private T byte[] serializeInternal(final T source,final SchemaT schema,LinkedBuffer buffer) {return ProtostuffIOUtil.toByteArray(source,schema,buffer);}//将字节数组反序列化操作private T T deserializeInternal(byte[] bytes, T result, SchemaT schema) {ProtostuffIOUtil.mergeFrom(bytes,result,schema);return result;}
}4.测试
package org.example;import org.example.Entity.Club;
import org.example.until.ProtostuffSerializer;
import redis.clients.jedis.Jedis;import java.util.Date;// 按两次 Shift 打开“随处搜索”对话框并输入 show whitespaces
// 然后按 Enter 键。现在您可以在代码中看到空格字符。
public class Main {public static void main(String[] args) {//生成序列化工具类ProtostuffSerializer protostuffSerializer new ProtostuffSerializer();Jedis jedis JedusUtils.getJedis();String key club:1;//定义实体对象Club club new Club(1,AC,米兰,new Date(),1);System.out.println(序列化club);//序列化byte[] clubBytes protostuffSerializer.serialize(club);jedis.set(key.getBytes(),clubBytes);//反序列化byte[] resultBytes jedis.get(key.getBytes());//反序列化 1,AC,米兰,new Date(),1Club resultClub protostuffSerializer.deserialize(resultBytes);System.out.println(反序列化 resultClub);}
}
运行结果如图 最终成功实现。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89525.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!