cachex

package module
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

README

Cachex

一个简单的缓存库。

读取

数据查询时会先命中内存缓存,命中失败会从持久化存储中读取至缓存中

写入

数据会先写入持久化存储再自动存储至内存缓存中

使用方法

example

package main

import (
	"fmt"

	"github.com/lfhy/cachex"
)

// 内存缓存使用lru
// 远程缓存使用redis
func main() {
	// 初始化缓存配置
	lruCache := cachex.NewMemLruCacheStroage(30000)
	redisCache := cachex.NewRedisCacheStroage(&cachex.RedisConfig{
		Addr:     "192.168.188.230:6379",
		Password: "password",
		DB:       4,
	}, 0)
	// 建立缓存
	cache := cachex.NewCache(lruCache, redisCache)
	// 设置缓存
	cache.Set("hello", "world")
	// 读取缓存
	value, ok := cache.Get("hello")
	if ok {
		fmt.Printf("第一次从lru读取: %v\n", value)
	} else {
		fmt.Println("读取失败")
	}
	// Lru将缓存删除
	lruCache.Delete("hello")
	// 重新读取缓存
	value, ok = cache.Get("hello")
	if ok {
		fmt.Printf("第二次从redis读: %v\n", value)
	} else {
		fmt.Println("读取失败")
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Cache

type Cache[T any] struct {
	// contains filtered or unexported fields
}

func NewCache

func NewCache(memcache CacheStroage[any], remotecache ...CacheStroage[any]) *Cache[any]

默认创any类型的存储

func NewCacheWithType

func NewCacheWithType[T any](memcache CacheStroage[T], remotecache ...CacheStroage[T]) *Cache[T]

带有类型的存储

func (*Cache[T]) Delete

func (c *Cache[T]) Delete(key string)

删除缓存

func (*Cache[T]) Free

func (c *Cache[T]) Free()

清空缓存

func (*Cache[T]) Get

func (c *Cache[T]) Get(key string) (T, bool)

获取缓存

func (*Cache[T]) GetOrSet

func (c *Cache[T]) GetOrSet(key string, value T) (oldValue T, isLoad bool)

获取失败时则设置缓存为指定值

func (*Cache[T]) GetOrSetFunc

func (c *Cache[T]) GetOrSetFunc(key string, setFn func() (value T, canSet bool)) (oldValue T, isLoad bool)

获取失败时则通过指定函数设置为指定值

func (*Cache[T]) Set

func (c *Cache[T]) Set(key string, value T)

设置缓存

func (*Cache[T]) Swap

func (c *Cache[T]) Swap(key string, value T) (oldValue T, isLoad bool)

获取缓存并设置为另一个值

type CacheStroage

type CacheStroage[T any] interface {
	// 获取缓存
	Get(key string) (T, bool)
	// 设置缓存
	Set(key string, value T)
	// 删除缓存
	Delete(key string)
	// 清空缓存
	Free()
}

type JsonByteData

type JsonByteData[T any] struct {
	Data T `json:"Data"`
}

type LruCache

type LruCache[T any] struct {
	// contains filtered or unexported fields
}

func NewMemLruCacheStroage

func NewMemLruCacheStroage(cacheSize int) *LruCache[any]

func NewMemLruCacheStroageWithType

func NewMemLruCacheStroageWithType[T any](cacheSize int) *LruCache[T]

func (*LruCache[T]) Delete

func (c *LruCache[T]) Delete(key string)

删除缓存

func (*LruCache[T]) Free

func (c *LruCache[T]) Free()

清空缓存

func (*LruCache[T]) Get

func (c *LruCache[T]) Get(key string) (T, bool)

获取缓存

func (*LruCache[T]) Set

func (c *LruCache[T]) Set(key string, value T)

设置缓存

type RedisCache

type RedisCache[T any] struct {
	// contains filtered or unexported fields
}

func NewRedisCacheStroage

func NewRedisCacheStroage(config *RedisConfig, timeout ...int) *RedisCache[any]

Redis存储 传入连接参数和缓存超时时间

func NewRedisCacheStroageWithType

func NewRedisCacheStroageWithType[T any](config *redis.Options, timeout ...int) *RedisCache[T]

Redis存储 传入连接参数和缓存超时时间

func (*RedisCache[T]) Delete

func (c *RedisCache[T]) Delete(key string)

删除缓存

func (*RedisCache[T]) Free

func (c *RedisCache[T]) Free()

清空缓存

func (*RedisCache[T]) Get

func (c *RedisCache[T]) Get(key string) (T, bool)

获取缓存

func (*RedisCache[T]) Set

func (c *RedisCache[T]) Set(key string, value T)

设置缓存

type RedisConfig

type RedisConfig = redis.Options

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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