Redis öğrenmeye nereden başlayacağınızı arıyorsanız bu sayfa size sıralı bir yol sunar: 50 yazılık Türkçe Redis serisinin bütün yazıları burada sekiz öğrenme basamağına ayrılmıştır. İlk basamakta redis-cli ile sunucuya bağlanmayı, anahtarlarla çalışmayı ve string komutlarını öğrenirsiniz. Ardından temel ve gelişmiş veri tiplerine, komutları toplu ve atomik çalıştırmaya, arama ve uygulama desenlerine, istemci kütüphanelerine geçer, en sonda sunucu yönetimi, izleme ve hata çözümü konularıyla seriyi tamamlarsınız.
Serideki her yazı resmî Redis belgelerine dayanır; kullandığımız belge kopyasındaki en yeni sürüm notu Redis 8.10’dur. Redis’in ne olduğunu, Memcached ile farkını, kurulum seçeneklerini ve kalıcılık kavramlarını ayrı bir yazıda anlattığımız için burada tekrar etmiyoruz: bu konular için Redis nedir, nasıl kullanılır yazısını okuyun. Önbellek, oturum deposu ve kilit gibi kullanım senaryolarına kısa bir genel bakış isterseniz Redis temelleri yazısı da iyi bir başlangıç noktasıdır.
Seriyi takip etmek için Redis’i çalıştırın
Örnekleri kendi makinenizde denemek için çalışan bir Redis sunucusuna ve redis-cli istemcisine ihtiyacınız var. Resmî “Get started” sayfası, Redis Open Source sunucusunu çalıştırmanın en hızlı yolu olarak Docker’ı gösterir. Belgedeki komut şudur:
docker run -d --name redis -p 6379:6379 redis:latestBelgeye göre sunucuyu başlatmak veritabanınızı da oluşturur; ayrıca bir “veritabanı oluştur” adımı yoktur. Komuttaki --name redis kapsayıcıya sonradan kullanacağınız bir ad verir, -p 6379:6379 ise Redis’in varsayılan portu olan 6379’u makinenize bağlar. Kapsayıcı çalıştıktan sonra içindeki redis-cli ile bağlanmak için belge şu komutu verir:
docker exec -it redis redis-cliKapsayıcıya girmeden kendi terminalinizden bağlanmak isterseniz bağımsız redis-cli ikili dosyasını kurabilirsiniz. Belge Linux ve macOS için aşağıdaki kurulum betiğini gösterir; Redis 8.10 sürüm notları da bağımsız redis-cli kurulum desteğini yenilikler arasında sayar:
curl -fsSL https://packages.redis.io/redis-cli/install.sh | shRedis’i Docker olmadan doğrudan bir Linux sunucusuna kurmak isterseniz adımları Redis kurulum yazımızda bulabilirsiniz. Redis’i uygulamanızla birlikte birden fazla kapsayıcı halinde ayağa kaldırıyorsanız tek tek docker run yazmak yerine Docker Compose rehberindeki yöntemi kullanmak işinizi kolaylaştırır.
İlk oturum: PING, SET ve GET
redis-cli açıldığında bir istem (prompt) görürsünüz. Komutu yazıp Enter’a bastığınızda komut sunucuya gider ve yanıt hemen altında görünür. Önce sunucunun yanıt verdiğini PING ile kontrol edin. Belgedeki oturumda istem bağlı olunan adresi ve portu gösterir, yanıt da PONG olarak döner:
$ redis-cli
127.0.0.1:6379> PING
PONGŞimdi ilk anahtarınızı yazıp okuyun. Aşağıdaki oturum, GET ve SET komut sayfalarındaki örneklerden alınmıştır:
> GET nonexisting
(nil)
> SET mykey "Hello"
OK
> GET mykey
"Hello"
> SET anotherkey "will expire in a minute" EX 60
OKBu birkaç satır, serinin geri kalanında sürekli karşılaşacağınız yanıt türlerini gösterir. (nil), istenen anahtarın bulunmadığını anlatır. OK basit bir durum yanıtıdır ve yazma işleminin yapıldığını bildirir. Tırnak içindeki "Hello" ise anahtarın taşıdığı string değerdir. Son satırdaki EX 60 seçeneği anahtara 60 saniyelik bir yaşam süresi verir; süre dolunca anahtar kendiliğinden silinir.
Redis yanıtları türlüdür: tamsayı, string, dizi, boş değer veya hata olabilir. redis-cli terminale yazarken tamsayı yanıtların önüne (integer), hataların önüne (error) gibi etiketler ekler; çıktıyı bir dosyaya veya başka bir programa yönlendirdiğinizde bu etiketleri kendiliğinden kaldırır. Bu davranışın ayrıntısı ve --raw seçeneği redis-cli kullanımı yazısında anlatılıyor. SET seçenekleri için string komutları, süre verme için de EXPIRE ve TTL yazısına geçebilirsiniz.
1. İlk adımlar: redis-cli, anahtarlar ve stringler

