https://github.com/gshjd/RainbowCache
一套缓存注解,内置利用redis完成的并发锁,提高开发效率,让开发人员更专注于业务
https://github.com/gshjd/RainbowCache
Last synced: 20 days ago
JSON representation
一套缓存注解,内置利用redis完成的并发锁,提高开发效率,让开发人员更专注于业务
- Host: GitHub
- URL: https://github.com/gshjd/RainbowCache
- Owner: gshjd
- License: apache-2.0
- Created: 2021-03-04T09:38:07.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-10T10:12:44.000Z (about 3 years ago)
- Last Synced: 2025-07-18T00:56:16.049Z (8 months ago)
- Language: Java
- Size: 58.6 KB
- Stars: 97
- Watchers: 1
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-java - RainbowCache
README
# RainbowCache
### 您的star是我继续前进的动力,如果喜欢请帮忙点个star
## 简介
一套缓存注解,缓存可选择使用本地缓存或redis缓存,内置利用redis完成的并发锁(使用并发锁注解一定要接入redis),提高开发效率,让开发人员更专注于业务。
该缓存在redis挂掉的情况下,会自动切换本地缓存,以防止击穿DB。
## POM引入
```xml
cn.threeoranges
RainbowCache
1.1.2
```
## 注解使用
注解仅适用于Service实现层方法。
### 1. @RainbowCache
注解中含有key,dynamicKey,expiration,renew四个属性。
用于获取业务中的返回值并存入缓存中,若缓存中存在该key,则直接从缓存中获取。
#### key
String数组类型,固定键,可以有多个,缓存中固定不变的键。
#### dynamicKey
String类型,动态键,根据el表达式,获取指定参数得到的动态键。
`注:最终缓存键 = key + dynamicKey。`
#### expiration
long类型,缓存有效时间,默认为-1,永久不失效,单位为秒。
#### renew
boolean类型,是否需要续约,默认false,每当访问时自动续约时长。
### 2. @RainbowCachePut
注解中含有key,dynamicKey,expiration,renew四个属性。
每个属性和@RainbowCache注解一致,与@RainbowCache注解不同的是,该注解不会从缓存中读取数据,每次都会执行后续业务获取数据,更新缓存中的值。
### 3. @RainbowCacheClear
注解中含有key,dynamicKey,两个属性。
两个属性介绍和@RainbowCache注解一致。该注解仅用来清理缓存,支持范围清理,前缀为`key + dynamicKey`下的所有缓存都将被清除。
### 4. @RainbowDistributedLock
注解中含有key一个属性。
key属性表示改锁的唯一键,用来控制锁的唯一性。该注解会对方法进行加锁,业务执行完成以后解锁。
## 配置
### 1. rainbow.cache.type
缓存模式 simple或redis,默认simple(simple 本地缓存)
### 2. rainbow.cache.lock.time-out
分布式锁超时时间(毫秒),默认30,单位为秒,-1为永不超时
### 3.rainbow.cache.lock.length
本地缓存空间长度,默认Integer的最大值