在聊 SpringBoot整合redis之前,我们先看看 Redis推荐的java连接开发工具:jedis知其然并知其所以然,授人以渔! 学习不能急躁,慢慢来会很快!

Jedis

什么是Jedis 是 Redis 官方推荐的 java连接开发工具! 使用Java 操作Redis 中间件!如果你要使用 java操作redis,那么一定要对Jedis 十分的熟悉!

测试:
1、导入对应的依赖

<!--导入jedis的包-->
<dependencies><!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.2.0</version></dependency><!--fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency>
</dependencies>

2、编码测试:

  • 连接数据库
  • 操作命令
  • 断开连接!
import redis.clients.jedis.Jedis;public class TestPing {public static void main(String[] args) {// 1、 new Jedis 对象即可Jedis jedis = new Jedis("127.0.0.1",6379);// jedis 所有的命令就是我们之前学习的所有指令!所以之前的指令学习很重要!System.out.println(jedis.ping());}
}

常用的API

  • String
  • List
  • Set
  • Hash
  • Zset

所有的api命令,就是我们对应的上面学习的指令,一个都没有变化!
事务

public class TestTX {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1", 6379);jedis.flushDB();JSONObject jsonObject = new JSONObject();jsonObject.put("hello","world");jsonObject.put("name","xiaohan");// 开启事务Transaction multi = jedis.multi();String result = jsonObject.toJSONString();// jedis.watch(result)try {multi.set("user1",result);multi.set("user2",result);int i = 1/0 ; // 代码抛出异常事务,执行失败!multi.exec(); // 执行事务!} catch (Exception e) {multi.discard(); // 放弃事务e.printStackTrace();} finally {System.out.println(jedis.get("user1"));System.out.println(jedis.get("user2"));jedis.close(); // 关闭连接}}
}

说了这么久该进入正题啦!

SpringBoot整合

SpringBoot 操作数据:spring-data jpa jdbc mongodb redis!

SpringData 也是和 SpringBoot 齐名的项目!

说明: 在 SpringBoot2.x 之后,原来使用的jedis 被替换为了 lettuce?

jedis : 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用 jedis pool 连接 池! 更像 BIO 模式

lettuce : 采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据 了,更像 NIO 模式

源码分析:

@Bean
@ConditionalOnMissingBean(name = "redisTemplate")
// 我们可以自己定义一个redisTemplate来替换这个默认的!public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactoryredisConnectionFactory)throws UnknownHostException {// 默认的 RedisTemplate 没有过多的设置,redis 对象都是需要序列化!// 两个泛型都是 Object, Object 的类型,我们后使用需要强制转换 <String, Object>RedisTemplate<Object, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);return template;
}
@Bean
@ConditionalOnMissingBean {// 由于 String 是redis中最常使用的类型,所以说单独提出来了一个bean!public StringRedisTemplate stringRedisTemplate(RedisConnectionFactoryredisConnectionFactory)throws UnknownHostException {StringRedisTemplate template = new StringRedisTemplate();template.setConnectionFactory(redisConnectionFactory);return template;
}

整合测试一下

1、导入依赖

<!-- 操作redis -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2、配置连接

# 配置redis
spring.redis.host=127.0.0.1
spring.redis.port=6379

3、测试!

@SpringBootTest
class Redis02SpringbootApplicationTests {@Autowired
private RedisTemplate redisTemplate;@Test
void contextLoads() {// redisTemplate            操作不同的数据类型,api和我们的指令是一样的// opsForValue             操作字符串 类似String// opsForList              操作List 类似List// opsForSet// opsForHash// opsForZS// opsForGeo// opsForHyperLogLog// 除了进本的操作,我们常用的方法都可以直接通过redisTemplate操作,比如事务,和基本的CRUD// 获取redis的连接对象// RedisConnection connection =// redisTemplate.getConnectionFactory().getConnection();// connection.flushDb();// connection.flushAll();redisTemplate.opsForValue().set("mykey","我是小涵");System.out.println(redisTemplate.opsForValue().get("mykey"));}
}


关于对象的保存:

我们来编写一个自己的 RedisTemplete

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {// 这是我给大家写好的一个固定模板,大家在企业中,拿去就可以直接使用!
// 自己定义了一个 RedisTemplate@Bean
@SuppressWarnings("all")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory
factory) {// 我们为了自己开发方便,一般直接使用 <String, Object>RedisTemplate<String, Object> template = new RedisTemplate<String,Object>();template.setConnectionFactory(factory);// Json序列化配置Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = newJackson2JsonRedisSerializer(Object.class);ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);// String 的序列化StringRedisSerializer stringRedisSerializer = newStringRedisSerializer();// key采用String的序列化方式template.setKeySerializer(stringRedisSerializer);// hash的key也采用String的序列化方式template.setHashKeySerializer(stringRedisSerializer);// value序列化方式采用jacksontemplate.setValueSerializer(jackson2JsonRedisSerializer);// hash的value序列化方式采用jacksontemplate.setHashValueSerializer(jackson2JsonRedisSerializer);template.afterPropertiesSet();return template;}
}

所有的redis操作,其实对于java开发人员来说,十分的简单,更重要是要去理解redis的思想和每一种数 据结构的用处和作用场景!

其实redis的整合是很简单的有没有,很多都是复制粘贴的,然而授人予鱼不如授人予渔,如果这篇文章对你有益,别忘了关注点赞转发哦!

redis进阶之SpringBoot整合Redis(五)相关推荐

