zoukankan      html  css  js  c++  java
  • Golang 操作redis

    我使用的是 https://github.com/go-redis/redis 这个 golang 客户端, 因此安装方式如下:

    go get github.com/go-redis/redis/v8

    接着在代码中导入此包即可:

    "github.com/go-redis/redis/v8"

    创建客户端

    通过 redis.NewClient 函数即可创建一个 redis 客户端, 这个方法接收一个 redis.Options 对象参数, 通过这个参数, 我们可以配置 redis 相关的属性, 例如 redis 服务器地址, 数据库名, 数据库密码等.
    下面是一个连接的例子:

    func RedisClient1() *redis.Client{
        var ctx = context.Background()
        rdb := redis.NewClient(&redis.Options{
            Addr:     "localhost:6379",
            Password: "", // no password set
            DB:       1,  // use default DB
        })
        _, err := rdb.Ping(ctx).Result()
        if err != nil {
            fmt.Println(err)
        }
        return rdb
    }

    String 操作

    redis 的 String 操作有:

    set(key, value):给数据库中名称为key的string赋予值value
    get(key):返回数据库中名称为key的string的value
    getset(key, value):给名称为key的string赋予上一次的value
    mget(key1, key2,…, key N):返回库中多个string的value
    setnx(key, value):添加string,名称为key,值为value
    setex(key, time, value):向库中添加string,设定过期时间time
    mset(key N, value N):批量设置多个string的值
    msetnx(key N, value N):如果所有名称为key i的string都不存在
    incr(key):名称为key的string增1操作
    incrby(key, integer):名称为key的string增加integer
    decr(key):名称为key的string减1操作
    decrby(key, integer):名称为key的string减少integer
    append(key, value):名称为key的string的值附加value
    substr(key, start, end):返回名称为key的string的value的子串

    在 go-redis 中, 我们可以直接找到对应的操作方法, 直接上代码:

    // String 操作
    func stringOperation(client *redis.Client) {
        // 第三个参数是过期时间, 如果是0, 则表示没有过期时间.
        err := client.Set("name", "xys", 0).Err()
        if err != nil {
            panic(err)
        }
    
        val, err := client.Get("name").Result()
        if err != nil {
            panic(err)
        }
        fmt.Println("name", val)
    
    
        // 这里设置过期时间.
        err = client.Set("age", "20", 1 * time.Second).Err()
        if err != nil {
            panic(err)
        }
    
        client.Incr("age") // 自增
        client.Incr("age") // 自增
        client.Decr("age") // 自减
    
        val, err = client.Get("age").Result()
        if err != nil {
            panic(err)
        }
        fmt.Println("age", val) // age 的值为21
    
        // 因为 key "age" 的过期时间是一秒钟, 因此当一秒后, 此 key 会自动被删除了.
        time.Sleep(1 * time.Second)
        val, err = client.Get("age").Result()
        if err != nil {
            // 因为 key "age" 已经过期了, 因此会有一个 redis: nil 的错误.
            fmt.Printf("error: %v\n", err)
        }
        fmt.Println("age", val)
    }
  • 相关阅读:
    PAT A1094 The Largest Generation (25 分)——树的bfs遍历
    PAT A1055 The World's Richest (25 分)——排序
    PAT A1052 Linked List Sorting (25 分)——链表,排序
    PAT A1076 Forwards on Weibo (30 分)——图的bfs
    辅导员
    辅导员面试
    C程序设计
    Excel VBA 基本概念
    Excel函数
    导入excel表的数据到数据库ssh
  • 原文地址:https://www.cnblogs.com/zhaoyingjie/p/15648973.html
Copyright © 2011-2022 走看看