yoklateknik mülakat

Veritabanı Redis Transactions Scripting Mülakat Soruları

75 doğrulanmış Veritabanı Redis Transactions Scripting mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Redis Transactions ScriptingZorluk 1
Redis'te MULTI komutu ne yapar?
  • aBirden fazla komutu ayrı worker thread'lerde anında paralel çalıştırıp birleşik yanıtlarını döner
  • bBir transaction bloğunun başlangıcını işaretler; sonraki komutlar hemen çalıştırılmak yerine kuyruğa alınır
  • cBirden fazla client'ın aynı transaction'ı paylaşabilmesi için yeni bir bağlantı açar
  • dMevcut veritabanını ikinci bir mantıksal veritabanına çoğaltır
Açıklama:MULTI, bir transaction bloğu başlatır. Ondan sonra (EXEC ya da DISCARD'a kadar) verilen her komut hemen çalıştırılmak yerine o bağlantı üzerinde kuyruğa alınır.
Redis Transactions ScriptingZorluk 1
MULTI'den sonra kuyruğa alınan komutları gerçekten çalıştıran komut hangisidir?
  • aCOMMIT
  • bRUN
  • cEXEC
  • dFLUSH
Açıklama:EXEC, MULTI'den beri kuyruğa alınmış tüm komutları atomik olarak çalıştırır ve yanıtlarını bir dizi olarak döner.
Redis Transactions ScriptingZorluk 1
Açık bir Redis transaction'ı içinde DISCARD ne yapar?
  • aTransaction'ı iptal eder ve kuyruğa alınmış komutları çalıştırmadan temizler
  • bKuyruktaki her komutu çalıştırır, yanıtlarını döner ve transaction'ı kapatmadan önce tüm etkileri geri alır
  • cİzlenmekte olan (watched) key'i siler
  • dYalnızca son kuyruğa alınan komutu kaldırır, geri kalanını tutar
Açıklama:DISCARD, kuyruğa alınmış komut listesini boşaltır ve transaction'ı kapatır; içindeki hiçbir şey çalıştırılmaz.
Redis Transactions ScriptingZorluk 2
Redis transaction'ında WATCH ne için kullanılır?
  • aTransaction içinde çalıştırılan her komutu bir dosyaya loglamak için
  • bİzleyen bağlantı commit olana veya kopana kadar diğer tüm client'ların key'i okumasını ve yazmasını engellemek için
  • cTransaction açıkken key'in TTL'ini periyodik olarak yenilemek için
  • dİzlenen key WATCH ile EXEC arasında değiştirilmişse sonraki EXEC'in başarısız olmasını sağlamak için
Açıklama:WATCH key, optimistic locking uygular: izlenen key WATCH ile EXEC arasında (herhangi bir client tarafından) değiştirilirse transaction abort olur ve EXEC, kuyruğa alınan komutları çalıştırmak yerine null yanıt döner.
Redis Transactions ScriptingZorluk 2
WATCH balance
val = GET balance
MULTI
SET balance <val - 10>
EXEC

GET'ten hemen sonra ama EXEC'ten önce başka bir client balance'ı değiştirirse ne olur?
  • aEXEC yine de çalışır, diğer client'ın değişikliğini eski değerle üzerine yazar
  • bEXEC null (nil dizi) döner ve SET hiç uygulanmaz
  • cRedis her iki yazıyı en güncel değeri kullanarak otomatik olarak birleştirir
  • dWATCH çağrısının kendisi o noktada bir hata fırlatır
Açıklama:balance, WATCH'tan sonra ve EXEC'ten önce değiştirildiği için transaction abort olur: EXEC nil yanıt döner ve kuyruğa alınan komutlardan (SET) hiçbiri çalışmaz. Uygulama bunu tespit edip yeniden denemelidir.
Redis Transactions ScriptingZorluk 2
Bir transaction içindeki komutlardan biri çalışma zamanında (ör. yanlış tip hatası) başarısız olursa Redis bireysel komutları geri alabiliyor mu?
  • aHayır — aynı EXEC içindeki diğer komutlar yine de çalışır; Redis transaction'larında komut-bazlı rollback yoktur
  • bEvet — runtime hatası daha önce başarılı olan her komutu geri alır ve sonraki tüm kuyruk komutlarını engeller
  • cEvet, ama yalnızca MULTI'den önce WATCH kullanıldıysa
  • dHayır — tüm bağlantı kapatılır ve client'ın yeniden bağlanması gerekir
Açıklama:Redis transaction'ları rollback desteklemez. EXEC sırasında bir komut çalışma zamanında başarısız olursa (ör. bir string key üzerinde list komutu çağırmak), kuyruğa alınan diğer komutlar yine de çalışır; yalnızca o komutun hatası yanıt dizisinde raporlanır.

2475 soruluk Veritabanı bankasında kendini sına.

Mülakata başla