ข้อมูลหลักประสิทธิภาพ

การแคช

เก็บข้อมูลที่ร้อนที่สุดของคุณไว้ในหน่วยความจำและตอบการอ่านได้ต่ำกว่ามิลลิวินาทีมาก บนเอนจินที่ใช้ทุกคอร์อย่างเต็มที่

GET/s แบบไปป์ไลน์ ที่วัดได้
36.6M
ความละเอียดของ TTL
ns
ไคลเอนต์เดิมใช้ได้
RESP2/3
ขั้นที่ 1 จาก 5
อ่านผ่านแคช

การเจอแคชกลับมาจากหน่วยความจำทันที ไม่แตะฐานข้อมูล

เซสชันตัวอย่างplaying
# อ่านผ่านแคช
hotkv> GET product:1001
"{\"name\":\"Desk lamp\",\"price\":39}"

ตัวอย่างแบบแอนิเมชันพร้อมคำสั่ง HotKV จริงและคำตอบตัวอย่าง คลิกขั้นตอนใดก็ได้เพื่อข้ามไปยังขั้นนั้น คำสั่งและคำตอบยังคงเป็นภาษาอังกฤษ ตรงตามที่คุณพิมพ์และเห็นใน HotKV

ปัญหา

ฐานข้อมูลช้าและแพงเมื่อต้องเข้าถึงข้อมูลที่ถูกอ่านเป็นพันครั้งต่อวินาที ทุกการดูหน้า การเรียก API หรือการรีเฟรชแดชบอร์ดทำคิวรีเดิมซ้ำ และฐานข้อมูลกลายเป็นคอขวดนานก่อนที่แอปพลิเคชันของคุณจะเป็น

HotKV จัดการอย่างไร

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

ทีละขั้นตอน

เกิดอะไรขึ้นบ้าง ทีละคำสั่ง

  1. 01

    อ่านผ่านแคช

    การเจอแคชกลับมาจากหน่วยความจำทันที ไม่แตะฐานข้อมูล

    GET product:1001
  2. 02

    ไม่พบ จึงโหลดครั้งเดียวแล้วแคชไว้

    เมื่อไม่พบ แอปพลิเคชันอ่านฐานข้อมูลหนึ่งครั้งและแคชผลลัพธ์ไว้ห้านาที

    SET product:2002 "{\"name\":\"Oak desk\",\"price\":420}" EX 300
  3. 03

    ติดแท็กรายการตามสิ่งที่มันขึ้นกับ

    ทุกหน้าที่แคชไว้ซึ่งแสดงสินค้าไฟส่องสว่างมีแท็กเดียวกัน

    TAG.SET product:1001 catalog:lighting
  4. 04

    ทำให้ทั้งกลุ่มเป็นโมฆะ

    ราคาเปลี่ยน แสดงรายการทุกคีย์ที่มีแท็กและลบทั้งหมดในไปป์ไลน์เดียว

    TAG.MEMBERS catalog:lighting
  5. 05

    รายการที่อายุสั้นมาก

    โทเค็นแฟลชที่ตั้งไว้แล้ว ซึ่งต้องหายไปหลัง 250 ms ด้วยความละเอียดระดับนาโนวินาที

    NEXPIRE flash:token:9 250000000
เหมาะกับงานแบบไหน

สถานการณ์จริง

ร้านค้าออนไลน์

หน้าสินค้า ราคา และระดับสต็อกถูกอ่านเป็นพันครั้งต่อวินาที และรีเฟรชตามแท็กเมื่อแคตตาล็อกเปลี่ยน

API และแบ็กเอนด์มือถือ

คำตอบของเอนด์พอยต์ยอดนิยมถูกแคชด้วย TTL สั้น ทราฟฟิกที่พุ่งสูงจึงไปชนหน่วยความจำแทนฐานข้อมูล

เว็บไซต์คอนเทนต์

ส่วนที่เรนเดอร์แล้วและเมตาดาตาของบทความถูกแคชไว้หลายนาที และทำให้เป็นโมฆะตามแท็กเมื่อบรรณาธิการเผยแพร่

อยู่ในตัว

สิ่งที่คุณได้รับ

TTL ตั้งแต่วินาทีถึงนาโนวินาที

EXPIRE และ PEXPIRE ทำงานอย่างที่คาด NEXPIRE เพิ่มความละเอียดระดับนาโนวินาที

EXPIREPEXPIRENEXPIRE

ทำให้เป็นโมฆะตามแท็ก

ติดป้ายคีย์ด้วย TAG.SET แล้วค้นหาทุกคีย์ที่มีป้าย

TAG.SETTAG.MEMBERS

การบีบอัดแบบเลือกเปิดใช้

payload ขนาดใหญ่บีบอัดได้ เพื่อให้ชุดข้อมูลที่ใช้งานอยู่อยู่ในหน่วยความจำได้มากขึ้น

การอ่านแบบมัลติเธรด

คำสั่งทำงานบนเธรดขนานกัน ปริมาณงานจึงเพิ่มตามจำนวนคอร์ ตัวเลขอยู่ในหน้า Performance

GETMGET
ข้อมูลอ้างอิง:SETNEXPIRETAG.SETTAG.MEMBERS

คำถามที่พบบ่อย

ใช้ไคลเอนต์ Redis เดิมของฉันได้ไหม

HotKV ใช้โปรโตคอลของ Redis (RESP2 และ RESP3) ไคลเอนต์ Redis มาตรฐานจึงเชื่อมต่อได้ ตรวจสอบคำสั่งที่คุณพึ่งพาในข้อมูลอ้างอิงคำสั่ง

ทำให้กลุ่มคีย์ที่แคชไว้เป็นโมฆะได้อย่างไร

ติดแท็กคีย์ด้วย TAG.SET ตอนแคช จากนั้นเรียก TAG.MEMBERS แล้วลบสิ่งที่ได้กลับมา

ตัวเลข 36.6M มาจากไหน

เป็นปริมาณงาน GET แบบไปป์ไลน์จากเบนช์มาร์กที่เผยแพร่ของ HotKV วิธีการและฮาร์ดแวร์อยู่ในหน้า Performance

กรณีใช้งานที่เกี่ยวข้อง

ลองกับเวิร์กโหลดของคุณเอง

HotKV ใช้โปรโตคอลของ Redis คุณจึงชี้ไคลเอนต์ที่มีอยู่มาที่ HotKV แล้วรันคำสั่งเดียวกันนี้ได้