存储对象的三种方式分别为:

1.将对象序列化后保存到Redis
2.将对象用FastJSON转为JSON字符串后存储
3.将对象用Hash数据类型存储

序列化工具类SerializeUtil

public class SerializeUtil {/** 序列化* */public static byte[] serizlize(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) {e.printStackTrace();}finally {try {if(baos != null){baos.close();}if (oos != null) {oos.close();}} catch (Exception e2) {e2.printStackTrace();}}return null;}/** 反序列化* */public static Object deserialize(byte[] bytes){ByteArrayInputStream bais = null;ObjectInputStream ois = null; try{bais = new ByteArrayInputStream(bytes);ois = new ObjectInputStream(bais);return ois.readObject();}catch(Exception e){e.printStackTrace();}finally {try {} catch (Exception e2) {e2.printStackTrace();}}return null;}
}

User

public class User implements Serializable{private static final long serialVersionUID = -3210884885630038713L;private int id;private String name;public User(){}public User(int id,String name){this.id = id;this.name = name;}//setter和getter方法
}

方式1.将对象序列化后保存到Redis

@Component
public class VisitCounterScheduler {@Autowiredprivate VisitCounterMapper visitCounterMapper;@Autowiredprivate RedisTemplate<String, String> redisTemplate;@Scheduled(cron = "0 59 * * * *")public void postDailyVisitCount2Redis() {redisTemplate.opsForValue().set("dailyVisitCount", SerializeUtil.serizlize(new User(2,"lumia")));}
}

方式2.将对象用FastJSON转为JSON字符串后存储

package com.aac.bpmmanager.scheduler;import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;@SuppressWarnings("unchecked")
@Component
public class VisitCounterScheduler {@Autowiredprivate VisitCounterMapper visitCounterMapper;@Autowiredprivate RedisTemplate<String, String> redisTemplate;@Scheduled(cron = "0 59 * * * *")public void postDailyVisitCount2Redis() {User user = new user(1, "zhangsanfeng");String s = JSON.toJSONString(user);//存放对象方式二:将对象用FastJSON转为JSON字符串后存储redisTemplate.opsForValue().set("user1", JSON.toJSONString(user));}
}

方式3.将对象用Hash数据类型存储

利用Hash存储对象,适用于字段的某些值经常变化,而部门值不变化,比如余额宝,余额经常变化可以用Hash存储,余额宝其它字段数据不经常变化。

package com.server;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.pojo.Student;@Service
public class StudentServer {@Autowiredprivate RedisTemplate redisTemplate;//redisTemplate操作redispublic void setmap(){User stu=new User();//标志map的键、标志value的key、value//向键名为stu.getStuid的map对象存储key-value对HashOperations<String, String, String> map=redisTemplate.opsForHash().put(stu.getId, "name", stu.getName);//设置100 seconds存活时间redisTemplate.expire(stu.getStuid, 100, TimeUnit.SECONDS);}
}

参考文章
https://blog.csdn.net/qq_26545503/article/details/106123676
http://www.voidcn.com/article/p-rsqqqrgq-qw.html
https://blog.csdn.net/qq_44909430/article/details/104649464
https://blog.csdn.net/xzd315752647/article/details/86318870

Redis存储对象的三种方式相关推荐

  1. 【Redis】redis 存储对象 的三种方式

    1.概述 转载:https://blog.csdn.net/u014756827/article/details/88830973 2.方式一:序列化操作 public class Serialize ...

  2. redis 存储对象 的三种方式

    方式一:序列化操作 public class SerializeUtil {/** 序列化* */public static byte[] serizlize(Object object){Objec ...

  3. java class 生成对象_Java反射机制(创建Class对象的三种方式)

    1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...

  4. 获取Class对象的三种方式

    获取Class对象的三种方式 Object --> getClass() 通过对象.getclass 任何数据类型(包括基本数据类型)都有一个"静态"的class属性 通过类 ...

  5. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取

    创建连接对象的三种方式 //第一种方式Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/m ...

  6. Java动物类enjoy方法打印_Java反射学习-2 - 获取Class对象的三种方式

    1 packagecn.tx.reflect;2 3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 imp ...

  7. 反射应用和获取Class对象的三种方式

    一.写一个"框架",可以创建任何对象运行任何方法 1.配置文件 2.使用类加载器ClassLoader,Properties集合是可以和IO流结合使用完成读取和写入数据的集合,方法 ...

  8. java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)

    Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...

  9. java反射获取实体类_java 反射获取类对象的三种方式

    Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...

最新文章

  1. 多线程:pthread_cond_wait 实现原理
  2. ice 服务java连接,“先进的互联互通技术”–使用ice联通php和java [part 1 server]
  3. 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
  4. java经典面试题目
  5. Android Spinner设置默认选中的值
  6. 顶会两篇论文连发,华为云医疗AI低调中崭露头角
  7. Mac M1 百度网盘客户端无法打开,网络连接不上
  8. nrf52840蓝牙协议栈主机BLE串口
  9. froala 的使用
  10. m4a文件怎么转换成mp3?=
  11. 谈谈对内存管理子系统的理解
  12. Fantastic-Matplotlib 第二回
  13. E-R图、N-S图、PAD图、程序流程图
  14. 计算机网络第七版(谢希仁)第三章——数据链路层课后习题答案
  15. 【周赛总结】第196场周赛——全一子矩阵,交换k次的最小整数
  16. java-操作 Excel
  17. 什么是值传递,什么是引用传递。为什么说Java中只有值传递。
  18. 如何进行性能测试的调优
  19. jdbc mysql api_JDBC---一种用于执行SQL的Java API
  20. 上海市政府颁布《上海市居住证申办实施细则》

热门文章

  1. 任正非评华为HR胡玲事件:实名投诉是好现象,支持保护当事人
  2. 利用前端js获取ip地址
  3. mybatis小技巧 11.28
  4. 大数据信息资料采集:影视网站资源数据信息采集爬取
  5. DELL电脑风扇过大(win10和win11)
  6. 【HTML/CSS】从放弃到入门-笔记2
  7. python程序中长下划线怎么打_python中下划线怎么输入
  8. Hue 后台编辑器 远程命令执行漏洞
  9. linux开启端口、防火墙操作
  10. spring Boot 2 运维篇(spring boot程序的打包与部署,多环境开发配置文件的配置,spring boot集成日志框架)