这篇文章主要介绍了Spring Boot集成redis,key自定义生成方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
一)自定义redis key生成策略
@Configuration
:表示当前类属于一个配置类,类似于一个spring.cfg.xml。
@EnableCaching
:表示支持启用缓存。
自定义配置源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
|
二)SpringBoot自带缓存方式
注解说明:
@Cacheable
含义:当调用该注解声明的方法时,会先从缓存中查找,判断是否有key相同缓存的数据,如果有,就直接返回数据,如果没有,执行方法,然后把返回的数据以键值的方式存储到缓存中,方便下次同样参数请求时,直接从缓存中返回数据。
@Cacheable支持如下几个参数:
cacheNames
:缓存位置的一段名称,不能为空,和value一个含义。
value
:缓存位置的一段名称,不能为空,和cacheNames一个含义。
key
:缓存的key,默认为空,表示使用方法的参数类型及参数值作为key,支持SpEL。
keyGenerator
:指定key的生成策略。
condition
:触发条件,满足条件就加入缓存,默认为空,表示全部都加入缓存,支持SpEL。
@CacheEvict
含义:当存在相同key的缓存时,把缓存清空,相当于删除。
@CacheEvict支持如下几个参数:
cacheNames
:缓存位置的一段名称,不能为空,和value一个含义。
value
:缓存位置的一段名称,不能为空,和cacheNames一个含义。
key
:缓存的key,默认为空,表示使用方法的参数类型及参数值作为key,支持SpEL。
condition
:触发条件,满足条件就加入缓存,默认为空,表示全部都加入缓存,支持SpEL。
allEntries
:true表示清除value中的全部缓存,默认为false。
测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
Spring Cache – KeyGenerator自定义rediskey
1. 概述
在此教程中,我们将演示如何使用 Spring Cache 创建自定义密钥生成器。
2. KeyGenerator
这负责为缓存中的每个数据项生成每个键,这些键将用于在检索时查找数据项。
此处的默认实现是SimpleKeyGenerator –它使用提供的方法参数来生成密钥。这意味着,如果我们有两个使用相同的缓存名称和参数类型集的方法,则很有可能会导致冲突。
它还意味着缓存数据可以由另一种方法覆盖。
3. 自定义密钥生成器
密钥生成器只需要实现一个方法:
1 |
|
如果未正确实现或使用,则可能导致覆盖缓存数据。
让我们来看看实现:
1 2 3 4 5 6 7 |
|
之后,我们有两种可能的方式使用它;第一种是在应用程序Config中声明一个豆。
请务必指出,类必须从缓存配置支持或实现缓存配置程序扩展:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
第二种方法是将其用于特定方法:
1 2 3 4 5 6 7 8 9 10 |
|
4. 结论
在本文中,我们探讨了实现自定义春季缓存的密钥生成器的方法。
与往常一样,示例的完整源代码可在 GitHub 上找到。
发表评论 取消回复