Skip to content

go redis incr的使用 ​

可用版本: >= 1.0.0

时间复杂度: O(1)

为键 key 储存的数字值加上一。

如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令。

如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

INCR 命令是一个针对字符串的操作。 因为 Redis 并没有专用的整数类型, 所以键 key 储存的值在执行 INCR 命令时会被解释为十进制 64 位有符号整数。

返回值 ​

INCR 命令会返回键 key 在执行加一操作之后的值。

代码示例 ​

使用redis驱动"github.com/go-redis/redis/v7" 重点:r.Do("INCR", "n").Result()

go
package main

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

func main() {
	redisIP, redisPort := "127.0.0.1", 6379
	redisUsername, redisPasswd := "", "123456"
	redisDbName := 0

	r := connectRedis(redisIP, redisPort, redisUsername, redisPasswd, redisDbName)
	_, err := r.Do("INCR", "n").Result()
	if err != nil {
		log.Fatal(err)
	}
}

func connectRedis(IP string, port int, username string, password string, db int) (rdb *redis.Client) {
	dbAddr := fmt.Sprintf("%s:%d", IP, port)
	rdb = redis.NewClient(&redis.Options{
		Username: username,
		Addr:     dbAddr,
		Password: password,
		DB:       db,
	})

	_, err := rdb.Ping().Result()
	if err != nil {
		log.Fatal(err)
	}
	log.Println("Successfully connected to redis")
	return
}