Java redis存Map对象类型数据怎么实现
作者:慢热型
时间:2023-04-26
来源:互联网
浏览:0
背景描述项目需要将设备采集到的最新经纬度信息存入redis缓存中,方便及时查询检索。考虑到根据检索条件不同,所查询的设备不同。采取将数据以map类型存入redis缓存,在此记录一下。实体类注:一定要实现序列化接口父类publicclassRedisimplementsSerializable{privateStringname;privateIntegerage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.nam
背景描述
项目需要将设备采集到的最新经纬度信息存入redis缓存中,方便及时查询检索。考虑到根据检索条件不同,所查询的设备不同。采取将数据以map类型存入redis缓存,在此记录一下。
实体类
注:一定要实现序列化接口
父类
public class Redis implements Serializable{
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}子类
import java.io.Serializable;
public class RedisCustom extends Redis {
private String stuCode;
public String getStuCode() {
return stuCode;
}
public void setStuCode(String stuCode) {
this.stuCode = stuCode;
}
}方法1°
redisTemplate.opsForHash()
示例代码
@Controller
@RequestMapping("/redis")
public class RedisController {
@Autowired
private RedisTemplate redisTemplate;
/**
* @param
* @return
*/
@RequestMapping(value = "/setRedisData", method = RequestMethod.GET)
@ResponseBody
public Map setRedisData() {
RedisCustom redis1 = new RedisCustom();
redis1.setName("小明");
redis1.setAge(12);
redis1.setStuCode("36");
RedisCustom redis2 = new RedisCustom();
redis2.setName("小红");
redis2.setAge(11);
redis2.setStuCode("24");
//构造存入redis中的map
Map redisDataMap = new HashMap();
redisDataMap.put(redis1.getName(), redis1);
redisDataMap.put(redis2.getName(), redis2);
//存入redis
redisTemplate.opsForHash().putAll("redisTest",redisDataMap);
//获取缓存内容
Map resultMap = redisTemplate.opsForHash().entries("redisTest");
//List reslutMapList = redisTemplate.opsForHash().values("redisTest");
//Set resultMapSet = redisTemplate.opsForHash().keys("redisTest");
//RedisCustom value = (RedisCustom)redisTemplate.opsForHash().get("redisTest","小明");
return ResponseData.success(resultMap);
}
} 结果

参考
https://www.yisu.com/article/246815.htm
方法2°
将对象转成byte[]
序列化及反序列化工具类
import java.io.*;
/**
* 序列化及反序列化工具类
*/
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;
}
}示例代码
@Controller
@RequestMapping("/redis")
public class RedisController {
/**
* @param
* @return
*/
@RequestMapping(value = "/setRedisData", method = RequestMethod.GET)
@ResponseBody
public Map setRedisData() {
RedisCustom redis1 = new RedisCustom();
redis1.setName("小明");
redis1.setAge(12);
redis1.setStuCode("36");
RedisCustom redis2 = new RedisCustom();
redis2.setName("小红");
redis2.setAge(11);
redis2.setStuCode("24");
//构造存入redis中的map
Map redisDataMap = new HashMap();
redisDataMap.put(redis1.getName(), redis1);
redisDataMap.put(redis2.getName(), redis2);
//连接redis
Jedis redis = new Jedis("xx.xx.xxx.xx", 6379);
redis.auth("xxxxxxxxxxx");
//存
byte[] personByte = SerializeObjectTool.serialize(redisDataMap);
redis.set("redisData".getBytes(), personByte);
//取
byte[] byt = redis.get("redisData".getBytes());
Object obj = SerializeObjectTool.unserizlize(byt);
Map redisData = (Map) obj;
return ResponseData.success(redisData);
}
}
作者最新文章
网易2026年Q2财报:营收301亿元,游戏收入增10%,三款重点新游披露进展
2026-09-08 17:51
PDF怎么添加页码?页码位置和起始页怎么设置?
2026-09-03 09:11
图片文件怎么转换成PDF?多张图片如何按顺序合成?
2026-09-02 19:33
CorelDRAW绘制正弦曲线的两种方法:贝塞尔工具与变形工具
2026-09-02 16:08
Excel工作表制作教程:设计易填写、易统计的业务表
2026-09-02 12:11
上一篇:
Java怎么集成presto查询
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















