Golang使用Redis

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")
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值