Redis ile kalıcılık nasıl devre dışı bırakılır?


91

Redis'te varlığın nasıl devre dışı bırakılacağını merak ediyordum. Burada bunu yapma olasılığından söz ediliyor: http://redis.io/topics/persistence . Bunu orada anlatılanla aynı anlamda kastediyorum. Herhangi bir yardım çok takdir edilecektir!


Bu konuda resmi web sitesinde hiçbir talimat olmaması ve internette bununla ilgili çok fazla bilgi olmaması can sıkıcı olmasa da şaşırtıcı buldum ( Stackoverflow.com/questions/19581059/… ' nin çok daha fazla oy aldığını ve bu). Genel olarak Redis'in genellikle kalıcı olmayan bir veritabanı olarak kullanıldığı düşünülmektedir.
Akronix

Yanıtlar:


111

Redis'te tüm veri kalıcılığını devre dışı bırakmak için redis.confdosyada aşağıdakileri yapın :

  1. appendonlyYapılandırma direktifini no(varsayılan değerdir) olarak ayarlayarak AOF'yi devre dışı bırakın . bunun gibi:

    appendonly no
    
  2. Tüm saveyapılandırma yönergelerini yorumlayarak RDB anlık görüntüsünü devre dışı bırakın (varsayılan olarak tanımlanan 3 tane vardır)

    #save 900 1
    #save 300 10
    #save 60 10000
    

Değişiklikten sonra, bunları uygulamak için Redis'i yeniden başlattığınızdan emin olun.

Alternatif olarak, CONFIG SETbu değişiklikleri çalışma süresi sırasında uygulamak için komutu kullanabilirsiniz ( CONFIG REWRITEdeğişiklikleri devam ettirmek için bir de yaptığınızdan emin olun ).

Not: Redis'in sürümüne bağlı olarak, Redis'in çoğaltma ile ilgili görevler için diske erişmesini engelleyen başka ince ayarlar da vardır.


1
redis> config set auto-aof-rewrite-yüzde 0
toontong

2
Redis'imi, üç saveyönergeyi yorumlayarak verileri diske kaydetmeyecek şekilde yapılandırdım . Artık periyodik olarak verilerin anlık görüntüsünü almadığını görebiliyorum. Ancak, sunucumu her kapattığımda hala diske yazılmış bir .rdb dosyası görüyorum. Yine de, belki de yük devretme süreci nedeniyle oluşturulabilir mi?
Jolta

1
Bunu gerçekten etkili kılmak için, burada listelenen komutları cli ile yapmak için kullanabilirsiniz: stackoverflow.com/a/34736871/2904315 Veya redis.conf dosyasını bu yanıtta açıklandığı gibi değiştirebilir ve ardından hizmeti şu şekilde yeniden başlatabilirsiniz:systemctl restart redis
Akronix

Linux'ta redis.confdosya/etc/redis/redis.conf
Amin Shojaei

77

redis.conf(Geliştirme / test ortamları) ile oynamaktan kaçınmak istiyorsanız, bunu komut satırından yapabilirsiniz.

redis-server --save "" --appendonly no

(redis sunucusu ile test edildi 3.2.6ve 5.0.5)


1
Bunun --appendonly nogerekli olduğundan emin misin ? Varsayılan olarak kapalı değil mi?
aleclarson

4
Doğru olabilir. Ama oraya eklemek kesinlikle zarar vermez, sadece güvenli tarafta olmak için, istediğimiz her türlü
sebatı

hmm, WSL'de Windows 10'da (Ubuntu 16) benim için çalışmadı
James Gentes

@JamesGentes hata nedir. Redis 5.0.3 ile Fedora 29'umda çalışıyor, şimdi test ettim. Belki de argümanları Windows'ta farklı bir şekilde iletmeniz gerekiyor? Redis sürümü nedir? redis-server --helpbelki biraz fikir verebilir
Kostis

1
5.0.5 sürümünde de çalışır.
abbas

18

AOF (ek olarak) varsayılan olarak devre dışı bırakıldığından, redis hizmetini yeniden başlatmadan kalıcılığı devre dışı bırakmak için yapılması gereken tek şey, kaydetme yapılandırmasını devre dışı bırakmaktır .

Çalışma zamanında devre dışı bırakmak ve aşağıdaki komutları çalıştırmayı doğrulamak için

Mevcut kaydetme yapılandırmasını kontrol edin

pawan@devops:~$ redis-cli config get save
1) "save"
2) "900 1 300 10 60 10000"

Aynı ayar redis.conf dosyasında da bulunacaktır

pawan@devops:~$ grep -w 'save' /etc/redis/redis.conf | grep -v '#'
save 900 1
save 300 10
save 60 10000

Yapılandırmayı kaydetmeyi devre dışı bırakın

pawan@devops:~$ redis-cli config set save ""
OK

Redis.conf dosyasını , redis hizmeti yeniden başlatıldığında yapılandırmanın kalıcı kalması için yeni kaydetme yapılandırmasıyla değiştirin

root@ip-172-16-3-114:~# redis-cli config rewrite
OK

Yeni kaydetme yapılandırmasını onaylayın

pawan@devops:~$ redis-cli config get save
1) "save"
2) ""

Şimdi, yapılandırmayı kaydetmek için redis.conf dosyasını tarayacaksanız, herhangi bir sonuç olmayacaktır.

pawan@devops:~$ grep -w 'save' /etc/redis/redis.conf | grep -v '#'  
pawan@devops:~$

8

RDB anlık görüntülemesi için şunu kullanarak devre dışı bırakabilirsiniz:

$ sed -e '/save/ s/^#*/#/' -i /etc/redis/redis.conf && sudo service redis-server restart

Redis.conf dosyasındaki kaydetme satırlarını yorumlayacak ve redis sunucusunu yeniden başlatacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.