go基础之操作redis数据库

准备阶段

关于redis的操作不多赘述,详见菜鸟教程redis文档

引入第三方库

这里要引入第三方库redisgogo get github.com/garyburd/redigo/redis

//上面的github仓库已迁移,使用
go get github.com/gomodule/redigo/redis

实战demo

下面开始一些实际的操作

package main

import (
	"encoding/json"
	"fmt"
	_ "github.com/gomodule/redigo/redis"
	"github.com/redigo/redis"
	"log"
)
/**
go操作redis数据库 https://github.com/gomodule/redigo
 */
type user struct{
	username string
	password string
}


func main(){
	//连接数据库
	c,err := redis.Dial("tcp","127.0.0.1:6379")
	checkErr(err)
	//readAndWrite(c)
	//writeByConfigExpireTime(c)
	//Expirekey(c)
	//writeStructObject(c)
	//isExistKey(c)
	//writeJsonObject(c)
	//readJsonObject(c)
	defer c.Close()
}

//读写操作 string
func readAndWrite(c redis.Conn){
	_, err := c.Do("SET", "cary", "zxh")
	checkErr(err)
	username,err:=redis.String(c.Do("GET","james"))
	if err!=nil {
		log.Fatalln(err)
	}else{
		fmt.Println(username)
	}
}

//写操作并且设置过期时间
func writeByConfigExpireTime(c redis.Conn){
	_,err:=c.Do("set","xx","xx")
	checkErr(err)
	//设置过期时间为10s,10s后键值对过期
	_, err = c.Do("expire", "xx", 10)
	checkErr(err)
	username,err:=redis.String(c.Do("GET","xx"))
	if err!=nil {
		log.Fatalln(err)
	}else{
		fmt.Println(username)
	}
}


//写入一个结构体类型
func writeStructObject(c redis.Conn){
	person := user{
		username:"carl",
		password: "123",
	}
	_,err:=c.Do("set",person.username,person.password)
	checkErr(err)
}

//检测key是否存在
func isExistKey(c redis.Conn){
	flag,err:=redis.Bool(c.Do("exists","james"))
	if err!=nil {
		log.Fatalln(err)
	}else{
		fmt.Println("exist or not..",flag)
	}
}

//写入json格式的数据
func writeJsonObject(c redis.Conn){
	key:="user_table"
	user:=map[string]string{
		"username":"kk",
		"password":"12",
	}
	//序列化
	value,_:=json.Marshal(user)
	// setnx 该操作不能被覆盖
	res,err:=c.Do("SETNX",key,value)
	checkErr(err)
	if res == int64(1){
		fmt.Println("success")
	}
}

//取出json格式的数据
func readJsonObject(c redis.Conn){
	key:="user_table"
	user:=map[string]string{}
	value,err:=redis.Bytes(c.Do("get",key))
	if err != nil {
		fmt.Println(err)
	}
	//解序列化
	err = json.Unmarshal(value, &user)
	if err!=nil {
		log.Fatalln(err)
	}else{
		fmt.Println(user)
	}
}

//淘汰缓存
func Expirekey(c redis.Conn){
	_,err:=c.Do("del","james")
	checkErr(err)
}

//捕获异常
func checkErr(err error){
	if err!= nil {
		log.Fatalln(err)
	}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值