携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
Memcached作为最早时期的分布式内存缓存系统,具有开源、高性能、易于使用等特性,与同时代比较流行的语言PHP结合产生了很多影响深远的产品,可以说也是一个时代的弄潮儿。但是随着Redis的发行越来越多的用户选择了Redis作为系统的缓存,不过Memcached任然有很多值得我们学习的地方,本文将从以下几点出发,阐述如何安装及使用Memcached:
-
基于Docker安装Memcached的服务端
-
使用命令行操作Memcached中的数据
-
安装操作Memcached的Golang客户端
-
使用Golang客户端操作Memcached中的数据
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))