Redis系统学习之SpringBoot集成Redis操作API(集成SpringDataRedis及其分析)
SpringDataRedis调用Redis底层解读
- 在SpringBoot2.X之前还是直接使用的官方推荐的Jedis连接的Redis
 - 在2.X之后换为了lettuce
 
- Jedis:采用直接连接,多线程操作不安全,如果想要避免不安全,使用Jedis pool连接池;BIO
 - lettuce:底层采用Netty,实例可以在多个线程之间共享,不存在线程不安全的情况,可以减少线程数量;NIO
 
SpringBoot整合Redis(源码分析)
- SpringBoot所有的配置类,都有一个自动配置类
 - 自动配置类都会绑定一个properties文件
 - 在源码中找到Spring.factories
 
- 在里面搜索redis,找到AutoConfiguration
 
- 按ctrl+点击进入类
 
- 找到redisproperties.class
 
- ctrl+点击进入
 
- 里面就是全部的redis相关配置了,先简单看一下,其他的后面再说
 
- 默认注入的Bean
 
- 但是默认的redisTemplate是存在一些问题的,他的key是Object类型的,但是我们期望的一般key都是String类型的这就需要强制类型转换了,所以上面提出了,可以自己定义RedisTemplate
 - 在配置配置文件时,如果需要配置连接池,就采用lettuce的,不要直接配置Redis的,配置了也不生效
 - 查看注入时的RedisConnectionFactory
 
- 他是存在两个子类的,分别是JedisConnectionFactory和LettuceConnectionFactory
 
- 为什么说直接JedisConnectionFactory不生效呢?是因为类中的很多依赖类都是不存在的
 
- 全都是爆红线的,而lettuceConnectionFactory中的依赖就是全部存在的
 
- 所以配置时,采用lettuce的
 
- 不要直接配置jedis的
 
SpringBoot整合Redis(配置)
yml
- 拷贝properties创建一个yml格式的配置文件, 我还是很喜欢yml的
 
spring:
redis:
host: localhost
port: 6379
Maven
在项目创建的时候选择,如果没有选择就添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
编写测试
- 打开SpringBoot默认创建的测试类
 
- redisTemp操作数据类型的方法都是以opsFor开头,后面是类型
 
- 比如opsForValue就是操作字符串的
 - 然后后面的应用就和前面写的API一样了
 
- 常用的操作可以直接点就可以了
 - 关于事物的
 
redisTemplate.unwatch();
redisTemplate.watch("key");
redisTemplate.multi();
redisTemplate.discard();
redisTemplate.exec();
关于数据库的操作需要获取链接后使用连接对象操作
RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
connection.flushAll();
connection.flushDb();
connection.close();
测试代码及其执行结果
package co.flower.redis02springboot; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisTemplate; @SpringBootTest
class Redis02SpringbootApplicationTests { /**
* 我居然直接就指定了泛型 RedisTemplate<String,Object>结果就直接报错了,删除泛型后成功
*/
@Autowired
private RedisTemplate redisTemplate; @Test
void contextLoads() {
// 英文测试
redisTemplate.opsForValue().set("name","xiaojiejie");
System.out.println(redisTemplate.opsForValue().get("name"));
// 中文测试
redisTemplate.opsForValue().set("name","小姐姐");
System.out.println(redisTemplate.opsForValue().get("name"));
} } 执行结果,SpringBoot的启动加载和结束销毁没有粘贴
/***SpringBootStart****/
xiaojiejie
小姐姐
/***SpringBootStop*****/
作者:彼岸舞
时间:2021\05\05
内容关于:Redis
本文属于作者原创,未经允许,禁止转发
Redis系统学习之SpringBoot集成Redis操作API(集成SpringDataRedis及其分析)的更多相关文章
- Redis 系统学习目录
		
Redis 系统学习目录 1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8. ...
 - Redis系统学习 五、管理
		
