当前位置: 首页 > 软件库 > 程序开发 > 缓存系统 >

cache2go

Go 缓存库
授权协议 BSD
开发语言 Google Go
所属分类 程序开发、 缓存系统
软件类型 开源软件
地区 不详
投 递 者 易镜
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

cache2go 是一个 Go 的并发安全缓存库,具有到期和访问计数器的功能。

示例代码:

package main

import (
    "github.com/muesli/cache2go"
    "fmt"
    "time"
)

// Keys & values in cache2go can be off arbitrary types, e.g. a struct.
type myStruct struct {
    text     string
    moreData []byte
}

func main() {
    // Accessing a new cache table for the first time will create it.
    cache := cache2go.Cache("myCache")

    // We will put a new item in the cache. It will expire after
    // not being accessed via Value(key) for more than 5 seconds.
    val := myStruct{"This is a test!", []byte{}}
    cache.Add("someKey", 5*time.Second, &val)

    // Let's retrieve the item from the cache.
    res, err := cache.Value("someKey")
    if err == nil {
        fmt.Println("Found value in cache:", res.Data().(*myStruct).text)
    } else {
        fmt.Println("Error retrieving value from cache:", err)
    }

    // Wait for the item to expire in cache.
    time.Sleep(6 * time.Second)
    res, err = cache.Value("someKey")
    if err != nil {
        fmt.Println("Item is not cached (anymore).")
    }

    // Add another item that never expires.
    cache.Add("someKey", 0, &val)

    // cache2go supports a few handy callbacks and loading mechanisms.
    cache.SetAboutToDeleteItemCallback(func(e *cache2go.CacheItem) {
        fmt.Println("Deleting:", e.Key(), e.Data().(*myStruct).text, e.CreatedOn())
    })

    // Remove the item from the cache.
    cache.Delete("someKey")

    // And wipe the entire cache table.
    cache.Flush()
}

 

go run mycachedapp.go
  •   2.go开源cache2go项目笔记——项目介绍        该项目是GO对象的缓存库,包含CACHE过期自动删除CACEH功能等。        项目中包含examples文件夹,里面包含一些使用例子。        主目录就没有其他文件夹了,剩下的都是go文件为主了。        (PS:还有LICENSE.TXT, README之类的可以打开瞅瞅) 1     Go文件 Go文件有如

  • 前言 刚了解完go语言基础,打算做一个关于阅读go语言优秀的开源项目的专题来学习go语言. 介绍 项目地址:https://github.com/muesli/cache2go cache2go是一个比较简单的go语言项目,其主要实现了一个具有心跳机制的缓存库,话不多说,我们直接看源码. 源码 CacheItem.go 定义了一个缓存项的具体结构. package cache2go import

  • 地址:https://github.com/muesli/cache2go 主要特点: 1、并发安全,使用RWMutex锁来保证并发执行 2、可设置过期时间,过期自动删除 3、可设置操作的回调函数,如增加、删除时的回调函数 主要结构和关系为: cache:map类型,缓存器,根据设置的缓存数据名称来存取相应的缓存表CacheTable CacheTable:缓存表,存储一类数据的缓存结构,结构里的

  • cache2go开源项目的回调方法使用 https://github.com/muesli/cache2go 结构体 type CacheTable struct { sync.RWMutex . name string items map[interface{}]*CacheItem cleanupTimer *time.Timer cleanupInt

  • 7.go开源cache2go项目笔记——benchmark_test文件 1      导入包 import (        "sync"        "sync/atomic"        "testing"        "time" ) 2      函数BenchmarkNotFoundAdd 测试主函数。 并发测试NotFoundAdd.

 相关资料
  • 当你使用本地(在内存中)缓存时,服务器可以缓存一些信息并快速地检索它,但是其他服务器不能访问这个缓存数据,他们需要到数据库中查询同样的信息。 如果你喜欢使用分布式缓存让其他服务器访问缓存的数据,由于它有一些序列化/反序列化和网络延迟开销,则需要注意:在某些情况下,它可能会降低性能。 缓存需要处理的另一个问题:缓存失效。 There are only two hard things in Compu

  • Serenity 提供一些缓存抽象和实用功能让你更容易地使用本地缓存。 术语 本地(local) 的意思是指在本地内存中缓存项目(因此没有涉及到序列化)。 当你的应用程序在网站群(web farm) 中部署时,本地缓存可能还不够或者有时合适。我们将在 分布式缓存 章节中讨论该场景。

  • Web 应用程序可能需要为成百上千甚至更多的用户同时提供服务。如果你没有采取必要的措施,在这种负载下,你的网站可能会崩溃或变得没有响应。 假设在主页显示最后 10 条新闻,并且平均每分钟有上千名用户访问此页面。你可能为每个用户通过查询数据库来显示页面视图信息: SELECT TOP 10 Title, NewsDate, Subject, Body FROM News ORDER BY NewsD

  • 一个动态网站的基本权衡点就是,它是动态的。 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面。从开销处理的角度来看,这比你读取一个现成的标准文件的代价要昂贵的多。 对于大多数网络应用程序,这个开销不是很大的问题。我们的应用不是washingtonpost.com or slashdot.org; 他们只是中小型网站,而且只有那么些流量而

  • 缓存的原则 缓存是一个大型系统中非常重要的一个组成部分。在硬件层面,大部分的计算机硬件都会用缓存来提高速度,比如 CPU 会有多级缓存、RAID 卡也有读写缓存。在软件层面,我们用的数据库就是一个缓存设计非常好的例子,在 SQL 语句的优化、索引设计、磁盘读写的各个地方,都有缓存,建议大家在设计自己的缓存之前,先去了解下 MySQL 里面的各种缓存机制,感兴趣的可以去看下High Performa

  • 缓存是现代高并发应用程序的重要组成部分。即使你的 web 应用程序目前还没有那么高的并发量,但在之后的发展中极有可能会遇到高并发的应用场景,因此从一开始就使用缓存设计程序是一个好主意。 本地缓存 分布式缓存 二级缓存

  • 一、缓存特征 二、缓存位置 三、CDN 四、缓存问题 五、数据分布 六、一致性哈希 七、LRU 参考资料 一、缓存特征 命中率 当某个请求能够通过访问缓存而得到响应时,称为缓存命中。 缓存命中率越高,缓存的利用率也就越高。 最大空间 缓存通常位于内存中,内存的空间通常比磁盘空间小的多,因此缓存的最大空间不可能非常大。 当缓存存放的数据量超过最大空间时,就需要淘汰部分数据来存放新到达的数据。 淘汰策

  • 缓存是提升 Web 应用性能简便有效的方式。 通过将相对静态的数据存储到缓存并在收到请求时取回缓存, 应用程序便节省了每次重新生成这些数据所需的时间。 缓存可以应用在 Web 应用程序的任何层级任何位置。 在服务器端,在较的低层面,缓存可能用于存储基础数据,例如从数据库中取出的最新文章列表; 在较高的层面,缓存可能用于存储一段或整个 Web 页面, 例如最新文章的渲染结果。在客户端,HTTP 缓存