ควรใช้ที่เก็บคีย์ / ค่าเช่น Redis แทน / ข้างฐานข้อมูล SQL เมื่อใด


166

ฉันได้อ่านสิ่งที่ยอดเยี่ยมเกี่ยวกับร้านค้าคีย์ / ค่าเช่น Redis แต่ฉันไม่สามารถเข้าใจได้ว่าถึงเวลาที่จะใช้ในแอปพลิเคชัน

สมมติว่าฉันกำลังสร้างแอปพลิเคชันบนเว็บ ฉันรู้ว่าสแต็คใดที่ฉันจะใช้สำหรับ front-end, back-end, ฐานข้อมูลเป็นต้นสิ่งที่เป็นสถานการณ์ที่ฉันจะไป "โอ้เรายังต้องการ Redis สำหรับ X, Y หรือ Z"

ฉันขอขอบคุณตัวอย่าง node.js รวมถึงตัวอย่างที่ไม่ใช่ node.js


คำตอบ:


102

ฉันดูเหมือนจะไม่สามารถคิดออกเมื่อถึงเวลาที่จะใช้ในแอปพลิเคชัน

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

อย่างไรก็ตาม Redis ไม่ได้แทนที่ NoSQL สำหรับฐานข้อมูลเชิงสัมพันธ์แบบคลาสสิกเนื่องจากมันไม่รองรับคุณสมบัติมาตรฐานมากมายของ RDBMS world เช่นการสืบค้นข้อมูลของคุณซึ่งอาจทำให้ช้าลง การแทนที่เป็นฐานข้อมูลเอกสารอย่างเช่น MongoDB หรือ CouchDB และ redis นั้นยอดเยี่ยมในการเสริมการทำงานเฉพาะที่ความเร็วและการสนับสนุนโครงสร้างข้อมูลขั้นสูงนั้นมีประโยชน์


3
บทช่วยสอนที่คุณเชื่อมโยงไปนั้นยอดเยี่ยมมาก!
Chris Abrams

5
ฉันค้นหาด้วย Google อย่างรวดเร็วด้วย URL ของเว็บไซต์กวดวิชาและพบว่าสิ่งนี้ได้รับความนิยมสูงสุด - slideshare.net/dvirsky/introduction-to-redis-version-2
Paul

66

ฉันคิดว่าไม่มีอะไรอธิบายกรณีใช้งาน Redis ได้ดีกว่าบทความนี้: http://antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html

ฉันเดิมพันคุณจะมีaha! ขณะ ;)

คำพูดจากผู้อ่านก่อนหน้า:

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

คำพูดจากบทความ:

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

ใช้กรณีที่บทความสัมผัสกับ:

  • ชะลอรายการล่าสุดในหน้าแรกของคุณ
  • กระดานผู้นำและปัญหาที่เกี่ยวข้อง
  • สั่งซื้อโดยผู้ใช้โหวตและเวลา
  • การใช้งานหมดอายุในรายการ
  • การนับสิ่ง
  • Unique N items ในระยะเวลาที่กำหนด
  • การวิเคราะห์ตามเวลาจริงของสิ่งที่เกิดขึ้นสำหรับสถิติการต่อต้านสแปมหรืออะไรก็ตาม
  • ผับ / ตำบล
  • คิว
  • เก็บเอาไว้

บทความนี้มีประโยชน์มากฉันมีสิ่งที่ฉันอยากรู้
Hos Mercury

@ Zenw0lf Redis ยังดีที่สุดสำหรับการแคชอย่างง่ายหรือไม่? โพสต์ของคุณมาจาก 2011 ดังนั้นไม่แน่ใจว่ามีอย่างอื่นที่ฉันควรใช้
Moondra

@Moondra ใช่โครงการยังมีชีวิตอยู่เป็นอย่างมากและเป็นผู้สร้างทำให้มีการเผยแพร่บ่อยครั้ง มันยังคงเป็นโครงการที่ยอดเยี่ยมสำหรับสถานการณ์การใช้งานที่แตกต่างกัน!
zenw0lf

@ zenw0lf บทความที่ดี แต่ฉันยังคงสับสนเล็กน้อยในกรณีการใช้งานบางอย่าง ตัวอย่างเช่นกรณีการใช้ "ไอเท็มล่าสุด" ทำไมจึงควรเพิ่ม Redis ในกรณีนี้ สิ่งที่อยู่ในฐานข้อมูลที่เราเพิ่มในตารางเฉพาะเพื่อให้มี ID ผู้ใช้ความคิดเห็น (id) และ / หรือการประทับเวลาและใช้สิ่งนี้โดยตรง สิ่งนี้จะไม่เหมือนเดิมหรือ
โทนี่หลิน

1
@TonyLin เป็นทั้งสองอย่างรวดเร็วเพราะมันอยู่ในหน่วยความจำและเนื่องจาก Redis ยังมีการนำโมเดลข้อมูลที่ทันสมัยมาใช้เพื่อช่วยให้ทำงานได้ดีที่สุดเท่าที่จะทำได้
zenw0lf

9
  • ฉันชอบที่จะใช้ redis ในโครงการเรียลไทม์ เมื่อเร็ว ๆ นี้ฉันเคยใช้ระบบติดตามจีพีเอสระบบเดียวซึ่งเคยสร้างบน mysql เป็นฐานข้อมูล

    ความได้เปรียบ

    1. ทุกครั้งที่ข้อมูลการออกอากาศตัวติดตามฉันไม่จำเป็นต้องเปิดการเชื่อมต่อ mysql และเก็บไว้ในนั้น เราสามารถบันทึกเป็น redis และย้ายไปยัง mysql ในภายหลังโดยใช้กระบวนการอื่น วิธีนี้จะหลีกเลี่ยงการเชื่อมต่อพร้อมกันจากตัวติดตามหลายตัวไปยัง MySQL
    2. ฉันสามารถเผยแพร่ข้อมูล gps และไคลเอนต์อื่น ๆ (javascript / android) สามารถสมัครสมาชิกแบบเรียลไทม์โดยใช้คิวข้อความตามสีแดง
    3. ฉันสามารถเรียกใช้การแจ้งเตือนตามเวลาจริง

3

สิ่งหนึ่งที่มือคือ Redis ไม่ใช่ฐานข้อมูลเชิงสัมพันธ์ หากคุณต้องการ SQL "JOIN" คุณจะไม่ต้องการใช้ Redis หรือฐานข้อมูลที่ไม่เกี่ยวข้องอื่น ๆ Redis เร็วกว่าฐานข้อมูลเชิงสัมพันธ์ส่วนใหญ่ หากคุณกำลังจะทำคีย์: แบบสอบถามคู่ค่าคุณจะต้องใช้ Redis


ตัวอย่างเช่นจะเป็นการดีที่จะใช้ redis สำหรับข้อมูลเกี่ยวกับเซสชันผู้ใช้หรือไม่จึงเป็นการเข้าถึงชื่ออีเมล ID และอื่น ๆ ได้เร็วขึ้นหรือไม่
Chris Abrams

ฉันจะคิดอย่างนั้น คณะรัฐมนตรีเกียวโตน่าจะเร็วกว่านี้สำหรับฉัน
EhevuTov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.