Могу ли я иметь набор и hset с тем же именем? - PullRequest
0 голосов
/ 04 февраля 2019

что будет выводить данный код?Может ли Jedis хранить два набора данных разных типов в БД, но с одинаковым именем?если нет, то в строке печати, что вернет j.get?J.set приведен в j.hset?

Я новичок в базах данных Redis

public static void main(String[] args) {
    Jedis j = new Jedis("slc09sro");
    try {
        j.set("alex1", "1");
    }
    catch (Exception e){}
    try {
        j.set("alex1", "2");
    } 
    catch (Exception e){}
    try {
        j.hset("alex1", "3", "4");
    } 
    catch (Exception e){}
    System.out.println(j.get("alex1"));
    j.close;
}

1 Ответ

0 голосов
/ 04 февраля 2019

Ваш пример потерпит неудачу при попытке использовать метод hset.Простой пример без необходимости использования Java:

$ redis-cli 
127.0.0.1:6379> set alex1 1
OK
127.0.0.1:6379> set alex1 2
OK
127.0.0.1:6379> hset alex1 3 4
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> get alex1
"2"
127.0.0.1:6379> 

Это потому, что ключ alex1 содержит строковое значение, а не хеш.После неудачного вызова HSET ключ остается неизменным по сравнению с последним вызовом SET, поэтому он содержит строковое значение "2".

См. Справочник команды Redis :

...