关于java:动力节点王妈妈Springboot教程笔记六Redis

41次阅读

共计 1815 个字符,预计需要花费 5 分钟才能阅读完成。

第六章 Redis

官网下载地址

能源节点 springboot 材料

视频观看地址

https://www.bilibili.com/vide…

Redis:一个 NoSQL 数据库,罕用作缓存应用(cache)

Redis 的数据类型:string , hash ,set ,zset , list

Redis 是一个中间件:是一个独立的服务器。

java 中驰名的客户端:Jedis,lettuce,Redisson,Spring,SpringBoot 中有一个 RedisTemplate(StringRedisTemplate),解决和 redis 交互

6.1 配置 Windows 版本的 redis

Redis-x64-3.2.100.rar 解压缩到一个非中文的目录

redis-server.exe:服务端,启动后,不要敞开

redis-cli.exe:客户端,拜访 redis 中的数据

redisclient-win32.x86_64.2.0.jar : Redis 图形界面客户端

执行形式:在这个文件所在的目录,执行 java -jar redisclient-win32.x86_64.2.0.jar

RedisTemplate 应用的 lettuce 客户端库

<!--redis 起步依赖:间接在我的项目中应用 RedisTemplate(StringRedisTemplate)-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

data-redis 应用的 lettuce 客户端库

在程序中应用 RedisTemplate 类的办法 操作 redis 数据,理论就是调用的 lettuce 客户端的中的办法

6.2 比照 StringRedisTemplate 和 RedisTemplate

StringRedisTemplate:把 k,v 都是作为 String 解决,应用的是 String 的序列化,可读性好

RedisTemplate:把 k,v 通过了序列化存到 redis。k,v 是序列化的内容,不能间接辨认.
默认应用的 jdk 序列化,能够批改为前提的序列化

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

反序列化:把字节序列还原为对象的过程称为反序列化。

为什么须要序列化?

序列化最终的目标是为了对象能够跨平台存储,和进行网络传输。而咱们进行跨平台存储和网络传输的形式就是 IO,而咱们的 IO 反对的数据格式就是字节数组。咱们必须在把对象转成字节数组的时候就制订一种规定(序列化),那么咱们从 IO 流外面读出数据的时候再以这种规定把对象还原回来(反序列化)。

什么状况下须要序列化?

通过下面我想你曾经晓得了但凡须要进行“跨平台存储”和”网络传输”的数据,都须要进行序列化。

实质上存储和网络传输 都须要通过 把一个对象状态保留成一种跨平台辨认的字节格局,而后其余的平台才能够通过字节信息解析还原对象信息。

序列化的形式

序列化只是一种拆装组装对象的规定,那么这种规定必定也可能有多种多样,比方当初常见的序列化形式有:

JDK(不反对跨语言)、JSON、XML、Hessian、Kryo(不反对跨语言)、Thrift、Protofbuff、
Student(name=zs, age=20) —- {“name”:“zs”,“age”:20}

java 的序列化:把 java 对象转为 byte[], 二进制数据

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

设置 key 或者 value 的序列化形式

// 应用 RedisTemplate,在存取值之前,设置序列化
// 设置 key 应用 String 的序列化
redisTemplate.setKeySerializer(new StringRedisSerializer());

// 设置 value 的序列化
redisTemplate.setValueSerializer(new StringRedisSerializer());

redisTemplate.opsForValue().set(k,v);

正文完
 0