จะปิดการใช้งานการคงอยู่กับ redis ได้อย่างไร?


95

ฉันสงสัยว่าจะปิดการใช้งาน Presistence ใน redis ได้อย่างไร มีการกล่าวถึงความเป็นไปได้ของการทำเช่นนี้นี่คือhttp://redis.io/topics/persistence ฉันหมายถึงมันในความหมายเดียวกับที่อธิบายไว้ตรงนั้น ความช่วยเหลือใด ๆ จะได้รับการชื่นชมเป็นอย่างมาก!


ฉันพบว่ามันน่าแปลกใจถ้าไม่น่ารำคาญที่ไม่มีคำแนะนำในเว็บไซต์อย่างเป็นทางการเกี่ยวกับเรื่องนี้และไม่มีข้อมูลมากมายบนอินเทอร์เน็ตเกี่ยวกับเรื่องนี้ (ดูที่stackoverflow.com/questions/19581059/…มีคะแนนโหวตมากกว่าและมีเอกสารดีกว่า นี้). โดยรวมแล้วเมื่อพิจารณาว่า Redis มักถูกใช้เป็นฐานข้อมูลแบบไม่ถาวร
Akronix

คำตอบ:


115

หากต้องการปิดใช้งานการคงอยู่ของข้อมูลทั้งหมดใน Redis ให้ทำดังต่อไปนี้ในredis.confไฟล์:

  1. ปิดใช้งาน AOF โดยappendonlyกำหนดคำสั่งการกำหนดค่าเป็นno(เป็นค่าเริ่มต้น) แบบนี้:

    appendonly no
    
  2. ปิดใช้งานการสแนปช็อต RDB โดยการแสดงความคิดเห็นของsaveคำสั่งการกำหนดค่าทั้งหมด (มี 3 รายการที่กำหนดโดยค่าเริ่มต้น)

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

หลังจากการเปลี่ยนแปลงตรวจสอบให้แน่ใจว่าคุณรีสตาร์ท Redis เพื่อใช้งาน

หรือคุณสามารถใช้CONFIG SETคำสั่งเพื่อใช้การเปลี่ยนแปลงเหล่านี้ในระหว่างรันไทม์ (ตรวจสอบให้แน่ใจว่าคุณได้ดำเนินการCONFIG REWRITEเพื่อคงการเปลี่ยนแปลงไว้ด้วย)

หมายเหตุ: ขึ้นอยู่กับรุ่น Redis ของคุณมีการปรับแต่งอื่น ๆ ที่ป้องกันไม่ให้ Redis เข้าถึงดิสก์สำหรับงานที่เกี่ยวข้องกับการจำลองแบบ


1
redis> config set auto-aof-rewrite-
percent

2
ฉันได้กำหนดค่า Redis ของฉันไม่ให้บันทึกข้อมูลลงในดิสก์โดยแสดงความคิดเห็นจากสามsaveคำสั่ง ฉันเห็นว่าไม่มีการสแนปชอตข้อมูลเป็นระยะ ๆ อีกต่อไป อย่างไรก็ตามฉันยังคงเห็นไฟล์. rdb เขียนลงดิสก์ทุกครั้งที่ฉันปิดเซิร์ฟเวอร์ สามารถสร้างได้หรือไม่อาจเกิดจากกระบวนการเฟลโอเวอร์
Jolta

1
เพื่อให้ได้ผลจริงคุณสามารถใช้คำสั่งที่แสดงที่นี่เพื่อดำเนินการผ่าน cli: stackoverflow.com/a/34736871/2904315หรือคุณสามารถเปลี่ยนไฟล์ redis.conf ตามที่อธิบายไว้ในคำตอบนี้จากนั้นเริ่มบริการใหม่ด้วย:systemctl restart redis
Akronix

ใน linux redis.confไฟล์อยู่ใน/etc/redis/redis.conf
Amin Shojaei

79

หากคุณต้องการหลีกเลี่ยงการเล่นกับredis.conf(สภาพแวดล้อมการพัฒนา / ทดสอบ) คุณสามารถทำได้ผ่านบรรทัดคำสั่งด้วย

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

(ทดสอบกับเซิร์ฟเวอร์ redis 3.2.6และ5.0.5)


1
แน่ใจหรือว่า--appendonly noจำเป็น? มันไม่ปิดโดยปริยายใช่ไหม
aleclarson

4
อาจเป็นจริง แต่มันไม่เจ็บที่จะเพิ่มที่นั่นเพียงเพื่อให้อยู่ในด้านที่ปลอดภัยสิ่งที่เราต้องการคือปิดการใช้งานการคงอยู่ทุกประเภท;)
Kostis

อืมไม่ได้ผลสำหรับฉันใน Windows 10 ใน WSL (Ubuntu 16)
James Gentes

@JamesGentes ข้อผิดพลาดคืออะไร มันใช้งานได้ใน Fedora 29 ของฉันกับ Redis 5.0.3 ทดสอบแล้ว บางทีคุณอาจต้องส่งข้อโต้แย้งด้วยวิธีอื่นใน Windows? Redis เวอร์ชั่นคืออะไร? redis-server --helpอาจให้ข้อมูลเชิงลึก
Kostis

1
ใช้งานได้กับเวอร์ชัน 5.0.5 ด้วย
abbas

20

เนื่องจาก AOF (ภาคผนวก) ถูกปิดใช้งานโดยค่าเริ่มต้นมีเพียงสิ่งเดียวที่ต้องทำเพื่อปิดการใช้งานการคงอยู่โดยไม่ต้องรีสตาร์ทบริการอีกครั้งคือปิดใช้งานการกำหนดค่าบันทึก

สำหรับการปิดใช้งานบนรันไทม์และตรวจสอบการรันคำสั่งด้านล่าง

ตรวจสอบการกำหนดค่าบันทึกปัจจุบัน

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

การตั้งค่าเดียวกันจะปรากฏในไฟล์ redis.conf เช่นกัน

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

ปิดการใช้งานบันทึกการกำหนดค่า

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

แก้ไขไฟล์ redis.conf ด้วยการกำหนดค่าบันทึกใหม่เพื่อให้การกำหนดค่ายังคงอยู่ถาวรเมื่อรีสตาร์ทบริการ redis

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

ยืนยันการกำหนดค่าการบันทึกใหม่

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

ตอนนี้ถ้าคุณจะสแกนไฟล์ redis.conf เพื่อบันทึกการกำหนดค่าจะไม่มีผลลัพธ์ใด ๆ

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

8

สำหรับการสแน็ปช็อต RDB คุณสามารถปิดใช้งานได้โดยใช้

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

มันจะแสดงความคิดเห็นในบรรทัดบันทึกใน redis.conf และรีสตาร์ท redis-server

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.