go - 如何在golang中做Redis(redigo)lpop
问题描述
我需要从 redis 队列中做一个简单的 lpop 。在 go lang 如果我使用 blpop 使用阻塞弹出,那么下面的代码可以工作
reply, err := redis.Strings(conn.Do("BLPOP", key, 1))
if err == nil {
fmt.Println(reply[1])
// do something with string reply[1]
}
但我不想阻止。我只需要在队列为空时结束。那么我该怎么做?如果我这样做了,redis.Strings(conn.Do("LPOP", key))
即将 BLPOP 更改为 LPOP 并且我得到一个 redigo 错误
ERROR = redigo: unexpected type for Strings, got type []uint8
解决方案
我可以使用 redis.String() 获得 lpop 的值
所以这行得通
reply, err := redis.String(conn.Do("LPOP", key))
if err == nil {
fmt.Printf("REPLY= %s\n", reply)
//do something
推荐阅读
- c# - 使用表单上的现有按钮获取动态创建标签的名称
- python - 带有包含 NaN 的数据的 Pandas pct_change 会导致无意义的值
- scala - 将 Apache Spark Scala 重写为 PySpark
- debugging - 如何使用 sbcl 和 slime 分析未知的 Common Lisp 代码
- r - Summarise() 似乎无法正常工作
- python - 如何在 youtubedl 中为文件设置最大文件或最大分辨率
- javascript - 在 React 组件中何时何地填充 redux 存储
- javascript - 如何使用浏览器文件系统 API 创建 IMG
- arrays - Ruby:使用嵌套数组编译具有相似第一项的值
- devops - 升级 Apache SuperSet 和分离定制