Bu basamak, Redis ile her gün yapacağınız işlerin temelini oluşturur. Komut satırı aracını tanır, anahtarlara nasıl ad vereceğinizi ve anahtarları nasıl yöneteceğinizi öğrenir, en basit veri tipi olan string ile çalışırsınız. Son yazı, sonraki basamaklarda göreceğiniz veri tipleri arasında seçim yapmanıza yardım eden bir haritadır; isterseniz önce onu okuyup sonra geri dönebilirsiniz.
- redis-cli kullanımı: Sunucuya bağlanma seçeneklerini, tırnak ve kaçış kurallarını, komutları tekrarlamayı ve etkileşimli modun geçmiş, tamamlama ve HELP özelliklerini öğrenirsiniz.
- Anahtar isimlendirme ve keyspace:
nesne:idbiçiminde anahtar adı seçmeyi, EXISTS, DEL, UNLINK, TYPE, RENAME ve COPY komutlarını ve anahtar boyutu sınırını öğrenirsiniz. - String komutları: SET, GET, INCR: SET seçeneklerini, MSET ve MGET ile toplu okuma yazmayı, INCR ile atomik sayaçları ve string üzerinde aralık komutlarını anlatır.
- EXPIRE ve TTL: Anahtarlara süre vermeyi, NX, XX, GT, LT koşullarını, TTL yanıtındaki -1 ve -2 değerlerini ve Redis’in süresi dolan anahtarları nasıl sildiğini öğrenirsiniz.
- SCAN ve KEYS farkı: İmleçli taramanın garantilerini, MATCH, COUNT ve TYPE seçeneklerini ve KEYS komutunun üretimde neden riskli olduğunu açıklar.
- Redis veri tipi seçimi: Belgedeki karar ağaçlarıyla doküman, koleksiyon ve sıra verisi için hangi tipi seçeceğinize karar vermeyi öğrenirsiniz.
2. Temel veri tipleri

