Skip to content

farseer-go/cacheMemory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cacheMemory 进程缓存

包:"github.com/farseer-go/cache""github.com/farseer-go/cacheMemory"

模块:cacheMemory.Module

codecov Build

进程缓存支持将数据集合缓存到本地,集合中的数据需要有唯一标识

在使用之前,需要先对这个集合做初始化操作,在这里,我们以一个PO结构体来演示: po.go

type po struct {
	Name string     // 这里Name具有唯一标识
	Age  int
}

初始化操作

SetProfilesInMemory定义

func SetProfilesInMemory[TEntity any](key string, uniqueField string, memoryExpiry time.Duration)
  • key:这批数据的key,用于区分不同数据集合。
  • uniqueField:数据集合中,用于区分Item的唯一值的字段名称
  • memoryExpiry:缓存失效时间

使用演示

fs.Initialize[cacheMemory.Module]("进程缓存演示")
cache.SetProfilesInMemory[po]("test", "Name", 0)

第二个参数Name对应po结构的Name字段名称,第三个参数0代表不失效

获取对象

在读写这个缓存集合前,我们需要先获取到这个集合的对象:

cacheManage := cache.GetCacheManage[po]("test")

方法

1、Get

获取缓存的集合对象

func (receiver CacheManage[TEntity]) Get() collections.List[TEntity]

2、ExistsKey

缓存集合是否存在:如果没初始过Key,或者Key缓存已失效,都会返回false

func (receiver CacheManage[TEntity]) ExistsKey() bool

3、ExistsItem

集合中是否存在,cacheId 为 初始化时传入的uniqueField

func (receiver CacheManage[TEntity]) ExistsItem(cacheId string) bool

4、Set

缓存整个集合,将覆盖原有集合(如果有数据)

func (receiver CacheManage[TEntity]) Set(val ...TEntity)

5、SaveItem

更新item数据到集合

func (receiver CacheManage[TEntity]) SaveItem(newVal TEntity)

6、Remove

移除集合中的item数据

func (receiver CacheManage[TEntity]) Remove(cacheId string) 

7、Count

获取集合内的数量

func (receiver CacheManage[TEntity]) Count() int 

8、Clear

清空数据

func (receiver CacheManage[TEntity]) Clear()

演示

fs.Initialize[cacheMemory.Module]("进程缓存演示")
cache.SetProfilesInMemory[po]("test", "Name", 0)
cacheManage := cache.GetCacheManage[po]("test")

// 缓存了2项数据
cacheManage.Set(po{Name: "steden", Age: 18}, po{Name: "steden2", Age: 19})

// 获取Name = "steden" 的数据
item1, _ := cacheManage.GetItem("steden")

// 添加新的item
cacheManage.SaveItem(po{Name: "steden3", Age: 121})

// 移除Name = "steden" 的数据
cacheManage.Remove("steden")

// 2
cacheManage.Count()

// 清空缓存内的所有item
cacheManage.Clear()