第一次写博客,如果哪里有不足的地方,欢迎大家提出来,我会继续改进。
这一次博客内容主要是spring boot 集成redis, spring boot 也是最近出来的一个比较新的技术比起传统的ssm ssh xml配置项目,会少很多xml配置,很简洁优雅的配置在application.yml或application.properties中,好了下面是这次的内容。
以上是项目整体结构
以上,application.yml配置信息,主要是下面redis配置信息,由于我是安装在本地
host则是127.0.0.1,
密码设置的123456 ,
port默认6379,
maxIdle:控制一个pool最多有多少个状态为idle的jedis实例,
minIdle:控制一个pool最少有多少个状态为idle的jedis实例,
maxActive:控制一个pool可分配多少个jedis实例,
maxWait:等待时间
以上是配置,下面是实现的效果给大家看一下
现在redis中一个缓存数据也没有,请看下面图。
我通过postman访问请看下图。
发现第一次访问是查询数据库的,log中显示了执行的sql且输出了方法中的log,但redis中已经有了缓存数据请看下图
那么我们清楚后台log 在重新访问一次看看效果,以下是效果图,并无sql执行,且方法都没有进,但是数据却返回回来了。
以上现象说明第一次访问时候会查询数据库,并写入缓存,第二次请求时候会先判断该缓存中是否存在,没有则执行方法,有则不执行方法直接从缓存中获取数据返回,下面会介绍通过注解使用的redis缓存,看下图
红线就是刚才走的方法使用的注解是@Cacheable 这个注解里面有很多参数详细可以百度一下,本文中使用的是cacheNames和key,cacheNames则是缓存的名字,key则是使用springEl表达式从下面的参数取的#id,为什么这么写呢则是通过传的参数id主键查询生成唯一的缓存key好存储数据,毕竟一个用户对应一个id。Cacheable的作用是请求时候先判断是否缓存中存在,没有则执行方法,存在的话不执行方法直接返回缓存中数据。
下面还有
@CachePut(cacheNames="user", key="#user.id"),@CacheEvict(cacheNames="user", key="#id")
CachePut则可以理解跟map中的put方法类似,请求时候直接根据key存储到缓存中,@CacheEvict一般是执行删除方法使用的,根据key删除相应缓存数据。
为什么要用缓存呢,举个例子,假如系统中有2千万用户信息,用户信息基本固定,一旦录入很少变动, 那么你每次加载所有用户信息时,如果都要请求数据库,数据库编译并执行你的查询语句,如果使用缓存则只第一次查询访问数据库,再次请求时候不会在请求数据库了,从而提升性能效率。
最后restful:
要弄清楚什么是RESTful API,首先要弄清楚什么是REST。REST -- REpresentational State Transfer,英语的直译就是“表现层状态转移”。如果看这个概念,估计没几个人能明白是什么意思。那下面就让我来用一句人话解释一下什么是RESTful:URL定位资源,用HTTP动词(GET,POST,PUT,DELETE)描述操作。
Resource:资源,即数据。
Representational:某种表现形式,比如用JSON,XML,JPEG等;
State Transfer:状态变化。通过HTTP动词实现。
所以RESTful API就是REST风格的API。 那么在什么场景下使用RESTful API呢?在当今的互联网应用的前端展示媒介很丰富。有手机、有平板电脑还有PC以及其他的展示媒介。那么这些前端接收到的用户请求统一由一个后台来处理并返回给不同的前端肯定是最科学和最经济的方式,RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式。
例子:
请求参数如下图
正常url比如查询某一个用户通过是getUserById?id=xxx这样的,而restful则是/user/{id}
通过@PathVariable("id")这个注解获取url中的参数,请求方式 get post put delete等等。
下一篇 spring cloud之eureka。