redis scan命令_redis 查询命令

redis scan命令_redis 查询命令我们可能会遇到需要运行的某些命令在godis中不存在的情况,这个时候我们可以使用其原生的方式运行命令,为了方便使用,封装了一个方法,用于简化这个过程。需要注意的是,执行命令的返回结果返回的是interface{},需要对其进行解析成可读的实体结构。传递的参数logger是用来打印日志的://RunRedisCmd运行redis命令funcRunRedisCmd(redis*godis.Redis,logger*log.Logger,cmdstring,args…string)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

我们可能会遇到需要运行的某些命令在godis中不存在的情况,这个时候我们可以使用其原生的方式运行命令,为了方便使用,封装了一个方法,用于简化这个过程。需要注意的是,执行命令的返回结果返回的是interface{},需要对其进行解析成可读的实体结构。

传递的参数logger是用来打印日志的:

// RunRedisCmd 运行redis命令
func RunRedisCmd(redis *godis.Redis, logger *log.Logger, cmd string, args ...string) (interface{ 
}, error) { 

byteArr := make([][]byte, len(args))
cmdStr := cmd
for i, str := range args { 

byteArr[i] = []byte(str)
cmdStr += fmt.Sprint(" ", str)
}
if logger != nil { 

logger.Println(cmdStr)
}
err := redis.SendByStr(cmd, byteArr...)
if err != nil { 

if logger != nil { 

logger.Println(err)
}
return nil, err
}
// 一定要receive
r, err := redis.Receive()
if err != nil { 

if logger != nil { 

logger.Println(err)
}
return r, err
}
if logger != nil { 

if r != nil { 

switch r.(type) { 

case []byte:
logger.Println(string(r.([]byte)))
case int64:
logger.Println(r.(int64))
case []interface{ 
}:
logger.Println("\n", SprintArrAsRedis(0, r.([]interface{ 
})))
default:
logger.Println(r)
}
} else { 

logger.Println(r)
}
}
return r, nil
}
// SprintArrAsRedis 打印redis返回的数组格式的数据,以redis的方式
//
// 127.0.0.1:16379> xrange testStream - +
//
// 1) 1) "1650986325904-0"
// 2) 1) "msg"
// 2) "hello"
func SprintArrAsRedis(spaceSize int, result []interface{ 
}) string { 

str := ""
for i, data := range result { 

if i != 0 { 

for j := 0; j < spaceSize; j++ { 

str += " "
}
}
str += fmt.Sprintf("%d) ", i+1)
markArr := false
switch data.(type) { 

case []byte:
str += string(data.([]byte))
case []interface{ 
}:
str += SprintArrAsRedis(spaceSize+3, data.([]interface{ 
}))
markArr = true
default:
str += fmt.Sprint(data)
}
if !markArr { 

str += "\n"
}
}
return str
}

单元测试:

package test
import (
"github.com/piaohao/godis"
"log"
"momo/utils"
"os"
"testing"
"time"
)
func Test_RunRedisCmd(t *testing.T) { 

option := &godis.Option{ 

Host:              "localhost",
Port:              16379,
Db:                0,
ConnectionTimeout: 10 * time.Second,
SoTimeout:         10 * time.Second,
}
pool := godis.NewPool(&godis.PoolConfig{ 
}, option)
redis, _ := pool.GetResource()
logger := log.New(os.Stdout, "redis log ", log.Ldate|log.Lmicroseconds|log.Lshortfile)
rsl, err := utils.RunRedisCmd(redis, logger, "set", "userage", "1")
if err != nil || rsl == nil || string(rsl.([]byte)) != "OK" { 

t.Error("fail set", err)
}
rsl, err = utils.RunRedisCmd(redis, logger, "incr", "userage")
if err != nil || rsl == nil || rsl.(int64) != 2 { 

t.Error("fail incr", err)
}
rsl, err = utils.RunRedisCmd(redis, logger, "del", "userage")
if err != nil || rsl == nil || rsl.(int64) != 1 { 

t.Error("fail del", err)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184474.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解

    深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解因为工作原因,项目中经常遇到目标检测的任务,因此对目标检测算法会经常使用和关注,比如Yolov3、Yolov4算法。当然,实际项目中很多的第一步,也都是先进行目标检测任务,比如人脸识别、多目标追踪、REID、客流统计等项目。因此目标检测是计算机视觉项目中非常重要的一部分。从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗。在此,大白将项目中,需要了解的Yolov3、Yolov4系列相关知识点以及相关代码进行完整的汇总,希望和大家

  • vs2008连接tfs2013_VS连接SQL网页登录

    vs2008连接tfs2013_VS连接SQL网页登录偶尔还是会用到,老是忘记安装的顺序,在这儿mark一下。用VS2008连接TFS2010,需要按照以下顺序安装一下组件:.VS2008TeamExplorer2008      3.InstallVisualStudio2008SP1      4.InstallVSTS2008ForwardCompatibilityUpdate

  • JAVA三元运算符_java中三元运算符详解

    JAVA三元运算符_java中三元运算符详解一:三元运算符条件表达式?取值1:取值2三元运算符是ifelse或者ifelseifelse的简写形式,可以使代码看起来简洁些。privateStringternary1(intfirst){System.out.println("=================================================================…

  • redhat安装git工具[通俗易懂]

    1、首先到官网上下载git包,地址为http://git-scm.com/download2、输入命令tarzxvfgit-1.7.9.4.tat.gz解压文件到当前目录3、依次执行./configure   make   sudomakeinstall4、安装成功之后执行git–version查看是否安装成功

  • lte频谱带宽_lte信道带宽可以配置为

    lte频谱带宽_lte信道带宽可以配置为1.频带(Band)所谓频带,指代的是一个频率的范围或者频谱的宽度,即无线解码器的最低工作频率至最高工作频率之间的范围,单位是Hz。为了方便起见,在LTE中,使用数字1-43来表示不同的频带(36101-V10.21.0版本协议),从而指代不同的频率范围。协议36101规定了目前LTE所有的频带、该频带的频率范围和LTE制式,如下图所示。需要注意的是,频带1-32的上下行频率范围是不重叠的,即上行

    2022年10月11日
  • 数据结构与算法Python_数据结构与算法python语言实现

    数据结构与算法Python_数据结构与算法python语言实现我们已经知道算法是具有有限步骤的过程,其最终的目的是为了解决问题,而根据我们的经验,同一个问题的解决方法通常并非唯一。这就产生一个有趣的问题:如何对比用于解决同一问题的不同算法?为了以合理的方式提高程序效率,我们应该知道如何准确评估一个算法的性能。本节学习首先介绍算法分析的重要性,并讲解了分析算法的时间复杂度和空间复杂度分析方法,最后介绍了Python列表和字典常见操作的时间复杂度。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号