# redis-cli — Der Kommandozeilen-Client für Redis

> Praxis-Guide zu redis-cli — interaktiver Client für Redis und Valkey: Keys und Datenstrukturen verwalten, Pub/Sub nutzen und den Server überwachen.

Source: https://www.jpkc.com/db/cheatsheets/build-languages/redis-cli/

<!-- PROSE:intro -->
redis-cli ist der interaktive Kommandozeilen-Client für Redis – und genauso für den kompatiblen Fork Valkey. Mit ihm verbindest du dich zu einem In-Memory-Datastore und arbeitest direkt mit Keys und Datenstrukturen wie Strings, Hashes, Listen, Sets und Sorted Sets. Darüber hinaus nutzt du Pub/Sub für Nachrichten, überwachst den Server im laufenden Betrieb und importierst Befehle im Bulk. Dieser Guide zeigt dir die wichtigsten Befehle für den Alltag, vom Verbindungsaufbau über die typischen Datentyp-Operationen bis zum Monitoring.
<!-- PROSE:intro:end -->

## Verbinden

`redis-cli` — Verbindet sich mit einem lokalen Redis (localhost:6379).

```bash
redis-cli
```

`redis-cli -h <host> -p <port>` — Verbindet sich mit einem entfernten Redis-Server.

```bash
redis-cli -h redis.example.com -p 6379
```

`redis-cli -a <password>` — Verbindet sich mit Authentifizierung.

```bash
redis-cli -a mysecretpassword
```

`redis-cli -u <uri>` — Verbindet sich über eine Redis-URI.

```bash
redis-cli -u redis://user:pass@host:6379/0
```

`redis-cli -n <db>` — Wählt eine bestimmte Datenbank-Nummer aus.

```bash
redis-cli -n 2
```

`redis-cli --tls` — Verbindet sich mit TLS-Verschlüsselung.

```bash
redis-cli --tls -h redis.example.com
```

## Keys und Strings

`SET <key> <value>` — Setzt einen Key auf einen String-Wert.

```bash
SET user:1:name "John"
```

`GET <key>` — Liest den Wert eines Keys aus.

```bash
GET user:1:name
```

`SET <key> <value> EX <seconds>` — Setzt einen Key mit Ablaufzeit.

```bash
SET session:abc123 "data" EX 3600
```

`DEL <key>` — Löscht einen oder mehrere Keys.

```bash
DEL user:1:name user:1:email
```

`KEYS <pattern>` — Findet Keys, die zu einem Muster passen (in Produktion mit Vorsicht einsetzen).

```bash
KEYS user:*
```

`SCAN <cursor> MATCH <pattern> COUNT <n>` — Iteriert sicher über Keys (produktionstauglich).

```bash
SCAN 0 MATCH user:* COUNT 100
```

`TTL <key>` — Zeigt die verbleibende Lebensdauer in Sekunden an.

```bash
TTL session:abc123
```

`INCR <key>` — Erhöht einen numerischen Wert um 1.

```bash
INCR page:views
```

## Hashes und Listen

`HSET <key> <field> <value>` — Setzt ein Feld in einem Hash.

```bash
HSET user:1 name "John" email "john@example.com"
```

`HGET <key> <field>` — Liest den Wert eines Feldes aus einem Hash.

```bash
HGET user:1 name
```

`HGETALL <key>` — Liest alle Felder und Werte eines Hashes aus.

```bash
HGETALL user:1
```

`LPUSH <key> <value>` — Fügt einen Wert am linken Ende einer Liste ein.

```bash
LPUSH queue:tasks "task1"
```

`RPOP <key>` — Entnimmt einen Wert am rechten Ende einer Liste.

```bash
RPOP queue:tasks
```

`LRANGE <key> <start> <stop>` — Liest einen Bereich von Elementen aus einer Liste.

```bash
LRANGE queue:tasks 0 -1
```

`LLEN <key>` — Zeigt die Länge einer Liste an.

```bash
LLEN queue:tasks
```

## Sets und Sorted Sets

`SADD <key> <member>` — Fügt ein Element zu einem Set hinzu.

