最近在使用Spring Boot,发现其功能真是强大,能够快速的集成不少的组件功能,很是方便:web
今天就来介绍下,如何集成Redis。redis
定义spring
Redis 是一个高性能的key-value数据库。它支持存储的value类型不少,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。数据库
如下是Redis的一些优势。浏览器
异常快 - Redis很是快,每秒可执行大约110000次的设置(SET)操做,每秒大约可执行81000次的读取/获取(GET)操做。缓存
支持丰富的数据类型 - Redis支持开发人员经常使用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各类问题,由于咱们知道哪些问题能够更好使用地哪些数据类型来处理解决。性能优化
操做具备原子性 - 全部Redis操做都是原子操做,这确保若是两个客户端并发访问,Redis服务器能接收更新的值。服务器
多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短时间数据,例如,web应用程序中的会话,网页命中计数等。多线程
如何搭建?架构
一.加入Redis相关依赖
2、application.properties中加入redis相关配置
在@Configuration或者集成了这个注解的注解标识的类中声明一个Redis的bean,本例是在入口类上声明的Bean:
在Controller里注入StringRedisTemplate:
启动浏览器访问:
以上是手动进行redis的操做,那如何进行自动的的缓存操做呢?
在启动类中添加注解
@EnableCaching会为每一个bean中被 @Cacheable, @CachePut and @CacheEvict修饰的public方法进行缓存操做。
缓存的用法
这个方法在userId相同形同的状况下,第一次调用的时候会执行方法,之后每次在调用的时候会读取缓存中的数据。
缓存的注解介绍:
@Cacheable
这个注解,会每次先检查是否执行过这个方法,在从缓存数据库中查看key是否相等,若是找到了,从缓存中读取,没有匹配的那么执行该方法,将结果缓存。顺便在此给你们推荐一个Java架构方面的交流学习群:698581634,进群便可获取Java架构师资料:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系,群里必定有你须要的资料,你们赶忙加群吧。
缓存都是经过key-value进行储存的,value或cacheNames必须指定(value是cacheNames的别名),指定多个value用(value = {"value1", "value2"})若是没有指定key,spring会提供一个默认的KeyGenerator,这个KeyGenerator根据参数生成key,若是方法没有参数返回KeyGenerator.EMPTY,若是有一个参数返回这个实例,若是有多个参数返回包含这些参数的SimpleKey。能够经过继承CachingConfigurerSupport本身指定KeyGenerator,类上加@Configuration注解。也能够像上面那样本身指定key,须要了解SPEL表达式。
多线程的状况下,可能同时会有多个线程同时进入一个没被缓存过的方法,这样会致使多个线程都会执行一遍方法,sync="true"会将第一次计算返回值的这个方法lock,计算完成后将结果缓存
备注:Redis最为经常使用的数据类型主要有如下:
原文连接:https://www.toutiao.com/a6618867120228811268/#comment_area