memcached 使用与go客户端调用

介绍

详细的介绍参考:
https://www.runoob.com/memcached/memcached-tutorial.html

由于memcached仅仅是一个高度内存的kv存储块,如果有更严谨的需求,需要如下选择:

  1. 集群,持久入磁盘,可恢复,多种业务模型(queue,set,list…),请选用redis.
  2. 服务一致性,服务发现,etcd

何时选用memcached最佳:
短时间内的业务量暴增,如秒杀

安装

拉取镜像,并跑3个实例,仅仅是均衡,并未关联集群
docker pull memcached
docker run --rm --name memchached3 -itd -p 11211:11211 memcached:latest
docker run --rm --name memchached3 -itd -p 11212:11211 memcached:latest
docker run --rm --name memchached3 -itd -p 11213:11211 memcached:latest

go客户端

package main

import (
	"fmt"
	"github.com/bradfitz/gomemcache/memcache"
	//"time"
)

func main() {

	mc := memcache.New("localhost:11211", "localhost:11212", "localhost:11213")
	//mc := memcache.New("localhost:11211")
	e := mc.Set(&memcache.Item{Key: "foo2", Value: []byte("3")})
	// 10 second expired
	//e := mc.Set(&memcache.Item{Key: "foo2", Value: []byte("3"), Expiration: 10})
	if e != nil {
		panic(e)
	}
	it, e := mc.Get("foo2")
	if e != nil {
		panic(e)
	}
	//newV,e :=mc.Increment("foo2", 15)
	//if e!=nil {
	//	panic(e)
	//}
	fmt.Println(string(it.Value))

	//fmt.Println(newV)
	//time.Sleep(5 * time.Second)
	//it2, e2 := mc.Get("foo2")
	//fmt.Println(it2, e2)
	//
	//time.Sleep(6 * time.Second)
	//it3, e3 := mc.Get("foo2")
	//fmt.Println(it3, e3)

}

相关文章

前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、...
在192.168.80.100要联网关闭防火墙及SElinuxsystemctlstopfi...
Redis与Memcache对比:1.Memcache是一个分布式的内存对象缓存...
安装Mencache:关闭防火墙及SElinuxsystemctl  stop  fi...
#安装php的yaf模块,参考https://www.cnblogs.com/shifu204/...
win10下安装配置apache、php、mysql、redis、memcache资源官...