最近在使用弹簧引导,发现其功能真是强大,可以快速的集成很多的组件功能,非常方便:
今天就来介绍下,如何集成复述。
复述是一个高性能的键值数据库。它支持存储值的类型很多,包括字符串(字符串),列表(链表),设置集(合),zset(排序设置-有序集合)和散列(哈希类型)。
异常快,复述,非常快,每秒可执行大约110000次的设置(套)操作,每秒大约可执行81000次的读?获取(得到)操作。
支持丰富的数据类型——复述,支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得复述,很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。
操作具有原子性,所有复述,操作都是原子操作,这确保如果两个客户端并发访问,复述,服务器能接收更新的值。
多实用工具,复述是一个多实用工具,可用于多种用例,如:缓存,消息队列(复述本地支持发布/订阅),应用程序中的任何短期数据,例如,网络应用程序中的会话,网页命中计数等。
如何搭建?
<强>一。加入复述,相关依赖强>
<强>二,application.properties中加入复述,相关配置强>
在@ configuration或者集成了这个注解的注解标识的类中声明一个复述的bean,本例是在入口类上声明的bean:
在控制器里注入StringRedisTemplate:
启动浏览器访问:
以上是手动进行复述的操作,那如何进行自动的的缓存操作呢?
在启动类中添加注解
@EnableCaching会为每个bean中被@Cacheable, @CachePut和@CacheEvict修饰的公共方法进行缓存操作。
<强>缓存的用法强>
这个方法在用户标识相同形同的情况下,第一次调用的时候会执行方法,以后每次在调用的时候会读取缓存中的数据。
缓存的注解介绍:
@Cacheable
这个注解,会每次先检查是否执行过这个方法,在从缓存数据库中查看关键是否相等,如果找到了,从缓存中读取,没有匹配的那么执行该方法,将结果缓存。
缓存都是通过键-值进行储存的,价值或cacheNames必须指定(价值是cacheNames的别名),指定多个值用(<代码>价值=https://www.yisu.com/zixun/{“value1”、“value2”}) 代码>如果没有指定键,春天会提供一个默认的KeyGenerator,这个KeyGenerator根据参数生成键,如果方法没有参数返回KeyGenerator.EMPTY,如果有一个参数返回这个实例,如果有多个参数返回包含这些参数的SimpleKey。可以通过继承CachingConfigurerSupport自己指定KeyGenerator,类上加@ configuration注解。也可以像上面那样自己指定关键,需要了解?表达式。
多线程的情况下,可能同时会有多个线程同时进入一个没被缓存过的方法,这样会导致多个线程都会执行一遍方法,同步=" true "会将第一次计算返回值的这个方法锁,计算完成后将结果缓存
备注:复述最为常用的数据类型主要有以下: