Есть ли способ передавать команды redis в jedis, не используя функции? - PullRequest
0 голосов
/ 22 января 2019

Мы пытаемся создать консоль для обработки запросов redis.Но в конце мы должны использовать джедаев.Таким образом, команды, заданные в качестве входных данных, должны обрабатываться с использованием Jedis.Например, в Redis-Cli мы используем «ключи *».Для этого мы используем jedis.keys ("*") в Jedis.Я понятия не имею, как конвертировать "keys *" в jedis.keys ("*").Пожалуйста, скажите мне несколько предложений ....

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Я нашел способ для этого. Есть функция с именем 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+")"));`
0 голосов
/ 22 января 2019

Хмм ... Вы можете сделать то же самое, обратившись к следующему.
redis.clients.jedis.Connection.sendCommand(Command, String...)
Создайте class extend Connection.
Создайте class extend Connection экземпляр и вызывайте метод connect().
Позвоните super.sendCommand(Protocol.Command.valueOf(args[0].toUpperCase()), args[1~end]).
пример для вас:

public class JedisConn extends Connection {

    public JedisConn(String host, int port) {

        super(host, port);
    }

    @Override
    protected Connection sendCommand(final Protocol.Command cmd, final String... args) {
        return super.sendCommand(cmd, args);
    }


    public static void main(String[] args) {

        JedisConn jedisConn = new JedisConn("host", 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();
    }
}

Ха-ха ~~

...