【Springboot】第六章 SpringBoot 集成 Redis

第六章 SpringBoot 集成 Redis

博客:
【Redis】五大数据类型
【Redis】概述以及启动Redis并进入Redis


Redis : 一个NoSQL数据库, 常用作缓存使用 (cache)
Redis的数据类型: string , hash ,set ,zset , list

Redis是一个中间件: 是一个独立的服务器。
java中著名的客户端: Jedis , lettuce , Redisson

Spring、SpringBoot中有 一个RedisTemplateStringRedisTemplate)处理和redis交互 。

Redis推荐都是在Linux服务器上搭建的,基于Linux学习。

创建一个模块

选择依赖项:
【Springboot】第六章 SpringBoot 集成 Redis_第1张图片
pom.xml:
在这里插入图片描述
【Springboot】第六章 SpringBoot 集成 Redis_第2张图片
RedisTemplate 使用的 lettuce 客户端库
data-redis使用的 lettuce 客户端库
在程序中使用RedisTemplate类的方法 操作redis数据, 实际就是调用的lettuce 客户端的中的方法。

配置文件指定redis的信息:
【Springboot】第六章 SpringBoot 集成 Redis_第3张图片
valueOperations
【Springboot】第六章 SpringBoot 集成 Redis_第4张图片
创建controller,添加数据(addString),获取数据(getk):
在这里插入图片描述
操作redis中String类型的数据,先获取valueOperations对象:
【Springboot】第六章 SpringBoot 集成 Redis_第5张图片
运行主函数,使用postman工具进行测试:
添加数据到redis:
【Springboot】第六章 SpringBoot 集成 Redis_第6张图片
从redis获取数据:
【Springboot】第六章 SpringBoot 集成 Redis_第7张图片
用云服务器端查看:
在这里插入图片描述
在这里插入图片描述
在redis客户端查看:
【Springboot】第六章 SpringBoot 集成 Redis_第8张图片
使用Rest风格:
RedisController中声明@Resource private StringRedisTemplate stringRedisTemplate;
【Springboot】第六章 SpringBoot 集成 Redis_第9张图片
【Springboot】第六章 SpringBoot 集成 Redis_第10张图片
【Springboot】第六章 SpringBoot 集成 Redis_第11张图片
【Springboot】第六章 SpringBoot 集成 Redis_第12张图片

对比 StringRedisTemplate 和 RedisTemplate

StringRedisTemplate : 把k,v 都是作为String处理, 使用的是String的序列化 ,已经序列化, 可读性好
RedisTemplate : 把k,v 经过了序列化存到redis。 k,v 是序列化的内容, 不能直接识别, 默认使用的jdk序列化, 可以修改为前提的序列化。
【Springboot】第六章 SpringBoot 集成 Redis_第13张图片

Redis序列化

  • 序列化:把对象转化为可传输的字节序列过程称为序列化。
  • 反序列化:把字节序列还原为对象的过程称为反序列化。

为什么需要序列化
序列化最终的目的是为了使对象可以跨平台存储和进行网络传输。

进行跨平台存储和网络传输的方式就是IO,而IO支持的数据格式就是字节数组。必须在把对象转成字节数组的时候就制定一种规则(序列化),那么从IO流里面读出数据的时候再以这种规则把对象还原回来(反序列化)。

什么情况下需要序列化
凡是需要进行“跨平台存储”和”网络传输”的数据,都需要进行序列化。
本质上存储网络传输都需要经过把一个对象状态保存成一种跨平台识别的字节格式,然后其他的平台才可以通过字节信息解析还原对象信息。

序列化的方式
序列化只是一种拆装组装对象的规则,这种规则多种多样。
比如现在常见的序列化方式有:

  • JDK(方便,小项目,性能比较差,用的比较多,不支持跨语言)、
  • JSON(高并发项目,跨语言)
  • XML(跨语言)
  • Hessian
  • Kryo(高并发,性能比较好,速度快,适用java语言,不支持跨语言)
  • Thrift
  • Protofbuff
(对象)Student( name=zs, age=20) ----> {
      "name":"zs", "age":20 }(JSON)
  • java的序列化: 把java对象转为byte[], 二进制数据
  • json序列化:json序列化功能将对象转换为 JSON 格式或从 JSON 格式转换对象。

例如把一个Student对象转换为JSON字符串{“name”:“李四”, “age”:29} ),反序列化(将JSON字符串 {“name”:“李四”, “age”:29} 转换为Student对象)

【Springboot】第六章 SpringBoot 集成 Redis_第14张图片
设置RedisTemplate 的序列化机制:
设置key(setKeySerializer)或者value(setValueSerializer)的序列化方式
【Springboot】第六章 SpringBoot 集成 Redis_第15张图片
在存取值之前,设置序列化
【Springboot】第六章 SpringBoot 集成 Redis_第16张图片
运行主程序在postman中进行测试:
【Springboot】第六章 SpringBoot 集成 Redis_第17张图片
【Springboot】第六章 SpringBoot 集成 Redis_第18张图片

使用json 序列化, 把java对象转为json存储

实体类:

生成序列号
需要设置一下:
【Springboot】第六章 SpringBoot 集成 Redis_第19张图片
【Springboot】第六章 SpringBoot 集成 Redis_第20张图片
【Springboot】第六章 SpringBoot 集成 Redis_第21张图片
【Springboot】第六章 SpringBoot 集成 Redis_第22张图片
【Springboot】第六章 SpringBoot 集成 Redis_第23张图片
【Springboot】第六章 SpringBoot 集成 Redis_第24张图片
【Springboot】第六章 SpringBoot 集成 Redis_第25张图片
json反序列化:
【Springboot】第六章 SpringBoot 集成 Redis_第26张图片
【Springboot】第六章 SpringBoot 集成 Redis_第27张图片

你可能感兴趣的:(#,Spring,boot,#,Spring学习,redis,spring,boot,java)