使用Redis板条箱访问其他Redis数据库时出错:数据库编号无效
我正在尝试使用机箱使用Redis板条箱访问其他Redis数据库时出错:数据库编号无效,redis,rust,Redis,Rust,我正在尝试使用机箱Redis(版本0.3.1)访问Redis。它抛出无效数据库 extern crate redis; use redis::*; use std::string::String; use std::collections::HashSet; fn main() { if let Err(e) = read_meta_keys_redis("myset".to_string()) { println!("{}", e.description()); }
Redis
(版本0.3.1)访问Redis。它抛出无效数据库
extern crate redis;
use redis::*;
use std::string::String;
use std::collections::HashSet;
fn main() {
if let Err(e) = read_meta_keys_redis("myset".to_string()) {
println!("{}", e.description());
}
}
fn read_meta_keys_redis(key: String) -> redis::RedisResult<()> {
println!("22{}", key);
let client = try!(redis::Client::open("redis://127.0.0.1:6379/2"));
let con = try!(client.get_connection());
let mems: HashSet<i32> = try!(con.smembers(key));
for x in mems.iter() {
println!("op-->{}", x);
}
Ok(())
}
在我前面的问题中可能会找到一些背景知识。错误是:
path=>path.parse::().unwrap\u或(
失败!((ErrorKind::InvalidClientConfig,“无效数据库号”),
不幸的是,这只是一个编程错误unwrap\u或
始终计算参数,在本例中为失败代码>宏。这似乎应该是unwrap\u或_else
,它接受仅在故障情况下运行的关闭
我必须解决眼前的问题。作为一种解决方法,您可以直接创建一个redis::ConnectionInfo
结构,并在其中指定数据库。您是否检查了详细信息是否正确、服务器是否正在运行、连接详细信息是否符合预期格式(&c)。?目前这里的信息远远不够。@ChrisMorgan:我已经编辑了这个问题以发布详细信息。。我认为@ChrisMorgan要求您确保命令行用法和代码之间的连接信息是相同的。具体来说,您选择的数据库(/2
)可能不正确。请将您的问题包括在如何调用redis cli
命令中。@Shepmaster我已对问题进行了编辑,以使其更清晰。127.0.0.1:6379[2]>这是否表示cli已连接到DB 2上的redis?我已获取库的本地副本,并对PR所做的任何更改进行更改,然后重新运行应用程序。现在我能够越过最初的障碍,现在我有了响应是不兼容类型的
错误,原因是“无”。你知道我错过了什么吗?@哈利不知道;这听起来像是另一个问题:-)我唯一的猜测是,当您的命令行显示字符串时,您说了HashSet
。显然,我是一个愚蠢的程序员:(.我怎么可能忽略了这个明显的问题…是的,这是根本原因。非常感谢。我还有一个问题:通过创建redis::ConnectionInfo
struct的第二种方法,我得到了:structredis::client::client
的字段connection\u info
是私有的;这是预期的。有什么可能吗rust中的ty会改变字段的可视性吗?显然我是一个愚蠢的程序员-不,我们都必须在某个时候学习一些东西。^ ^。rust中的任何可能性都会改变字段的可视性-不,这将绕过可视性修饰符的原因。也许这应该是一个单独的错误报告给板条箱维护人员?
127.0.0.1:6379[2]> smembers myset
1) "hello" 2) "how are you"
127.0.0.1:6379[2]>
path => path.parse::<i64>().unwrap_or(
fail!((ErrorKind::InvalidClientConfig, "Invalid database number"))),