redis 序列化存入对象

 //序列化
    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;
    }

    @Test
    public void testSerialize(){
        AuUser auUser = new AuUser();
        auUser.setId("1");
        auUser.setUsername("zs");
        auUser.setPassword("123");

        jedis.set("user".getBytes(), serialize(auUser));
        byte[] byt = jedis.get("user".getBytes());
        Object object = unserizlize(byt);
        if(object instanceof AuUser){
            AuUser user = (AuUser) object;
            System.out.println(user.getUsername());
            System.out.println(user.getPassword());
        }
    }

结果

时间: 2024-08-07 05:26:12

redis 序列化存入对象的相关文章

Redis如何存储对象与集合示例详解

前言 大家都知道在项目中,缓存以及mq消息队列可以说是不可或缺的2个重要技术.前者主要是为了减轻数据库压力,大幅度提升性能.后者主要是为了提高用户的体验度,我理解的是再后端做的一个ajax请求(异步),并且像ribbmitmq等消息队列有重试机制等功能. 这里主要讲redis/303688.html">redis如何把对象,集合存入,并且取出.下面话不多说了,来一起看看详细的介绍吧. 1.在启动类上加入如下代码 private Jedis jedis;private JedisPoolCo

[转] Redis 存储List对象

如果需要用到Redis存储List对象,而list又不需要进行操作,可以按照MC的方式进行存储,不过Jedis之类的客户端没有提供API,可以有两种思路实现: 1.      分别序列化 elements ,然后 set 存储 2.    序列化List对象,set存储 这两种方法都类似MC的 Object方法存储,运用这种方式意味着放弃Redis对List提供的操作方法. import net.spy.memcached.compat.CloseUtil; import net.spy.mem

Java序列化与对象流浅谈

今晚又重新回顾了Java中序列化与对象流的知识,接触了一位有着上亿行有效代码量的大佬之思想,2333. 1.序列化与反序列化 Java中的序列化简而言之就是为了避免要重复使用的实例在每次执行程序过程中都要重新申请堆空间,序列化后直接加载,节约时间.序列化过程中,保存在文件中的对象只记录了对象的状态(属性),包括成员和类类型(名称),而不会存储对象的方法.可看做将一个有着灵魂的人进行灵魂转移,转移的只是他的记忆,他自己的各种行为,比如吃饭.睡觉--,每个人都拥有,且行为表现一样,即只需转移(保存)

iOS文档序列化(对象归档)

对象归档: 概念: 对象归档是指将对象写入文件保存在硬盘,当再次重新打开程序时,可以还原这些对象.也称:对象序列化.对象持久化. 数据持久性的方式(其实就是3类) 1,NSKeyedArchiver--对象归档 2,NSUserDefaults  3,属性列表 4,SQLite数据库  5,Core Data数据库 归档方式: 对Foundation库中对象进行归档 自定义对象进行归档(需要实现归档协议,NSCoding) 归档与属性列表的区别: 1,归档后的文件是加密的,属性列表是明文的. 2

自定义redis序列化工具

redis一个优点就是可以将数据写入到磁盘中. 我们知道写入磁盘的数据实际上都是以字节(0101这样的二进制数据)的形式写入的. 这意味着如果我们要将一个对象写入磁盘,就必须将这个对象序列化. java的序列化机制可以参考这篇文章. 可以看到java的反序列是否成功跟serialVersionUID有很大的关系,自动生成的UID在每次编译时就会发生变化. 如果有两个程序共享一个redis,这个时候反序列化就会出现问题. 所以总监叫我自定义个redis序列化工具. 一.为什么Spring redi

Redis 序列化方式StringRedisSerializer、FastJsonRedisSerializer和KryoRedisSerializer

当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的.RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer. Spring Data JPA为我们提供了下面的Serializer:GenericToStringSerializer.Jackson2JsonRedisSeria

一文彻底理解Redis序列化协议,你也可以编写Redis客户端

前提 最近学习Netty的时候想做一个基于Redis服务协议的编码解码模块,过程中顺便阅读了Redis服务序列化协议RESP,结合自己的理解对文档进行了翻译并且简单实现了RESP基于Java语言的解析.编写本文的使用使用的JDK版本为[8+]. RESP简介 Redis客户端与Redis服务端基于一个称作RESP的协议进行通信,RESP全称为Redis Serialization Protocol,也就是Redis序列化协议.虽然RESP为Redis设计,但是它也可以应用在其他客户端-服务端(C

使用序列化保存对象状态到存储介质

//使用序列化保存对象状态到存储介质 //添加[Serializable] Game game = new Game(); game.Level = 2; game.Player = "Tom"; FileStream fs = new FileStream(@"game.bin",FileMode.Create); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fs,game); //使用反序列化

使用序列化实现对象的拷贝

java提高篇(五)-----使用序列化实现对象的拷贝 分类:            [JAVA开发]-----Java提高篇2013-10-22 19:153668人阅读评论(5)收藏举报 javajava提高篇 摘自:http://blog.csdn.net/chenssy/article/details/12952063 目录(?)[+] 一浅拷贝问题 二利用序列化实现对象的拷贝       我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是