当前位置: 首页 > 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。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 巧用Array.forEach:简化循环与增强代码可读性;Array.forEach怎么用;面对大量数据时怎么提高Array.forEach的性能
  • C语言:字符函数,字符串函数
  • 《计算机网络 - 自顶向下方法》阅读笔记
  • 28. Hibernate 中的常见坑
  • webassembly初探
  • llama3.1本地部署方式
  • Java 中的泛型 集合(List,Set) Map
  • opencascade AIS_Line源码学习直线节点
  • 前端响应式布局解决方案分享
  • One-hot编码
  • 2024视频编辑网站微服务
  • android13去掉安全模式 删除安全模式
  • kafka 将log4j的项目升级到log4j2
  • 把外部资源利用到极致 如何利用大公司的dll插件 大公司的应用有大量的dll 还有windows系统dll
  • java自定义日志注解
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 230. Kth Smallest Element in a BST
  • 30秒的PHP代码片段(1)数组 - Array
  • axios 和 cookie 的那些事
  • Codepen 每日精选(2018-3-25)
  • Facebook AccountKit 接入的坑点
  • gf框架之分页模块(五) - 自定义分页
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Laravel 中的一个后期静态绑定
  • leetcode388. Longest Absolute File Path
  • Redis 懒删除(lazy free)简史
  • Redis字符串类型内部编码剖析
  • Sublime text 3 3103 注册码
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • windows下如何用phpstorm同步测试服务器
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 深入 Nginx 之配置篇
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 硬币翻转问题,区间操作
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • # windows 安装 mysql 显示 no packages found 解决方法
  • #162 (Div. 2)
  • #565. 查找之大编号
  • #AngularJS#$sce.trustAsResourceUrl
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (20050108)又读《平凡的世界》
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (排序详解之 堆排序)
  • (十一)手动添加用户和文件的特殊权限
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (一) storm的集群安装与配置
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (总结)Linux下的暴力密码在线破解工具Hydra详解