Redis
Remote Dictionary Server
- Okunuşu
- redis
Kısaca
Redis, okuma ve yazmayı milisaniyenin çok altında yapan bellek içi bir anahtar-değer deposudur; önbellek, oturum deposu ve mesaj aracısı olarak yaygındır.
Redis nedir?
Remote Dictionary Server'ın kısaltması olan Redis, 2009'da Salvatore Sanfilippo tarafından geliştirildi. Veriyi dev bir sözlük gibi anahtar ve değer çiftleri olarak saklar; ama değerler zengin veri yapıları olabilir: metinler (string), listeler, kümeler, sıralı kümeler, hash'ler, akışlar (stream) ve dahası. Her şey diskte değil bellekte durduğu için işlemlerin çoğu mikrosaniyeler içinde biter.
Uygulamalar Redis ile SET, GET, INCR ya da EXPIRE gibi basit komutlarla konuşur. Bir anahtara yaşam süresi (TTL) verilebilir; süre dolunca Redis onu kendiliğinden siler, bu da bir önbelleğin ya da giriş oturumunun tam olarak ihtiyaç duyduğu şeydir. Redis ayrıca anlık görüntüleri ya da yalnızca ekleme yapılan bir günlüğü diske yazabilir; böylece veri yeniden başlatmadan sonra da kalır. Yüksek erişilebilirlik için başka sunuculara da kopyalanabilir.
Tipik kullanımları; veritabanı sonuçlarını önbelleğe almak, kullanıcı oturumlarını saklamak, sayfa görüntülenmeleri ya da hız sınırı denemeleri gibi şeyleri saymak, sıralı kümelerle sıralama tabloları (leaderboard) kurmak ve servisler arasında hafif kuyruklar ya da pub/sub mesajlaşmasıdır. Birçok sistemde PostgreSQL gibi bir ana veritabanının yanında durur ve tekrar tekrar okunan sıcak veriyi tutar.
Sık yapılan bir yanlış, Redis'in yalnızca bir önbellek olduğu düşüncesidir. Tam bir veri deposudur; ama verisinin diskten daha pahalı olan belleğe sığması gerekir, bu yüzden bir uygulamanın tek veritabanı olması nadirdir. 2024'ten bu yana lisansı birden fazla kez değişti; Linux Foundation da aynı komutlarla çalışan Valkey adında açık kaynaklı bir çatallama (fork) sürdürüyor.
Bir bakışta
Önemli noktalar
- Redis bellek içi bir anahtar-değer deposudur; okuma ve yazma son derece hızlıdır.
- Değerler metin, liste, küme, sıralı küme, hash ve akış olabilir.
- Anahtarlar kendiliğinden sona erebilir; bu da önbelleklere ve oturumlara uyar.
- Veri diske kaydedilebilir ve başka sunuculara kopyalanabilir.
- Genellikle bir ana veritabanının yerine değil, yanında çalışır.
Örnek
import { createClient } from "redis";
const redis = createClient();
await redis.connect();
// Store a value that Redis deletes after 60 seconds
await redis.set("user:42:name", "Ada", { EX: 60 });
const name = await redis.get("user:42:name"); // "Ada"
await redis.incr("page:home:views"); // atomic counterSık sorulan sorular
Redis bir veritabanı mı, önbellek mi?
İkisi de. Redis veriyi kalıcı olarak da tutabilen bir veri deposudur; ama verisi bellekte durduğu için çoğunlukla bir ana veritabanının yanında önbellek olarak ya da kısa ömürlü veriler için kullanılır.
Sunucu yeniden başlayınca Redis'teki veriye ne olur?
Kalıcılık kapalıysa kaybolur. Anlık görüntüler (RDB) ya da yalnızca ekleme yapılan dosya (AOF) açıksa Redis yeniden başlarken veriyi diskten geri yükler.
Valkey nedir?
Valkey, Redis lisansını değiştirdikten sonra 2024'te başlatılan ve Linux Foundation çatısı altında sürdürülen, Redis'in açık kaynaklı bir çatallamasıdır. Aynı komutlarla ve istemci kütüphaneleriyle çalışır.
İlgili sayfalar
- Key-Value StoreVeritabanları, s. 16Key-value store, her veriyi benzersiz bir anahtar altında saklayan bir NoSQL veritabanıdır; uygulama veriyi bu anahtarla çok hızlı okuyup yazabilir.
- ÖnbellekBackend ve API'ler, s. 34Önbellek, sık kullanılan verilerin kopyalarını tutan hızlı ve geçici bir depolama katmanıdır; sonraki istekler yavaş işi tekrarlamadan hızla karşılanır.
- NoSQLVeritabanları, s. 21NoSQL, veriyi ilişkisel tablolar yerine doküman, anahtar-değer çifti, geniş sütun ya da çizge gibi başka modellerde saklayan veritabanı ailesidir.
- OturumBackend ve API'ler, s. 33Oturum, sunucunun bir kullanıcıyı birçok istek boyunca hatırlama yöntemidir; genellikle veriler sunucuda tutulur ve tarayıcıya bir oturum kimliği verilir.
- Rate LimitingBackend ve API'ler, s. 37Rate limiting, istemcinin belli bir sürede yapabileceği istek sayısını sınırlayıp sunucuyu ya da API'yi kötüye kullanımdan ve aşırı yükten koruyan tekniktir.
- Pub/SubBackend ve API'ler, s. 35Pub/sub, yayıncıların konulara mesaj gönderdiği ve bir konunun her abonesinin, iki taraf da birbirini tanımadan bir kopya aldığı bir mesajlaşma kalıbıdır.
- LuaProgramlama Dilleri, s. 19Lua, başka uygulamalara gömülmek üzere tasarlanmış küçük ve hızlı bir betik dilidir; oyun betikleri, eklentiler ve yapılandırma için popülerdir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin