zoukankan      html  css  js  c++  java
  • go redigo的简单操作

    golang操作redis主要有两个库,go-redis和redigo。两者操作都比较简单,区别上redigo更像一个client执行各种操作都是通过Do函数去做的,redis-go对函数的封装更好,相比之下redigo操作redis显得有些繁琐。但是官方更推荐redigo,所以项目中我使用了redigo。

    1.连接redis

    package redisclient
    
    import (
    	"fmt"
    	redigo "github.com/garyburd/redigo/redis"
    )
    
    var pool *redigo.Pool
    
    func init() {
    	redis_host := "127.0.0.1"
    	redis_port := 6379
    	pool_size := 20
    	pool = redigo.NewPool(func() (redigo.Conn, error) {
    		c, err := redigo.Dial("tcp", fmt.Sprintf("%s:%d", redis_host, redis_port))
    		if err != nil {
    			return nil, err
    		}
    		return c, nil
    	}, pool_size)
    }
    
    func Get() redigo.Conn {
    	return pool.Get()
    }
    

    之后我们调用redisclient包中的.Get()就可以生成一个redis连接池对象来操作redis

    2.操作redis

    package main
    
    import (
    	"fmt"
    	"redisclient"
    	"github.com/garyburd/redigo/redis"
    )
    
    func main() {
    	c := redisclient.Get()
    
    	//记得销毁本次链连接
    	defer c.Close()
    
    	//写入数据
    	_, err := c.Do("SET", "go_key", "redigo")
    	if err != nil {
    		fmt.Println("err while setting:", err)
    	}
    
    	//判断key是否存在
    	is_key_exit, err := redis.Bool(c.Do("EXISTS", "go_key"))
    	if err != nil {
    		fmt.Println("err while checking keys:", err)
    	} else {
    		fmt.Println(is_key_exit)
    	}
    
    	//获取value并转成字符串
    	account_balance, err := redis.String(c.Do("GET", "go_key"))
    	if err != nil {
    		fmt.Println("err while getting:", err)
    	} else {
    		fmt.Println(account_balance)
    	}
    
    	//删除key
    	_, err = c.Do("DEL", "go_key")
    	if err != nil {
    		fmt.Println("err while deleting:", err)
    	}
    
    	//设置key过期时间
    	_, err = c.Do("SET", "mykey", "superWang", "EX", "5")
    	if err != nil {
    		fmt.Println("err while setting:", err)
    	}
    
    	//对已有key设置5s过期时间
    	n, err := c.Do("EXPIRE", "go_key", 5)
    	if err != nil {
    		fmt.Println("err while expiring:", err)
    	} else if n != int64(1) {
    		fmt.Println("failed")
    	}
    }
    

      

    希望对大家有所帮助~

  • 相关阅读:
    Nginx的启动、停止与重启
    如何修改element.style中的值
    在centos后台运行python程序(nohup)
    Python schedule 模块使用
    「Django」Django内置email发送邮件
    Django内置email发送邮件
    「Django」Xadmin应用
    「Django」浏览+1的操作
    「Vue」watch基本用法
    「Django」contenttypes基本用法
  • 原文地址:https://www.cnblogs.com/baiyb/p/9033120.html
Copyright © 2011-2022 走看看