# Redisun
**Repository Path**: smartboot/redisun
## Basic Information
- **Project Name**: Redisun
- **Description**: Redisun:专注于Redis相关技术的开源项目,提供高效的数据结构存储、处理解决方案,支持多种应用场景,助力开发者实现高性能应用开发。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://smartboot.tech/redisun
- **GVP Project**: No
## Statistics
- **Stars**: 16
- **Forks**: 1
- **Created**: 2025-10-21
- **Last Updated**: 2025-10-27
## Categories & Tags
**Categories**: cache-modules
**Tags**: smart-socket, Redis, Java, SpringBoot
## README

[](https://central.sonatype.com/artifact/tech.smartboot/redisun)
[](https://gitee.com/smartboot/redisun/blob/master/LICENSE)
Redisun 是一个基于 [smart-socket](https://gitee.com/smartboot/smart-socket) 开发的轻量级 Redis 客户端,专为 Java 平台设计,支持异步非阻塞 I/O 操作,提供高性能的 Redis 连接和命令执行能力。
## 特性
- **轻量级设计**:核心代码仅由少量类组成,jar包仅33KB,资源占用极小
- **高性能通信**:基于 smart-socket Java AIO 实现,单线程处理能力强,资源消耗低
- **连接复用技术**:创新的连接复用机制,一个连接可同时处理多个并发请求
- **RESP 协议支持**:完整支持 Redis 序列化协议(RESP),兼容 Redis 服务器
- **命令扩展机制**:提供简单易用的命令扩展接口,方便添加自定义 Redis 命令
- **多数据库支持**:支持 Redis 多数据库切换
- **认证支持**:支持 Redis 服务器的用户名/密码认证
## 核心组件
- **Redisun**:核心客户端类,提供连接管理和命令执行功能
- **Command**:Redis 命令的抽象基类,支持自定义命令扩展
- **RESP**:Redis 序列化协议解析器,支持多种数据类型
- **RedisMessageProcessor**:消息处理器,负责解析 Redis 服务器响应
- **RedisSession**:会话管理器,维护客户端与服务器的会话状态
- **RedisunOptions**:客户端配置选项类,用于设置连接参数
## 安装
### Maven
```xml
tech.smartboot
redisun
1.0.0
```
### Gradle
```gradle
implementation 'tech.smartboot:redisun:1.0.0'
```
## 快速开始
### 基本用法
```java
import tech.smartboot.redisun.Redisun;
Redisun redisun = Redisun.create(options -> {
options.setAddress("redis://127.0.0.1:6379");
// 或者使用带认证信息的地址
// options.setAddress("redis://username:password@127.0.0.1:6379");
});
// 设置键值
boolean setResult = redisun.set("mykey", "myvalue");
System.out.println("SET command result: " + setResult);
// 获取键值
String getResult = redisun.get("mykey");
System.out.println("GET command result: " + getResult);
// 执行有序集合命令
int zaddResult = redisun.zadd("myzset", 1.0, "member1");
System.out.println("ZADD command result: " + zaddResult);
// 删除键
int delResult = redisun.del("mykey");
System.out.println("DEL command result: " + delResult);
redisun.close();
```
### SET 命令高级用法
```java
Redisun redisun = Redisun.create(options -> {
options.setAddress("redis://127.0.0.1:6379");
});
// 基本设置
redisun.set("key1", "value1");
// 仅在键不存在时设置(NX选项)
boolean nxResult = redisun.set("key2", "value2", cmd -> cmd.setIfNotExists());
// 仅在键存在时设置(XX选项)
boolean xxResult = redisun.set("key1", "newvalue", cmd -> cmd.setIfExists());
// 设置过期时间(秒)
redisun.set("key3", "value3", cmd -> cmd.expire(60));
// 设置过期时间(毫秒)
redisun.set("key4", "value4", cmd -> cmd.expireMs(30000));
// 在指定时间过期
redisun.set("key5", "value5", cmd -> cmd.expireAt(new Date(System.currentTimeMillis() + 60000)));
// 保留键的生存时间
redisun.set("key1", "anotherValue", cmd -> cmd.keepTTL());
redisun.close();
```
### 高级配置
```java
Redisun redisun = Redisun.create(options -> {
// 设置服务器地址
options.setAddress("redis://127.0.0.1:6379")
// 设置数据库
.setDatabase(1)
// 启用调试模式
.debug(true);
});
```
## 支持的命令
Redisun 正在不断扩展对 Redis 命令的支持。以下是当前命令实现状态:
### ✅ 已完全支持的命令
| 命令 | 描述 | 实现类 | 备注 |
|------|------|--------|------|
| `HELLO` | 服务器握手和认证 | [HelloCommand](src/main/java/tech/smartboot/redisun/cmd/HelloCommand.java) | 支持认证和协议协商 |
| `SET` | 设置键值对 | [SetCommand](src/main/java/tech/smartboot/redisun/cmd/SetCommand.java) | 完整选项支持:NX、XX、EX、PX、PXAT、KEEPTTL |
| `GET` | 获取键的值 | [GetCommand](src/main/java/tech/smartboot/redisun/cmd/GetCommand.java) | 基本键值检索 |
| `DEL` | 删除一个或多个键 | [DelCommand](src/main/java/tech/smartboot/redisun/cmd/DelCommand.java) | 支持多键删除 |
| `ZADD` | 向有序集合添加成员 | [ZAddCommand](src/main/java/tech/smartboot/redisun/cmd/ZAddCommand.java) | 基本有序集合成员添加 |
| `SELECT` | 切换数据库 | [SelectCommand](src/main/java/tech/smartboot/redisun/cmd/SelectCommand.java) | 仅在初始连接时执行,不支持运行时切换 |
| `DBSIZE` | 返回当前数据库的键数量 | [DBSizeCommand](src/main/java/tech/smartboot/redisun/cmd/DBSizeCommand.java) | 统计当前数据库键数量 |
| `FLUSHALL` | 清空所有数据库 | [FlushAllCommand](src/main/java/tech/smartboot/redisun/cmd/FlushAllCommand.java) | 删除所有数据库中的键 |
### 🚧 进行中/计划中的命令
我们正在积极扩展 Redis 命令支持。未来版本将包括:
- **字符串命令**:`INCR`、`DECR`、`APPEND`、`STRLEN` 等
- **哈希命令**:`HSET`、`HGET`、`HMSET`、`HGETALL` 等
- **列表命令**:`LPUSH`、`RPUSH`、`LPOP`、`RPOP` 等
- **集合命令**:`SADD`、`SREM`、`SMEMBERS` 等
- **有序集合命令**:`ZREM`、`ZRANGE`、`ZSCORE` 等
- **键命令**:`EXISTS`、`EXPIRE`、`TTL`、`TYPE` 等
### 🛠 自定义命令扩展
Redisun 提供了强大的扩展机制。您可以通过继承 [Command](src/main/java/tech/smartboot/redisun/Command.java) 基类轻松实现自定义 Redis 命令。这使得添加库中尚未内置的任何 Redis 命令支持变得简单。
有关使用自定义命令扩展 Redisun 的详细信息,请参阅我们的[扩展指南](#)。
## 构建与测试
确保已安装 Maven,然后运行以下命令:
```bash
mvn clean package
```
运行测试:
```bash
mvn test
```
## 许可证
该项目使用 [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) 许可证。
## 贡献
欢迎提交 Pull Request 和建议。请参阅项目 [issue 跟踪](https://gitee.com/smartboot/redisun/issues) 获取待办事项。
## 联系方式
如有问题或建议,请提交 issue 或联系项目维护者 [三刀](https://gitee.com/smartdms)。