Redis bir veri yapısı sunucusudur; gücünü büyük ölçüde yerleşik veri tiplerinden alır. Bu basamakta list, hash, set ve sorted set gibi genel amaçlı tipleri, ardından bit düzeyinde çalışan bitmap ile tekil sayım yapan HyperLogLog yapısını tanırsınız. Her yazı kendi tipinin komutlarını belgedeki örneklerle anlatır ve sık yapılan hataları gösterir.
- List komutları: LPUSH, RPUSH, LPOP, RPOP, LRANGE ve LTRIM ile kuyruk, yığın ve sınırlı liste kurmayı, LMOVE ve engelleyen BLPOP, BRPOP komutlarını öğrenirsiniz.
- Hash komutları: HSET, HGET, HGETALL ve HINCRBY gibi komutlarla nesneleri alan-değer çiftleri olarak modellemeyi ve Redis 8.10 ile gelen compact hash yapısını kısaca tanırsınız.
- Hash alan süresi: Redis 7.4 ile gelen HEXPIRE ailesiyle tek tek hash alanlarına süre vermeyi ve Redis 8.0 ile gelen HSETEX, HGETEX, HGETDEL komutlarını anlatır.
- Set komutları: Tekil değerleri SADD ile saklamayı, üyelik sorgularını, SINTER, SUNION, SDIFF küme işlemlerini ve rastgele üye seçmeyi öğrenirsiniz.
- Sorted set: ZADD ve ZRANGE: ZADD seçeneklerini, ZRANGE ile skor ve sözlük sırasına göre aralık okumayı ve sıra sorgulayan komutları açıklar.
- Bitmap ve bitfield: SETBIT, BITCOUNT ve BITOP ile bit düzeyinde işlemleri, BITFIELD ile tek bir string içinde birden fazla sayacı taşma politikalarıyla yönetmeyi öğrenirsiniz.
- HyperLogLog: PFADD, PFCOUNT ve PFMERGE ile çok büyük kümelerde tekil öğe sayısını az bellekle tahmin etmeyi ve belgede verilen hata payını anlatır.
3. Gelişmiş veri tipleri
Temel tiplerden sonra belirli işler için tasarlanmış tiplere geçersiniz: konum verisi, olay akışları, iç içe JSON belgeleri, tamsayı indeksli diziler ve zaman damgalı ölçümler. Bu tiplerin bir kısmı Redis 8.0 ile birlikte Redis Open Source paketine dahil edilmiştir; Array tipi ise Redis 8.8 ile gelmiştir. İlgili yazılar hangi sürümün gerektiğini ayrıca belirtir.
- Geo komutları: GEOADD ile konum eklemeyi, GEOSEARCH ile yarıçap veya kutu içinde arama yapmayı, GEODIST ve GEOPOS ile mesafe ve koordinat okumayı öğrenirsiniz.
- Streams: XADD ve XREAD: XADD ile kayıt eklemeyi, kayıt kimliklerinin yapısını, XRANGE ve XREAD ile okumayı ve XTRIM ile akışı sınırlamayı anlatır.
- Streams consumer group: XGROUP CREATE, XREADGROUP, XACK ve XPENDING ile bir akışı birden fazla tüketiciye paylaştırmayı ve bekleyen mesajları devralmayı öğrenirsiniz.
- JSON komutları: JSON.SET ve JSON.GET ile iç içe belgeleri saklamayı, yol (path) sözdizimini ve belge içinde sayı artırma, diziye ekleme gibi işlemleri anlatır.
- Array veri tipi: Redis 8.8 ile gelen, tamsayı indeksle adreslenen seyrek dizileri ARSET ve ARGET gibi komutlarla kullanmayı ve List tipinden farkını öğrenirsiniz.
- Time series: TS.CREATE ile saklama süresi ve etiketleri olan seriler oluşturmayı, TS.ADD ile ölçüm eklemeyi ve TS.RANGE ile toplama yaparak okumayı anlatır.
4. Komut çalıştırma ve mesajlaşma
Bu basamak, komutları nasıl gönderdiğinizle ilgilidir. Çok sayıda komutu tek tek değil toplu göndermek, bir grup komutu kesintisiz çalıştırmak, mantığı sunucu tarafına taşımak ve istemciler arasında mesaj iletmek için Redis’in sunduğu araçları öğrenirsiniz. Pipelining, MULTI ve Lua arasındaki farkları bilmek, sonraki basamaktaki desenleri doğru kurmanın ön koşuludur.
- Pipelining: Gidiş dönüş süresini (RTT) azaltmak için komutları toplu göndermeyi ve
redis-cli --pipeile büyük veri yüklemeyi öğrenirsiniz. - MULTI, EXEC ve WATCH: Komutları bir işlem olarak kuyruğa almayı, WATCH ile iyimser kilitlemeyi ve Redis işlemlerinde geri alma (rollback) olmamasının ne anlama geldiğini açıklar.
- Lua script: EVAL ve EVALSHA: EVAL ile KEYS ve ARGV kullanmayı,
redis.callileredis.pcallfarkını, SCRIPT LOAD ve EVALSHA ile betik önbelleğini öğrenirsiniz. - Redis Functions: Kütüphane olarak yüklenen ve sunucuda kalıcı olan fonksiyonları FUNCTION LOAD ve FCALL ile kullanmayı ve EVAL betiklerinden farkını anlatır.
- Pub/Sub: SUBSCRIBE, PUBLISH ve PSUBSCRIBE ile anlık mesajlaşmayı, en fazla bir kez teslim garantisini ve sharded pub/sub komutlarını öğrenirsiniz.
- Keyspace notifications:
notify-keyspace-eventsayarıyla anahtar değişikliklerini kanal mesajı olarak almayı veexpiredolayının ne zaman üretildiğini anlatır.
5. Arama ve uygulama desenleri
Veri tiplerini ve komut çalıştırma yöntemlerini öğrendikten sonra bunları gerçek problemlere uygularsınız. Bu basamakta ikincil indeks ve tam metin arama, olasılıksal filtreler, dağıtık kilit, iş kuyruğu, sıralama tablosu ve istemci tarafı önbellek gibi konular, resmî belgelerdeki tasarımlar üzerinden anlatılır.
- Redis Search: FT.CREATE ve FT.SEARCH: Hash ve JSON belgeleri üzerinde indeks tanımlamayı, tam metin, etiket ve sayı aralığı sorgularını ve temel toplama sorgularını öğrenirsiniz.
- Bloom ve Cuckoo filtreleri: BF.RESERVE ve BF.ADD ile bir öğenin kümede olup olmadığını az bellekle test etmeyi, hata oranı ile kapasite ayarını anlatır.
- Dağıtık kilit ve Redlock:
SET NX PXile kilit almayı, kilidi Lua betiğiyle güvenle bırakmayı ve Redlock algoritmasını belgenin anlattığı biçimde öğrenirsiniz. - İş kuyruğu: Resmî belgedeki iş kuyruğu (job queue) tasarımını ve işleri güvenilir biçimde işlemenin yollarını anlatır.
- Leaderboard: Sorted set ile oyuncu puanlarını tutmayı, ZINCRBY ile puan artırmayı, sayfalı sıralama göstermeyi ve eşit puan durumunu öğrenirsiniz.
- Client-side caching: CLIENT TRACKING ile istemci tarafında önbellek tutmayı, varsayılan, BCAST ve OPTIN modlarını ve geçersiz kılma mesajlarını açıklar.
6. İstemci kütüphaneleri

