gomemcache使用教程

package main

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

var server = "localhost:11211" // Memcached服务主机地址和端口号

func main() {
   mc := memcache.New(server)

   key := "slogan"
   value := "PHP是世界上最好の语言"
   expiration := 3600 // 缓存过期时间,可以指定N秒后过期(但不能超过30天),也可以设为一个时间戳(秒),若为0则永不过期

   //========== 设置缓存 ==========//
   err := mc.Set(&memcache.Item{Key: key, Value: []byte(value), Expiration: int32(expiration)})
   if err != nil {
      fmt.Printf("设置缓存失败,原因:%+v \n", err.Error())
   } else {
      fmt.Println("设置缓存成功") // 设置缓存成功
   }

   //========== 获取缓存(命中) ==========//
   item, err := mc.Get(key)
   if err != nil {
      fmt.Printf("获取缓存失败,原因:%+v \n", err.Error())
      fmt.Printf("item == %+v \n", item)
   } else {
      fmt.Println("获取缓存成功")                          // 获取缓存成功
      fmt.Printf("缓存Key为:%+v \n", item.Key)             // 存Key为:slogan
      fmt.Printf("缓存Value为:%+v \n", string(item.Value)) // 缓存Value为:PHP是世界上最好の语言
   }

   //========== 删除缓存 ==========//
   err = mc.Delete(key)
   if err != nil {
      fmt.Printf("删除缓存失败,原因:%+v \n", err.Error())
   } else {
      fmt.Println("删除缓存成功") // 删除缓存成功
   }

   //========== 获取缓存(不命中) ==========//
   item, err = mc.Get(key)
   if err != nil {
      fmt.Printf("获取缓存失败,原因:%+v \n", err.Error()) // 获取缓存失败,原因:memcache: cache miss
      fmt.Printf("item == %+v \n", item)                  // item == <nil>
   } else {
      fmt.Println("获取缓存成功")
      fmt.Printf("缓存Key为:%+v \n", item.Key)
      fmt.Printf("缓存Value为:%+v \n", string(item.Value))
   }
}

//========== 总结 ==========//
// 1、Go语言操作Memcached和其它语言没有什么不同,除了经常用到的Set()、Get()、Delete()之外同样也有Increment()、Decrement()、
//    Replace()等方法,根据需求使用即可。

Copyright © 2024 码农人生. All Rights Reserved