温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot中怎么操作redis缓存

发布时间:2021-07-22 16:02:53 来源:亿速云 阅读:123 作者:Leah 栏目:编程语言

springboot中怎么操作redis缓存,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

引入依赖库

在pom中引入依赖库,如下

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId></dependency>

注解使用

@Cacheable@Cacheable("product")@Cacheable(value = {"product","order"}, key = "#root.targetClass+'-'+#id")@Cacheable(value = "product", key = "#root.targetClass+'-'+#id")

自定义cacheManager

@Cacheable(value = "product", key = "#root.targetClass+'-'+#id” cacheManager="cacheManager")@CachePut

应用到写数据的方法上,如新增/修改方法

@CachePut(value = "product", key = "#root.targetClass+'-'+#product.id")@CacheEvict

即应用到移除数据的方法上,如删除方法

@CacheEvict(value = "product", key = "#root.targetClass+'-'+#id")

提供的SpEL上下文数据

Spring Cache提供了一些供我们使用的SpEL上下文数据,下表直接摘自Spring官方文档:

methodName      root对象      当前被调用的方法名      #root.methodName              method      root对象      当前被调用的方法      #root.method.name              target      root对象      当前被调用的目标对象      #root.target              targetClass      root对象      当前被调用的目标对象类      #root.targetClass              args      root对象      当前被调用的方法的参数列表      #root.args[0]              caches      root对象      当前方法调用使用的缓存列表(如@Cacheable(value={"cache1", "cache2"})),则有两个cache      #root.caches[0].name              argument name      执行上下文      当前被调用的方法的参数,如findById(Long id),我们可以通过#id拿到参数      #user.id              result      执行上下文      方法执行后的返回值(仅当方法执行之后的判断有效,如‘unless','cache evict'的beforeInvocation=false)      #result

自定义Cache配置

@Configuration@EnableCachingpublic class RedisConfig extends CachingConfigurerSupport { /** * 自定义redis key值生成策略 */ @Bean @Override public KeyGenerator keyGenerator() {  return (target, method, params) -> {   StringBuilder sb = new StringBuilder();   sb.append(target.getClass().getName());   sb.append(method.getName());   for (Object obj : params) {    sb.append(obj.toString());   }   return sb.toString();  }; } @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {  ObjectMapper om = new ObjectMapper();  om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);  om.enableDefaultTyping(Object

名字位置描述示例

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI