Go操作Memcached
  Eo7GKm3ms3Sh 2023年11月02日 50 0


创作不易感谢支持。
一条主写Go和PHP的小菜鸟。平常有时间喜欢自己写点东西,如有不对的地方,欢迎大佬指点。  

简介

[Memcached]是一个自由开源的,高性能,分布式内存对象缓存系统。
[Memcached]是一种基于[内存]的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果

docker-compose安装Memcached

  1. docker-compose.yml
version: '3'
services: 
  memcached:
    image: memcached:1.6.14
    container_name: my-memcached
    volumes:
      - ./data:/data
    ports: 
      - '11211:11211'
  1. docker-compose up - 安装并启动

go操作memcached

go get github.com/bradfitz/gomemcache/memcache
  1. set 操作
var (
	server = "127.0.0.1:11211"
)

func main() {
	var err error

	m := memcache.New(server)
	if m == nil {
		fmt.Printf("memcache new failed")
		return
	}

	err = m.Set(&memcache.Item{
		Key:   "car",
		Value: []byte("blue car"),
	})

	if err != nil {
		fmt.Printf("write to memcache failed., %s", err)
		return
	}
}
  1. get 操作
var (
	server2 = "127.0.0.1:11211"
)

func main() {
	var err error

	m := memcache.New(server2)
	if err != nil {
		fmt.Printf("memcache new failed, %s", err)
		return
	}

	it, _ := m.Get("car")
	if string(it.Key) == "car" {
		fmt.Println("value is ", string(it.Value))
	} else {
		fmt.Println("Get failed")
	}
}
  1. add 操作
var (
	server3 = "127.0.0.1:11211"
)

func main() {

	m := memcache.New(server3)
	if m == nil {
		fmt.Printf("memcache new failed")
		return
	}

	m.Add(&memcache.Item{Key: "food", Value: []byte("rice")})
	it, err := m.Get("food")
	if err != nil {
		fmt.Println("Add failed")
	} else {
		if string(it.Key) == "food" {
			fmt.Println("Add value is ", string(it.Value))
		} else {
			fmt.Println("Get failed")
		}
	}
}
  1. replace 操作
var (
	server4 = "127.0.0.1:11211"
)

func main() {

	m := memcache.New(server4)

	if m == nil {
		fmt.Printf("create memcache failed")
		return
	}

	m.Replace(&memcache.Item{
		Key:   "food",
		Value: []byte("momo"),
	})

	it, err := m.Get("food")
	if err != nil {
		fmt.Println("replace failed")
		return
	}

	if string(it.Key) == "food" {
		fmt.Println("replace value is : ", string(it.Value))
		return
	}

	fmt.Println("read failed")
}
  1. delete 操作
var (
	server6 = "127.0.0.1:11211"
)

func main() {

	m := memcache.New(server6)
	if m == nil {
		fmt.Println("create new memcached failed")
		return
	}

	if err := m.Delete("food"); err != nil {
		fmt.Println("delete food failed")
		return
	}

	fmt.Println("delete success")

}
  1. increment 操作
var (
	server7 = "127.0.0.1:11211"
)

func main() {
	var err error

	m := memcache.New(server7)
	if m == nil {
		fmt.Println("create new memcached failed")
		return
	}

	if err = m.Set(&memcache.Item{
		Key:   "number",
		Value: []byte("1"),
	}); err != nil {
		fmt.Printf("set failed, %s", err)
		return
	}

	newValue, err := m.Increment("number", 5)
	if err != nil {
		fmt.Printf("incr failed, %s", err)
		return
	}
	fmt.Println("new value is ", newValue)

}
  1. decrement 操作
var (
	server8 = "127.0.0.1:11211"
)

func main() {

	var err error

	m := memcache.New(server8)
	if m == nil {
		fmt.Println("create new memcached failed")
		return
	}

	if err = m.Set(&memcache.Item{
		Key:   "number2",
		Value: []byte("5"),
	}); err != nil {
		fmt.Printf("set failed, %s", err)
		return
	}

	newValue, err := m.Decrement("number2", 3)
	if err != nil {
		fmt.Printf("decr failed, %s", err)
		return
	}

	fmt.Println("new value is ", newValue)
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
Eo7GKm3ms3Sh