Skip to content

CarrowZhu/springredis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

springredis

基于spring-data-redis的注解实现redis缓存操作

requirement

JDK6
Spring4

原理&实现

1)AOP
2)实现参考自Spring的Cache注解
区别:
1)支持TTL
2)支持Hash

配置说明

XML配置文件

xsi:schemaLocation="http://www.siyuan.com/schema/springredis
http://www.siyuan.com/schema/springredis/springredis.xsd"
<springRedis:annotation-driven />
属性说明
redisTemplate:Advice中将使用的redisTemplate,默认为"redisTemplate"
order:Advice的执行顺序,默认优先级最高(Ordered.HIGHEST_PRECEDENCE)
exceptionHandler:beanId,操作异常处理器,必须实现接口com.siyuan.springredis.interceptor.SpringRedisExceptionHandler,默认为com.siyuan.springredis.interceptor.LoggerExceptionHandler

注解

1)@SpringRedisConfig:Class级别配置
属性说明
value:等同于redisTemplate
redisTemplate:(String)Advice中将使用的redisTemplate

2)@SpringRedisValueCache:方法级别,操作的数据类型为String
对应操作流程:读cache,hit返回,miss -> 获取数据 -> cache
属性说明
value:等同于key
redisTemplate:(String)Advice中将使用的redisTemplate
condition:(String)支持SpringEL,缓存操作条件
timeout:(long)TTL,<=0表示永不过期,默认为0
timeUnit:(TimeUnit)TTL单位,默认为TimeUnit.MILLISECONDS
key:(String)支持SpringEL,缓存对应的key值,必须提供
refreshTTL:(boolean)缓存命中时是否刷新TTL,默认为false

3)@SpringRedisValueEvict :方法级别,操作的数据类型为String
对应的流程:清除缓存
属性说明
value:等同于key
redisTemplate:(String)Advice中将使用的redisTemplate
condition:(String)支持SpringEL,缓存操作条件
key:(String)支持SpringEL,缓存对应的key值,必须提供

4)@SpringRedisHashCache:方法级别,操作的数据类型为Hash
对应操作流程:与 @SpringRedisValueCache 类似
属性说明
value:等同于key
redisTemplate:(String)Advice中将使用的redisTemplate
condition:(String)支持SpringEL,缓存操作条件
timeout:(long)TTL,<=0表示永不过期,默认为0
timeUnit:(TimeUnit)TTL单位,默认为TimeUnit.MILLISECONDS
key:(String)支持SpringEL,缓存对应的key值,必须提供
refreshTTL:(boolean)缓存命中时是否刷新TTL,默认为false
hashKey:(String)支持SpringEL,缓存对应的hashKey值,必须提供

5)@SpringRedisHashEvict :方法级别,操作的数据类型为Hash
对应的流程:与 @SpringRedisValueEvict 类似
属性说明
value:等同于key
redisTemplate:(String)Advice中将使用的redisTemplate
condition:(String)支持SpringEL,缓存操作条件
key:(String)支持SpringEL,缓存对应的key值,必须提供
hashKey:(String)支持SpringEL,缓存对应的hashKey值,必须提供

SpringEL

Name > Location > Example
methodName > root object > #root.methodName
method > root object > #root.method.name
target > root object > #root.target
targetClass > root object > #root.targetClass
args > root object > #root.args[0]
argument name > evaluation context > #name (编译时必须保留方法名信息)
result > evaluation context > #result

示例

参考 /src/test 路径下的测试用例

About

基于spring-data-redis的注解实现redis缓存操作

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages