有没有办法在绝地武士中传递redis命令而不使用这些函数?

有没有办法在绝地武士中传递redis命令而不使用这些函数?,redis,jedis,Redis,Jedis,我们正在尝试构建一个控制台来处理redis查询。但是,在后端我们需要使用绝地武士。因此,作为输入的命令需要用绝地武士来处理。例如,在redis cli中,我们使用“keys*”。同样,我们在绝地中使用绝地钥匙(“*”)。我不知道如何将“钥匙*”转换成绝地。钥匙(“*”)。请告诉我一些建议……嗯……你可以参考以下内容来做同样的事情。 redis.clients.jedis.Connection.sendCommand(命令,字符串…) 创建类扩展连接 创建一个类扩展连接实例并调用connect()

我们正在尝试构建一个控制台来处理redis查询。但是,在后端我们需要使用绝地武士。因此,作为输入的命令需要用绝地武士来处理。例如,在redis cli中,我们使用“keys*”。同样,我们在绝地中使用绝地钥匙(“*”)。我不知道如何将“钥匙*”转换成绝地。钥匙(“*”)。请告诉我一些建议……

嗯……你可以参考以下内容来做同样的事情。
redis.clients.jedis.Connection.sendCommand(命令,字符串…)

创建
类扩展连接

创建一个
类扩展连接
实例并调用
connect()
方法。
调用super.sendCommand(Protocol.Command.valueOf(args[0].toUpperCase()),args[1~end])
给你举个例子:

public类JedisConn扩展连接{
公共JedisConn(字符串主机,int端口){
超级(主机、端口);
}
@凌驾
受保护的连接sendCommand(final Protocol.Command cmd,final String…args){
返回super.sendCommand(cmd,args);
}
公共静态void main(字符串[]args){
JedisConn JedisConn=新的JedisConn(“主机”,6379);
jedisConn.connect();
Connection Connection=jedisConn.sendCommand(Protocol.Command.valueOf(args[0].toUpperCase()),Arrays.copyOfRange(args,1,args.length));
System.out.println(connection.getAll());
jedisConn.close();
}
}

哈哈~~~

我已经找到了解决这个问题的办法。有一个名为eval()的函数。我们可以将其用于此,如下所示

`Scanner s=new Scanner(System.in);String query=s.nextLine();
 String[] q=query.split(" ");
 String cmd='\''+q[0]+'\'';
 for(int i=1;i<q.length;i++)
 cmd+=",\'"+q[i]+'\'';
 System.out.println(j.eval("return redis.call("+cmd+")"));`
`Scanner s=新的扫描仪(System.in);字符串查询=s.nextLine();
字符串[]q=query.split(“”);
字符串cmd='\''+q[0]+'\'';

对于(inti=1;i我知道这是一个老问题,但希望以下内容对其他人有用

我想到了一件事,因为最新版本的绝地(目前为3.2.0)不支持Redis>=4上提供的“内存使用”命令。此代码假设创建了一个
绝地
对象,可能来自绝地资源池:

导入redis.clients.jedis.util.SafeEncoder;
//…绝地设置代码。。。
byteSize=(长)jedis.sendCommand(新协议命令(){
@凌驾
公共字节[]getRaw(){
返回SafeEncoder.encode(“内存”);
}}, 
SafeEncoder.encode(“用法”),
SafeEncoder.encode(键));
这是一个特例命令,因为它有一个主关键字
内存
,带有一个辅助操作
用法
(其他命令有
doctor
stats
purge
等)。向Redis发送多关键字命令时,必须将关键字视为一个列表。我第一次尝试将
内存使用量
指定为单个参数失败,导致Redis服务器错误

随后,当前的Jedis实现似乎面向单关键字命令,因为在引擎盖下面有一堆特殊代码来处理多关键字命令,例如
debug object
,它们不太适合原始的命令关键字框架

无论如何,一旦我当前需要调用
内存使用量
的项目完成,我将尝试向绝地维修人员提供补丁,以更正式/传统的方式执行上述命令,这看起来像:

Long byteSize=绝地武士记忆(钥匙);
最后,为了满足您的特定需求,您最好使用绝地类的scan()方法