跳转到内容

Redisun 介绍

Redisun 是一个基于 smart-socket 开发的轻量级高性能 Redis 客户端,专为 Java 平台设计。它支持异步非阻塞 I/O 操作,提供与 Redis 服务器兼容的内存键值存储访问能力。

💡 核心特性

  • 轻量级设计:核心代码仅由少量类组成,jar包仅33KB,资源占用极小
  • 高性能通信:基于 smart-socket Java AIO 实现,单线程处理能力强,资源消耗低
  • 连接复用技术:创新的连接复用机制,一个连接可同时处理多个并发请求
  • RESP 协议支持:完整支持 Redis 序列化协议(RESP),兼容 Redis 服务器

下面是一个简单的使用示例,展示了如何使用 Redisun 进行基本的 Redis 操作:

import tech.smartboot.redisun.Redisun;
public class BasicExample {
public static void main(String[] args) {
// 创建 Redisun 客户端实例
Redisun redisun = Redisun.create(options ->
options.setAddress("127.0.0.1:6379") // 设置 Redis 服务器地址
.debug(true) // 开启调试模式
);
try {
// 设置键值对
boolean setResult = redisun.set("hello", "world");
System.out.println("SET操作结果: " + setResult);
// 获取键值
String getResult = redisun.get("hello");
System.out.println("GET操作结果: " + getResult);
// 删除键
int delResult = redisun.del("hello");
System.out.println("DEL操作结果: " + delResult);
} finally {
// 关闭客户端,释放资源
redisun.close();
}
}
}

Redisun 还支持更多 Redis 命令,例如有序集合操作:

// 添加元素到有序集合
int zaddResult = redisun.zadd("myzset", 1.0, "member1");
System.out.println("ZADD操作结果: " + zaddResult);
// 可选参数设置
boolean setResultWithOptions = redisun.set("key", "value", cmd ->
cmd.expire(60) // 设置60秒过期
.setIfNotExists() // 仅在键不存在时设置
);
System.out.println("带选项的SET操作结果: " + setResultWithOptions);

通过这些示例,您可以看到 Redisun 的 API 设计简洁直观,易于集成到您的项目中。

Redisun 正在不断扩展对 Redis 命令的支持。以下是当前命令实现状态和未来开发计划:

  • 🔴 高优先级 (P0): 核心常用命令,直接影响客户端可用性
  • 🟡 中优先级 (P1): 重要但非核心命令,完善客户端功能
  • 🟢 低优先级 (P2): 特殊场景命令,根据需求决定是否实现
命令描述实现类备注
HELLO服务器握手和认证HelloCommand支持认证和协议协商
SET设置键值对SetCommand完整选项支持:NX、XX、EX、PX、PXAT、KEEPTTL
GET获取键的值GetCommand基本键值检索
DEL删除一个或多个键DelCommand支持多键删除
ZADD向有序集合添加成员ZAddCommand基本有序集合成员添加
SELECT切换数据库SelectCommand仅在初始连接时执行,不支持运行时切换
DBSIZE返回当前数据库的键数量DBSizeCommand统计当前数据库键数量
FLUSHALL清空所有数据库FlushAllCommand删除所有数据库中的键
FLUSHDB清空当前数据库FlushDbCommand清除当前数据库
EXISTS检查键是否存在ExistsCommand检查一个或多个键是否存在
INCR将键的整数值加一IncrCommand原子递增操作
DECR将键的整数值减一DecrCommand原子递减操作
APPEND追加值到键AppendCommand字符串追加操作
STRLEN获取键值的长度StrlenCommand字符串长度操作
HSET设置哈希字段的字符串值HSetCommand哈希字段设置操作
HGET获取哈希字段的值HGetCommand哈希字段获取操作
SADD向集合添加一个或多个成员SAddCommand集合成员添加操作
INCRBY将键的整数值增加给定数值IncrByCommand原子递增操作
DECRBY将键的整数值减少给定数值DecrByCommand原子递减操作
MGET获取所有给定键的值MGetCommand获取多个键值
MSET设置多个键值对MSetCommand设置多个键值对
EXPIRE为给定 key 设置过期时间ExpireCommand支持 NX, XX, GT, LT 选项
TTL获取键的剩余过期时间TtlCommand以秒为单位返回键的剩余生存时间
TYPE获取键值的类型TypeCommand返回键值的类型
LPUSH在列表头部插入元素LPushCommand在列表头部插入一个或多个元素
RPUSH在列表尾部插入元素RPushCommand在列表尾部插入一个或多个元素
LPOP移除并返回列表头部元素LPopCommand移除并返回列表的第一个元素
RPOP移除并返回列表尾部元素RPopCommand移除并返回列表的最后一个元素
ZREM从有序集合中移除成员ZRemCommand从有序集合中移除一个或多个成员
ZRANGE返回有序集合的成员范围ZRangeCommand返回有序集合指定索引范围的成员
ZSCORE获取有序集合成员的分数ZScoreCommand获取有序集合中指定成员的分数

