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)
    }
  • 相关阅读:
    c#生成html静态文件时出现空白行,怎么去掉utf-8中的bom
    解决网站发布404返回200,301等状态
    创建本地缓存
    创建windows服务
    C#DateTime与Unix时间戳的转换
    Oracle数据访问组件ODAC的安装方法:
    用任意语言与WebService进行交互
    又一种XML的解析方法
    TopShelf框架创建Windows服务作为Remoting的宿主案例:
    bootstrap 时间控件带(时分秒)选择器(需要修改才能显示,请按照参数说明后面的步骤进行修改)
  • 原文地址:https://www.cnblogs.com/zhaoyingjie/p/15648973.html
Copyright © 2011-2022 走看看