背景描述
  
       关于JAVA去操作Redis时,如何存储一个对象的数据,大家是非常关心的问题,虽然官方提供了存储String,List,Set等等类型,但并不满足我们现在实际应用。存储一个对象是是非常常见的。经过网上查找资料和实践操作后,整理出Redis如果存储一个对象的demo代码,如果有错误的地方大家可以留言指出。
  
  参考资料
  
  参考地址:
  
  原理
  
  在存储对象时先进行序列化,取出数据时再进行反序列化。
  
  Redis版本
  
  Redis3.0
  
  https://mvnrepository.com/artifact/redis.clients/jedis
  
  Demo如下
  
  Bean代码
  
  package com.obj.bean;
  
  import java.io.Serializable;
  
  public class Person implements Serializable {
  
      /**
  
       * 序列化
  
       */
  
      private static final long serialVersionUID = 1L;
  
      public String userName;
  
      public String password;
  
      public int age;
  
      public String getUserName() {
  
          return userName;
  
      }
  
      public void setUserName(String userName) {
  
          this.userName = userName;
  
      }
  
      public String getPassword() {
  
          return password;
  
      }
  
      public void setPassword(String password) {
  
          this.password = password;
  
      }
  
      public int getAge() {
  
          return age;
  
      }
  
      public void setAge(int age) {
  
          this.age = age;
  
      }
  
  }
  
  序列化工具类代码
  
  package com.serial.tool;
  
  import java.io.ByteArrayInputStream;
  
  import java.io.ByteArrayOutputStream;
  
  import java.io.IOException;
  
  import java.io.ObjectInputStream;
  
  import java.io.ObjectOutputStream;
  
  public class SerializeObjectTool {
  
      //序列化
  
      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;
  
      }
  
  }
  
  测试代码
  
  package com.redis.client;
  
  import com.obj.bean.Person;
  
  import com.serial.www.dfgjpt.com/ tool.SerializeObjectTool;
  
  import redis.clients.jedis.Jedis;
  
  public class RedisObjectClient www.gouyiflb.cn{
  
      public static void main(String[] args) {
  
          // TODO Auto-generated method stub
  
          Jedis redis = new Jedis(www.thd178.com"10.190.130.143", 6379);
  
          redis.auth("sa123456");
  
          // 存对象
  
          Person p = new Person(); // peson类记得实现序列化接口 Serializable
  
          p.setAge(20);
  
          p.setUserName("姚波");
  
          p.setPassword("123456");
  
          byte[] personByte = SerializeObjectTool.serialize(p);
  
          redis.set("person".getBytes(www.dasheng178.com/), personByte);
  
         //取对象
  
          byte[] byt = redis.get("person".getBytes());
  
          Object obj = SerializeObjectTool. www.tygj178.com unserizlize(byt);
  
          if (obj instanceof Person) {
  
              System.out.println(www.michenggw.com ((Person) obj).getUserName());
  
              System.out.println(((Person) obj).getPassword());
  
              System.out.println(((Person) obj).getAge());
  
          }
  
      }
  
  }
  
  运行结果

Java操作Redis存储对象类型数据的更多相关文章

  1. Java连接Redis,存储对象获取对象()byte和json),连接池

    Java连接Redis Jedis连接Redis,Lettuce连接Redis Jedis连接Redis 1. 创建maven项目 2. 引入依赖 <dependencies> <d ...

  2. [redis] redis 对string类型数据操作

    package com.xwolf.java.redis; import org.junit.Before; import org.junit.Test; import redis.clients.j ...

  3. 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!

    转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...

  4. Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术

    3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...

  5. Redis基础知识、命令以及java操作Redis

    1 nosql的概念 sql:操作(关系型)数据库的标准查询语言 关系型数据库(rdbms):以关系(由行和列组成的二维表)模型为核心数据库,有表的储存系统.(mysql.oracle.sqlserv ...

  6. Redis 存储对象信息是用 Hash 还是 String

    Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject 中的 type,则是代表一个 value 对象具体是何种数据类型,它包含字符串(St ...

  7. Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等

    NoSQL的引言 Redis数据库相关指令 Redis持久化相关机制 SpringBoot操作Redis Redis分布式缓存实现 Resis中主从复制架构和哨兵机制 Redis集群搭建 Redis实 ...

  8. 使用 Java 操作 Redis

    Jedis 1. 概述 Jedis 是一款使用 Java 操作 Redis 的工具,有点类似于 JDBC 2. 引入依赖 <dependency> <groupId>redis ...

  9. java 操作redis

    使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...

随机推荐

  1. Python核心框架tornado的异步协程的2种方式

    什么是异步? 含义 :双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位 现象:没有共同的时钟,不考虑顺序来了 ...

  2. 【shell脚本学习-4】

    文本处理 #!/bin/bash#----------文本处理---------- #---------------echo----------------- # "-n":处理光 ...

  3. 【poe设备加电配置】

    开启接口的poe功能: [interface_name]: 配置poe端口的最大功率: [interface_name[: 配置poe的端口工作模式: [interface_name[: 配置poe端 ...

  4. 微信小程序引用iconfont图标字体解决方案;

    1)首先,登录阿里巴巴iconfont.cn 2)新建项目 3)点击icon收藏 4)加入到test项目中   5)下载到本地解压   6)生成代码   7)复制iconfont.css到xxx.wx ...

  5. Linux基础(04)、功能配置(调整防火墙、静态IP、环境变量)

    目录 一.centos防火墙 二.VMware网络连接方式 2.1.连接方式:桥接.NAT.仅主机 2.2.常见问题 三.centos配置静态IP 四.环境变量 4.1.什么是环境变量 4.2.临时修 ...

  6. python3 练习题100例 (二十九)猴子吃桃问题

    题目内容: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第n天(<1<n< ...

  7. python3 练习题100例 (二十六)回文数判断

    题目内容: 给一个5位数,判断它是不是回文数,是则输出yes,不是则输出no. 例如12321是回文数,它的个位与万位相同,十位与千位相同. 输入格式: 共一行,为一个5位数. 输出格式: 共一行,y ...

  8. 量化交易之 tushare

    作为一名老股民,我对金融市场一直都保持长期的关注. 最近我大量接触量化交易相关的一切,发现市场力量还是蛮强大的,6年前的很多设想现在已经彻底变成现实,不得不承认市场从来不会等任何人.想好就要马上行动, ...

  9. linux文件IO操作篇 (一) 非缓冲文件

    文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO 它们的接口区别是 非缓冲 open() close() read() write() 缓冲 fopen() fclose() fread() ...

  10. Linux编程之Epoll高并发

    网络上所有资料都说epoll是高并发.单线程.IO重叠服用的首选架构,比select和poll性能都要好,特别是在有大量不活跃连接的情况下.具体原理就不阐述了,下面说说使用. 具有有三个函数: #in ...