  1. 【Java进阶】SpringBoot整合Redis

    SpringBoot整合Redis SpringBoot 操作数据:spring-data jpa jdbc mongodb redis SpringData 也是和 SpringBoot 齐名的项目 ...

  2. SpringBoot整合Redis - @Cacheable 和 RedisTemplate

    对之前网站做了一些很简单的优化,给用户列表加了一个分页功能. 分页就更好考虑加载速度,如果换一页就要等几秒,那体验感是非常差的. 因此想到了加一个redis缓存. springboot整合redis有 ...

  3. 不要再找了,Java操作Redis、Spring整合Redis及SpringBoot整合Redis这里都有

    文章开始之前先抛出一个问题:Jedis.Lettuce.Redisson以及RedisTemplate几者之间有什么区别,又有什么联系? 如果你心中已经很清晰的有了答案,那么本文你可以很轻松的阅读过去 ...

  4. Springboot整合redis(lettuce)

    springboot 整合redis(lettuce) 首先确保电脑上装了redis.最好能用redisDesktop查看一下数据情况 redis是一款非常流行的Nosql数据库.redis的功能非常 ...

  5. redis命令,SpringBoot整合Redis6,主从复制,哨兵模式,集群,springCache初高级应用。

    目录 1. Docker安装Redis 2. Redis的基础 2.1 redis的key命令 2.2 reids的数据结构(6.0新增的数据结构) 1. String(字符串)类型 2. List( ...

  6. springboot篇】二十二. springboot整合Redis集群

    springboot整合Redis集群 **中国加油,武汉加油!** 案例准备 1. 新建Springboot项目springboot-redis-sentinel 2. 编写yml 3. Test ...

  7. SpringBoot整合Redis+mybatis,封装RedisUtils工具类等实战(附源码)

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:陈彦斌 cnblogs.com/chenyanbin/ ...

  8. Springboot整合redis实现缓存及其缓存运行原理浅析

    声明:小白,学习阶段,主要目的是为了记录学习过程,本文仅供参考,如有不足的地方欢迎指出讨论交流 本文基于Springboot2.1.3版本开发: 准备阶段 首先是pom.xml文件所需的依赖: < ...

  9. Redis主从复制Redis哨兵机制Springboot整合哨兵

    目录 一.Redis主从复制 full resync(全量复制) partial resync(增量复制) 二.Redis主从复制配置 三.哨兵机制原理 每个 Sentinel 都需要定期执行的任务 ...

最新文章

  1. 快速排序算法实现思想个人理解
  2. str_repeat() 函数
  3. mysql事务处理 begin_mysql 事务处理
  4. python列表元素修改_python – 如何修改列表中列表中的元素
  5. SharePoint文档库,如何在新窗口打开中的文件
  6. java 连接linux失败,Jenkins连接Linux失败
  7. 搭建阿里云ecs服务器(一:购买)
  8. python 标准差_标准差python
  9. android mysql sqlite_Android SQLite (一) 数据库简介
  10. 谈谈Circuit Breaker在.NET Core中的简单应用
  11. 【计蒜客 - 蓝桥训练】炮台实验(数学期望,期望dp)
  12. 如何导出android studio程序,(技术)聊聊Android Studio 如何生成Jar
  13. Docker 安装(学习笔记一)
  14. 性能测试--网页fps测试
  15. linux firefox源码修改主页
  16. scikit-learn 机器学习:sklearn.neighbors 的k近邻算法使用
  17. 2021牛客练习赛90
  18. 自动化运维—ansible
  19. 富士胶片3月底完成日立影像诊断业务收购;中国癌症早筛第一股诺辉健康登陆港交所 | 美通企业日报...
  20. Linux 设置 FQDN

热门文章

  1. V7000掉两块盘后怎么恢复数据你知道吗
  2. tomcat清除缓存的几种解决方式
  3. 高德地图按行政区划分填充色块
  4. ipmitool 实时检测温度的脚本编写
  5. 《数据密集型应用系统设计》读书笔记
  6. 佛山植物组织培养实验室必备设备
  7. 烤仔TVの尚书房 | Libra,路漫漫其修远兮
  8. 使用aspnet_regiis.exe注册.NET Framework
  9. Consolas是一套等宽字体的字型,属无衬线字体
  10. 最新全自动更新采集影视带10套模板PHP源码+功能多