Redis关于对象的储存
来源:互联网 发布:jenkins配置linux节点 编辑:程序博客网 时间:2024/06/12 21:16
redis是不能直接储存对象的。已知道的方法有两种:
1.把对象序列化存进去,取出来的时候再反序列化成对象
2.使用jedis.set(byte[], byte[])
通过这个API,很显然我们能够实现
jedis.set(String key, Object value)
jedis.set(String key, List<M> values)
我们需要关注的就是在cache的时候将Object和List对象转换成字节数组并且需要提供将字节数组转换成对象返回。
============================================================
FastJson下载地址:http://download.csdn.net/detail/xiafyy/9781479
FastJson使用教程:http://blog.csdn.net/djun100/article/details/24237371
1.把对象序列化存进去,取出来的时候再反序列化成对象
package com.gametech.utils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import org.apache.log4j.Logger; public class SerializeUtil { static Logger log = Logger.getLogger(SerializeUtil.class); /** * * <p>Title: ObjTOSerialize</p> * <p>Description: 序列化一个对象</p> * @param obj * @return * @author guangshuai.wang */ public static byte[] ObjTOSerialize(Object obj){ ObjectOutputStream oos = null; ByteArrayOutputStream byteOut = null; try{ byteOut = new ByteArrayOutputStream(); oos = new ObjectOutputStream(byteOut); oos.writeObject(obj); byte[] bytes = byteOut.toByteArray(); return bytes; }catch (Exception e) { log.error("对象序列化失败"); } return null; } /** * * <p>Title: unSerialize</p> * <p>Description: 反序列化</p> * @param bytes * @return * @author guangshuai.wang */ public static Object unSerialize(byte[] bytes){ ByteArrayInputStream in = null; try{ in = new ByteArrayInputStream(bytes); ObjectInputStream objIn = new ObjectInputStream(in); return objIn.readObject(); }catch (Exception e) { log.error("反序列化失败"); } return null; } }
2.使用jedis.set(byte[], byte[])
通过这个API,很显然我们能够实现
jedis.set(String key, Object value)
jedis.set(String key, List<M> values)
我们需要关注的就是在cache的时候将Object和List对象转换成字节数组并且需要提供将字节数组转换成对象返回。
如果需要取对象的时候使用jedis.get:
======================================================================================================
第一种方法如果自己封装工具类在频繁的操作的时候会非常消耗资源,那么阿里提供了FastJson工具非常的好用。
//下面是FastJson的简介:常用的方法! // Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。 // public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray // public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject // public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean // public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray // public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 // public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 // public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 // public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray(和上面方法的区别是返回值是不一样
0 0
- Redis关于对象的储存
- 关于使用阿里云OSS对象储存上传大视频和转码的一些心得
- 关于储存
- 用pickle模块储存对象的实例
- 关于顺序储存结构的构思内容
- 关于byte储存-128的问题
- 关于模拟信号和数字信号的储存
- Redis储存hashes类型
- 关于Redis五种类型对象的学习笔记
- Java对象储存位置
- Pandas 对象储存
- 利用key,value形式储存对象的类(Map,HashMap)
- 用容器储存有继承关系的对象
- 块储存、对象存储、文件存储的区别和联系
- 关于二进制文件储存格式
- 关于二进制文件储存格式
- Redis的String对象
- 关于wdcp的任务计划文件储存位置
- AndroidStudio 编译时遇到:Error:(246, 0) Gradle DSL method not found: 'testCompile()' (或者其他)问题
- VMware虚拟机已设置NAT仍无法连接网络
- 一些我面试过程中遇到j2ee知识点的整理(2),答案来源于网络
- redis,memcache,ehcache的比较
- Codeforces 450D
- Redis关于对象的储存
- 泛型[4]泛型多态
- Swift Web 开发之 Vapor
- VS2012下如何生成和调用DLL
- Git初探
- css权威指南——优先级
- MyEclipse安装class反编译插件
- 中国(北方)大学生程序设计训练赛(第一周)
- 好好学英语