# Valkey önbellek

Kaynak: <https://deckpa.com/docs/valkey>

> Her site kendi Valkey önbellek sürecini alır: unix soketi, parolasız, bellek sınırlı. Açma, bağlama, anahtar tarayıcısı ve isteğe bağlı Memcached.

## Site başına önbellek

Önbellek, sitenizin sık ürettiği verileri (sorgu sonucu, derlenmiş şablon, sayfa parçası) bellekte tutar. Uygulama bu verileri veritabanından yeniden hesaplamak yerine önbellekten okur. Deckpa bu iş için Valkey kullanır; menüde öğe `Valkey (Redis)` adıyla görünür ve **Site Merkezi → Valkey** yolundan açılır. Üst düzey bir sitenin kendi sayfasında aynı ekran **Önbellek** sekmesidir.

Her site kendi Valkey sürecini alır; paylaşımlı tek bir önbellek yoktur. Bu tasarımın üç sonucu vardır:

- **Ağdan erişilemez.** Süreç TCP portu açmaz; bağlantı yalnızca bir unix soketi üzerinden kurulur.
- **Parola yoktur.** Erişimi soketin dosya izni belirler. Soket yalnızca o sitenin sistem kullanıcısına açıktır, başka bir site okuyamaz.
- **Kapalıyken kaynak harcamaz.** Önbelleği açmadığınız sitede ne süreç ne soket vardır.

Alt alan adları ayrı önbellek almaz; önbellek ayarları ana site üzerinden yönetilir.

> Bu bir önbellektir, veritabanı değildir. Diske hiçbir şey yazılmaz: sunucu ya da önbellek süreci yeniden başladığında içindeki her şey silinir. Oturum, kuyruk işi ve sepet gibi kaybolmaması gereken verileri burada tutmayın.

## Açma ve bellek dilimi

Valkey yeni bir kurulumda sunucu genelinde **kapalıdır** ve kapalıyken menüde görünmez. Yönetici **Valkey** sayfasında **Tüm siteler** görünümüne geçip **Valkey durumu** panelindeki **Valkey'i aç** düğmesine basar. Bu düğme tek başına hiçbir süreç başlatmaz; sunucu kaynağı, bir site sahibi kendi sitesinde önbelleği açana kadar kullanılmaz.

Sunucu genelinde açıldıktan sonra her site için sırayla şunlar yapılır:

- Siteyi seçin ve **Önbelleği aç** düğmesine basın. Siteye özel bir Valkey süreci başlar.
- Yönetici, tek site görünümünde açarken bir **Bellek dilimi** seçebilir: 64, 128 veya 256 MB. Seçim yapılmazsa 64 MB uygulanır. Diğer kullanıcılar dilim seçemez; kendi isteklerinde varsayılan dilim kullanılır.
- Yönetici, açık bir önbelleğin dilimini sonradan **Uygula** ile değiştirebilir. Süreç yeniden başladığı için içindeki her şey silinir ve uygulamanın bağlantısı bir an kopar.

Dilim bir rezervasyon değil, üst sınırdır: seçilen bellek baştan ayrılmaz, süreç yalnızca ihtiyacı kadarını kullanır. Sınıra ulaşınca en eski anahtarlarını kendisi siler. Ayrıca systemd tarafında da bir bellek sınırı vardır: üst sınıra 32 MB eklenerek hesaplanan değere varan süreç sonlandırılır ve boş olarak yeniden başlar.

Yeni bir önbellek açılırken iki denetim daha vardır. Sahibinin paketinde **Valkey bellek tavanı** tanımlıysa, bu tavanı aşan dilim reddedilir. Ayrıca açık önbelleklerin toplam üst sınırı sunucu belleğinin yarısını aşacaksa yeni önbellek açılmaz; bu durumda bir yönetici durumu kontrol etmelidir.

Yerleşik müşteri ve bayi gruplarında önbellek yetkisi açıktır. Yönetici, **Yetki Grupları** sayfasında özel bir grup oluşturup bu yetkiyi çıkarabilir.

## Uygulamaya bağlama

Önbellek açıldığında sağ sütundaki **Önbellek bağlantı bilgisi** kartında **Soket yolu**, **Kullanılan bellek** ve **Uygulama ayarı** görünür. Panel uygulamanızın ayar dosyasını kendisi düzenlemez; satırları `.env` dosyanıza siz yapıştırırsınız. Laravel için kart şu satırları verir:

```bash
REDIS_CLIENT=phpredis
REDIS_HOST=/run/valkey/example_com/valkey.sock
REDIS_PORT=0
REDIS_USERNAME=
REDIS_PASSWORD=
REDIS_PREFIX=
```

Soket yolu her site için farklıdır; kartta gördüğünüz değeri kullanın. Kullanıcı adı ve parola alanlarını silmeyin, boş bırakın. Bu alanlar dolu kalırsa istemci kimlik doğrulaması göndermeye çalışır ve sunucu bunu tanımadığı için bağlantı hata verir. Soket yolunu sunucu adresi olarak yazma yöntemi `phpredis` istemcisine özgüdür; Laravel dışındaki uygulamalarda da sunucu alanına soket yolunu, port alanına 0 yazın.

