cago

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2024 License: BSD-3-Clause Imports: 8 Imported by: 0

README

Cago

Cache Go, key value store in memory

Table Of Contents

Type

Function

Installation

go get github.com/jasakode/cago

How to use

package main

import "github.com/jasakode/cago"

func main() {
    err := cago.New(cago.Config{
        Path: "database.db",
    })
    if err != nil {
        panic(err.Error())
    }
}

Config
type Config struct {
	Path                string
	MAX_MEM             uint
	MIN_MEM_ALLOCATION  uint64
	EvictOldestOnMaxMem bool
	TimeoutCheck        uint64
}
  • Path string alamat file untuk menyimpan data
  • MAX_MEM ukuran maksimal memory yang akan di gunakan
  • MIN_MEM_ALLOCATION Minimal memory yang akan di bebaskan saat program pertama kali di jalankan
  • EvictOldestOnMaxMem jika : true, maka cache yang paling pertama di tambahkan akan di hapus jika terjadi kelebihan memory
  • TimeoutCheck waktu pengecekan data, default 10 detik, maka setiap 10 detik akan melalkukan pengecekan dan penghapusan cahce yang telah kadaluarsa

Function

Set
package main

import "github.com/jasakode/cago"

func main() {
    err := cago.Set("name", "Jhon Doe", 10000) // set cache with key name and value jhone in 10 second
    if err != nil {
        panic(err) // if value exist error
    }
    cago.Set("age", 24, 10000) // set cache with key age and value uint 24 in 10 second
    if err != nil {
        panic(err) // if value exist error
    }
    type Person struct {
        Name string `json:"name"`
        Age uint `json:"age"`
    }
    cago.Set("person", Person{ Name: "Jhon Doe", Age: 24 }, 10000) // set cache with key person and value struct Person 24 in 10 second
    if err != nil {
        panic(err) // if value exist error
    }
}

Get
package main

import "github.com/jasakode/cago"

func main() {
    cago.Get[string]("name")
    cago.Get[uint]("age")
    type Person struct {
        Name string `json:"name"`
        Age uint `json:"age"`
    }
    cago.Get[Person]("person")
}
Exist
package main

import "github.com/jasakode/cago"

func main() {
    cago.Exist[string]("name")
}

Put
package main

import "github.com/jasakode/cago"

func main() {
    cago.Put[string]("name", "Cago", 10000) // set or update
}

Remove
package main

import "github.com/jasakode/cago"

func main() {
    cago.Remove[string]("name")
}

Clear
package main

import "github.com/jasakode/cago"

