Skip to content

Tag: redis

ทำ Ranking/Leaderboard ด้วย Redis #2

โพสต์ที่แล้ว “ทำ Ranking/Leaderboard ด้วย Redis #1” แล้วผมทำ ranking แบบอันดับซ้ำกันและข้ามอันดับได้ คราวนี้ลองมาทำอีกแบบคืออันดับซ้ำกันและไม่มีการข้ามอันดับดูบ้าง  ranking ที่เราคาดหวังจะเป็นแบบนี้

Leave a Comment

ทำ Ranking/Leaderboard ด้วย Redis #1

โจทย์ของผมคือผมต้องการ

  1. Ranking ที่อัปเดตแบบ real-time
  2. ไม่ query จาก database โดยตรงและ query บ่อยๆ
  3. Rank หรืออันดับสามารถซ้ำได้

จากข้อ 3 อันดับซ้ำกันได้มี 2 แบบ ตัวอย่างเช่น

แบบที่ 1 non-skipped ranking

แบบที่ 2 skipped ranking

1 Comment

ทดลองใช้ Redis cache ข้อความยาวๆ เพื่อดูการใช้ memory

Update: หลังจากตามอ่านเรื่อง memory optimization ของ Redis แล้วพบว่า default config <datatype>-max-ziplist-entries และ <datatype>-max-ziplist-value ซึ่งในกรณีนี้คือ hash-max-ziplist-entries และ hash-max-ziplist-value ไม่เหมาะสมกับข้อความที่ใช้ในการทดลอง เพราะ Redis จะ encode ข้อมูลก็ต่อเมื่อขนาดหรือจำนวนข้อมูลน้อยกว่า hash-max-ziplist-entries และ hash-max-ziplist-value ที่ เรา set ไว้ โดย default จะเป็น 512 และ 64 ตามลำดับ

Redis เป็น in-memory key-value storage ที่นิยมใส่เข้ามาใน software stack เพื่อ cache ข้อมูล ในเว็บ official ของ Redis เองแนะนำว่ากรณีที่เราใช้ set เก็บข้อมูลจะใช้ memory เยอะ ยิ่งขนาดข้อมูลยาวก็ยิ่งใช้เยอะ เลยแนะนำให้ใช้ hset จะดีกว่าเพราะข้อมูลจะถูก encode ใน memory ดีกว่า ทำให้ใช้ memory น้อยกว่า โดย time complexity ยังเป็น O(1) เท่าเดิม

Leave a Comment

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

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

หรือ

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

Leave a Comment

Redis Labs ใช้ Redis บน cloud ได้แบบฟรีๆ

ผมใช้ OpenShift อยู่ ใช้ทำ project กิ๊กก๊อกทั่วไปตามประสาคนชอบลองนู่นลองนี่ platform สำหรับรันภาษาโปรแกรมต่างๆ ถือว่าดีและง่ายพอสมควร แต่บางทีก็อยากใช้พวก NoSQL เช่น MongoDB และ Redis ด้วย

ในยุคที่ cloud ครองโลกอินเทอร์เน็ตบริการพวก “*-as-a-Service” เกิดขึ้นมากมายราวกับดอกเห็ด PaaS (Platform as a Service) ก็มีให้ใช้ฟรีแล้วถ้าอยากใช้ DaaS (Database as a service) ทำไมจะไม่มีล่ะ ผมเคยลองใช้ MongoLab มาก่อนเลยคิดว่า Redis (NoSQL แบบ Key-Value) ก็น่าจะมีเหมือนกัน ค้นไปค้นมาก็เจอนี่ครับ

Leave a Comment