Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

README.md

Swift 3.0

SwiftRedis

Asynchronous Redis client in Swift 3.

Currently supports the following:

  • Asynchronous operation
  • Has a "generic" mechanism that allows sending any Redis command that returns a result
  • Utility functions to send GET, SET, AUTH commands
  • Support for PubSub commands: PUBLISH, SUBSCRIBE
  • Mechanism to extend with more commands
  • Provides a RedisResponse class which encapsulates possible responses from Redis: String, Int, Data (BulkString), Error, Array

Blatanly missing:

  • Error checking still needs work.
  • Source code definitely needs more documentation
  • SSL connectivity not tested.
  • A single RedisInterface object can only subscribe to a single channel (workaround: use two RedisInterface objects)

Usage

Add the SwiftRedis source files to your project. Create a RedisInterface object, call connect() and then issue Redis commands.

Simple example

let redis = RedisInterface(host: <host-address String>, port: <port Int>, auth: <auth String>)

// Queue a request to initiate a connection.
// Once a connection is established, an AUTH command will be issued with the auth parameters specified above.
redis.connect()

// Queue a request to set a value for a key in the Redis database.  This command will only
// execute after the connection is established and authenticated.
redis.setValueForKey("some:key", stringValue: "a value", completionHandler: { success, cmd in
    // this completion handler will be executed after the SET command returns
    if success {
        print("value stored successfully")
    } else {
        print("value was not stored")
    }
})

// Queue a request to get the value of a key in the Redis database.  This command will only
// execute after the previous command is complete.
redis.getValueForKey("some:key", completionHandler: { success, key, data, cmd in
    if success {
        print("the stored data for \(key) is \(data!.stringVal)")
    } else {
        print("could not get value for \(key)")
    }
})

// Queue a QUIT command (the connection will close when the QUIT command completes)
redis.quit({success, cmd in
    print("QUIT command completed")
})

For more info

To understand high-level usage: check the Unit Tests for usage of the RedisInterface() class.

To understand internals and learn how to extend this: examine the Unit Tests for the lower-level classes (RedisConnection, RedisCommand, RedisParser, etc.)

Note that in order to run the unit tests, you'll need to specifiy host/port/auth details in the ConnectionParams class.

About

A Swift client for Redis, providing asynchronous operation

Resources

License

Releases

No releases published

Packages

No packages published

Languages

You can’t perform that action at this time.