# 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 故障转移流程 ![img.png](img.png) ### 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 ```