开发者学堂课程【SpringBoot 快速掌握 - 高级应用:RedisTemplate& 序列化机制】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/613/detail/9296
RedisTemplate& 序列化机制
内容介绍:
一、RedisTemplate& 序列化机制过程
二、redis 常见的数据类型分类
三、redis 常见的数据类型测试
一、RedisTemplate& 序列化机制过程
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、值的序列化机制。