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 ด้วย