最近在用SpringBoot,发现它的功能真的很强大,可以快速集成很多组件功能,非常方便:今天就来介绍下如何集成Redis。定义Redis是一个高性能的键值数据库。它支持多种类型的值存储,包括string(字符串)、list(链表)、set(集合)、zset(sortedset——有序集合)和hash(散列类型)。以下是Redis的一些优点。异常快速-Redis非常快,每秒执行大约110,000次设置(SET)操作和大约每秒81,000次读取/获取(GET)操作。支持丰富的数据类型——Redis支持开发人员常用的大多数数据类型,例如列表、集合、排序集合和哈希等等。这使得Redis很容易用来解决各种问题,因为我们知道哪些问题可以用哪些数据类型更好地解决。操作是原子的——所有Redis操作都是原子的,这确保了如果两个客户端同时访问它,Redis服务器会收到更新的值。多用途——Redis是一种多用途工具,可用于多种用例,例如:缓存、消息队列(Redis本身支持发布/订阅)、应用程序中的任何短期数据,例如Web应用程序中的会话,网页***Counting等等如何建立呢?1.添加Redis相关依赖2.在application.properties中添加redis相关配置在@Configuration中声明一个Redisbean或者集成该注解的注解标记的类。本例中入口类上声明的bean:在Controller中注入StringRedisTemplate:启动浏览器访问:以上是redis的手动操作,那么如何进行自动缓存操作呢?在启动类中添加注解@EnableCaching,会对每个bean中@Cacheable、@CachePut、@CacheEvict修改的public方法进行缓存操作。缓存使用该方法会在userId和第一次调用相同时执行,以后每次调用都会读取缓存中的数据。缓存注解介绍:@Cacheable注解每次都会先检查这个方法是否执行过,从缓存数据库中检查key是否相等。如果找到,则从缓存中读取它。如果不匹配,则执行此方法。结果缓存。缓存是以key-value方式存储的,必须指定value或者cacheNames(value是cacheNames的别名),指定多个值(value={"value1","value2"})如果没有指定key,spring会提供默认一个KeyGenerator,这个KeyGenerator根据参数生成key,如果方法没有参数,返回KeyGenerator.EMPTY,如果有一个参数,返回这个实例,如果有多个参数,返回包含这些参数的SimpleKey。可以通过继承CachingConfigurerSupport自行指定KeyGenerator,在类中添加@Configuration注解。也可以像上面那样自己指定key,需要懂SPEL表达式。在多线程的情况下,可能有多个线程同时进入一个没有被缓存的方法,会导致多个线程执行一次该方法。sync="true"会在第一次计算返回值时锁定方法,计算完成后将结果缓存起来。
