缓存数据结构 *collection.Cache

“github.com/zeromicro/go-zero/core/collection” 包中的 collection.Cache 是 Go 语言中 ZeroMicro 框架提供的缓存数据结构。这个框架通常用于构建微服务和分布式系统。

在 ZeroMicro 中,collection.Cache 提供了一种基于内存的键值对缓存机制,用于临时存储数据以提高数据的访问速度和性能。

通常,使用 collection.Cache 可以执行以下操作:

存储数据:将数据与一个键相关联,并将其存储在缓存中。

和在go-zero中的配置

// 创建一个新的缓存,设置过期时间为5秒
	cache := collection.NewCache(time.Second * 5)

	// 向缓存中添加数据
	cache.Set("key1", "value1")
	cache.Set("key2", "value2")
type ServiceContext struct {
	Config config.Config
	
	//缓存工具 可在本地内存中进行缓存
	LocalCache *collection.Cache
}
func NewServiceContext(c config.Config) *ServiceContext {
	//配置连接mysql
	mysql := sqlx.NewMysql(c.DataSource)
//值为超时时间
	cache, err := collection.NewCache(localCacheExpire)
	if err != nil {
		panic(err)
	}
	//给配置赋值
	return &ServiceContext{
		Config:         c,
		LocalCache:     cache,
	}

获取数据:通过键从缓存中检索数据

// 从缓存中获取数据
	val1, exist1 := cache.Get("key1")
	val2, exist2 := cache.Get("key2")

删除值

// 删除 key1 对应的值
	cache.Delete("key1")

这个缓存实现通常具有以下特性:

  • 内存存储:数据存储在内存中,以便快速访问。
  • 并发安全:支持并发访问,可以安全地在多个 goroutine 中使用。
  • 过期策略:可以设置数据的过期时间,以确保缓存中的数据不会永久存在。
  • 淘汰策略:支持根据一定的策略淘汰不常用的数据,以释放内存空间。

和redis的区别

优点:

  1. 简单性: 由于 collection.Cache 是基于内存的缓存,因此使用它相对来说更简单,无需额外的安装和配置。
  2. 性能: 由于是在内存中进行操作,所以 collection.Cache 通常具有很快的读写速度,适合于对实时性要求高的场景。

缺点:

  1. 有限容量: collection.Cache 通常受限于可用的内存大小,因此不能存储大量数据。当数据量增加时,可能会导致性能下降或者内存溢出的问题。
  2. 单机限制: collection.Cache 存储在单个服务器的内存中,因此不适合于分布式环境下的数据共享和负载均衡。

redis

优点:

  1. 分布式支持: Redis 支持分布式部署,可以横向扩展以处理大规模数据。
  2. 持久化: Redis 提供多种持久化方式,可以将数据保存到磁盘上,保证数据不会因服务器重启而丢失。
  3. 丰富功能: Redis 不仅是缓存,还提供了丰富的数据结构和功能,如列表、哈希、发布/订阅等,非常适合用于构建各种复杂的应用场景

综上所述,如果你的应用场景对于数据的实时性要求较高,且数据量不大,可以考虑使用 collection.Cache。而如果你需要处理大规模的数据,或者需要分布式支持、持久化功能以及更多的高级特性,那么 Redis 可能更适合你的需求。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值