账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    golang redisgo 使用lua脚本批量获取hash值
    28
    0

    问题描述

    使用redisgo 命令:redis.NewScript(keyCount, LuaSrcript).Do(conn, args...)

    但是返回的是[]interface{} 如何进行转换二维数组?

    相关代码

    luaScript := "local rst={}; for i,v in pairs(KEYS) do rst[i]=redis.call('hgetall', v) end; return rst"
    redis.NewScript(2, LuaSrcript).Do(conn, "user:1", "user:2")

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 若是爱过 普通会员 1楼

      在Golang中,我们可以使用redisgo库来连接Redis服务器,然后使用lua脚本来批量获取hash值。以下是一个简单的示例:

      ```go package main

      import ( "context" "fmt" "log" "net/http" "time"

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

      )

      func main() { // 连接到Redis服务器 redis, err := redis.NewClient(context.Background(), "localhost:6379") if err != nil { log.Fatal(err) }

      // 创建lua脚本
      luaScript := `
          var hashKey = KEYS[1]
          var values = ARGV[1:]
      
          for _, value := range values {
              // 执行lua脚本
              _, err = redis.call("PUBLPUBQ", hashKey, value)
              if err != nil {
                  log.Fatal(err)
              }
          }
      `
      
      // 执行lua脚本
      _, err = redis.call("EXEC", luaScript)
      if err != nil {
          log.Fatal(err)
      }
      
      // 关闭Redis连接
      redis.Close()
      

      } ```

      在这个示例中,我们首先连接到Redis服务器,然后创建一个lua脚本,该脚本接受两个参数:要获取hash值的键和要获取的值。然后,我们遍历这些值,并在Redis中执行lua脚本来获取这些值。最后,我们关闭Redis连接。

      请注意,这个示例使用的是lua的"PUBLPUBQ"和"EXEC"命令来获取hash值。你需要根据你的需求来修改这些命令。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部