xiusin / cache

A high-performance embedded caching library for the V programming language.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cache

Latest Release Coverage Status

Concurrency-safe v caching library with expiration capabilities.

Installation

Make sure you have a working V environment . See the installation instructions.

To install, simply run:

v install xiusin.cache

Example

module main

import xiusin.cache
import time

struct Info {
	pub mut:
	address string
}

fn main() {
	mut cache_manager := cache.new(cleanup_interval: time.second * 10)

	// Accessing a new cache table for the first time will create it.
	mut user := cache_manager.table('user')!

	// We will put a new item in the cache. It will expire after
	// not being accessed via Value(key) for more than 5 seconds.
	user.add("name","xiusin", time.second)!

	// Let's retrieve the item from the cache.
	mut res := user.value("name") or {
		eprintln("Error retrieving value from cache: ${err}")
		return
	}
	println("Found value in cache: ${res.string()!}")

	// Wait for the item to expire in cache.
	time.sleep(6 * time.second)
	if user.exists("xiusin") {
		eprintln("Item is not cached or expired.")
	}

	// Add another item that never expires.
	user.add("info", Info{ address: "china" }, 0)!
	println(user.value("info")!.json[Info]()!)
	// Remove the item from the cache.
	user.delete("info")!
	// And wipe the entire cache table.
	user.flush()
}


// Found value in cache: xiusin
//	Info{
//	    address: 'china'
// }

To run this example, go to examples/ and run:

v run basic.go

You can find a few more examples here. Also see our test-cases in cache_test.v for further working examples.

Note: Restriction, currently does not support the type of user.value("info")!.json[&Info]()!

About

A high-performance embedded caching library for the V programming language.


Languages

Language:V 100.0%