func main() {
    cago.Clear() // clear all cahce
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Clear

func Clear() error

Clear menghapus semua nilai yang tersimpan dalam store dan database. Fungsi ini mengosongkan map data dan, jika ada, memanggil fungsi untuk menghapus semua data dari database.

Mengembalikan: - error: Kesalahan jika terjadi selama proses penghapusan data dari database.

func Exist

func Exist(key string) bool

Exist memeriksa apakah nilai dengan key yang diberikan ada dalam store. Fungsi ini mengembalikan true jika key ditemukan, dan false jika tidak.

Parameter:

  • key (string): Key unik yang digunakan untuk memeriksa keberadaan nilai dalam store.

Mengembalikan: - bool: True jika nilai dengan key ditemukan; False jika tidak ditemukan.

func Get

func Get[K store.Compare](key string) *K

Get mengambil nilai dari store berdasarkan key yang diberikan. Fungsi ini mengembalikan pointer ke nilai yang ditemukan. Jika tidak ada nilai yang cocok dengan key, akan mengembalikan nil.

Parameter:

  • key (string): Key unik yang digunakan untuk mencari nilai dalam store.

Tipe Parameter:

  • K (store.Compare): Tipe data yang diharapkan sesuai dengan interface Compare, seperti integer, float, string, atau tipe apapun yang diizinkan.

Mengembalikan:

  • *K: Pointer ke nilai yang diambil dari store. Jika nilai tidak ditemukan, akan mengembalikan nil.

func New

func New(config ...Config) error

New menginisialisasi aplikasi dengan konfigurasi yang diberikan. Jika konfigurasi tidak disediakan, aplikasi akan menggunakan nilai default. Mengatur data cache dan memulai waktu aplikasi. Jika Path untuk database diberikan, aplikasi akan menginisialisasi database dan memuat data dari database ke dalam cache.

func Put

func Put(key string, value store.Compare, maxAge ...uint64) error

Put menggantikan atau membuat nilai baru ke dalam store dengan key yang diberikan. Jika key sudah ada, nilai yang lama akan digantikan dengan nilai baru. Fungsi ini juga dapat menerima parameter opsional untuk menentukan maxAge.

Parameter:

  • key (string): Key unik yang digunakan untuk mengidentifikasi nilai dalam store.
  • value (store.Compare): Nilai yang akan disimpan. Harus memiliki tipe data yang sesuai dengan interface Compare, seperti integer, float, string, atau tipe apapun yang diizinkan.
  • maxAge (opsional) (uint64): Waktu maksimal dalam milidetik selama nilai akan disimpan. Jika tidak disertakan, nilai ini akan disimpan tanpa batasan waktu.

Mengembalikan: - error: Kesalahan jika terjadi selama proses penggantian atau penyimpanan data.

func Remove

func Remove(key string) bool

Remove menghapus nilai yang terkait dengan key yang diberikan dari store. Fungsi ini juga menghapus data dari database jika ada.

Parameter:

  • key (string): Key unik yang digunakan untuk menghapus nilai dalam store.

Mengembalikan: - bool: True jika key berhasil dihapus; False jika key tidak ditemukan.

func Set

func Set(key string, value store.Compare, maxAge ...uint64) error

Set menyimpan nilai ke dalam store dengan key yang diberikan. Fungsi ini juga dapat menerima parameter opsional untuk menentukan maxAge. Nilai yang disimpan harus sesuai dengan tipe yang didefinisikan oleh interface store.Compare.

Parameter:

  • key (string): Key unik yang digunakan untuk mengidentifikasi nilai dalam store.
  • value (store.Compare): Nilai yang akan disimpan. Harus memiliki tipe data yang sesuai dengan interface Compare, seperti integer, float, string, atau tipe apapun yang diizinkan.
  • maxAge (opsional) (uint64): Waktu maksimal dalam milidetik selama nilai akan disimpan. Jika tidak disertakan, nilai ini akan diabaikan.

Mengembalikan: - error: Kesalahan jika terjadi selama penyimpanan data.

func Size added in v1.0.0

func Size() uint64

TotalSize menghitung ukuran total dari semua key dan nilai yang disimpan dalam map app.data. Ukuran dihitung sebagai jumlah byte dari panjang string key dan panjang nilai (store) yang disimpan. Fungsi ini efisien dan tidak menggunakan banyak memori tambahan.

Mengembalikan: - uint64: Total ukuran data (key dan value) dalam byte.

Types

type App

type App struct {
	// contains filtered or unexported fields
}

Struktur `App` digunakan untuk mengelola seluruh aplikasi, termasuk konfigurasi, database, dan data cache.

Field-field:

  • mu: Mutex untuk memastikan operasi thread-safe pada aplikasi, mencegah race condition.
  • start: Waktu start aplikasi dalam format Unix timestamp (uint64).
  • config: Objek konfigurasi aplikasi (Config) yang menyimpan pengaturan aplikasi.
  • db: Pointer ke objek database yang mengelola koneksi dan operasi database.
  • data: Cache data dalam bentuk map, yang menggunakan string sebagai key dan store.Store sebagai value.

func (*App) InitializeDB

func (app *App) InitializeDB() error

InitializeDB menginisialisasi koneksi database SQLite dan menyimpannya dalam aplikasi. Fungsi ini menetapkan nama tabel yang digunakan, membuka koneksi ke database, dan menyimpan objek database ke dalam field aplikasi.

Langkah-langkah:

  1. Membuat objek database baru dengan nama tabel yang ditentukan.
  2. Membuka koneksi ke SQLite menggunakan jalur database dari konfigurasi aplikasi.
  3. Menyimpan koneksi database ke dalam aplikasi dengan penguncian untuk memastikan thread safety.

Mengembalikan:

  • error: Kesalahan jika koneksi database gagal dibuka.

type Config

type Config struct {
	// Path ke file database. Jika kosong, data akan hilang setelah proses selesai.
	// File seperti "database.db" akan menyimpan data untuk mengantisipasi jika
	// program terhenti, sehingga data yang telah dicache dapat dimuat ulang.
	Path string
	// Memori maksimal yang diperbolehkan digunakan (dalam bit).
	// 8.388.608 bit = 1 MB.
	// default: 8589934592 bit (1 GB).
	MAX_MEM uint
	// Memori minimal yang akan dialokasikan (dalam bit).
	// 8.388.608 bit = 1 MB.
	// default: 8388608 bit (1 MB).
	MIN_MEM_ALLOCATION uint64
	// Jika true, data yang ditambahkan paling awal akan dihapus
	// ketika batas memori maksimal tercapai.
	// default : false
	EvictOldestOnMaxMem bool
	// Timeout untuk pemeriksaan entri yang kedaluwarsa (dalam milidetik).
	// Ini menentukan interval waktu antara setiap pemeriksaan data dalam cache.
	// Default: 10000 (10 detik).
	TimeoutCheck uint64
}

Config menyimpan konfigurasi utama aplikasi yang berhubungan dengan database dan penggunaan memori.

Field-field:

  • Path: Lokasi file database di sistem. Jika path tidak ditentukan, aplikasi akan menggunakan database sementara yang datanya hilang setelah proses berakhir.
  • MAX_MEM: Batas memori maksimum yang diperbolehkan untuk aplikasi, dinyatakan dalam bit. Default adalah 8.589.934.592 bit (1 GB).
  • MIN_MEM_ALLOCATION: Jumlah memori minimum yang dialokasikan, dinyatakan dalam bit. Default adalah 8.388.608 bit (1 MB).

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL