第六章 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);