```bash
SADD tags:post:1 "redis" "database" "cache"
```

`SMEMBERS <key>` — Liest alle Elemente eines Sets aus.

```bash
SMEMBERS tags:post:1
```

`SISMEMBER <key> <member>` — Prüft, ob ein Wert in einem Set enthalten ist.

```bash
SISMEMBER tags:post:1 "redis"
```

`ZADD <key> <score> <member>` — Fügt ein Element mit Score zu einem Sorted Set hinzu.

```bash
ZADD leaderboard 100 "player1" 200 "player2"
```

`ZRANGE <key> <start> <stop> WITHSCORES` — Liest Elemente eines Sorted Sets nach Rang aus.

```bash
ZRANGE leaderboard 0 -1 WITHSCORES
```

## Server und Monitoring

`INFO` — Zeigt Server-Informationen und Statistiken an.

```bash
INFO server
```

`INFO memory` — Zeigt Statistiken zur Speichernutzung an.

```bash
INFO memory
```

`DBSIZE` — Zeigt die Anzahl der Keys in der aktuellen Datenbank an.

```bash
DBSIZE
```

`MONITOR` — Streamt alle vom Server empfangenen Befehle in Echtzeit.

```bash
MONITOR
```

`SLOWLOG GET <n>` — Zeigt die letzten N langsamen Abfragen an.

```bash
SLOWLOG GET 10
```

`FLUSHDB` — Löscht alle Keys in der aktuellen Datenbank (irreversibel).

```bash
FLUSHDB
```

`BGSAVE` — Stößt eine Sicherung auf die Festplatte im Hintergrund an.

```bash
BGSAVE
```

## Pub/Sub und Scripting

`SUBSCRIBE <channel>` — Abonniert einen Channel, um Nachrichten zu empfangen.

```bash
SUBSCRIBE notifications
```

`PUBLISH <channel> <message>` — Veröffentlicht eine Nachricht auf einem Channel.

```bash
PUBLISH notifications "New order received"
```

`PSUBSCRIBE <pattern>` — Abonniert Channels, die zu einem Muster passen.

```bash
PSUBSCRIBE user:*
```

`redis-cli --pipe < <file>` — Importiert Redis-Befehle im Bulk aus einer Datei.

```bash
redis-cli --pipe < commands.txt
```

<!-- PROSE:outro -->
## Fazit

redis-cli ist das Schweizer Taschenmesser für den Alltag mit Redis und Valkey: vom schnellen `GET`/`SET` über Datenstruktur-Operationen bis zum Live-Monitoring mit `MONITOR` und `INFO`. Sei vorsichtig bei den destruktiven Befehlen: `FLUSHALL` und `FLUSHDB` löschen alle Keys (einer ganzen Instanz bzw. der aktuellen Datenbank) unwiderruflich. Vermeide `KEYS *` in Produktion – der Befehl blockiert den Server, bis alle Keys durchsucht sind; nutze stattdessen `SCAN` oder `redis-cli --scan`. Übergib Passwörter besser über die Umgebungsvariable `REDISCLI_AUTH` statt im Klartext, denn `-a` taucht in der Shell-History und in der Prozessliste auf. Auch `CONFIG SET` ändert das Laufzeitverhalten live – ein Tippfehler trifft sofort die ganze Instanz.

## Weiterführende Links

- [Redis-Dokumentation](https://redis.io/docs/latest/) – offizielle Referenz zu redis-cli, Befehlen und Datentypen (englisch)
- [redis-cli – Command-Line-Interface](https://redis.io/docs/latest/develop/tools/cli/) – ausführliche Anleitung zum Client (englisch)
- [Valkey-Dokumentation](https://valkey.io/docs/) – offene Redis-kompatible Alternative (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [artisan](https://www.jpkc.com/db/cheatsheets/build-languages/artisan/) – Kommandozeilen-Tool des Laravel-Frameworks
- [cargo](https://www.jpkc.com/db/cheatsheets/build-languages/cargo/) – Paketmanager und Build-Tool für Rust
- [composer](https://www.jpkc.com/db/cheatsheets/build-languages/composer/) – Abhängigkeitsverwaltung für PHP

