Golang之Memcached基础使用

746 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

Memcached作为最早时期的分布式内存缓存系统,具有开源、高性能、易于使用等特性,与同时代比较流行的语言PHP结合产生了很多影响深远的产品,可以说也是一个时代的弄潮儿。但是随着Redis的发行越来越多的用户选择了Redis作为系统的缓存,不过Memcached任然有很多值得我们学习的地方,本文将从以下几点出发,阐述如何安装及使用Memcached:

  • 基于Docker安装Memcached的服务端

  • 使用命令行操作Memcached中的数据

  • 安装操作Memcached的Golang客户端

  • 使用Golang客户端操作Memcached中的数据

官方文档:github.com/memcached/m…

Golang模块参考文档:pkg.go.dev/github.com/…

基于Docker安装Memcached

Memcached的默认端口为11211,所以启动的时候我们只需要把11211这个端口向外暴露即可

docker run --name my-memcache -d -p 11211:11211 memcached memcached -m 64

命令行使用

首先使用命令 telnet 127.0.0.1 11211 连接上Memcached的服务端,然后使用以下命令行操作Memcached中的数据

  • set 设置键值对,可用于设置或更新键值对
# set key flags 过期时间 数据大小 (换行)
# value
set key 33 0 4
value
  • add 新增键值对,参数与set类似,不过只有当键不存在时才有效
add key 33 0 4
value
  • replace 修改键值对,参数与set类似,不过只有当键存在时才有效
replace key 33 0 4
value
  • get 获取键所对应的值,及其flag、数据大小
get key

golang 模块安装

可以使用bradfitz(Memcached的作者)提供的SDK来操作Memcached中的数据

go get github.com/bradfitz/gomemcache/memcache

基于golang 模块的基础使用

// 获取memcache客户端struct
mc := memcache.New("127.0.0.1:11211")
// 添加键为key,值为value的数据
err := mc.Set(&memcache.Item{Key: "key", Value: []byte("value")})
if err != nil {
   log.Fatal(err)
}
// 获取键为key的Item struct
item, err := mc.Get("key")
if err != nil {
   log.Fatal(err)
}
fmt.Println(string(item.Value))