SwiftNIO Redis 客户端

Swift5 macOS tuxOS Travis

SwiftNIO Redis 是一个 Swift 包,其中包含一个高性能的 Redis 协议 实现,用于 SwiftNIO。 这是一个独立项目,除了 SwiftNIO 之外没有其他依赖项。

除了可以编码和解码 RESP (REdis 序列化协议) 的协议实现之外,我们还提供了一个基于此构建的 Redis 客户端模块

什么是 Redis? Redis 是一个高度可扩展的内存数据结构存储,用作数据库、缓存和消息代理。 例如,它可以使用其“过期键”功能来实现支持 Web 后端的会话存储,或者可以用作使用其内置 PubSub 功能来实现聊天服务器的中继。

这个 Swift 包包含一个基于协议实现的简单 Redis 客户端 swift-nio-redis。 我们还提供了一个实际的 Redis 服务器,使用 SwiftNIO 和 SwiftNIO Redis 用 Swift 编写。

使用 Swift Package Manager 导入模块

一个导入必要模块的 Package.swift 示例

// swift-tools-version:5.0

import PackageDescription

let package = Package(
    name: "RedisTests",
    dependencies: [
        .package(url: "https://github.com/NozeIO/swift-nio-redis-client.git", 
                 from: "0.10.0")
    ],
    targets: [
        .target(name: "MyClientTool",
                dependencies: [ "Redis" ])
    ]
)

使用 Redis 客户端模块

Redis 客户端模块模仿 Node.js 的 node_redis 模块,但除了 Node.js 的 (err,result) 风格回调之外,它还支持类似 NIO 的基于 Promise/Future 的方法。 选择你喜欢的。

简单的 KVS 使用示例

import Redis

let client = Redis.createClient()

client.set ("counter", 0, expire: 2)
client.incr("counter", by: 10)
client.get ("counter") { err, value in
    print("Reply:", value)
}
client.keys("*") { err, reply in
    guard let keys = reply else { return print("got no keys!") }
    print("all keys in store:", keys.joined(separator: ","))
}

使用 NIO Promises

client
    .set ("counter", 0, expire: 2)
    .then {
        client.incr("counter", by: 10)
    }
    .then {
        client.get("counter")
    }
    .map {
        print("counter is:", $0)
    }

状态

协议实现 被认为是完整的。 telnet 变体中还有一些未完成的地方,但常规二进制协议被认为是已完成的。

Redis 客户端模块 还有一些未完成的地方,但似乎工作正常。

ZeeZide 呈现。 我们喜欢 反馈、GitHub 星星、酷炫的 合同工作,大概是你能想到的任何形式的赞美。