在最后一章里,我们将集中谈论Redis运行中的一些管理方面内容.这是一个不完整的Redis管理指南,我们将会回答一些基本的问题,初接触Redis的新用户可能会很感兴趣. 配置(Configuratio ...
 - Redis系统学习 三、使用数据结构
		
前言:上一章,简单介绍了5种数据结构,并给出了一些用例.现在是时候来看看一些高级的,但依然很常见的主题和设计模式 一.大O表示法(Big O Notation ) 常用时间复杂度O(1)被认为是最快速 ...
 - redis(七)---- SpringBoot和redis整合
		
SpringBoot和Redis整合非常简单 添加pom依赖 <dependency> <groupId>org.springframework.boot</groupI ...
 - Spark学习摘记 —— Pair RDD行动操作API归纳
		
本文参考 参考<Spark快速大数据分析>动物书中的第四章"键值对操作",本篇是对RDD转化操作和行动操作API归纳的最后一篇 RDD转化操作API归纳:https:/ ...
 - Spark学习摘记 —— Pair RDD转化操作API归纳
		
本文参考 参考<Spark快速大数据分析>动物书中的第四章"键值对操作",由于pair RDD的一些特殊操作,没有和前面两篇的API归纳放在一起做示例 前面的几个api ...
 - Redis系统学习 二、数据结构
		
一.字符串 1.在Redis里,字符串是最基本的数据结构.当你在思索着关键字-值对时,你就是在死锁着字符串数据结构.不要被名字给搞混了. 常见实例: set users:leto " ...
 - Redis系统学习 四、超越数据结构
		
5种数据结构组成了Redis的基础,其他没有关联特定数据结构的命令也有很多.我们已经看过一些这样的命令:info,select,flushdb,multi,exec,discard,watch,和ke ...
 - Redis系统学习 一、基础知识
		
1.数据库 select 1 select 0 2.命令.关键字和值 redis不仅仅是一种简单的关键字-值型存储,从其核心概念来看,Redsi的5种数据结构中的每一个都至少有一个关键字和一个值.在 ...
 
随机推荐
- 大数据开发-Spark-Streaming处理数据到mysql
			
前面一篇讲到streamin读取kafka数据加工处理后写到kafka数据,大数据开发-Spark-开发Streaming处理数据 && 写入Kafka是针对比如推荐领域,实时标签等场 ...
 - 华硕主板开机无法进入BIOS
			
先说下本人情况,自己组装的台式机,华硕TUF B550M-Plus (wifi)的主板,CPU是锐龙 4650G(带核显),其他配件不涉及问题就不提了. 原来用独显的时候,没啥问题,开机有品牌logo ...
 - MongoDB 在Node中的应用
			
转: MongoDB 在Node中的应用 文章目录 一 .什么是 MongoDB? 二.小Demo 三.Demo 增删改查 3.1 新增 3.2 查询 3.2.1 查询所有 [{},{}] 找不到返回 ...
 - 《C++ Primer》笔记 第9章 顺序容器
			
顺序容器类型 类型 解释 vector 可变大小数组.支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢 deque 双端队列.支持快速随机访问.在头尾位置插入.删除速度很快 list 双向链表 ...
 - 【python+selenium的web自动化】- 控制浏览器的常用操作
			
如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html 前言  本文主要介绍se ...
 - redis集群(redis_cluster)
			
一.为什么要使用redis-cluster? 1.数据并发问题 2.数据量太大 新浪微博作为世界上最大的redis存储,就超过1TB的数据,去哪买这么大的内存条?各大公司有自己的解决方案,推出各自的集 ...
 - url里bookmark是什么意思
			
<a rel="bookmark" href="abc.com"> 点击查看 </a> rel 这个属性的全称是 relationsh ...
 - BuaacodingT651 我知道你不知道圣诞节做什么 题解(逻辑)
			
题目链接 我知道你不知道圣诞节做什么 解题思路 第一句话:x,y不都为质数. 第二句话:对于xy=t,存在唯一一种x+y使得x,y不都为质数. 第三句话:对于x+y=s,存在唯一一种t=xy使得对于任 ...
 - Django分页器组建
			
class Pagination(object): def __init__(self,current_page,all_count,per_page_num=2,pager_count=11): & ...
 - python使用try...except语句处理异常
			
try....except语句语法格式: try: <语句> except(异常名称): <语句> 注意在except语句中的括号中的异常名称是可以省略的,当省略时就是全捕捉 ...