คาเฟอีนเป็นประสิทธิภาพสูงใกล้กับห้องสมุดแคชที่ดีที่สุด สำหรับรายละเอียดเพิ่มเติมดูคู่มือผู้ใช้ของเราและเรียกดูเอกสาร API สำหรับรุ่นล่าสุด
แคช
คาเฟอีนจัดเตรียมแคชในหน่วยความจำโดยใช้ API ที่ได้รับแรงบันดาลใจจาก Google Guava การปรับปรุงที่ดึงดูดประสบการณ์ของเราในการออกแบบแคชของ Guava และ ConcurrentLinkedHashMap
LoadingCache < Key , Graph > graphs = Caffeine . newBuilder ()
. maximumSize ( 10_000 )
. expireAfterWrite ( Duration . ofMinutes ( 5 ))
. refreshAfterWrite ( Duration . ofMinutes ( 1 ))
. build ( key -> createExpensiveGraph ( key ));
คุณสมบัติได้อย่างรวดเร็ว
คาเฟอีนให้การก่อสร้างที่ยืดหยุ่นเพื่อสร้างแคชด้วยการผสมผสานของคุณสมบัติเสริมต่อไปนี้:
- การโหลดรายการอัตโนมัติลงในแคชเป็นทางเลือกแบบอะซิงโครนัส
- การขับไล่ตามขนาดเมื่อเกินค่าสูงสุดตามความถี่และความใหม่
- การหมดอายุตามเวลาของรายการวัดตั้งแต่การเข้าถึงครั้งล่าสุดหรือเขียนล่าสุด
- รีเฟรชแบบอะซิงโครนัสเมื่อมีการร้องขอการค้างครั้งแรกสำหรับรายการ
- คีย์ห่อด้วยการอ้างอิงที่อ่อนแอโดยอัตโนมัติ
- ค่าห่อหุ้มโดยอัตโนมัติในการอ้างอิงที่อ่อนแอหรืออ่อน
- การแจ้งเตือนรายการที่ถูกขับไล่ (หรือลบออก)
- เขียนเผยแพร่ไปยังทรัพยากรภายนอก
- การสะสมสถิติการเข้าถึงแคช
นอกจากนี้คาเฟอีนยังมีส่วนขยายดังต่อไปนี้:
- JSR-107 JCache
- อะแดปเตอร์กีวะ
- การจำลอง
ใช้คาเฟอีนในชุมชนที่มีการบูรณาการ:
- Play Framework: เฟรมเวิร์กความเร็วสูง
- Micronaut: กรอบการทำงานที่ทันสมัยเต็มรูปแบบ
- Spring Cache: ณ ฤดูใบไม้ผลิ 4.3 & boot 1.4
- Coroutines: Kotlin Coroutines Extension
- Bootique: แพลตฟอร์ม Java ที่รวดเร็วและรวดเร็ว
- Quarkus: Java subatomic subersonic subersonic
- อูฐ: เครื่องยนต์การกำหนดเส้นทางและการไกล่เกลี่ย
- Scaffeine: Wrapper Scala สำหรับคาเฟอีน
- Scalacache: การแคชแบบง่าย ๆ ใน Scala
- Jhipster: สร้าง, พัฒนา, ปรับใช้
- Aedile: เสื้อคลุม Kotlin สำหรับคาเฟอีน
โครงสร้างพื้นฐานที่อยู่ใกล้คุณ:
- Dropwizard: APIs ที่เป็นมิตรกับ Ops
- คาสซานดรา: จัดการข้อมูลจำนวนมากเร็ว
- การเชื่อมโยงกัน: ภารกิจที่สำคัญในตารางข้อมูลหน่วยความจำ
- ACCUMULO: คีย์/ร้านค้าที่จัดเรียงแบบกระจาย
- Kafka: แพลตฟอร์มสตรีมมิ่งเหตุการณ์แบบกระจาย
- HBASE: ร้านค้าข้อมูลขนาดใหญ่กระจายขนาดใหญ่ปรับขนาดได้
- Apache Solr: การค้นหา Enterprise ที่รวดเร็วอย่างน่าทึ่ง
- Infinispan: จัดจำหน่ายตารางข้อมูลในหน่วยความจำ
- REDISSON: กริดข้อมูลในหน่วยความจำเร็วเป็นพิเศษ
- OpenWhisk: แพลตฟอร์มคลาวด์แบบไม่มีเซิร์ฟเวอร์
- Corfu: แพลตฟอร์มความสอดคล้องของคลัสเตอร์
- Grails: Web Framework
- Finagle: ระบบ RPC ที่ขยายได้
- neo4j: กราฟสำหรับทุกคน
- Druid: การวิเคราะห์แบบเรียลไทม์
ในข่าว
- คำอธิบายเชิงลึกเกี่ยวกับสถาปัตยกรรมของคาเฟอีน
- การออกแบบแคชที่ทันสมัย: ส่วนที่ 1 ส่วนที่ #2 (สไลด์) ที่ระดับสูง
- คาเฟอีนถูกนำเสนอเป็นส่วนหนึ่งของงานวิจัยที่ประเมินนโยบายการขับไล่นวนิยาย
- Tinylfu: นโยบายการรับแคชที่มีประสิทธิภาพสูงโดย Gil Einziger, Roy Friedman, Ben Manes
- การจัดการแคชซอฟต์แวร์แบบปรับตัวโดย Gil Einziger, Ohad Eytan, Roy Friedman, Ben Manes
- การจัดการแคชขนาดที่แข็งแรงน้ำหนักเบาโดย Gil Einziger, Ohad Eytan, Roy Friedman, Ben Manes
การดาวน์โหลด
ดาวน์โหลดจาก Maven Central หรือพึ่งพาผ่าน Gradle:
implementation( " com.github.ben-manes.caffeine:caffeine:3.1.8 " )
// Optional extensions
implementation( " com.github.ben-manes.caffeine:guava:3.1.8 " )
implementation( " com.github.ben-manes.caffeine:jcache:3.1.8 " )
สำหรับ Java 11 หรือสูงกว่าใช้ 3.x
มิฉะนั้นใช้ 2.x
ดูบันทึกการเปิดตัวสำหรับรายละเอียดของการเปลี่ยนแปลง
สแน็ปช็อตของเวอร์ชันการพัฒนามีอยู่ในที่เก็บสแน็ปช็อตของ Sonatype