一个基于 Swift 并发的 Redis (3) 协议实现。本项目使用 Apple 的 Network 框架来实现 Redis 协议。
该项目支持 Redis 流式 (RESP-3) 协议。它内置支持使用 Swift 异步迭代器的 Redis 发布-订阅功能。
let connection = RedisConnection(host: host)
try await connection.connect()
try await connection.hello(password: password)
_ = try await connection.send("SET", "foo", "bar")
print(try await connection.send("GET", "foo").stringValue)
let connection = RedisConnection(host: host)
try await connection.connect()
try await connection.hello(password: password)
for try await message in try await connection.subscribe(channels: channel) {
print(message.value)
}
本项目是一个业余项目。买者自慎,诸如此类。
在 Network 框架协议的实现上花费了大量精力。Redis 协议(或者更确切地说是 RESP3 协议)设计得不是很好(没有帧数据,您必须解析整个消息才能知道它有多大...),并且遇到了许多实现问题。我觉得我已经解决了所有这些问题,并且该协议现在运行良好。
性能似乎非常出色,在远程 Redis 服务器上(通过 Wireguard 访问)每秒发布和订阅 10,000 条消息。
该项目不了解任何 Redis 命令类型,除了用于实现登录/身份验证和发布-订阅功能的一些命令之外。