Önbelleği açmak tek başına siteyi hızlandırmaz; uygulamanın bu ayarı kullanması gerekir. İstemci eklentisi PHP sürümünüzde kurulu olmalıdır. Eklenti durumunu **PHP** sayfasından görebilirsiniz; Valkey sunucu genelinde kapalıysa o sayfada ilgili eklentinin yanında bir uyarı çıkar.

## Anahtarlar ve temizleme

Önbellek açıkken sayfanın sol tarafı **Önbellek anahtarları** tarayıcısıdır. Uygulamalar önbelleği ve oturumu farklı veritabanlarına yazabildiği için, dolu olan veritabanları üstteki seçiciden **db0** ile **db15** arasında seçilir; seçenekte o veritabanındaki anahtar sayısı yazar.

- **Anahtar ara:** kalıp yazın (örnek: `*session*`) ve **Ara**'ya basın. Sonuçlar sayfa sayfa yüklenir; sonuncuya **Daha fazla yükle** ile ulaşırsınız.
- **Tür filtresi:** string, hash, list, set, zset ve stream türlerinden birini seçerek listeyi daraltın.
- **Sütunlar:** Anahtar, Tür, Ömür (süresiz ya da kalan süre), Boyut. Anahtarı satırdaki simgeyle silebilirsiniz.

Tarayıcı anahtarları listeler ve siler; değerlerini göstermez. Başlıktaki **Çalışıyor** ya da **Durdu** rozeti sürecin durumunu söyler. Rozetin yanında **yeniden başlatma** sayacı görürseniz süreç kendiliğinden yeniden başlamış demektir; bellek sınırına çarpıyor olabilir, dilimi gözden geçirin.

Kartın alt bölümünde iki işlem vardır ve ikisi de onay ister:

- **Kendi önbelleğimi temizle:** sitenin tüm anahtarlarını siler. Uygulama önbelleği yeniden üretir; ama oturum ya da kuyruk verisi de buradaysa kaybolabilir.
- **Önbelleği kapat:** süreci durdurur ve içindeki her şeyi siler. Uygulamanız önbelleği hâlâ kullanıyorsa bağlantısı anında kopar ve site 500 hatası verebilir. Önce uygulamanın ayarını değiştirin, sonra kapatın.

## Yönetici: sunucu geneli

**Tüm siteler** görünümü, siteler arasında önbellek durumunu gösteren bir liste ve yalnızca yöneticiye açık iki panel içerir. Listede her sitenin durumu (**Çalışıyor**, **Durdu**, **Kapalı**), kullanılan bellek ve anahtar sayısı vardır.

- **Valkey durumu:** **Valkey'i kapat** sunucu genelinde özelliği kapatır. Açık önbellekleri olan siteler varsa işlem, hepsinin verisinin silineceğini söyleyen bir onay kutusu ister ve geri alınamaz.
- **Sunucu geneli:** **Ayrılan bellek (toplam üst sınır)** değerini sunucu belleğiyle karşılaştırır. Toplam, belleği aşıyorsa **Ayrılan bellek fiziksel belleği aşıyor** uyarısı çıkar. Kullanım bilgisi 15 dakikada bir toplanır; yeni açılmış bir önbellek bu sürede **Ölçüm bekleniyor** rozetiyle görünür ve bu, çalışmadığı anlamına gelmez.
- **Motor sürümü:** kurulu Valkey sürümü ile panelin onayladığı sürüm yan yana yazılır. Fark varsa **Motoru güncelle** düğmesi çıkar. Güncelleme sırasında önbelleği olan tüm sitelerin süreci yeniden başlar ve boşalır.
- **Sahipsiz önbellek süreçleri:** sitesi silinmiş ama süreci kalmış hesaplar listelenir. Bunlar yalnızca kayıt değil, bellek kullanan çalışan süreçlerdir; **Temizle** ile kaldırın.

Sunucuda örnekleri doğrulamak için root olarak şunları kullanabilirsiniz. Her örnek `valkey@<kullanıcı>.service` adlı ayrı bir sistem servisidir:

```bash
systemctl list-units 'valkey@*'
ls -l /run/valkey
```

## Memcached (isteğe bağlı)

Valkey yerine ya da yanında Memcached kullanan uygulamalar için Memcached de kurulabilir. Valkey'in aksine bu tek, paylaşımlı bir servistir ve kurulumu yalnızca yönetici yapar: **Sistem → Servisler** sayfasında Memcached kartındaki **Kur** düğmesine basın. Kurulum hiçbir portu dışarı açmaz; servis yalnızca `127.0.0.1` adresini dinler.

Memcached parola korumalı kurulur. Parolasız bir kurulum yolu yoktur. Bağlantı bilgileri (Sunucu, Port, Kullanıcı, Parola) Memcached kartındaki **Bağlantı bilgisi** düğmesiyle açılan sayfada görünür ve bu bilgi sunucudaki tüm siteler tarafından paylaşılır. Aynı sayfadaki **Parolayı sıfırla** yeni bir parola üretir ve Memcached'i yeniden başlatır; eski parolayı kullanan uygulamalar yeni parola girilene kadar bağlanamaz.

Servisi kurmak, PHP istemci eklentisini kurmaz. Eklentiyi **PHP** sayfasındaki **Eklentiler** sekmesinden ayrıca kurmanız gerekir. Memcached'i kaldırmadan önce eklentiyi kaldırın; aksi halde nesne önbelleği kullanan siteler hata verebilir.
