Skip to content

Latest commit

 

History

History
executable file
·
113 lines (95 loc) · 2.06 KB

Redis.md

File metadata and controls

executable file
·
113 lines (95 loc) · 2.06 KB

Redis

Redis是BSD许可的开源、内存驻留存储的数据结构仓库,经常用于数据库、高速缓冲和消息代理。

详见http://redis.io

Redis 数据库连接器 - Perfect 软件框架

快速上手

通过默认参数获得Redis连接:

RedisClient.getClient(withIdentifier: RedisClientIdentifier()) {
	c in
	do {
		let client = try c()
		...
	} catch {
		...
	}
}

测试数据库连接效果:

client.ping {
	response in
	defer {
		RedisClient.releaseClient(client)
	}
	guard case .simpleString(let s) = response else {
		...
		return
	}
	XCTAssert(s == "PONG", "响应无效: \(response)")
}

设置变量和值

let (key, value) = ("mykey", "myvalue")
client.set(key: key, value: .string(value)) {
	response in
	guard case .simpleString(let s) = response else {
		...
		return
	}
	client.get(key: key) {
		response in
		defer {
			RedisClient.releaseClient(client)
		}
		guard case .bulkString = response else {
			...
			return
		}
		let s = response.toString()
		XCTAssert(s == value, "响应无效: \(response)")
	}
}

发布/订阅:

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 {
		...
	}
}

编译

请在Package.swift 文件中增加依存关系:

.Package(url: "https://github.com/PerfectlySoft/Perfect-Redis.git", majorVersion: 3)