使用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的第二种方法,我得到了:struct
redis::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"))),