使用redigo对结果转换类型时nil值问题
某些redis命令即使key不存在也不会返回null值,例如命令:keys
这种情况下使用redis.string等转化类型时可能不是我们期望的"查询不到就报错:redigo: nil returned"
的情况
举个栗子:
redis> get a
null
redis> keys a
redis>
- 使用get命令没有key:a 时返回的是null
- 使用keys命令没有key: a 时返回的是一个空数组
代码中表现:
res1, err := redis.Strings(cache.Redis().Do("HKEYS", "a"))
fmt.Println(res1) // []
fmt.Println(err) // <nil>
res2, err := redis.String(cache.Redis().Do("GET", "a"))
fmt.Println(res2) // 空字符串
fmt.Println(err) // redigo: nil returned
当使用keys等命令时不能根据err==nil,来判断缓存是否还存在