Redis存储对象的三种方式
存储对象的三种方式分别为:
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存储对象的三种方式相关推荐
- 【Redis】redis 存储对象 的三种方式
1.概述 转载:https://blog.csdn.net/u014756827/article/details/88830973 2.方式一:序列化操作 public class Serialize ...
- redis 存储对象 的三种方式
方式一:序列化操作 public class SerializeUtil {/** 序列化* */public static byte[] serizlize(Object object){Objec ...
- java class 生成对象_Java反射机制(创建Class对象的三种方式)
1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...
- 获取Class对象的三种方式
获取Class对象的三种方式 Object --> getClass() 通过对象.getclass 任何数据类型(包括基本数据类型)都有一个"静态"的class属性 通过类 ...
- JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取
创建连接对象的三种方式 //第一种方式Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/m ...
- Java动物类enjoy方法打印_Java反射学习-2 - 获取Class对象的三种方式
1 packagecn.tx.reflect;2 3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 imp ...
- 反射应用和获取Class对象的三种方式
一.写一个"框架",可以创建任何对象运行任何方法 1.配置文件 2.使用类加载器ClassLoader,Properties集合是可以和IO流结合使用完成读取和写入数据的集合,方法 ...
- java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)
Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...
- java反射获取实体类_java 反射获取类对象的三种方式
Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...
最新文章
- 多线程:pthread_cond_wait 实现原理
- ice 服务java连接,“先进的互联互通技术”–使用ice联通php和java [part 1 server]
- 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
- java经典面试题目
- Android Spinner设置默认选中的值
- 顶会两篇论文连发,华为云医疗AI低调中崭露头角
- Mac M1 百度网盘客户端无法打开,网络连接不上
- nrf52840蓝牙协议栈主机BLE串口
- froala 的使用
- m4a文件怎么转换成mp3?=
- 谈谈对内存管理子系统的理解
- Fantastic-Matplotlib 第二回
- E-R图、N-S图、PAD图、程序流程图
- 计算机网络第七版(谢希仁)第三章——数据链路层课后习题答案
- 【周赛总结】第196场周赛——全一子矩阵,交换k次的最小整数
- java-操作 Excel
- 什么是值传递,什么是引用传递。为什么说Java中只有值传递。
- 如何进行性能测试的调优
- jdbc mysql api_JDBC---一种用于执行SQL的Java API
- 上海市政府颁布《上海市居住证申办实施细则》
热门文章
- 任正非评华为HR胡玲事件:实名投诉是好现象,支持保护当事人
- 利用前端js获取ip地址
- mybatis小技巧 11.28
- 大数据信息资料采集:影视网站资源数据信息采集爬取
- DELL电脑风扇过大(win10和win11)
- 【HTML/CSS】从放弃到入门-笔记2
- python程序中长下划线怎么打_python中下划线怎么输入
- Hue 后台编辑器 远程命令执行漏洞
- linux开启端口、防火墙操作
- spring Boot 2 运维篇(spring boot程序的打包与部署,多环境开发配置文件的配置,spring boot集成日志框架)