Redis: เป็นไปได้ที่จะหมดอายุองค์ประกอบในอาร์เรย์หรือชุดที่จัดเรียง?


124

ปัจจุบันเป็นไปได้ไหมที่จะหมดอายุทั้งคู่คีย์ / ค่าเท่านั้น จะเกิดอะไรขึ้นถ้าฉันต้องการเพิ่มค่าให้กับโครงสร้างประเภทรายการและให้ลบออกโดยอัตโนมัติ 1 ชั่วโมงหลังจากการแทรก เป็นไปได้หรือไม่หรือต้องใช้งาน cron เพื่อทำการล้างข้อมูลด้วยตนเอง

คำตอบ:


76

ปัจจุบันเป็นไปได้ไหมที่จะหมดอายุทั้งคู่คีย์ / ค่าเท่านั้น

เท่าที่ฉันทราบและตามคำสั่งที่สำคัญและเอกสารเกี่ยวกับการหมดอายุขณะนี้คุณสามารถตั้งค่าการหมดอายุให้กับคีย์ที่ระบุเท่านั้นและไม่ใช่โครงสร้างข้อมูลพื้นฐาน อย่างไรก็ตามมีการสนทนาในกลุ่ม Google เกี่ยวกับฟังก์ชันนี้พร้อมด้วยโซลูชันทางเลือกที่ระบุไว้


1
มีความคิดใด ๆ ณ ตอนนี้ในเดือนกรกฎาคม 2016 พวกเขาสนับสนุนสิ่งนี้ในเวอร์ชันที่ใหม่กว่านี้หรือไม่?
Kamran Shahid

1
@KamranShahid มีอะไรกับเรื่องนี้ ??
Prakash Kumar

1
นพประกาศยังไม่ได้
Kamran Shahid

3
คำตอบนี้ยังคงเกี่ยวข้องหลังจาก 8 ปีหรือไม่?
simo

2
ใช่ Redis ไม่รองรับการหมดอายุขององค์ประกอบในโครงสร้างข้อมูลที่ซ้อนกัน
Itamar Haber

94

มีรูปแบบทั่วไปที่แก้ปัญหานี้ได้ดีทีเดียว

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

เพิ่มเติมที่นี่: https://groups.google.com/forum/#!topic/redis-db/rXXMCLNkNSs


7
ทางออกที่ดี แต่ฉันหวังว่า redis จะสนับสนุนสิ่งนี้อย่างถูกต้อง เป็นข้อกำหนดทั่วไปและไม่ควรมีวิธีแก้ปัญหาที่ซับซ้อน
UpTheCreek

14
ฉันไม่รู้ฉันมีความสุขมากที่พวกเขายึดติดกับปืนของพวกเขา - การขยายคุณสมบัติที่กำหนดในรูปแบบที่พวกเขาไม่ต้องการหรือไม่ได้วางแผนหมายถึงการเสียสละการออกแบบ การสร้างฟังก์ชั่นเพิ่มเติมด้านบนดูเหมือนจะเป็นโซลูชันที่สมบูรณ์แบบและปล่อยให้ Redis ทำในสิ่งที่ทำได้อย่างยอดเยี่ยม
Kieren Johnstone

redis สมบูรณ์แบบเหมือนเดิม - การออกแบบที่เรียบง่ายสะอาดตาและพฤติกรรมที่คาดเดาได้ซึ่งส่งผลให้มีประสิทธิภาพมากกว่าที่ดีเยี่ยม
let4be

1
วิธีแก้ปัญหาที่ยอดเยี่ยมเรายังสามารถใช้รายการ fifo ง่ายๆที่เราเก็บรายชื่อและใช้เพียง 5 องค์ประกอบแรกและเมื่อรายการมีขนาดใหญ่กว่า 5 + N ขึ้นอยู่กับความสามารถในการปรับขนาดเราจะลบคีย์และเริ่มต้นใหม่ ง่ายสะดวกและว่าอัลกอริทึม Redis ควรเป็นอย่างไร อัลกอริทึมนี้ช่วยให้ระบบรายงานของเรามีเวลามากมายในการสืบค้นรายการและดูว่าผู้ใช้เข้าสู่ระบบด้วยอุปกรณ์ใด เห็นด้วยกับ @KierenJohnstone Redis ได้รับการออกแบบมาเพื่อสร้างสถาปัตยกรรมรอบตัวและสมบูรณ์แบบในแบบที่เป็น
Ligemer

1

ฉันใช้วิธีอื่นในการจัดการสิ่งนี้ไม่รู้ว่าจะเป็นประโยชน์กับพวกคุณหรือไม่ แต่ต่อไปนี้:

แฮชและชุดที่เรียงลำดับถูกเชื่อมโยงกันโดย guid

  1. ฉันมีแฮชที่กำหนดให้หมดอายุใน 'x' วินาที
  2. ฉันมีชุดการจัดเรียงที่ใช้สำหรับการสืบค้นที่อยู่ในช่วง
  3. ข้อมูลสำหรับทั้งสองจะถูกเพิ่มในธุรกรรมดังนั้นหากล้มเหลวทั้งคู่จะล้มเหลว
  4. ในแบบสอบถามที่อยู่ในระยะไกลให้ใช้ 'EXISTS' เพื่อดูว่ามีค่าที่แฮชอยู่หรือไม่เมื่อผลลัพธ์ถูกทำซ้ำ
  5. หากไม่มีแสดงว่าหมดอายุแล้วดังนั้นให้ลบรายการออกจากชุดที่เรียงลำดับ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.