Redis-Client für Swift (iOS/macOS) – RediStack

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

RediStack: Asynchroner Redis-Client für Swift (iOS/macOS)

\n\n

RediStack ist ein moderner, vollständig asynchroner Client für Redis, geschrieben in Swift. Er basiert auf dem leistungsstarken Framework SwiftNIO, was eine effiziente Verarbeitung von Netzwerkanfragen ohne Blockierung des Hauptthreads ermöglicht. Die Bibliothek ist ideal für iOS- und macOS-Anwendungen, die Caching, Warteschlangenverwaltung oder Pub/Sub benötigen.

\n\n

RediStack unterstützt alle grundlegenden Redis-Funktionen: Strings, Hashes, Listen, Sets, Transaktionen, Pipelines und Veröffentlichen/Abonnieren (Pub/Sub). Die Bibliothek wird aktiv weiterentwickelt und von der Swift-Community unterstützt.

\n\n

Installation

\n

Fügen Sie RediStack über den Swift Package Manager zu Ihrem Projekt hinzu:

\n
// Package.swift\ndependencies: [\n    .package(url: "https://github.com/swift-server/RediStack.git", from: "1.0.0")\n],\ntargets: [\n    .target(name: "MyApp", dependencies: ["RediStack"])\n]\n
\n

Für CocoaPods verwenden Sie:

\n
pod 'RediStack', '~> 1.0'\n
\n\n

Grundlegende Verbindung

\n

Erstellen Sie eine Verbindung zum Redis-Server mit RedisConnection:

\n
import RediStack\nimport NIOCore\nimport NIOPosix\n\nlet eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1)\nlet eventLoop = eventLoopGroup.next()\n\nlet connection = try await RedisConnection.connect(\n    to: try .init(hostname: "localhost", port: 6379),\n    on: eventLoop\n)\n
\n\n

Arbeiten mit Daten

\n

Beispiele für grundlegende Operationen:

\n
// Wert setzen\ntry await connection.set("user:1:name", to: "Alexej")\ntry await connection.set("user:1:age", to: 30)\n\n// Wert abrufen\nlet name: String? = try await connection.get("user:1:name")\nprint(name ?? "nicht gefunden") // Gibt aus: Alexej\n\n// Arbeiten mit Hashes\ntry await connection.hset("user:1", field: "email", to: "alex@example.com")\nlet email: String? = try await connection.hget("user:1", field: "email")\n\n// Inkrement\nlet newCount = try await connection.increment("page:views")\nprint("Aufrufe: \\(newCount)")\n
\n\n

Transaktionen und Pipelines

\n

RediStack unterstützt Pipelines zum gleichzeitigen Senden mehrerer Befehle:

\n
let pipeline = connection.pipeline()\npipeline.set("key1", to: "value1")\npipeline.set("key2", to: "value2")\npipeline.get("key1")\nlet results = try await pipeline.execute()\n// results — Array der Antworten in der Reihenfolge der Befehle\n
\n\n

Für Transaktionen verwenden Sie MULTI/EXEC:

\n
try await connection.sendCommandsImmediately(false)\ntry await connection.set("balance", to: 100)\ntry await connection.decrement("balance")\ntry await connection.sendCommandsImmediately(true)\n
\n\n

Pub/Sub (Veröffentlichen und Abonnieren)

\n

RediStack unterstützt asynchrone Abonnements auf Kanäle:

\n
// Abonnement auf einen Kanal\nlet subscriber = connection.subscribe(to: "updates") { event in\n    switch event {\n    case .message(let channel, let message):\n        print("Erhalten von \\(channel): \\(message)")\n    default:\n        break\n    }\n}\n\n// Nachricht veröffentlichen\ntry await connection.publish("Hallo zusammen!", to: "updates")\n
\n\n

Fehlerbehandlung und Wiederverbindung

\n

Für Produktionsanwendungen ist es wichtig, Verbindungsabbrüche zu behandeln. RediStack bietet Mechanismen zur Wiederverbindung über RedisConnectionPool:

\n
let pool = RedisConnectionPool(\n    configuration: .init(\n        initialServerConnectionAddresses: [.init(hostname: "localhost", port: 6379)],\n        maximumConnectionCount: .maximum(5)\n    ),\n    eventLoopGroup: eventLoopGroup\n)\n\n// Verwenden Sie pool wie eine normale Verbindung\ntry await pool.set("session:token", to: "abc123")\n
\n\n

Leistung

\n

Dank SwiftNIO gewährleistet RediStack eine nicht-blockierende Ausführung aller Operationen. Dies ist besonders wichtig für iOS/mac

Empfehlungen