织梦网站后台文章编辑美化代码怎样创建公司网站
web/
2025/10/4 14:04:54/
文章来源:
织梦网站后台文章编辑美化代码,怎样创建公司网站,哪个旅游网站做的比较好,航拍中国 重庆介绍
定义了一个Cache结构体#xff0c;其中使用sync.Map作为底层数据结构来存储缓存项。Set方法用于设置缓存项#xff0c;指定键、值以及过期时间。Get方法用于获取缓存项#xff0c;如果缓存项存在且未过期#xff0c;则返回值和true#xff0c;否则返回nil和false。方…介绍
定义了一个Cache结构体其中使用sync.Map作为底层数据结构来存储缓存项。Set方法用于设置缓存项指定键、值以及过期时间。Get方法用于获取缓存项如果缓存项存在且未过期则返回值和true否则返回nil和false。方法的接受者为指针类型是为了对Cache对象进行操作并在方法内部访问和修改对象的数据。 在main函数中创建了一个Cache实例并设置了两个缓存项。然后我们尝试获取一个存在的缓存项并在控制台上打印值。接着我们等待6秒再次尝试获取同一个缓存项这次应该返回Key not found因为该缓存项已过期。
代码
GoPratice/memcache/v0/simple.go at main · honlu/GoPratice
package mainimport (fmtsynctime
)type Cache struct {data sync.Map
}type cacheItem struct {value interface{} // 值expired time.Time // 过期时间
}// Set 指针类型的方法接受者才可以保证在方法内部访问和修改对象的数据。
func (c *Cache) Set(key string, value interface{}, duration time.Duration) {c.data.Store(key, cacheItem{value: value,expired: time.Now().Add(duration),})
}func (c *Cache) Get(key string) (interface{}, bool) {item, ok : c.data.Load(key)if !ok {return nil, false}cacheItem : item.(cacheItem)if time.Now().After(cacheItem.expired) { // 判断是否过期c.data.Delete(key)return nil, false}return cacheItem.value, true
}func main() {cache : Cache{}cache.Set(key1, value1, 5*time.Second)cache.Set(key2, value2, 10*time.Second)value1, found1 : cache.Get(key1)if found1 {fmt.Printf(Value1:%v\n, value1)} else {fmt.Printf(Key1 not found\n)}value2, found2 : cache.Get(key2)if found2 {fmt.Printf(Value2:%v\n, value2)} else {fmt.Printf(Key2 not found\n)}time.Sleep(6 * time.Second)value1, found1 cache.Get(key1)if found1 {fmt.Printf(Value1:%v\n, value1)} else {fmt.Printf(Key1 not found\n)}value2, found2 cache.Get(key2)if found2 {fmt.Printf(Value2:%v\n, value2)} else {fmt.Printf(Key2 not found\n)}
}后续
可以考虑具体需求进行扩展和优化例如添加缓存淘汰策略、高并发等。
备注
内容首发在个人知乎文章源码在Github。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86815.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!