Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/perfectlysoft/perfect-redis
A Swift client for Redis.
https://github.com/perfectlysoft/perfect-redis
database perfect redis redis-client server-side-swift swift
Last synced: 2 days ago
JSON representation
A Swift client for Redis.
- Host: GitHub
- URL: https://github.com/perfectlysoft/perfect-redis
- Owner: PerfectlySoft
- License: apache-2.0
- Created: 2016-06-03T00:38:57.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-07-18T17:29:57.000Z (over 4 years ago)
- Last Synced: 2024-10-02T12:02:47.637Z (about 1 month ago)
- Topics: database, perfect, redis, redis-client, server-side-swift, swift
- Language: Swift
- Homepage: https://www.perfect.org
- Size: 331 KB
- Stars: 28
- Watchers: 7
- Forks: 16
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Perfect-Redis [简体中文](README.zh_CN.md)
Redis client support for Perfect
## Quick Start
Get a redis client with defaults (localhost, default port):
```swift
let client = RedisClient.getClient(withIdentifier: RedisClientIdentifier())```
Ping the server:
```swift
let response = client.ping()
guard case .simpleString(let s) = response else {
return
}
XCTAssert(s == "PONG", "Unexpected response \(response)")
```Set/get a value:
```swift
let (key, value) = ("mykey", "myvalue")
var response = client.set(key: key, value: .string(value))
guard case .simpleString(let s) = response else {
...
return
}
response = client.get(key: key)
guard case .bulkString = response else {
...
return
}
let s = response.toString()
XCTAssert(s == value, "Unexpected response \(response)")
```Pub/sub with two clients using async API:
```swift
RedisClient.getClient(withIdentifier: RedisClientIdentifier()) {
c in
do {
let client1 = try c()
RedisClient.getClient(withIdentifier: RedisClientIdentifier()) {
c in
do {
let client2 = try c()
client1.subscribe(channels: ["foo"]) {
response in
client2.publish(channel: "foo", message: .string("Hello!")) {
response in
client1.readPublished(timeoutSeconds: 5.0) {
response in
guard case .array(let array) = response else {
...
return
}
XCTAssert(array.count == 3, "Invalid array elements")
XCTAssert(array[0].toString() == "message")
XCTAssert(array[1].toString() == "foo")
XCTAssert(array[2].toString() == "Hello!")
}
}
}
} catch {
...
}
}
} catch {
...
}
}
```## Building
Add this project as a dependency in your Package.swift file.
```
.package(url: "https://github.com/PerfectlySoft/Perfect-Redis.git", from: "3.2.3")
```## Further Information
For more information on the Perfect project, please visit [perfect.org](http://perfect.org).