二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancker
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
推广
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • 网站状态 (opens new window)
    • json2go (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancker
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
推广
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • 网站状态 (opens new window)
    • json2go (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • Shell编程

  • Go编程笔记

    • 开发技巧

    • 库包研究

      • 使用gorm进行联合查询的整理总结
      • 一个ftp客户端的封装
      • 使用go-bindata将文件编译进二进制
      • go-gitlab包源码探寻与心得
      • 利用cobra库快速开发类似kubectl一样的命令行工具
      • 使用MongoDB官方go库操作MongoDB
      • 再探-利用gorm自身提供的方法实现MySQL中数据关联的能力
      • 使用retry-go给项目添加重试机制
      • go-cache包的使用简析
        • 前言
        • 安装
        • 使用
          • New
          • Set
          • Get
          • Delete
          • Items
          • Purge
    • 个人项目

  • 前端编程笔记

  • Go学习笔记

  • Vue-21年学习笔记

  • Vue-22年重学笔记

  • 编程世界
  • Go编程笔记
  • 库包研究
二丫讲梵
2023-03-19
目录

go-cache包的使用简析

这篇文章的发布时间较早,其中的内容可能已经过时,阅读时请注意甄别。

# 前言

平时用 go 写一些小工具的时候,如果数据的敏感性没有那么强,那么一些热数据就可以考虑放在 cache 当中,cache 也没必要用外置服务,那就直接使用本机内存进行存储即可。

go-cache 就是一个用于本地缓存的 Go 语言库,它支持过期时间和自动清理。它使用了一个内部的 goroutine 来检查缓存项是否过期,并在需要时自动清理过期的缓存项。使我们能够很方便地将一些数据放在缓存当中。

go-cache

一个提供 cache 能力的 go 库

- name: go-cache
  desc: 一个提供 cache 能力的 go 库
  avatar: https://avatars2.githubusercontent.com/u/416130?s=460&u=8753e86600e300a9811cdc539aa158deec2e2724&v=4
  link: https://github.com/patrickmn/go-cache
  bgColor: '#ffa8a8'
1
2
3
4
5

# 安装

可以使用 go get 命令安装 go-cache 库:

go get github.com/patrickmn/go-cache
1

# 使用

# New

使用 go-cache 库非常简单。通过如下方法可以创建一个缓存对象:

import "github.com/patrickmn/go-cache"

c := cache.New(5*time.Minute, 10*time.Minute)
1
2
3

cache.New() 会创建一个缓存对象,它需要两个参数:

  • 第一个参数:表示缓存项的过期时间,如上示例表示 5 分钟后过期。
  • 第二个参数:表示缓存项的清除时间,如上示例表示 10 分钟后自动清除。

# Set

使用 Set 方法可以将一个键值对添加到缓存中:

c.Set("key", "value", cache.DefaultExpiration)
1

c.Set() 需要传递三个参数:

  • 第一个参数:指定缓存项的 key。
  • 第二个参数:指定缓存项的 value。
  • 第三个参数:指定该项目的过期时间。📢 注意: 一,此处指定的时间优先级大于 New 时的时间,如果这里指定为 2 分钟,则该缓存项将在 2 分钟后过期;二,如果配置为 cache.DefaultExpiration 则表示缓存项永不过期。

# Get

使用 Get 方法从缓存中获取一个键值对:

value, found := c.Get("key")
if found {
    fmt.Println(value)
}
1
2
3
4

这将获取名为 key 的键的值。如果找到了匹配的键,则 found 为 true。

# Delete

使用 Delete 方法可以将缓存项从缓存中移除:

c.Delete("key")
1

表示直接将名为 key 的缓存项移除。

# Items

使用 Items 方法获取缓存中的所有键值对:

items := c.Items()
fmt.Println(len(items))
1
2

这将返回一个切片,包含缓存中的所有键值对。

# Purge

使用 Purge 方法清空缓存中的所有键值对:

c.Purge()
1

这将清空缓存中的所有键值对。

微信 支付宝
上次更新: 2023/03/19, 11:17:16

← 使用retry-go给项目添加重试机制 给我一个URL,我能将你关心的页面元素截图发给机器人→

最近更新
01
学习周刊-总第98期-2023年第11周
03-17
02
使用retry-go给项目添加重试机制
03-15
03
学习周刊-总第97期-2023年第10周
03-10
更多文章>
Theme by Vdoing | Copyright © 2017-2023 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式