当前位置: 首页 > 后端技术 > Java

PowerNode-王妈妈Springboot教程笔记(六)Redis

时间:2023-04-01 16:26:53 Java

第六章Redis官方下载地址Powernodespringboot资料视频观看地址https://www.bilibili.com/video...Redis:一个NoSQL数据库,常用的Redis用于缓存(cache)的数据类型:string、hash、set、zset、listRedis是一个中间件:它是一个独立的服务器。java中著名的客户端:Jedis、lettuce、Redisson、Spring,SpringBoot中有一个RedisTemplate(StringRedisTemplate),用于处理与redis的交互6.1配置Windows版本redisRedis-x64-3.2.100.rar解压到非中文目录redis-server.exe:服务端,启动后不要关闭redis-cli.exe:客户端,访问redis中的数据redisclient-win32.x86_64.2.0.jar:Redis图形界面客户端执行方式:该文件所在目录,executejava-jarredisclient-win32.x86_64.2.0.jarRedisTemplateusedlettuceclientlibraryorg直接在项目中。springframework.bootspring-boot-starter-data-redisdata-redis使用的lettuce客户端库在程序中使用RedisTemplate类的方法操作redis数据,这其实就是调用的lettuce客户端中方法6.2比较StringRedisTemplate和RedisTemplateStringRedisTemplate:把k和v当成String,使用String序列化,可读性好RedisTemplate:序列化后保存k和v到redis。k、v为序列化内容,无法直接识别。默认使用的jdk序列化可以修改为premissionserialization序列化:将一个对象转换成可传输的字节序列的过程称为序列化。反序列化:将字节序列恢复为对象的过程称为反序列化。为什么需要序列化?序列化的最终目的是让对象可以跨平台存储,通过网络传输。而我们跨平台存储和网络传输的方式是IO,我们IO支持的数据格式是字节数组。我们必须在将对象转换成字节数组的时候制定一个规则(序列化),那么当我们从IO流中读取数据时,我们会根据这个规则将对象还原回来(反序列化)。什么时候需要序列化?通过以上,我想你已经知道,所有需要“跨平台存储”和“网络传输”的数据都需要序列化。本质上,无论是存储还是网络传输,都需要将对象的状态以跨平台可识别的字节格式保存,然后其他平台可以通过字节信息解析和还原对象信息。序列化方法序列化只是对象拆装的一种规则,所以这种规则也可能是多种多样的。比如常见的序列化方式有:JDK(不支持跨语言)、JSON、XML、Hessian、Kryo(不支持跨语言)、Thrift、Protofbuff、Student(name=zs,age=20)——---{"name":"zs","age":20}javaserialization:JavaobjectConverttobyte[],binarydatajsonserialization:json序列化函数将对象转换为JSON格式或从JSON格式转换。比如将一个Student对象转成JSON字符串{"name":"李四","age":29}),反序列化(将JSON字符串转换成{"name":"李四","age":29}ConverttoStudentobject)设置key或value的序列化方式//使用RedisTemplate,在访问value之前设置序列化//SetkeySerializationusingStringredisTemplate.setKeySerializer(newStringRedisSerializer());//设置value的序列化redisTemplate.setValueSerializer(newStringRedisSerializer());redisTemplate.opsForValue().set(k,v);