"github.com/go-redis/redis" GEOPOS函数
时间: 2023-09-26 14:09:35 浏览: 77
GEOPOS函数是Redis中用于获取地理位置信息的函数。它的作用是根据给定的key和member来获取该成员的经纬度坐标。在Go语言中,可以通过使用go-redis库中的Client结构体的GeoPos方法来调用该函数,示例代码如下:
```
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
// 获取成员的经纬度坐标
result, err := client.GeoPos("mygeo", "member1").Result()
if err != nil {
panic(err)
}
fmt.Printf("%v\n", result)
```
其中,mygeo表示存储地理位置信息的key,member1表示要获取信息的成员。调用结果会返回一个包含经纬度坐标的数组,如:`[&{116.3913 39.9042}]`。
相关问题
scrapy-redis 0.9.1 报错 redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value
当你遇到`scrapy-redis`版本0.9.1在使用Redis时报`redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value`这个错误,通常这意味着你在尝试对Redis存储的数据执行不适合的操作。Scrapy-redis是用来支持Scrapy爬虫分布式管理的一个中间件,它通常用于持久化项目状态、队列管理和item暂存等。
这个问题可能是由于以下几个原因:
1. 错误的数据类型:你可能试图在一个键上执行一个需要不同类型数据的操作。例如,如果某个键本应保存字符串值,而你却试图像集合或哈希那样操作它。
2. 更新了数据结构:之前存储的数据结构与你现在尝试访问或操作的数据结构不符。检查是否已更改了存储策略或Redis配置。
3. 使用不当:可能是你在使用`scrapy-redis`的一些函数时传入了错误的数据,比如把list当成string去获取元素。
解决办法包括:
- 确认你正在使用的key及其内容是否匹配预期的数据类型。
- 检查是否有数据更新导致的数据结构变化,并相应地调整代码。
- 参考Scrapy-redis文档或官方GitHub仓库,看看是否有针对此问题的解决方案或最近的更新说明。
goroutine 52 [select]: github.com/go-sql-driver/mysql.(*mysqlConn).startWatcher.func1() D:/Program Files (x86)/Go/bin/pkg/mod/github.com/go-sql-driver/mysql@v1.7.1/connection.go:614 +0xaf created by github.com/go-sql-driver/mysql.(*mysqlConn).startWatcher D:/Program Files (x86)/Go/bin/pkg/mod/github.com/go-sql-driver/mysql@v1.7.1/connection.go:611 +0x10a goroutine 83 [select]: github.com/go-redis/redis/v8/internal/pool.(*ConnPool).reaper(0x12f262a0, 0xdf8475800) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/go-redis/redis/v8@v8.11.5/internal/pool/pool.go:485 +0xd6 created by github.com/go-redis/redis/v8/internal/pool.NewConnPool D:/Program Files (x86)/Go/bin/pkg/mod/github.com/go-redis/redis/v8@v8.11.5/internal/pool/pool.go:111 +0x242 goroutine 85 [chan receive]: go-study/models.sendProc(0x12e40cf0) D:/go/go-study/models/Message.go:88 +0x48 created by go-study/models.Chat D:/go/go-study/models/Message.go:79 +0x30d goroutine 86 [IO wait]: internal/poll.runtime_pollWait(0x33340b00, 0x72) D:/Program Files (x86)/Go/src/runtime/netpoll.go:305 +0x52 internal/poll.(*pollDesc).wait(0x138f60f4, 0x72, 0x0) D:/Program Files (x86)/Go/src/internal/poll/fd_poll_runtime.go:84 +0x37 internal/poll.execIO(0x138f6014, 0xa365e0) D:/Program Files (x86)/Go/src/internal/poll/fd_windows.go:175 +0xfc internal/poll.(*FD).Read(0x138f6000, {0x12f41000, 0x1000, 0x1000}) D:/Program Files (x86)/Go/src/internal/poll/fd_windows.go:441 +0x13b net.(*netFD).Read(0x138f6000, {0x12f41000, 0x1000, 0x1000}) D:/Program Files (x86)/Go/src/net/fd_posix.go:55 +0x3f net.(*conn).Read(0x12c0aa68, {0x12f41000, 0x1000, 0x1000}) D:/Program Files (x86)/Go/src/net/net.go:183 +0x4f bufio.(*Reader).fill(0x12d1eae0) D:/Program Files (x86)/Go/src/bufio/bufio.go:106 +0xe9 bufio.(*Reader).Peek(0x12d1eae0, 0x2) D:/Program Files (x86)/Go/src/bufio/bufio.go:144 +0x6d github.com/gorilla/websocket.(*Conn).read(0x12f68000, 0x2) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gorilla/websocket@v1.5.0/conn.go:371 +0x30 github.com/gorilla/websocket.(*Conn).advanceFrame(0x12f68000) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gorilla/websocket@v1.5.0/conn.go:809 +0xae github.com/gorilla/websocket.(*Conn).NextReader(0x12f68000) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gorilla/websocket@v1.5.0/conn.go:1009 +0xb5 github.com/gorilla/websocket.(*Conn).ReadMessage(0x12f68000) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gorilla/websocket@v1.5.0/conn.go:1093 +0x25 go-study/models.recvProc(0x12e40cf0) D:/go/go-study/models/Message.go:100 +0x105 created by go-study/models.Chat D:/go/go-study/models/Message.go:81 +0x352
这是一个 Go 语言的错误堆栈信息,包含多个 goroutine 的状态信息。每个 goroutine 都是 Go 语言运行时管理的并发执行单元。堆栈信息中展示了每个 goroutine 的调用栈信息,也就是该 goroutine 执行的函数调用链。其中包含了很多 Go 语言标准库和第三方库的函数调用信息,以及这些函数的执行状态。要定位问题,需要结合具体的业务逻辑和代码来分析这些信息。
阅读全文