当前位置: 首页 > news >正文

13.StringRedisTemplete使用

上一篇说到改变了RedisTemplate的默认序列化器后,在redis中存入Java对象后,在redis中的呈现是:会记录类的字节码

 这也是代码中可以强制装换为对应的java对象的原因:

@Test
void testStudent() {redisTemplate.opsForValue().set("student:100", new Student("小明", 22));Student student = (Student) redisTemplate.opsForValue().get("student:100");System.out.println("student="+student);
}

 存在的问题:

因为每个对象都要存入class,随着对象越来越多也会带来内存额外的开销。

所以,为了节省空间,不会使用json的序列化器来处理value,而是统一使用String序列化器,要求只能存储String类型的key和value,当需要存储java对象时,手动完成对象的序列化和反序列化。

Spring默认提供了一个StringRedisTemplate类,它的key和value的序列化方式默认就是String方式,省去了我们自己定义RedisTemplate过程:

@Autowiredprivate StringRedisTemplate stringRedisTemplate;//json工具ObjectMapper objectMapper = new ObjectMapper();@Testvoid testJava() throws JsonProcessingException {//手动将java对象转成json字符串String studentJson = objectMapper.writeValueAsString(new Student("晓东", 11));//写入一条数据到redisstringRedisTemplate.opsForValue().set("student:200",studentJson);//读取数据String studentJsonStr = stringRedisTemplate.opsForValue().get("student:200");//手动将json数据转成java对象Student student = objectMapper.readValue(studentJsonStr, Student.class);System.out.println("student="+student);}

 

存入单个key-value、key-java对象都是可以的。

操作Hash类型的数据

 @Testvoid testHash() {stringRedisTemplate.opsForHash().put("user:400", "name", "张大大");stringRedisTemplate.opsForHash().put("user:400", "age", "18");//获取key对应所有的hash key valueMap<Object, Object> entries = stringRedisTemplate.opsForHash().entries("user:400");entries.forEach((key, value)-> System.out.println(key+"--"+value));}

这里注意存入hash的value需要时String类型,比如上面的18,不能写数字18,而是要写字符串18。

http://www.lryc.cn/news/421137.html

相关文章:

  • [工具]-gitee+pycharm-配置
  • 中间件是一种在客户端和服务器之间进行通信和处理的软件组件或服务
  • RCE-eval长度限制突破技巧
  • 【黑马】MyBatis
  • oracle创建dblink使得数据库A能够访问数据库B表LMEAS_MFG_FM的数据
  • git config 如何配置用户账户
  • SpringBoot基础(二):配置文件详解
  • Web安全(一)-靶场搭建过程-基于docker
  • 【JavaEE】单例模式和阻塞队列
  • RCE绕过技巧
  • Spring源码解析(31)之事务配置文件解析以及核心对象创建过程
  • win11安装docker报错记录
  • 【vulnhub】CLAMP 1.0.1靶机
  • GPS跟踪环路MATLAB之——数字锁相环
  • docker开发环境搭建-关于数据库的IP是什么
  • loginApi
  • 【RAG检索增强生成】Ollama+AnythingLLM本地搭建RAG大模型私有知识库
  • 【wiki知识库】08.添加用户登录功能--前端Vue部分修改
  • 写给非机器学习人员的 embedding 入门
  • Oracle【plsql编写九九乘法表】
  • ansible安装K8s
  • restful传值
  • Qt自定义TreeWidget,实现展开折叠按钮在右侧,且一条竖直线上对齐
  • 硅步千里:如何入行?——之入行成为软件开发者
  • Sandbox: rsync.samba(80134) deny(1) file-write-create
  • lvs的dr模式综合实践
  • 什么是自然语言处理
  • 快速理解互联网中的常用名词
  • 统计接口调用耗时_黑白名单配置
  • 树莓派4 AV没有视频输出