Swift Redis library
Clone or download
mr-j-tree and ianpartridge Clarify usage comment for set() functions (#67)
It was not immediately clear that supplying a value of false for the "exists" argument has a special meaning. It causes the "NX" argument to be sent to Redis, as opposed to no argument when supplying a value of nil. At least that was my experience when using this function for the first time - the implications of true/false/nil were not explained until I read the source code for this function.
Latest commit 7f4c7f1 Jul 19, 2018

README.md

Kitura

APIDoc Build Status - Master macOS Linux Apache 2 Slack Status

KituraRedis

KituraRedis is a pure Swift client for interacting with a Redis database.

Swift version

The latest version of Kitura-redis requires Swift 4.0.3 or later. You can download this version of the Swift binaries by following this link. Compatibility with other Swift versions is not guaranteed.

Usage

Add dependencies

Add the Kitura-redis package to the dependencies within your application’s Package.swift file. Substitute "x.x.x" with the latest Kitura-redis release.

.package(url: "https://github.com/IBM-Swift/Kitura-redis.git", from: "x.x.x")

Add SwiftRedis to your target's dependencies:

.target(name: "example", dependencies: ["SwiftRedis"]),

Import package

import SwiftRedis

Redis installation

To test Kitura-redis locally you need to install Redis.

macOS

brew install redis

To start redis as a background service and have the service restarted at login:

brew services start redis

Or, if you don't want redis running as a background service:

redis-server /usr/local/etc/redis.conf

Example

This example shows you how to connect and make calls to Redis from Swift.

Create simple Swift executable

Create a directory for this project, change into it and then initialize the project:

$ mkdir exampleRedis && cd exampleRedis
$ swift package init --type executable

Add Kitura-redis as a dependency as described above in "Add dependencies".

Now, edit your main.swift file to contain:

import Foundation
import SwiftRedis

let redis = Redis()

redis.connect(host: "localhost", port: 6379) { (redisError: NSError?) in
    if let error = redisError {
        print(error)
    }
    else {
        print("Connected 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)")
                }
            }
        }
    }
}

Next, build the program and run it (either within Xcode or on the command line):

$ swift build
$ .build/debug/redisExample

You should see:

$ Connected to Redis
$ Redis on Swift

This shows that we've connected to Redis, set a string value for a key and then successfully retrieved the value for that key.

Contributing

Contributions to the Kitura-redis project are welcome. You will want to be able to test your changes locally before submitting a pull request.

The tests require a Redis server to be accessible locally on the default port (6379). If you do not wish to install Redis permanently, you can use Docker to run a temporary instance locally as follows:

docker run -d -p 6379:6379 redis:alpine redis-server --requirepass password123

The password specified above must match the one defined in Tests/SwiftRedis/password.txt. Then you can run the tests as normal, either via Xcode or with:

swift test

API Documentation

For more information visit our API reference.

Community

We love to talk server-side Swift, and Kitura. Join our Slack to meet the team!

License

This library is licensed under Apache 2.0. Full license text is available in LICENSE.