Golang使用Redis

是个懒人 · · 8731 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

go使用Redis

文档链接:https://godoc.org/github.com/go-redis/redis

import (
    "fmt"
    "github.com/go-redis/redis"
)

var ClientRedis *redis.Client

const (
    REDIS_NETWORK   = "tcp"
    REDIS_HOST      = ""
    REDIS_PORT      = ""
    REDIS_PASSWORD  = ""
    REDIS_DB        = 0
)

func init() {
    options := redis.Options{
        Network:            REDIS_NETWORK,
        Addr:               fmt.Sprintf("%s:%s", REDIS_HOST, REDIS_PORT),
        Dialer:             nil,
        OnConnect:          nil,
        Password:           REDIS_PASSWORD,
        DB:                 REDIS_DB,
        MaxRetries:         0,
        MinRetryBackoff:    0,
        MaxRetryBackoff:    0,
        DialTimeout:        0,
        ReadTimeout:        0,
        WriteTimeout:       0,
        PoolSize:           0,
        MinIdleConns:       0,
        MaxConnAge:         0,
        PoolTimeout:        0,
        IdleTimeout:        0,
        IdleCheckFrequency: 0,
        TLSConfig:          nil,
        Limiter:            nil,
    }
    // 新建一个client
    ClientRedis = redis.NewClient(&options)
    // close
    // defer ClientRedis.Close()
}

func String() {
    // 添加string
    ClientRedis.Set("golang_redis", "golang", 0)
    ClientRedis.Set("golang_string", "golang", 0)
    // 获取string
    stringCmd := ClientRedis.Get("golang_redis")
    fmt.Println(stringCmd.String(), stringCmd.Args(), stringCmd.Val())
    // 删除string
    ClientRedis.Del("golang_redis")
}

func Hash() {
    // hash - 添加field
    ClientRedis.HSet("golang_hash", "key_1", "val_1", "key_2", "val_2")
    ClientRedis.HSet("golang_hash", []string{"key_3", "val_3", "key_4", "val_4"})
    // hash - 获取一个field
    hCmd := ClientRedis.HGet("golang_hash", "user")
    fmt.Println(hCmd.String(), hCmd.Err(), hCmd.Val())
    // hash - 获取长度
    cmd := ClientRedis.HLen("golang_hash")
    fmt.Println(cmd.String(), cmd.Args(), cmd.Val())
    // hash - 获取全部
    cmdAll := ClientRedis.HGetAll("golang_hash")
    fmt.Println(cmdAll.String(), cmdAll.Args(), cmdAll.Val())
    // hash - 获取多个key值
    hmCmd := ClientRedis.HMGet("golang_hash", "key_1", "key_2")
    fmt.Println(hmCmd.String(), hmCmd.Args(), hmCmd.Val())
    // hash - 添加field,没有发现和HSet有什么区别
    ClientRedis.HMSet("golang_hash", "key_5", "val_5", "key_6", "val_6")
    ClientRedis.HMSet("golang_hash", []string{"key_7", "val_7", "key_8", "val_8"})
    // hash - 删除field
    ClientRedis.HDel("golang_hash", "key_1", "key_2", "key_3")
}

func List() {
    // list - 从左追加 index 0 val val_3,index 1 val val_2
    ClientRedis.LPush("golang_list", "val_2", "val_3")
    // list - 从左追加 index 0 val val_5,index 1 val val_4
    ClientRedis.LPushX("golang_list", "val_4", "val_5")
    // list - 从右追加 index -1 val val_10,index -2 val val_9
    ClientRedis.RPush("golang_list", "val_9", "val_10")
    // list - 通过index设置val
    ClientRedis.LSet("golang_list", 0, "val_1")
    // list - 通过index获取val
    stringCmd := ClientRedis.LIndex("golang_list", 0)
    fmt.Println(stringCmd.String(), stringCmd.Args(), stringCmd.Val())
    // list - 获取长度
    lenCmd := ClientRedis.LLen("golang_list")
    fmt.Println(lenCmd.String(), lenCmd.Args(), lenCmd.Val())
    // list - 从左删除
    ClientRedis.LPop("golang_list")
    // list - 取全部
    listCmd := ClientRedis.LRange("golang_list", 0, -1)
    fmt.Println(listCmd.String(), listCmd.Args(), listCmd.Val())
    // list - 截取,当start为负数时从右向左截取
    ltrimCmd := ClientRedis.LTrim("golang_list", 2, 3)
    fmt.Println(ltrimCmd.String(), ltrimCmd.Args(), ltrimCmd.Val())
}

func Set() {
    // 无序集合 ("马超", "关羽", "赵云") 后面的赵云会覆盖前面的赵云
    ClientRedis.SAdd("golang_set", "马超", "赵云", "关羽", "张飞", "曹植", "司马懿")
    // 从右删除,并返回
    sCmd := ClientRedis.SPop("golang_set")
    fmt.Println(sCmd.String(), sCmd.Args(), sCmd.Val())
    // 指定删除
    ClientRedis.SRem("golang_set", "赵云")
    // 获取集合成语
    sMembers := ClientRedis.SMembers("golang_set")
    fmt.Println(sMembers.String(), sMembers.Args(), sMembers.Val())
    // 返回集合成员数
    cCmd := ClientRedis.SCard("golang_set")
    fmt.Println(cCmd.String(), cCmd.Args(), cCmd.Val())
}

func Zset() {
    // 新增
    ClientRedis.ZAdd("golang_zset", &redis.Z{
        Score:  0,
        Member: "张飞",
    }, &redis.Z{
        Score:  1,
        Member: "关羽",
    }, &redis.Z{
        Score:  6,
        Member: "刘备",
    })
    // 取区间统计 分数值在 0 和 7 之间的成员的数量
    cCmd := ClientRedis.ZCount("golang_zset", "0", "7")
    fmt.Println(cCmd.String(), cCmd.Args(), cCmd.Val())
    // 取成员数
    zCard := ClientRedis.ZCard("golang_zset")
    fmt.Println(zCard.String(), zCard.Args(), zCard.Val())
    // 通过索引区间返回有序集合指定区间内的成员
    zRange := ClientRedis.ZRange("golang_zset", 0, 1)
    fmt.Println(zRange.String(), zRange.Args(), zRange.Val())
    // 移除有序集合中给定的分数区间的所有成员
    ClientRedis.ZRemRangeByScore("golang_zset", "0", "1")
}



有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:是个懒人

查看原文:Golang使用Redis

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

8731 次点击  
加入收藏 微博
上一篇:8.切片
下一篇:7.数组
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传