我们正在积极扩展 Redis 命令支持。未来版本将包括更多命令。

命令优先级状态说明
GETRANGE🟡 P1待开发返回键的值的子字符串
SETRANGE🟡 P1待开发覆盖键值的一部分
GETSET🟡 P1待开发设置键的字符串值并返回其旧值
INCRBYFLOAT🟡 P1待开发将键的浮点值增加给定数值
MSETNX🟡 P1待开发同时设置多个键值对,仅当所有键都不存在时
PSETEX🟢 P2待开发以毫秒为单位设置键的过期时间和值
SETBIT🟢 P2待开发设置或清除键的字符串值中偏移量上的位
GETBIT🟢 P2待开发获取键的字符串值中偏移量上的位值
BITCOUNT🟢 P2待开发计算键的字符串值中被设置为 1 的位数量
BITOP🟢 P2待开发对多个键执行位运算操作
BITPOS🟢 P2待开发查找键的字符串值中第一个被设置为 0 或 1 的位位置
命令优先级状态说明
HMSET🟡 P1待开发同时将多个 field-value (域-值)对设置到哈希表中
HMGET🟡 P1待开发获取哈希表中一个或多个给定域的值
HGETALL🟡 P1待开发获取哈希表中所有的域和值
HDEL🟡 P1待开发删除哈希表中一个或多个指定域
HEXISTS🟡 P1待开发查看哈希表中指定域是否存在
HLEN🟡 P1待开发获取哈希表中域的数量
HINCRBY🟡 P1待开发为哈希表中指定域的值加上增量
HINCRBYFLOAT🟡 P1待开发为哈希表中指定域的值加上浮点增量
HKEYS🟢 P2待开发获取哈希表中所有的域
HVALS🟢 P2待开发获取哈希表中所有的值
HSETNX🟢 P2待开发只有在域 field 不存在时,设置哈希表字段的值
HSCAN🟢 P2待开发迭代哈希表中的键值对
HRANDFIELD🟢 P2待开发从哈希表中随机获取字段
命令优先级状态说明
LLEN🟡 P1待开发获取列表长度
LRANGE🟡 P1待开发获取列表指定范围内的元素
LINDEX🟡 P1待开发通过索引获取列表中的元素
LSET🟡 P1待开发通过索引设置列表元素的值
LREM🟡 P1待开发移除列表中与参数值相等的元素
LTRIM🟡 P1待开发对一个列表进行修剪(trim),保留指定区间内的元素
LINSERT🟡 P1待开发在列表的元素前或者后插入元素
BLPOP🟢 P2待开发移出并获取列表的第一个元素,如果列表没有元素会阻塞
BRPOP🟢 P2待开发移出并获取列表的最后一个元素,如果列表没有元素会阻塞
RPOPLPUSH🟢 P2待开发移除列表的最后一个元素,并将该元素添加到另一个列表并返回
BRPOPLPUSH🟢 P2待开发从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它
LPOS🟢 P2待开发返回列表中匹配元素的各项信息
命令优先级状态说明
SCARD🟡 P1待开发获取集合的成员数
SMEMBERS🟡 P1待开发返回集合中的所有成员
SISMEMBER🟡 P1待开发判断成员元素是否是集合的成员
SMISMEMBER🟡 P1待开发判断多个成员元素是否是集合的成员
SREM🟡 P1待开发移除集合中的一个或多个成员
SPOP🟡 P1待开发移除并返回集合中的一个随机元素
SRANDMEMBER🟡 P1待开发返回集合中的一个或多个随机元素
SMOVE🟡 P1待开发将指定成员元素从源集合移动到目标集合
SDIFF🟢 P2待开发返回给定所有集合的差集
SDIFFSTORE🟢 P2待开发将给定所有集合的差集存储在指定的集合中
SINTER🟢 P2待开发返回给定所有集合的交集
SINTERSTORE🟢 P2待开发将给定所有集合的交集存储在指定的集合中
SUNION🟢 P2待开发返回给定所有集合的并集
SUNIONSTORE🟢 P2待开发将给定所有集合的并集存储在指定的集合中
SSCAN🟢 P2待开发迭代集合中的元素
命令优先级状态说明
ZCARD🟡 P1待开发获取有序集合的成员数
ZCOUNT🟡 P1待开发计算在有序集合中指定区间分数的成员数
ZINCRBY🟡 P1待开发有序集合中对指定成员的分数加上增量
ZREVRANGE🟡 P1待开发返回有序集中指定区间内的成员,通过索引,分数从高到低
ZREVRANK🟡 P1待开发返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZLEXCOUNT🟢 P2待开发在有序集合中计算指定字典区间内成员数量
ZRANGEBYLEX🟢 P2待开发通过字典区间返回有序集合的成员
ZREMRANGEBYLEX🟢 P2待开发移除有序集合中给定的字典区间的所有成员
ZRANGEBYSCORE🟢 P2待开发通过分数返回有序集合指定区间内的成员
ZREVRANGEBYSCORE🟢 P2待开发返回有序集中指定分数区间内的成员,分数从高到低排序
ZREMRANGEBYRANK🟢 P2待开发移除有序集合中给定排名区间的所有成员
ZREMRANGEBYSCORE🟢 P2待开发移除有序集合中给定分数区间的所有成员
ZUNION🟢 P2待开发计算给定的一个或多个有序集的并集
ZUNIONSTORE🟢 P2待开发计算给定的一个或多个有序集的并集,并存储在新的有序集中
ZINTER🟢 P2待开发计算给定的一个或多个有序集的交集
ZINTERSTORE🟢 P2待开发计算给定的一个或多个有序集的交集,并存储在新的有序集中
ZSCAN🟢 P2待开发迭代有序集合中的元素(包括元素成员和元素分值)
ZMSCORE🟢 P2待开发返回有序集中一个或多个成员的分数
ZRANK🟢 P2待开发返回有序集合中指定成员的索引
命令优先级状态说明
KEYS🟡 P1待开发查找所有符合给定模式(pattern)的键
PEXPIRE🟡 P1待开发设置键的过期时间(毫秒)
PTTL🟡 P1待开发以毫秒为单位返回键的剩余生存时间
PERSIST🟡 P1待开发移除键的过期时间
EXPIREAT🟡 P1待开发为键设置过期时间戳
PEXPIREAT🟡 P1待开发以毫秒为单位为键设置过期时间戳
RANDOMKEY🟢 P2待开发从当前数据库中随机返回一个键
RENAME🟢 P2待开发修改键的名称
RENAMENX🟢 P2待开发仅在新键不存在时修改键名
MOVE🟢 P2待开发将当前数据库的键移动到指定数据库中
DUMP🟢 P2待开发序列化给定键,并返回被序列化的值
RESTORE🟢 P2待开发反序列化给定的序列化值,并将它和给定的键相关联
SORT🟢 P2待开发返回或保存给定列表、集合、有序集合键的经过排序的元素
SCAN🟢 P2待开发迭代数据库中的键空间
命令优先级状态说明
INFO🟡 P1待开发获取 Redis 服务器的各种信息和统计数值
TIME🟢 P2待开发返回当前服务器时间
PING🟢 P2待开发测试与服务器的连接是否仍然生效
ECHO🟢 P2待开发打印特定信息
CLIENT LIST🟢 P2待开发获取连接到服务器的客户端连接列表
CLIENT KILL🟢 P2待开发关闭地址为 addr 的客户端连接
CONFIG GET🟢 P2待开发获取配置参数的值
CONFIG SET🟢 P2待开发修改配置参数的值
BGSAVE🟢 P2待开发在后台异步保存当前数据库的数据到磁盘
LASTSAVE🟢 P2待开发返回最近一次 Redis 成功将数据保存到磁盘上的时间

Redisun 提供了强大的扩展机制。您可以通过继承 Command 基类轻松实现自定义 Redis 命令。这使得添加库中尚未内置的任何 Redis 命令支持变得简单。

有关使用自定义命令扩展 Redisun 的详细信息,请参阅我们的扩展指南