zoukankan      html  css  js  c++  java
  • redis存取对象

    redis主要存储类型最常用的五种数据类型:

    • String
    • Hash
    • List
    • Set
    • Sorted set

    redis不能直接存取对象,如何解决呢?

    两种方式

    1、利用序列化和反序列化的方式

    两层对象存取到redis 示例:

    序列化工具类

    public class SerializeUtil {
        public static byte[] serialize(Object object) {
            ObjectOutputStream oos = null;
            ByteArrayOutputStream baos = null;
            try {
    //序列化
                baos = new ByteArrayOutputStream();
                oos = new ObjectOutputStream(baos);
                oos.writeObject(object);
                byte[] bytes = baos.toByteArray();
                return bytes;
            } catch (Exception e) {
            }
            return null;
        }
    
        public static Object unserialize(byte[] bytes) {
            ByteArrayInputStream bais = null;
            try {
    //反序列化
                bais = new ByteArrayInputStream(bytes);
                ObjectInputStream ois = new ObjectInputStream(bais);
                return ois.readObject();
            } catch (Exception e) {
            }
            return null;
        }
    }
    public class Person implements Serializable {
        private String pid;
        private String pName;
        private String nation;
        private String age;
        private Animal animal;
    

      

    1 public class Animal implements Serializable {
    2     private String aId;
    3     private String color;
    4     private String hobby;
    5     private String aName;

    在此强调必须让类实现序列化

     1 public class RedisObject {
     2     public static void main(String[] args) {
     3         //连接本地的 Redis 服务
     4         Jedis jedis = new Jedis("10.0.34.52",6379);
     5         jedis.auth("");
     6         System.out.println("Connection to server sucessfully");
     7         //查看服务是否运行
     8         System.out.println("Server is running: " + jedis.ping());
     9         Person person = new Person();
    10         person.setAge("15");
    11         person.setNation("美国");
    12         person.setpName("jim");
    13         Animal animal = new Animal();
    14         animal.setaId("21");
    15         animal.setaName("小白");
    16         animal.setColor("red");
    17         person.setAnimal(animal);
    18         System.out.println("序列化中");
    19         jedis.set("person".getBytes(),SerializeUtil.serialize(person));
    20         System.out.println("序列化成功");
    21         byte[] bytes = jedis.get("person".getBytes());
    22         Object object = SerializeUtil.unserialize(bytes);
    23         Person person1= (Person)object;
    24         System.out.println(person1);

    2:将java对象转换为json字符串,利用json与java对象之间可以相互转换的方式进行存值和取值

    try {
    String s = JacksonUtils.getInstance().writeValueAsString(person);
    System.out.println("对象转化字符串:"+s);
    jedis.set("person2",s);
    String person2 = jedis.get("person2");
    Person person3 = JacksonUtils.getInstance().readValue(person2, Person.class);
    System.out.println(person3);
    } catch (IOException e) {
    e.printStackTrace();
    }

    
    

    
    
    
    想要体面生活,又觉得打拼辛苦;想要健康身体,又无法坚持运动。人最失败的,莫过于对自己不负责任,连答应自己的事都办不到,又何必抱怨这个世界都和你作对?人生的道理很简单,你想要什么,就去付出足够的努力。
  • 相关阅读:
    [CocosCreator]-06-文字渲染
    [CocosCreator]-05-图片渲染
    [CocosCreator]-04-使用对象池
    [CocosCreator]-03-使用计时器
    [CocosCreator]-02-设备重力传感事件
    [CocosCreator]-01-键盘事件
    [h5棋牌项目]-08-请安装所需的版本的 Windows SDK 或者在项目属性页的问题解决方案
    JS规则 较量较量(比较操作符) 两个操作数通过比较操作符进行比较,得到值为真(true)和假(false)。【>; <; >=; <=; !=;==】
    JS规则 自加一,自减一 ( ++和- -) 【mynum = mynum + 1;//等同于mynum++;】
    JS规则 我还有其它用途( +号操作符)例如,算术操作符(+、-、*、/等),比较操作符(<、>、>=、<=等),逻辑操作符(&&、||、!)
  • 原文地址:https://www.cnblogs.com/potentPrince/p/8668544.html
Copyright © 2011-2022 走看看