RedisTemplate&amp 序列化机制|学习笔记

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 RedisTemplate&amp 序列化机制

开发者学堂课程【SpringBoot 快速掌握 - 高级应用:RedisTemplate&amp 序列化机制】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/613/detail/9296


RedisTemplate&amp 序列化机制

内容介绍:

一、RedisTemplate&amp 序列化机制过程

二、redis 常见的数据类型分类

三、redis 常见的数据类型测试


一、RedisTemplate&amp 序列化机制过程

Redis 是一个开源(BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

1.安装 redis,使用 docker。

2.引入 redis 的 starter  

在官方文档中搜索 Spring boot ,在 spring boot 的1.5.12版本中找到所有和 redis有关的 starter 。

redis 就是与数据访问相关的,引入数据访问中的 spring boot starter data redis 这个场景启动器,输入 dependency 引入 starter ,redis 中相应的场景即可启动。

点击可查看引入的内容,此时我们引入了 jedis 客户端。

3.配置 redis

接下来进行引用并测试。进入到配置文件里,指定 redis.host(即指定 刚安装的 Linux redis 的主机地址:118.24.44.169)。

来到测试类中,当我们引入了 redis 场景以后,相当于有了jedis 相关的类,RediAutoconfiguration 就起作用了。redis 的自动配置除了给我们配置一些连接工厂外,还给我们配置了 redisTemplate object object 以及StringRedisTemplate ,相当于加了这两个Redis template,而这两个Redis template 可以用来用来简化 Redis 操作,与之前所学的 JBcv 操作数据库一样,进行操作用时只需要自动输入即可。

由于 redis 连接的操作字符串比较多,所以专门抽取出了一个简化字符串操作的,即 StringRedisTemplate 是用来简化操作 k-v 都是字符串的,redisTemplate是用来简化操作 k-v 都是对象的。


二、redis 常见的数据类型分类

Redis 常见的数据类型有5种

String (字符串)、List (列表)、Set (集合)、Hash (散列)、zSet (有序集合)

StringRedisTemplate

stringRedisTemplate.opsForValue()[String (字符串)]

stringRedisTemplate.opsForList([List (列表)]

stringRedisTemplate.opsForSetO[Se t(集合)]

stringRedisTemplate.opsForHash()[Hash (散列)]

stringRedisTempLate.opsForzSet()[zSet (有序集合)]

redisTemplate

redisTemplate.opsForCluster()

redisTemplate.opsForGco()

redisTemplate.opsForHash()

redisTemplate.opsForHyperLogLog()

redisTemplate.opsForList()

redisTemplate.opsForSet()

redisTemplate.opsForValue()  

redisTemplate.opsForZSet()


三、redis 常见的数据类型测试

举例说明,以 StringTemplate 为例

(1)stringRedisTemplate.opsForValue()

用 stringRedisTemplate.opsForValue() 来操作字符串,append 相当于 redis 命令里的 append 。

(2)给 redis 中保存了一个数据

@Test

public void teste1O4

stringRedisTemplate.opsForValue().append( k"msg",S:"he11o");

}

运行成功后,进行观察,发现 message 里面有了信息 hello,也可以进行更改并且保存。

(3)将数据进行读取

stringRedisTemplate.opsForValue().get("msg" ):

System.out.println(msg);

运行后发现数据为 hello world,与理论效果一致。

(4)测试列表,并未列表中放置内容stringRedisTemplate.opsForList().leftPush("mylist","1");stringRedisTemplate.opsForList().leftPush("mylist","2");

运行并测试,mylist中含有数据1、2

(5)测试保存对象 redisTemplate.opsForValue().set

使用:给某一个 key 设置一个值,假设为 emp-01,用 employeeempById 查出其值填入后运行,发现错误。

需要将默认序列转为可序列化的类,但是 employee 这个类是不能自动序列化的,就需要我们将它进行序列化(采用 Serializable)。

再次运行,发现存有序列化的数据。默认保存对象使用 JDK 序列化机制,序列化后的数据保存到 redis 中,我们习惯把数据以 json 方式保存,则有两种办法实现这个功能,第一种是自己把数据转换为j son,第二种则是利用 redis 里默认的序列化规则。

核心代码:

@Test

public void teste2(

Employee empById = employeeMapper.getEmpById

redisTemplate.opsForValue().set("emp-e1" , empById);

}

运行以后发现报错,提示需要一个可序列化的类,但是 Employee 并不是序列化后的,故需要对 Employee 序列化。

public class Employee implements Serializab1ei

再次运行,发现有了数据,但是是序列化的结果,则可以将数据以 Json 形式保存,可以有两种方式完成,

第一种是自己将代码转换为 json,在此不进行赘述,

第二种则是代码利用 redis 里默认的序列化规则,点进之后发现很多 key、值的序列化机制。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
存储 Java 数据库
|
Java Maven
JAVA反序列化学习笔记4.Commons Collections2分析
JAVA反序列化学习笔记4.Commons Collections2分析
|
1天前
|
存储 缓存 安全
🌟Java零基础:深入解析Java序列化机制
【10月更文挑战第20天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
9 3
|
2月前
|
JSON NoSQL Java
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
这篇文章介绍了在Java中使用Redis客户端的几种方法,包括Jedis、SpringDataRedis和SpringBoot整合Redis的操作。文章详细解释了Jedis的基本使用步骤,Jedis连接池的创建和使用,以及在SpringBoot项目中如何配置和使用RedisTemplate和StringRedisTemplate。此外,还探讨了RedisTemplate序列化的两种实践方案,包括默认的JDK序列化和自定义的JSON序列化,以及StringRedisTemplate的使用,它要求键和值都必须是String类型。
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
|
4月前
RedisTemplate序列化的问题
RedisTemplate序列化的问题
32 1
|
6月前
|
存储 JSON NoSQL
[Redis]——RedisTemplate的两种序列化方式
[Redis]——RedisTemplate的两种序列化方式
307 0
|
6月前
|
存储 JSON 缓存
Java 序列化机制详解
Java 序列化机制是一种将对象转换为字节流的过程,以便在网络上传输或保存到文件中,并能在需要时将字节流还原为对象。这一机制通过实现 `java.io.Serializable` 接口来实现,同时涉及到一些关键概念和注意事项。
106 0
Java 序列化机制详解
|
安全 Java
JAVA反序列化学习笔记3.Commons Collections5分析
JAVA反序列化学习笔记3.Commons Collections5分析
|
安全 Java
JAVA反序列化学习笔记2.Commons Collections1分析
JAVA反序列化学习笔记2.Commons Collections1分析
|
缓存 NoSQL Java
SpringBoot自定义redisTemplate的key和value的序列化方式
SpringBoot自定义redisTemplate的key和value的序列化方式
158 0