Skip to content

การลบ keys แบบ wildcard ใน Redis

Last updated on April 9, 2016

ใครใช้ Redis คงจะรำคาญอยู่บ้างเวลาที่ต้องลบ key หลายๆ key พร้อมกันโดยกำหนด pattern (แบบ wildcard) เพราะ Redis ไม่มีคำสั่งแบบนั้นโดยตรง ตัวอย่างเช่น เราต้องการลบ key ที่ขึ้นต้นด้วย user:* ก็ต้องใช้ Linux command ช่วย เช่น

$redis-cli --scan --pattern 'user:*' | xargs redis-cli DEL

หรือ

$redis-cli KEYS 'user*' | xargs redis-cli DEL

แล้วแต่ท่าของแต่ละคน แล้วถ้าจำเป็นต้องทำใน Redis shell ล่ะ จะทำยังไง?

ก็ทำได้เหมือนกันครับ ก็ไม่ใช่วิธีตรงๆ อีกนั้นแหละแต่เป็นการใช้คำสั่ง EVAL ซึ่งเพิ่มเข้ามาตอน Redis version 2.6 ที่อนุญาตให้เขียน Lua script (version 5.1) ใน Redis shell ได้

ซึ่งก็ได้เป็นคำสั่งนี้ออกมาครับ

EVAL "for _, k in ipairs(redis.call('KEYS', 'user:*')) do redis.call('DEL', k) end" 0

อาจจะท่ายากหน่อย แต่ถ้าสถานการณ์บังคับก็ช่วยได้นะ ไม่ต้องเหนื่อยลบเองทีละ key ด้วย

 

 

Be First to Comment

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.