最近在使用spring boot,发现其功能真是强大,可以快速的集成很多的组件功能,非常方便:
今天就来介绍下,如何集成redis。
定义
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相关依赖
二、application.properties中加入redis相关配置
在@configuration或者集成了这个注解的注解标识的类中声明一个redis的bean,本例是在入口类上声明的bean:
在controller里注入stringredistemplate:
启动浏览器访问:
以上是手动进行redis的操作,那如何进行自动的的缓存操作呢?
在启动类中添加注解
@enablecaching会为每个bean中被 @cacheable, @cacheput and @cacheevict修饰的public方法进行缓存操作。
缓存的用法
这个方法在userid相同形同的情况下,第一次调用的时候会执行方法,以后每次在调用的时候会读取缓存中的数据。
缓存的注解介绍:
@cacheable
这个注解,会每次先检查是否执行过这个方法,在从缓存数据库中查看key是否相等,如果找到了,从缓存中读取,没有匹配的那么执行该方法,将结果缓存。
缓存都是通过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最为常用的数据类型主要有以下:
- string
- hash
- list
- set
- sorted set
- pub/sub
- transactions
总结
以上所述是小编给大家介绍的spring boot集成redis实战操作功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://developer.51cto.com/art/201811/586173.htm