SpringBoot 2.0 学习(九)集成redis缓存技术

SpringBoot 2.0 学习(九)集成redis缓存技术

NoSql数据库

NoSql 不是字面意思,没有sql,而是Not only sql,意思是不仅仅只有sql,常用的主流数据库都是关系型数据库,比如Oracle,Mysql,Sql Server等,但是这些数据库操作数据起来过于复杂且庞大,并发量会比较高,用户等待的时间可能会比较长,为了有更好的用户体验,非关系型数据库应运而生,Redis是目前使用的非常多的一款非关系型数据库。

Redis介绍

Redis特征很明显,它不像数据库对表的字段要求那么高,它很灵活,存和取都很方便,操作和数据模型简单。通过节点弹性操作,所以可扩展性很高。
Redis是目前业界使用最广泛的内存数据存储。相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化。除此之外,Redis还提供一些类数据库的特性,比如事务,HA,主从库。可以说Redis兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景。

整合步骤

第一步:添加依赖

	<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-redis</artifactId>
	</dependency>
	
	<!-- 2.0以上高版本redis的lettuce需要commons-pool2 -->
	<dependency>
	    <groupId>org.apache.commons</groupId>
	    <artifactId>commons-pool2</artifactId>
	    <version>2.6.0</version>
	</dependency>

第二步:配置文件

springboot的配置文件除了可以使用application.properties,还可以使用application.yml这种形式,后者对格式的要求比较高,具体大家可以网上搜索相关文档,今天换做后面一种方式添加配置文件。

spring:
	redis:
		database: 1
		host: 127.0.0.1
		jedis:
           pool:
             #最大连接数据库连接数,设 0 为没有限制
             max-active: 8
             #最大等待连接中的数量,设 0 为没有限制
             max-idle: 8
             #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
             max-wait: -1ms
    		 #最小等待连接中的数量,设 0 为没有限制
             min-idle: 0
	lettuce:
  		pool:
    		max-active: 8
   			max-idle: 8
    		max-wait: -1ms
    		min-idle: 0
  		shutdown-timeout: 100ms
	password: ''  
	port: 6379

第三步:自定义序列化器配置

	@Configuration
	public class RedisConfig{
		 /**
	     * @param redisConnectionFactory
	     * @return 自定义redisTemplate,自带的bean没有序列化器
	     */
	    @Bean
	    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
	        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
	        redisTemplate.setConnectionFactory(redisConnectionFactory);
	        //设置key的序列化器
	        redisTemplate.setKeySerializer(new StringRedisSerializer());
	        //重写Redis序列化方式,使用Json方式
	        GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
	        // 设置值(value)的序列化采用FastJsonRedisSerializer。
	        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
	        return redisTemplate;
	    }
	}

第四步:存储和访问redis数据
这里实体类User就不写了,StringRedisTemplate,存储字符串类型,RedisTemplate, 存储对象类型。如果key是a:b这种形式,在RedisManage可视化界面上显示的为层级结构

	@RestController
	@RequestMapping("/redis")
	public class RedisController {

		private String testString = "testString";
	    private String objectKey = "objectKey";
	 
	    @Autowired
	    private RedisTemplate<String, Object> redisTemplate; //处理对象类型
	    @Autowired
	    private StringRedisTemplate stringRedisTemplate;  //处理字符串类型
	 
	    @GetMapping("/add")
	    public String add() {
	        //1,添加一个Value为String
	        stringRedisTemplate.opsForValue().set(testString, "测试存储字符串类型");
	        //2,添加一个Value为对象
	        User user = new User();
	        user.setId(1);
	        user.setUserName("张三");
	        user.setPassword("123456");
	        user.setRedisKey(objectKey);
	        redisTemplate.opsForValue().set("Object:user:"+user.getRedisKey(), user);
	        return "添加成功";
	    }
	 
	    @GetMapping("/getUser")
	    public User findUserByKey() {
	        User user = (User) redisTemplate.opsForValue().get("Object:user:"+objectKey);
	        return user;
	    }
	 
	    @GetMapping("/getString")
	    public String findString() {
	        String s = stringRedisTemplate.opsForValue().get(testString);
	        return s;
	    }
	    
	    @GetMapping("/delete")
	    public String deleteByKey(){
	        //1,删除string类型
	        stringRedisTemplate.delete(testString);
	        //2,删除user对象
	        redisTemplate.delete(objectKey);
	        return "删除成功";
	    }
	}

第五步:可视化组件查看缓存信息
访问下面对应的地址
在这里插入图片描述
查看redis中数据的变化
在这里插入图片描述

