เริ่ม Redis Server ในไดเรกทอรีที่ Redis มีสิทธิ์ในการเขียน
คำตอบข้างต้นจะแก้ปัญหาของคุณแน่นอน แต่นี่คือสิ่งที่เกิดขึ้นจริง:
ตำแหน่งเริ่มต้นสำหรับการจัดเก็บrdb.dump
ไฟล์คือ./
(แสดงถึงไดเรกทอรีปัจจุบัน) คุณสามารถตรวจสอบได้ในredis.conf
ไฟล์ของคุณ ดังนั้นไดเร็กทอรีที่คุณเริ่มเซิร์ฟเวอร์ redis คือตำแหน่งที่dump.rdb
ไฟล์จะถูกสร้างและอัพเดต
ดูเหมือนว่าคุณเริ่มใช้เซิร์ฟเวอร์ redis ในไดเรกทอรีที่ redis ไม่มีสิทธิ์ที่ถูกต้องในการสร้างdump.rdb
ไฟล์
เพื่อทำให้เรื่องแย่ลง Redis อาจไม่อนุญาตให้คุณปิดเซิร์ฟเวอร์ด้วยซ้ำจนกว่าจะสามารถสร้างไฟล์ rdb เพื่อให้แน่ใจว่าการบันทึกข้อมูลที่เหมาะสม
ในการแก้ปัญหานี้คุณจะต้องเข้าสู่สภาพแวดล้อมไคลเอนต์ redis ที่ใช้งานอยู่โดยใช้redis-cli
และอัปเดตdir
รหัสและตั้งค่าให้กับโฟลเดอร์โครงการของคุณหรือโฟลเดอร์ใด ๆ ที่ไม่ใช่รูทมีสิทธิ์ในการบันทึก จากนั้นเรียกใช้BGSAVE
เพื่อเรียกใช้การสร้างdump.rdb
ไฟล์
CONFIG SET dir "/hardcoded/path/to/your/project/folder"
BGSAVE
(ตอนนี้ถ้าคุณต้องการบันทึกไฟล์ dump.rdb ในไดเรกทอรีที่คุณเริ่มต้นเซิร์ฟเวอร์คุณจะต้องเปลี่ยนสิทธิ์สำหรับไดเรกทอรีเพื่อให้ Redis สามารถเขียนลงไปได้คุณสามารถค้นหา stackoverflow เพื่อดูวิธีการทำ )
ตอนนี้คุณน่าจะสามารถปิดเซิร์ฟเวอร์ redis ได้แล้ว โปรดทราบว่าเรา hardcoded เส้นทาง ฮาร์ดโค้ดเป็นวิธีปฏิบัติที่ดีและฉันขอแนะนำให้เริ่มเซิร์ฟเวอร์ Redis จากไดเรกทอรีโครงการของคุณและเปลี่ยนdir key back to
. / `
CONFIG SET dir "./"
BGSAVE
ด้วยวิธีนี้เมื่อคุณต้องการ redis สำหรับโครงการอื่นไฟล์ดัมพ์จะถูกสร้างขึ้นในไดเรกทอรีโครงการปัจจุบันของคุณและไม่อยู่ในไดเรกทอรีโครงการของพา ธ ฮาร์ดโค้ด