DBAtlas · Veritabanı operasyon atlası

Desene uyan key'leri KEYS kullanmadan bul ve güvenle sil (SCAN + UNLINK)

RedisBakım

Komut

# KEYS yerine imlecle tarama (0 donene kadar donen imlecle tekrar cagir):
SCAN 0 MATCH oturum:* COUNT 1000 TYPE string
# Desene uyan key sayisi:
redis-cli -h redis1 -p 6379 --scan --pattern 'oturum:*' --count 1000 | wc -l
# Bellegi arka planda serbest birakarak 500'erli toplu sil:
redis-cli -h redis1 -p 6379 --scan --pattern 'oturum:*' --count 1000 | xargs -r -n 500 redis-cli -h redis1 -p 6379 UNLINK

Ne yapar?

Keyspace'i sunucuyu bloklamadan imleçle tarar, desene ve tipe uyan key'leri sayar ve bunları UNLINK ile belleği arka planda serbest bırakarak toplu siler.

Ne zaman kullanılır?

Eski bir uygulama sürümünün bıraktığı key'leri temizlerken, bir prefix altındaki key sayısını öğrenirken veya üretimde KEYS komutuna ihtiyaç duyulduğunda.

Dikkat

KEYS tüm keyspace'i tek seferde döner ve büyük veride sunucuyu saniyelerce bloklar; üretimde kullanma. SCAN tarama sırasında eklenen/silinen key'ler için tam garanti vermez ve aynı key'i birden fazla döndürebilir. Boşluk veya tırnak içeren key adları xargs ile bozulur. Silmeden önce sayıyı ve birkaç örneği kontrol et; geri alma yoktur.

DBAtlas'ta aç →

İlgili