SpringBoot是企业级开发的整体整合解决方案,特别用于快速构建微服务应用,旨在用最简单的方式让开发人员适应各种开发场景; 本视频着重介绍SpringBoot的使用和内部原理;内容包含微服务概念、配置文件、日志框架的使用、web开发、Thymeleaf模板引擎、Docker容器技术、MyBatis、Spring Data JPA、自定义starter等; 00、尚硅谷_SpringBoot_源码、课件 01、尚硅谷_SpringBoot_入门-课程简介 02、尚硅谷_SpringBoot_入门-Spring Boot简介 03、尚硅谷_SpringBoot_入门-微服务简介 04、尚硅谷_SpringBoot_入门-环境准备 05、尚硅谷_SpringBoot_入门-springboot-helloworld 06、尚硅谷_SpringBoot_入门-HelloWorld细节-场景启动器(starter) 07、尚硅谷_SpringBoot_入门-HelloWorld细节-自动配置 08、尚硅谷_SpringBoot_入门-使用向导快速创建Spring Boot应用 09、尚硅谷_SpringBoot_配置-yaml简介 10、尚硅谷_SpringBoot_配置-yaml语法 11、尚硅谷_SpringBoot_配置-yaml配置文件值获取 12、尚硅谷_SpringBoot_配置-properties配置文件编码问题 13、尚硅谷_SpringBoot_配置-@ConfigurationProperties与@Value区别 14、尚硅谷_SpringBoot_配置-@PropertySource、@ImportResource、@Bean 15、尚硅谷_SpringBoot_配置-配置文件占位符 16、尚硅谷_SpringBoot_配置-Profile多环境支持 17、尚硅谷_SpringBoot_配置-配置文件的加载位置 18、尚硅谷_SpringBoot_配置-外部配置加载顺序 19、尚硅谷_SpringBoot_配置-自动配置原理 20、尚硅谷_SpringBoot_配置-@Conditional&自动配置报告 21、尚硅谷_SpringBoot_日志-日志框架分类和选择 22、尚硅谷_SpringBoot_日志-slf4j使用原理 23、尚硅谷_SpringBoot_日志-其他日志框架统一转换为slf4j 24、尚硅谷_SpringBoot_日志-SpringBoot日志关系 25、尚硅谷_SpringBoot_日志-SpringBoot默认配置 26、尚硅谷_SpringBoot_日志-指定日志文件和日志Profile功能 27、尚硅谷_SpringBoot_日志-切换日志框架 28、尚硅谷_SpringBoot_web开发-简介 29、尚硅谷_SpringBoot_web开发-webjars&静态资源映射规则 30、尚硅谷_SpringBoot_web开发-引入thymeleaf 31、尚硅谷_SpringBoot_web开发-thymeleaf语法 32、尚硅谷_SpringBoot_web开发-SpringMVC自动配置原理 33、尚硅谷_SpringBoot_web开发-扩展与全面接管SpringMVC 34、尚硅谷_SpringBoot_web开发-【实验】-引入资源 35、尚硅谷_SpringBoot_web开发-【实验】-国际化 36、尚硅谷_SpringBoot_web开发-【实验】-登陆&拦截器 37、尚硅谷_SpringBoot_web开发-【实验】-Restful实验要求 38、尚硅谷_SpringBoot_web开发-【实验】-员工列表-公共页抽取 39、尚硅谷_SpringBoot_web开发-【实验】-员工列表-链接高亮&列表完成 40、尚硅谷_SpringBoot_web开发-【实验】-员工添加-来到添加页面 41、尚硅谷_SpringBoot_web开发-【实验】-员工添加-添加完成 42、尚硅谷_SpringBoot_web开发-【实验】-员工修改-重用页面&修改完成 43、尚硅谷_SpringBoot_web开发-【实验】-员工删除-删除完成 44、尚硅谷_SpringBoot_web开发-错误处理原理&定制错误页面 45、尚硅谷_SpringBoot_web开发-定制错误数据 46、尚硅谷_SpringBoot_web开发-嵌入式Servlet容器配置修改 47、尚硅谷_SpringBoot_web开发-注册servlet三大组件 48、尚硅谷_SpringBoot_web开发-切换其他嵌入式Servlet容器 49、尚硅谷_SpringBoot_web开发-嵌入式Servlet容器自动配置原理 50、尚硅谷_SpringBoot_web开发-嵌入式Servlet容器启动原理 51、尚硅谷_SpringBoot_web开发-使用外部Servlet容器&JSP;支持 52、尚硅谷_SpringBoot_web开发-外部Servlet容器启动SpringBoot应用原理 53、尚硅谷_SpringBoot_Docker-简介 54、尚硅谷_SpringBoot_Docker-核心概念 55、尚硅谷_SpringBoot_Docker-linux环境准备 56、尚硅谷_SpringBoot_Docker-docker安装&启动&停止 57、尚硅谷_SpringBoot_Docker-docker镜像操作常用命令 58、尚硅谷_SpringBoot_Docker-docker容器操作常用命令 59、尚硅谷_SpringBoot_Docker-docker安装MySQL 60、尚硅谷_SpringBoot_数据访问-简介 61、尚硅谷_SpringBoot_数据访问-JDBC&自动配置原理 62、尚硅谷_SpringBoot_数据访问-整合Druid&配置数据源监控 63、尚硅谷_SpringBoot_数据访问-整合MyBatis(一)-基础环境搭建 64、尚硅谷_SpringBoot_数据访问-整合MyBatis(二)-注解版MyBatis 65、尚硅谷_SpringBoot_数据访问-整合MyBatis(二)-配置版MyBatis 66、尚硅谷_SpringBoot_数据访问-SpringData JPA简介 67、尚硅谷_SpringBoot_数据访问-整合JPA 68、尚硅谷_SpringBoot_原理-第一步:创建SpringApplication 69、尚硅谷_SpringBoot_原理-第二步:启动应用 70、尚硅谷_SpringBoot_原理-事件监听机制相关测试 71、尚硅谷_SpringBoot_原理-自定义starter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值