กลยุทธ์การแคช

การปรับแต่งโค้ดใน Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

การแคชคืออะไร?

การแคชคือการเก็บข้อมูลที่ใช้บ่อยไว้ในตำแหน่งที่เข้าถึงได้เร็ว แต่มีพื้นที่จำกัด

ข้อมูลที่มักแคชไว้:

  • ผลลัพธ์ของคิวรีฐานข้อมูล
  • การตอบสนองจาก API
  • ผลการคำนวณที่ใช้ทรัพยากรสูง
  • การดำเนินการที่ต้องการทรัพยากรมาก
การปรับแต่งโค้ดใน Java

การแคชในหน่วยความจำด้วย Java

// In-memory cache using HashMap
public class SimpleCache<K, V> {
    private final Map<K, V> cache = new HashMap<>();

    public V get(K key) {
        return cache.get(key);
    }

    public void put(K key, V value) {
        cache.put(key, value);
    }
}
การปรับแต่งโค้ดใน Java

นโยบายการขับข้อมูลออกจากแคช

  • LRU (Least Recently Used)
  • LFU (Least Frequently Used)
  • FIFO (First In, First Out)
  • การหมดอายุตามเวลา
  • และอื่น ๆ อีกมาก!
การปรับแต่งโค้ดใน Java

Redis สำหรับ distributed caching

Redis คืออะไร:

  • ที่เก็บข้อมูล/แคชในหน่วยความจำ
  • เหมาะอย่างยิ่งสำหรับ distributed cache
  • รองรับโครงสร้างข้อมูลหลากหลาย
  • มี Java client library หลายตัว เช่น Jedis

ภาพหน้าจอ Redis

การปรับแต่งโค้ดใน Java

การใช้ Redis กับ Jedis

import redis.clients.jedis.Jedis;

// Using Jedis client
Jedis jedis = new Jedis("localhost");
jedis.set("key", "value");
String value = jedis.get("key");

ฟีเจอร์เพิ่มเติม:

  • การหมดอายุของรายการแคชอัตโนมัติ
  • รองรับ Cluster
การปรับแต่งโค้ดใน Java

สร้างแคชแบบกำหนดเวลาด้วย Redis

public class RedisTimedCache {
    private final Jedis jedis;

    public RedisTimedCache(String host, int port) {
        this.jedis = new Jedis(host, port);
    }

    public String get(String key) {
        return jedis.get(key);
    }

    public void put(String key, String value, int timeToLiveSeconds) {
        // Sets both the value and expiration time in seconds
        jedis.setex(key, timeToLiveSeconds, value);
    }
}
การปรับแต่งโค้ดใน Java

สรุป

  • การแคชเก็บผลลัพธ์ที่คำนวณแล้วเพื่อหลีกเลี่ยงการคำนวณซ้ำ
  • เหมาะกับการดำเนินการที่ใช้ทรัพยากรสูงและข้อมูลที่เข้าถึงบ่อย
  • กำหนดนโยบายการขับข้อมูลที่เหมาะสมเพื่อจัดการหน่วยความจำ
  • พิจารณา distributed caching สำหรับแอปพลิเคชันหลายเซิร์ฟเวอร์ (เช่น Redis กับ Jedis)
การปรับแต่งโค้ดใน Java

มาฝึกกันเถอะ!

การปรับแต่งโค้ดใน Java

Preparing Video For Download...