Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
14 yazı bulundu #valkey
Redis 7'den Redis 8.x'e ve Valkey 9'a: Yenilikler, Ayrışma Noktaları ve StackExchange.Redis 2→3 Geçişi
Veritabanı SERİ 15

Redis 7'den Redis 8.x'e ve Valkey 9'a: Yenilikler, Ayrışma Noktaları ve StackExchange.Redis 2→3 Geçişi

Redis 8'in yazdığı RDB dosyasını ne Redis 7.4 ne de Valkey 9 açabiliyor; Redis ile Valkey'in ortak noktası 7.2 ve yükseltme tek yönlü. Gerçek ölçümlerle RDB ve replication uyumluluğu, Redis 8.0–8.10 sürüm özeti, iki sunucuya COMMAND DOCS ile sorulmuş uyumluluk tablosu, StackExchange.Redis 3.x'te derleme hatasına dönen eski API'ler ve bir sürüm yükseltme planı.

14 Kas 2026 10 dk 10
Redis'i Production'da İşletmek: ACL, TLS, Tehlikeli Komutlar, Latency Teşhisi, OpenTelemetry ve Testcontainers
Veritabanı SERİ 14

Redis'i Production'da İşletmek: ACL, TLS, Tehlikeli Komutlar, Latency Teşhisi, OpenTelemetry ve Testcontainers

Production'daki Redis'te her uygulama yalnız ihtiyaç duyduğu komut, key ve kanallara izinli kendi ACL kullanıcısıyla bağlanmalı; FLUSHALL, KEYS ve EVAL'a yetkisi olmayan bir kullanıcı Lua açıklarına ve sızan şifreye karşı ilk savunma. Gerçek çıktılarla ACL LOG'un ortaya çıkardıkları, Functions'a geçiş, TLS, SLOWLOG ve StackExchange.Redis timeout mesajını okumak, OpenTelemetry span'leri ve Testcontainers ile integration testi.

14 Kas 2026 11 dk 17
Redis'te Replication, Sentinel ve Cluster: Failover, Hash Slot'lar, Hash Tag ve CROSSSLOT
Veritabanı SERİ 13

Redis'te Replication, Sentinel ve Cluster: Failover, Hash Slot'lar, Hash Tag ve CROSSSLOT

Redis replication asenkron olduğu için client'a onaylanmış bir yazma failover'da kaybolabilir; WAIT bunu önlemez, yalnız görünür yapar. Gerçek çıktılarla kaybolan sipariş numarası, Sentinel ve StackExchange.Redis ile failover süresi, Cluster'da 16384 hash slot, MOVED, CROSSSLOT ve hash tag, her primary'ye yüklenmesi gereken Functions, node'a özel keyspace notification'lar, Redis 8.4'ün atomic slot migration'ı ve Valkey 9 farkları.

14 Kas 2026 12 dk 9
Redis Persistence ve Bellek Yönetimi: RDB, AOF, fsync, Fork Maliyeti, maxmemory ve Büyük/Sıcak Key'ler
Veritabanı SERİ 12

Redis Persistence ve Bellek Yönetimi: RDB, AOF, fsync, Fork Maliyeti, maxmemory ve Büyük/Sıcak Key'ler

Resmî redis:8 image'ı varsayılan olarak yalnız aralıklı RDB snapshot'ı alır; container SIGKILL ile ölürse son snapshot'tan sonraki her şey gider, AOF everysec ile ise ölçümde hiçbir sipariş kaybolmadı. Gerçek çıktılarla fork ve copy-on-write maliyeti, AOF'u veri kaybetmeden açmak, Redis 8.10'un BACKUP komutu, noeviction'ın stream'i koruması, OOMKilled, UNLINK, HOTKEYS ve activedefrag eşiği.

14 Kas 2026 11 dk 11
Redis JSON ve Query Engine: JSON Document'lar, FT.CREATE, FT.SEARCH, FT.AGGREGATE ve NRedisStack
Veritabanı SERİ 11

Redis JSON ve Query Engine: JSON Document'lar, FT.CREATE, FT.SEARCH, FT.AGGREGATE ve NRedisStack

Redis 8'de JSON document'ları JSONPath ile kısmen güncelleyebilir ve FT.CREATE ile kurduğun index üzerinden FT.SEARCH ile filtreleyip sıralayabilirsin; yazma komutu döndüğünde arama yeni değeri görür. Gerçek çıktılarla NRedisStack ile katalog araması, tag escape'i, çok değerli alanlarda GROUPBY'ın ilk değeri sayması, Türkçe stemming ve büyük İ sınırları, 100.000 kitapta index maliyeti ve valkey-search farkları.

14 Kas 2026 13 dk 11
Redis Streams: Consumer Group, Pending Entry List, XAUTOCLAIM ve Idempotent XADD
Veritabanı SERİ 10

Redis Streams: Consumer Group, Pending Entry List, XAUTOCLAIM ve Idempotent XADD

Redis Streams'te consumer group, dağıttığı ama onaylanmamış her olayı pending entry list'te tutar; çöken worker'ın işi kaybolmaz, Redis 8.4'ün XREADGROUP CLAIM'iyle tek okumada başka bir worker'a geçer. Gerçek çıktılarla stream yapısı, iki bağımsız consumer group, XNACK ile hemen retry, Redis 8.6'nın IDMP'li idempotent XADD'i, BackgroundService worker'ı, poison message için dead-letter stream ve XTRIM'in 10.000 girdilik varsayılan sınırı.

