# Temel Kullanım

Bu bölümde Redis'e nasıl bağlanılacağı ve temel anahtar-değer işlemlerinin (veri ekleme, okuma, silme vb.) nasıl yapılacağı anlatılacaktır.

## Bağlantı Kurma (`redis-cli`)

Redis ile etkileşim kurmak için kullanılan standart komut satırı aracı `redis-cli`'dir.

* **Yerel Sunucuya Bağlanma:**\
  Eğer Redis sunucusu varsayılan ayarlarla (`127.0.0.1` port `6379`) yerelde çalışıyorsa ve parola koruması yoksa, doğrudan `redis-cli` komutu ile bağlanabilirsiniz:

  ```bash
  redis-cli
  ```

  Bu komut sizi interaktif `redis-cli` kabuğuna düşürür.
* **Belirli Bir Sunucuya ve Porta Bağlanma:**\
  Farklı bir sunucu (`-h`) veya port (`-p`) belirtmek için:

  ```bash
  redis-cli -h sunucu_adresi -p port_numarasi
  ```
* **Parola ile Bağlanma:**\
  Eğer `redis.conf` dosyasında `requirepass` ile bir parola ayarlanmışsa, bağlanırken `-a` seçeneği ile parolayı belirtebilirsiniz:

  ```bash
  redis-cli -h sunucu_adresi -p port_numarasi -a 'parolaniz'
  ```

  Alternatif olarak, `redis-cli` ile bağlandıktan sonra `AUTH` komutunu kullanabilirsiniz:

  ```bash
  redis-cli -h sunucu_adresi -p port_numarasi
  127.0.0.1:6379> AUTH parolaniz
  OK
  ```
* **Belirli Bir Veritabanına Bağlanma:**\
  Redis birden fazla veritabanını destekler (varsayılan 16, 0'dan başlar). Bağlanırken `-n` seçeneği ile veritabanı numarasını belirtebilirsiniz:

  ```bash
  redis-cli -n 5
  ```

  Bağlandıktan sonra `SELECT` komutu ile de veritabanı değiştirebilirsiniz:

  ```bash
  127.0.0.1:6379> SELECT 5
  OK
  127.0.0.1:6379[5]>
  ```

## Temel Redis Komutları (`redis-cli` içinde)

`redis-cli` kabuğu içindeyken Redis komutlarını doğrudan yazabilirsiniz.

* **Bağlantıyı Test Etme:**\
  Sunucunun ayakta olup olmadığını kontrol eder.

  ```
  PING
  PONG
  ```
* **Anahtar Ayarlama (Set):**\
  Bir anahtara bir değer atar. Eğer anahtar zaten varsa, değeri üzerine yazılır.

  ```
  SET kullanici:1:isim "Ahmet"
  OK
  ```
* **Anahtar Değeri Alma (Get):**\
  Belirtilen anahtarın değerini döndürür. Anahtar yoksa `(nil)` döner.

  ```
  GET kullanici:1:isim
  "Ahmet"
  ```
* **Anahtar Silme (Delete):**\
  Belirtilen anahtarı ve değerini siler.

  ```
  DEL kullanici:1:isim
  (integer) 1  # Silinen anahtar sayısı
  ```
* **Anahtarın Varlığını Kontrol Etme (Exists):**\
  Anahtarın var olup olmadığını kontrol eder. Varsa `1`, yoksa `0` döner.

  ```
  EXISTS kullanici:1:isim
  (integer) 0
  ```
* **Anahtarları Listeleme (Keys):**\
  Belirtilen desene uyan anahtarları listeler. **Dikkat:** Büyük veritabanlarında `KEYS *` gibi genel sorgular performansı olumsuz etkileyebilir, üretim ortamlarında dikkatli kullanılmalıdır.

  ```
  SET site:url "example.com"
  OK
  SET site:tema "dark"
  OK
  KEYS site:*
  1) "site:tema"
  2) "site:url"
  ```
* **Mevcut Veritabanındaki Tüm Anahtarları Silme (FlushDB):Dikkat:** Bu işlem geri alınamaz ve mevcut veritabanındaki tüm anahtarları siler!

  ```
  FLUSHDB
  OK
  ```
* **Tüm Veritabanlarındaki Tüm Anahtarları Silme (FlushAll):Dikkat:** Bu işlem geri alınamaz ve sunucudaki tüm veritabanlarındaki tüm anahtarları siler!

  ```
  FLUSHALL
  OK
  ```
* **Veritabanı Seçme (Select):**\
  Farklı bir veritabanına geçiş yapar (0-15 varsayılan).

  ```
  SELECT 1
  OK
  ```
* **Çıkış:**`redis-cli` kabuğundan çıkar.

  ```
  QUIT
  ```

  veya `exit` yazıp Enter'a basmak.

Redis, string'lerin yanı sıra listeler, hash'ler, set'ler ve sorted set'ler gibi daha karmaşık veri yapılarını da destekler ve bunlar için özel komutlara sahiptir (örn: `LPUSH`, `HSET`, `SADD`, `ZADD`).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://linux-yonetimi.veriteknik.net.tr/veritabani/redis/temel-kullanim.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
