springboot整合redis以及springboot使用redis作为缓存
1.java连接redis
创建一个简单的maven项目
在pom.xml文件钟引入jedis依赖
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.0</version>
</dependency>
</dependencies>
java代码操作redis
首先要确保虚拟机中redis开启,并且配置文件redis.conf文件中连接为bind 0.0.0.0,端口号为6379,并且防火墙关闭,还有清除干净redis库中的数据方便操作。
先在数据库中放入(set)key值为k1,value值为v1的数据,然后读取(get)key值为k1的数据打印输出,然后再存入(hset)hash类型的数据,此时的name和text就会当作field字段存入数据库中,获取key中所有的field的value值可以用hgetAll,flushAll是将数据库中所有数据库数据信息清除,mset和mget是存入和读取多个key,value。
测试结果
虚拟机中可以看到只剩下两个key值
2.springboot整合redis
引入redis的启动依赖------>spring-boot-starter-data-redis
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--引入lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
然后是连接redis数据库,在application.properties配置文件里
这里要把刚刚操作的数据都清楚干净flushall,然后在单元测试中测试
操作StringRedisTemplate
1操作String类型的
测试成功
2.1操作Hash类型的
2.2操作RedisTemplate
它的key和value可以存放Object类型,那么它的key和value默认采用的序列化方式为JDK序列化方式。一般我们需要
为key和value指定序列化方式。
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new StringRedisSerializer());
redis可视化工具结果没有乱码
2.3连接集群
哨兵模式
application.properties配置文件里写
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=192.168.71.3:26379
修改哨兵配置文件sentinel.conf
测试
去中心化模式
测试
3.springboot使用redis作为缓存
作用: 为了减少对数据库的访问频率。从而提高项目的性能。
什么样的数据适合放入缓存中。
1. 查询频率高
2. 修改频率低
3. 数据安全行要求低的
创建简单的springboot工程
pom.xml引入相关依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
</dependencies>
application.properties配置文件内容
实体
mapper
service
controller
主启动类一定要加MapperScan注解
开启redis哨兵模式
启动测试
第一次查询useid为1的数据
清除控制台
再访问一次
没有走数据库
redis缓存中已经有了这条数据
测试成功!!!!