jjzjj

go - 为什么redigo返回ERR unknown command 'EVALSHA'

https://github.com/garyburd/redigo为什么redigo会返回错误信息?错误信息:ERRunknowncommand'EVALSHA'ERRunknowncommand'EVALSHA'代码:constlockScript=`localv=redis.call("GET",KEYS[1])ifv==falseorv==ARGV[1]thenreturnredis.call("SET",KEYS[1],ARGV[1],"EX",ARGV[2])and1elsereturn0end`funcCounterRegScript(){rc:=RedisClient.

go - 使用 Go redis 客户端 (Redigo)

我正在使用GOredis客户端redigo将图像写入约20个redis服务器。速度是这里的一个重要因素,我只是向redis发送设置命令,所以我使用Send和Flush而没有调用Receive。几个小时后,我在客户端上看到“连接被对等重置”。我想知道,这是否与我不调用Receive有关系?也许我的RX队列刚刚达到其最大容量,因为我没有使用Receive清空它?谢谢。 最佳答案 应用程序必须调用Receive来清除来自服务器的响应并检查错误。如果应用程序不是流水线命令,那么最好调用Do。Do结合了Send、Flush和Receive。如

go - 在 Redigo 中将 "false"和 "true"扫描为 bool 值

如何使用redis.ScanStruct将字符串解析为bool值甚至自定义类型?我使用的结构如下所示:typeAttrsstruct{Secretstring`redis:"secret"`RequireSecretstring`redis:"requireSecret"`UserIDstring`redis:"userId"`}RequireSecret属性是“true”或“false”字符串,我想将其扫描为bool。 最佳答案 要扫描HGETALL的结果,请使用以下类型typeAttrsstruct{Secretstring`r

go - redigo 是否重新连接到服务器?

我正在使用Redigo通过golang连接到redis服务器。redisConnection,err=redis.Dial("tcp","...")redisConnection.Do(...,...)如果我重新启动我的服务器,我将无法使用相同的redisConnection执行任何命令。当我再次执行Do时它不应该重新连接吗? 最佳答案 不,您的假设不正确。使用Dial函数,它在服务器终止连接时返回单个连接,客户端无法重新连接。您应该使用redis.Pool并且它应该能够在您请求新连接时自动重新连接,函数是:pool.Get()

go - 在结构的字段上实现 Redigo Scanner 接口(interface)

我有一个看起来像这样的结构:typeauthEnumintconst(neverauthEnum=iotasometimesalways)typeAttrsstruct{Secretstring`redis:"secret"`RequireSecretauthEnum`redis:"requireSecret"`UserIDstring`redis:"userId"`}func(e*authEnum)RedisScan(srcinterface{})error{//Thisnevergetscalled!ife==nil{returnfmt.Errorf("nilpointer")}s

gomodule/redigo 如何将多个键推送到 redis

我正在尝试将多个元素推送到一个Redis键。当前正在使用https://github.com/gomodule/redigo使用redis池连接.如果我尝试将一个数组放入rpush,则会推送一个与数组串联的字符串。我怎样才能推送单个元素conn:=Pool.Get()//Aredigoredispoolarr:=[]string{"a","b","c","d"}conn.Do("RPUSH","TEST","x","y")//Thisworksconn.Do("RPUSH","TEST",arr)//Thisdoesnotwork 最佳答案

go - redigo:读取具有可变键的 redis 哈希

我需要从redigo读取一个redis散列。此散列具有可变键。这会导致问题,因为ScanStruct要求我事先知道这些键,所以我可以将它放在一个结构中并将HGETALL结果解压缩到该结构中。有没有办法解析具有未知键的redigoHGETALL结果?它不必与ScanStruct(甚至与redigo)一起使用,只要我可以从go中访问结果即可。 最佳答案 ScanStruct只是在您将已知结构映射到Redis哈希时提供的便利。使用redis.StringMap获取map[string]string的辅助函数。Redis的一切都是字符串,r

json - 使用 redigo 从 Redis 将 json 部分转换为 Go 结构

我有一个由浏览器发布的json。这是一个带有的哈希varidint64=123并且,比如说,像这样的三个字段:myJson:=`{"a":"{'x1':'apple','x2':'orange'}","b":"{'y1':345678,'y2':32456}","c":"['alpha@example1.com','beta@example2.com']"}`然后使用redigo和命令将其存储在Redis中:HMSETid:123a"{'x1':'apple','x2':'orange'}"b"{'y1':345678,'y2':32456}"c"['alpha@example1.co

go - 将 Redigo 管道结果转换为字符串

我设法通过管道传输多个HGETALL命令,但我无法将它们转换为字符串。我的示例代码是这样的://InitializeRedis(Redigo)clientonport6379//anddefaultaddress127.0.0.1/localhostclient,err:=redis.Dial("tcp",":6379")iferr!=nil{panic(err)}deferclient.Close()//InitializePipelineclient.Send("MULTI")//Sendwritesthecommandtotheconnection'soutputbuffercl

go - 带有 Redigo 的 GEOADD 命令

这是我正在尝试的,使用Redigo("github.com/garyburd/redigo/redis"):insertPos:=[]string{"3.361389","38.115556","12"}if_,err:=conn.Do("GEOADD",redis.Args{}.Add("geoIndex").AddFlat(&insertPos)...);err!=nil{log.Print(err)}==>"ERRwrongnumberofargumentsfor'geoadd'command"虽然使用redis-cli这工作正常:GEOADDgeoIndex3.36138938