圆点 快速的未来将会来到您所在城市的某场活动。

在我们发布 Redis 大会上加入我们吧

在服务器端 Swift Web 框架中如何使用 Redis

在最近的一个项目中,我需要使用不同的技术栈来开发应用程序服务。我的要求之一是为应用程序中的每个微服务选择不同的编程语言。虽然 Java、Node 和 Python 是容易的选择,但我想要尝试一些新奇和模糊的东西。在我与碰巧是一位活跃的 iOS 开发者的兄弟的谈话中,我第一次了解到 Swift 和 Kitura,并决定尝试一下。

每当我尝试一种新语言时,我都会尝试将其与数据库配合使用。在本示例中,我将展示如何轻松地将 Redis 用作基于 Swift 的微服务的存储库。

我将从简要介绍我的技术栈开始,然后逐步指导你使用这些工具构建应用程序

Swift 是由 Apple Inc. 为 iOS、macOS、watchOS、tvOS、Linux 和 z/OS 开发的一门通用、多范例编译型编程语言。

Kitura 是一个由 IBM 开发并根据 Apache 2.0 许可的用 Swift 编写的免费开源 Web 框架。它是一个用于编写 Swift 服务器应用程序的 HTTP 服务器和 Web 框架。

Redis 是一个开源(BSD 许可)的内存数据结构存储库,用作数据库、缓存和消息代理。凭借近 15 亿次的 Docker 下载量,它是最流行的 NoSQL 数据库之一。

步骤 1:安装 Swift

首先,从 App Store 下载并安装最新版本的 Xcode。

接下来,检查是否已安装 Swift。在终端中,键入“swift”命令并传递“–version”标志
swift --version

Apple Swift 版本 4.2.1(swiftlang-1000.0.42 clang-1000.10.45.1)
目标:x86_64-apple-darwin17.7.0

如果未安装 Swift,则运行以下 –install 命令

xcode-select --install

步骤 2:安装 Kitura

安装 Kitura Web 服务器也非常容易。

1. 创建一个新目录来承载你的项目。
mkdir MyKituraApp && cd MyKituraApp

2. 将新目录初始化为 Swift 项目。
swift package init --type executable

正在创建可执行程序包:MyKituraApp
正在创建 Package.swift
正在创建 README.md
正在创建 .gitignore
正在创建 Sources/
正在创建 Sources/MyKituraApp/main.swift
正在创建 Tests/
正在创建 Tests/LinuxMain.swift
正在创建 Tests/MyKituraAppTests/
正在创建 Tests/MyKituraAppTests/MyKituraAppTests.swift
正在创建 Tests/MyKituraAppTests/XCTestManifests.swift

3. 要将 Kitura 添加到你的依赖项中,请编辑 `Package.swift`。
打开 `Package.swift` 并对其进行编辑,使其具有以下文本

// swift-tools-version:4.2

import PackageDescription

let package = Package(
    name: "MyKituraApp",
    dependencies: [
        .package(url: "https://github.com/IBM-Swift/Kitura", from: "2.6.0")
    ],
    targets: [
        .target(
            name: "MyKituraApp",
            dependencies: ["Kitura"]),
        .testTarget(
            name: "MyKituraAppTests",
            dependencies: ["MyKituraApp"]),
    ]
)

4. 构建项目以拉取你的新依赖项
swift build

转到 sources 文件夹并编辑 `main.swift`,使其具有以下文本,该文本将启动 Kitura Web 服务器。

import Kitura

let router = Router()
Kitura.addHTTPServer(onPort: 8080, with: router)
Kitura.run()

5. 由于我们已将代码添加到 `main.swift`,因此你需要重新编译项目
swift build

6. 现在你可以准备好运行你的 Swift 应用程序。
swift run

7. 在浏览器中导航到:https://127.0.0.1:8080,它将返回以下内容

步骤 3:获取 Redis

在本例中,我使用 Redis Cloud,这是一个全面托管的 Redis 数据库即服务。使用 Redis Cloud 可以轻松免费地创建 Redis 实例,此外还提供其他可用选项(请随时在 Get Started with Redis 中进行探索)。

1. 访问 Redis Get Started 页面,然后在“Cloud Hosted”部分下单击 SIGN UP。您将登陆到以下页面

2. 登录以创建您的订阅并选择免费(30MB)Redis 数据库。

3. 命名您的数据库并激活它。


4. 记录数据库端点和密码。

在本例中,redis-15878.c91.us-east-1-3.ec2.cloud.redis.com 是您的 Redis 数据库的 URL,而 15878 是端口。

步骤 4:使用 Kitura-Redis 客户端连接 Redis

Kitura-Redis 是一个纯 Swift 客户端,用于与 Redis 数据库进行交互。

1. 要向您的依赖项添加 Kitura-Redis,您需要再次编辑 `Package.swift`。
打开 `Package.swift` 并对其进行编辑,以便其现在包含以下文本

// swift-tools-version:4.2

import PackageDescription

let package = Package(
    name: "MyKituraApp",
    dependencies: [
        .package(url: "https://github.com/IBM-Swift/Kitura", from: "2.6.0"),
        .package(url: "https://github.com/IBM-Swift/Kitura-redis.git", from: "2.1.0")
    ],
    targets: [
        .target(
            name: "MyKituraApp",
            dependencies: ["Kitura","SwiftRedis"]),
        .testTarget(
            name: "MyKituraAppTests",
            dependencies: ["MyKituraApp"]),
    ]
)

2. 现在,您将使用 **Kitura-Redis** 在云中建立与 Redis 数据库的连接并在其中设置键“Redis”,值“On Swift”。

这是一个简单的示例,但您当然可以以更复杂的方式使用 Redis。

转到您的 sources 文件夹并编辑 `main.swift`,以便其包含以下文本

* 请务必用您的 Redis Cloud 数据库配置更新、和。

import Kitura
import Foundation
import SwiftRedis

let router = Router()
Kitura.addHTTPServer(onPort: 8080, with: router)

let redis = Redis()

//Establish connection with Redis

redis.connect(host: "", port: ) { (redisError: NSError?) in

   //Check for if host and port are incorrect
    if let error = redisError {
        print(error)
    }

    //If connection to Redis successful then pass in the password

    else {

        let password = ""
	    redis.auth(password) { (pwdError: NSError?) in
	    	if let errorPwd = pwdError {
	        	print(errorPwd)
	    	}
	    	else {
	    		print("Password Authentication Is Successful")
	    	}
	    }

        print("Established Connection to Redis")

        // Set a key
        redis.set("Redis", value: "on Swift") { (result: Bool, redisError: NSError?) in
            if let error = redisError {
                print(error)
            }
            // Get the same key
            redis.get("Redis") { (string: RedisString?, redisError: NSError?) in
                if let error = redisError {
                    print(error)
                }
                else if let string = string?.asString {
                    print("Redis (string)")
                }
            }
        }
    }
}
Kitura.run()

3. 由于您已经向 `main.swift` 添加了代码,因此需要重新编译项目
swift build

4. 现在,您可以准备好运行 Swift 应用,并将看到以下内容
swift run

Redis Password Authenticated
Connected to Redis
Redis on Swift

5. 使用 Redis CLI,您可以检查在“main.swift”中设置的键值是否成功。
redis-15878.c91.us-east-1-3.ec2.cloud.redis.com:15878> Keys *
1) Redis
redis-15878.c91.us-east-1-3.ec2.cloud.redis.com:15878> GET Redis
on Swift

有关更多信息,请访问以下页面

Swift
Kitura
IBM Swift/Kitura
IBM Swift/Kitura-Redis

祝您使用 Redis 顺利进行 Swifting!