Uygulama kodunuzdan Redis’e bağlanırken redis-cli yerine bir istemci kütüphanesi kullanırsınız. Bu basamağın ilk yazısı bütün dillerde ortak olan bağlantı adresi, bağlantı havuzu ve hata yönetimi konularını anlatır; diğer yazılar her dilin resmî belgelerde anlatılan kütüphanesine odaklanır. Kendi dilinizin yazısını okumanız yeterlidir.
- Bağlantı URL ve connection pool:
redis://verediss://adreslerini, bağlantı havuzu ile çoklamayı ve zaman aşımı, yeniden deneme gibi hata yönetimi kurallarını öğrenirsiniz. - Python: redis-py: redis-py kurulumunu, bağlantı ayarlarını, temel komutları, pipeline ve işlemleri, tarama ve asenkron kullanımı anlatır.
- Node.js: node-redis:
createClientveconnectile bağlanmayı, komutları, multi ve pipeline kullanımını, hata olaylarını ve ioredis’ten geçişi öğrenirsiniz. - PHP: Predis: Predis’i Composer ile kurmayı, Client parametrelerini, temel komutları, pipeline ve işlem kullanımını ve hata yönetimini anlatır.
- Go: go-redis:
NewClientveOptionsile bağlanmayı, context kullanımını,redis.Nilkontrolünü ve pipeline ile işlemleri öğrenirsiniz. - Java: Jedis ve Lettuce: Belgelerde anlatılan iki Java kütüphanesiyle bağlanmayı, bağlantı havuzunu, pipeline ve işlemleri ve iki kütüphanenin farkını anlatır.
7. Sunucu yönetimi ve güvenlik
Redis’i kendi sunucunuzda çalıştırıyorsanız kimin hangi komutu çalıştırabileceğini, ayarların nasıl değiştirileceğini, bağlantıların ve belleğin nasıl yönetileceğini bilmeniz gerekir. Bu basamaktaki yazılar yalnızca belgelerin önerdiği yöntemleri anlatır ve veri kaybettirebilecek komutları açıkça uyarıyla işaretler.
- Redis ACL: ACL SETUSER kurallarıyla kullanıcı oluşturmayı, anahtar ve kanal desenlerine ve komut kategorilerine göre yetki vermeyi ve NOAUTH, WRONGPASS, NOPERM hatalarını öğrenirsiniz.
- CONFIG GET, SET ve REWRITE: Çalışan sunucuda ayar okumayı, ayarı değiştirmeyi ve değişikliği
redis.confdosyasına yazmayı anlatır. - CLIENT LIST ve CLIENT KILL: Bağlı istemcilerin bilgilerini okumayı, bağlantı kapatma filtrelerini,
maxclientsve çıkış tamponu sınırlarını öğrenirsiniz. - Yedek alma: BGSAVE ve BACKUP: SAVE ve BGSAVE ile anlık görüntü almayı, LASTSAVE ile kontrolü, Redis 8.10 ile gelen BACKUP komutunu ve
redis-cli --rdbile uzaktan yedeği anlatır. - maxmemory ve eviction: Bellek sınırını,
maxmemory-policyseçeneklerini, yaklaşık LRU ve LFU davranışını ve bellek dolduğunda dönen hatayı öğrenirsiniz. - Bellek kullanımı: MEMORY USAGE: MEMORY USAGE ve MEMORY STATS ile ölçüm yapmayı, OBJECT ENCODING ile iç kodlamayı ve
redis-cli --bigkeysile büyük anahtarları bulmayı anlatır.
8. İzleme, cluster, sürümler ve hatalar
Son basamak, çalışan bir Redis kurulumunu gözlemlemek ve sorun çıktığında doğru teşhisi koymakla ilgilidir. INFO çıktısını okumayı, yavaş komutları yakalamayı, cluster ortamında anahtarların nasıl dağıldığını, Redis 8 sürümlerinin getirdiklerini ve en sık görülen hata mesajlarının anlamını öğrenirsiniz.
- INFO komutu ve sunucu izleme: INFO çıktısındaki server, clients, memory, persistence ve stats gibi bölümleri ve izleme için önemli alanların anlamını öğrenirsiniz.
- Slowlog ve latency izleme: Yavaş komutları SLOWLOG ile kaydetmeyi, LATENCY komutlarıyla gecikme olaylarını izlemeyi ve MONITOR komutunun sunucuya getirdiği yükü anlatır.
- Cluster, hash slot ve CROSSSLOT: Anahtarların slotlara nasıl dağıldığını, hash tag kullanımını ve CROSSSLOT, MOVED, ASK hatalarının anlamını öğrenirsiniz.
- Redis 8 yenilikleri: Redis 8.0’dan 8.10’a kadar her sürümün getirdiği komutları ve özellikleri sürüm notlarına göre özetler.
- Redis hata mesajları: WRONGTYPE, wrong number of arguments, syntax error, not an integer, BUSY, EXECABORT ve NOSCRIPT gibi sık hataların nedenini ve çözümünü anlatır.
- OOM, MISCONF ve READONLY hataları: Sunucu durumundan kaynaklanan OOM, MISCONF, READONLY, LOADING, MASTERDOWN ve DENIED hatalarının ne zaman döndüğünü ve nasıl giderileceğini öğrenirsiniz.
Seriyi hangi sırayla okumalısınız?
Redis’e yeni başlıyorsanız ilk basamağı sırayla okuyun: önce redis-cli, sonra anahtarlar, stringler, süre ve tarama. Bu beş yazı, sonraki bütün yazılarda kullanılan komut alışkanlıklarını kazandırır. Veri tipi seçimi yazısını ise iki kez okumanızı öneririz: bir kez başta genel harita olarak, bir kez de temel ve gelişmiş veri tiplerini bitirdikten sonra karar ağaçlarını gerçekten uygulayabilecek duruma geldiğinizde.
İkinci ve üçüncü basamaktaki yazılar birbirinden bağımsızdır; projenizde hangi tipe ihtiyaç varsa onunla başlayabilirsiniz. Dördüncü basamak ise beşinci basamağın ön koşuludur: örneğin dağıtık kilit yazısı Lua betiği kullanır, iş kuyruğu yazısı list komutlarına dayanır, leaderboard yazısı sorted set bilgisini varsayar. Uygulama geliştiriyorsanız altıncı basamaktan kendi dilinizin yazısını erken okumanız, örnekleri doğrudan kodunuzda denemenizi sağlar.
Yedinci ve sekizinci basamak, Redis’i kendi sunucusunda çalıştıranlar içindir. Bir hata mesajıyla karşılaştığınızda bu sayfaya dönüp son basamaktaki iki hata yazısına bakmak çoğu zaman en hızlı çözümdür: biri komut kullanımından doğan hataları, diğeri sunucunun durumundan kaynaklanan hataları anlatır.
Sık Sorulan Sorular
Redis öğrenmeye hangi yazıyla başlamalıyım?
Redis’i hiç kullanmadıysanız önce Redis nedir yazısıyla genel resmi görün, ardından bu serinin ilk yazısı olan redis-cli kullanımı ile başlayın. Komut satırında rahat ettikten sonra anahtarlar ve string komutlarıyla devam edin.
Örnekleri denemek için Redis’i nasıl çalıştırırım?
En kısa yol, yukarıdaki docker run komutuyla Redis Open Source kapsayıcısını başlatmak ve docker exec -it redis redis-cli ile bağlanmaktır. Docker kullanmıyorsanız Linux kurulum adımları için kurulum yazımıza bakın.
Yazılardaki komutlar hangi Redis sürümü için geçerli?
Yazılar, Redis 8.10’a kadar olan değişiklikleri içeren resmî belgelere göre hazırlandı. Yeni sürümlerle gelen komutlar için sürüm ayrıca belirtilir; diğer komutlar daha eski sürümlerde de bulunur. Ayrıntılı sürüm geçmişi için Redis 8 yenilikleri yazısına bakın.
redis-cli kullanmadan Redis’e bağlanabilir miyim?
Evet. Resmî başlangıç sayfası, komut satırına alternatif olarak grafik arayüzlü Redis Insight aracını anar. Uygulama kodundan ise istemci kütüphaneleriyle bağlanırsınız; ortak kurallar için bağlantı URL ve connection pool yazısıyla başlayın.
Marka adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen kuruluşlarla bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.
İlgili içerikler: Redis nedir, nasıl kullanılır · Redis temelleri · redis-cli kullanımı · Redis veri tipi seçimi · Docker Compose rehberi