# Easy-Redis
**Repository Path**: Mr_loyal/easy-redis
## Basic Information
- **Project Name**: Easy-Redis
- **Description**: Easy-Redis OOP形式的Api
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-03-19
- **Last Updated**: 2025-03-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Redis, 缓存数据库
## README
# Easy Redis 全功能手册
## 一、核心功能体系
### 1. 多模式架构支持
| 模式类型 | 能力描述 | 配置示例 | 适用场景|
|---------------|--------------------|----------------|------|
| **单机模式** | 基础单节点访问,内置连接池自动管理 | `mode: standalone`
`nodes: 127.0.0.1:6379` | 小型项目,开发环境 |
| **哨兵模式** | 自动故障转移监测,主从切换零感知 | `mode: sentinel`
`master: mymaster`
`nodes: s1:26379,s2:26379` | 业务量适中,要求高可用 |
| **集群模式** | 智能槽位路由,支持重定向自动处理 | `mode: cluster`
`nodes: 192.168.1.1:7000,192.168.1.2:7001` | 大型项目,海量数据 |
[//]: # (| **云托管模式** | 自动适配云厂商架构(阿里云/亚马逊 ElastiCache) | `mode: cloud`
`endpoint: mycache.xxxxx.ng.0001.apse1.cache.amazonaws.com` |)
```
单机模式
spring:
redis:
mode: standalone
host: localhost
port: 6379
password: ""
timeout: 5000
```
```
哨兵模式
spring:
redis:
mode: sentinel
password: "your-password"
timeout: 5000
sentinel:
master: mymaster
nodes:
- 192.168.1.101:26379
- 192.168.1.102:26379
- 192.168.1.103:26379
```
```
集群模式
spring:
redis:
mode: cluster
password: "your-password"
timeout: 5000
cluster:
nodes:
- 192.168.1.101:7000
- 192.168.1.102:7001
- 192.168.1.103:7002
max-redirects: 3
```
### 2. 数据操作增强
#### 2.1 注解驱动开发
```java
// 实体映射示例
@EasyRedisTable(
type = DataType.JSON,
keyTemplate = "order",
expireMode = ExpireMode.AUTO_REFRESH
)
@Data
public class Order {
@EasyRedisId(generator = "redisIdWorker")
private String orderNo;
@EasyRedisField(index = @EasyRedisIndex(type = IndexType.ZSET, scoreField = "amount"))
private BigDecimal amount;
@EasyRedisField
private Long version;
}
```
#### 2.2 OOP形式的CURD
```
Order order = redisEntityMapper.getById(Order.class, orderNo);
redisEntityMapper.save(order);
redisEntityMapper.deleteById(Order.class, orderNo);
redisEntityMapper.save(order);
```
#### 2.3 支持链式查询构建器
```
// 复杂查询示例
List users = redisEntityMapper.query(Order.class)
.select("name", "age")
.lt("age", 30)
.in("deptId", Arrays.asList(1001, 1002))
.orderByDesc("createTime")
.having("score", Condition.GE, 90)
.page(1, 20, true); // 支持自动计算总数
```
### 3. 连接管理
#### 3.1 智能连接池
```
easy-redis:
connection:
pool:
max-active: 16
min-idle: 4
max-wait: 2000ms
test-while-idle: true
eviction-interval: 60s
timeout:
connect: 3000ms
so-timeout: 2000ms
```
#### 3.2 故障转移流程

### 4. 持久化保障
#### 4.1 三级持久化策略
实时持久化:通过SAVE命令强制刷盘(性能敏感型慎用)
异步备份队列:本地内存队列+磁盘文件双缓冲
外部存储降级:自动降级写入MySQL/Oracle
```
@RedisPersist(
strategy = PersistStrategy.ASYNC_QUEUE,
fallbackClass = OrderService.class,
fallbackMethod = "persistToDB"
)
public void createOrder(Order order) {
// 正常Redis操作
}
```
### 5. 监控与诊断
#### 5.1 健康检查端点
```
# 暴露的监控端点
management.endpoints.web.exposure.include=redismetrics,redishealth
# 访问示例
GET /actuator/redishealth
Response:
{
"status": "UP",
"nodes": [
{"role":"master","version":"6.2.6","keys":12345},
{"role":"slave","version":"6.2.6","lag":200ms}
]
}
```
### 6. 高级特性
#### 6.1 分布式锁
```
@RedisLock(
name = "order_lock:#{orderId}",
waitTime = 3,
leaseTime = 10,
type = LockType.REDLOCK
)
public void processOrder(String orderId) {
// 受保护的业务逻辑
}
```
#### 6.2 二级缓存集成
```
@Cacheable(
cacheNames = "userCache",
key = "#userId",
redisManager = "userRedis", // 指定Redis实例
localCache = @LocalCache(size=1000, expire=5)
)
public User getUser(String userId) {
// 数据库查询逻辑
}
```
## 二、企业级特性
### 1. 多租户支持
```
easy-redis:
multi-tenant:
enable: true
strategy: DATASOURCE_PER_TENANT # 可选 KEY_PREFIX/DATASOURCE
key-prefix-pattern: "{tenantId}_"
```
### 2. 数据分片策略
```
@RedisSharding(
strategy = ShardingStrategy.MOD,
shardKey = "userId",
nodes = {"redis-cluster-01", "redis-cluster-02"}
)
public class UserSession {
// 字段定义
}
```
### 3. 数据加密
```
@RedisField(
encrypt = @Encrypt(
type = EncryptType.AES,
secretKey = "${redis.encrypt.key}"
)
)
private String idCardNumber;
```
## 三、配置大全
### 1. 全局配置
```
easy-redis:
enabled: true
primary: default # 多数据源时指定主实例
global-config:
default-expire: 600s # 全局默认过期时间
key-prefix: "app01:" # 全局键前缀
max-batch-size: 500 # 批量操作上限
```
### 2. 多数据源配置
```
easy-redis:
datasources:
order:
mode: cluster
nodes: redis-cluster:7000-7005
pool:
max-active: 32
user:
mode: sentinel
master: user-master
nodes: sentinel1:26379,sentinel2:26379
```