14 Kas 2026 14 dk 17
Redis Pub/Sub ve Keyspace Notification'ları: Sharded Pub/Sub, At-Most-Once ve Cache Invalidation Sinyali
Veritabanı SERİ 09

Redis Pub/Sub ve Keyspace Notification'ları: Sharded Pub/Sub, At-Most-Once ve Cache Invalidation Sinyali

Redis pub/sub mesajı yalnız o an bağlı olan dinleyicilere iletir ve hiçbir yerde saklamaz; bağlantı koptuğu sırada yayınlanan mesaj sonradan da gelmez. Gerçek çıktılarla at-most-once teslimat, handler ile ChannelMessageQueue'nun mesaj sırası, paylaşılan bağlantıda 40 MB'lık GET'in kopması, iki API instance'ında fiyat değişince L1 invalidation, kuyruk için iş var sinyali, sharded pub/sub, gecikmeli expired olayları, Redis 8.8'in hash field notification'ları ve yavaş subscriber'ın 32 MB sınırı.

14 Kas 2026 12 dk 12
Redis'te Atomiklik: MULTI/EXEC, WATCH, Lua Script'leri ve Redis Functions
Veritabanı SERİ 08

Redis'te Atomiklik: MULTI/EXEC, WATCH, Lua Script'leri ve Redis Functions

Redis'te MULTI/EXEC komutları araya kimse girmeden sırayla çalıştırır ama rollback yapmaz; okumaya göre karar veren çok adımlı işler için doğru araç çoğu zaman bir Lua script'idir. Gerçek çıktılarla 100 kopyalık stoğun 200 kez satılması, WATCH ile 14.620 retry, StackExchange.Redis condition'ları, LuaScript.Prepare ile stok rezervasyonu, script cache, restart'ta kaybolmayan Redis Functions, Redis 8.8'in INCREX'i ve sunucuyu kilitleyen uzun script.

14 Kas 2026 15 dk 11
Özel Data Type'lar: Bitmap, HyperLogLog, Geospatial ve Probabilistic Yapılar (Bloom, Cuckoo, Top-K)
Veritabanı SERİ 07

Özel Data Type'lar: Bitmap, HyperLogLog, Geospatial ve Probabilistic Yapılar (Bloom, Cuckoo, Top-K)

Tekil sayımda bitmap, kimlikler sıkıysa kesin sonucu set'in elli birde biri bellekle verir; HyperLogLog ise kimlik ne olursa olsun 12 KB'ta yaklaşık yüzde 1 hatayla sayar. Gerçek çıktılarla aynı ziyaretçi verisinde set, bitmap ve HLL karşılaştırması, seyrek bitmap'in 14 MB'lık tuzağı, BITFIELD, en yakın depo için Geo, Bloom filter'ın ölçülen belleği ve false positive oranı, Cuckoo, Top-K, Count-Min Sketch, t-digest, Redis 8.8'in Array'i ve Valkey farkları.

14 Kas 2026 15 dk 12
Redis Sorted Set: Leaderboard, Zaman Pencereli Sıralama ve Sayfalama
Veritabanı SERİ 06

Redis Sorted Set: Leaderboard, Zaman Pencereli Sıralama ve Sayfalama

Redis sorted set'i her member'ı bir skorla tutar ve her an sıralı durur; leaderboard'da rank ve sayfa sorguları bir milyon member'da bile mikrosaniyeler sürer, ama canlı listede rank'e göre sayfalama iki istek arasında kayar. Gerçek çıktılarla ZADD seçenekleri, ZRANGE ile sayfalama, günlük set'lerden ZUNIONSTORE ve Redis 8.8'in COUNT'uyla haftanın çok satanları, eşit skorların sırası, 2^53 hassasiyet sınırı ve zaman damgasını skor yapan kayan pencereler.

14 Kas 2026 17 dk 10
Redis Hash'leri: Object Saklamak, Field Expiration ve Bellek Verimliliği
Veritabanı SERİ 04

Redis Hash'leri: Object Saklamak, Field Expiration ve Bellek Verimliliği

Küçük bir Redis hash'i listpack encoding'inde durur ve aynı sepeti JSON string'in yarısı, ayrı key'lerin 2,4'te biri kadar bellekle tutar; 513. field ya da 65 byte'lık tek bir value ise hash'i hashtable'a çevirip belleği 3,4 katına çıkarır. Gerçek çıktılarla HashEntry ile Bookstore sepeti, hash ile JSON kararı, HEXPIRE ve HSETEX ile field bazında fiyat kilidi, Valkey'in encoding farkı, Redis 8.10'un HIMPORT ile compact hash'leri ve dev hash'te 44 ms'lik HGETALL.

14 Kas 2026 10 dk 8
Redis String'leri ve Expiration: SET Seçenekleri, Sayaçlar, Compare-and-Set ve TTL Semantiği
Veritabanı SERİ 03

Redis String'leri ve Expiration: SET Seçenekleri, Sayaçlar, Compare-and-Set ve TTL Semantiği

Redis'te bir key'in üzerine SET ile yazmak TTL'ini siler; doğrulama kodunu yeniden yazarken EX vermezsen kod hiç silinmez. Gerçek çıktılarla SET seçenekleri ve KEEPTTL, INCR ve EXPIRE NX ile günlük sayaç, GET + SET ile 10.000 artışın 9.617'sinin kaybolması, Redis 8.4'ün SET IFEQ, DELEX ve DIGEST komutlarıyla tek kullanımlık kod ve idempotency key, Valkey farkları ve expiration'ın lazy ve aktif silme ile içeride nasıl çalıştığı.

14 Kas 2026 14 dk 8
Blog Haritası