Мы создали 3 хэша в redis, используя REPL redis-cli следующим образом:
hmset redishop:items:Articulo1 artist "Martin Wessely" price 12.99 name "Handcrafted Trees Mug"
hmset redishop:items:Articulo2 artist "Martin Wessely" price 13.99 name "Handcrafted Trees Mug"
hmset redishop:items:Articulo3 artist "Martin Wessely" price 14.99 name "Handcrafted Trees Mug"
Я проверяю, что структуры созданы в Redis, и вот они:
hgetall redishop:items:Articulo3
Теперь добавляем хеш в набор таким образом:
sadd redishop:list-all redishop:items:Articulo3
sadd redishop:list-all redishop:items:Articulo2
sadd redishop:list-all redishop:items:Articulo1
Теперь играемся с командой SORT:
SORT redishop:list-all BY redishop:items:*->price
SORT redishop:list-all BY redishop:items:*->price GET redishop:items:*->price
SORT redishop:list-all BY redishop:items:*->price GET # GET redishop:items:*->price
Мы никогда не получаем результатов, хэш в наборе имеет значение null, и я не понимаю, почему?
с другой стороны, если мы создадим хеш и установим другим способом:
multi
hmset redishop:items:Articulo1 artist "Martin Wessely" price 12.99 name "Handcrafted Trees Mug"
sadd redishop:list-all Articulo1
hmset redishop:items3:Articulo2 artist "Martin Wessely" price 13.99 name "Handcrafted Trees Mug"
sadd redishop:list-all Articulo2
hmset redishop:items3:Articulo3 artist "Martin Wessely" price 14.99 name "Handcrafted Trees Mug"
sadd redishop:list-all Articulo3
exec
Таким образом, команда SORT работает отлично, и хеш вставляется в набор, но я не понимаю, почему в базе документации Redis:
Команда multi only отмечает начало блока транзакции. Последующие команды будут помещены в очередь для атомарного выполнения с использованием EXEC.
Когда я создаю хеш с ключом key: key: key неважно, использую ли я: или, или - и, что наиболее важно в Redis, мы не создаем дерево структур в соответствии с документацией: https://redis.io/topics/data-types-intro
Они говорят вам, что лучше или хороший способ включают: или точки, но они не говорят вам, что он создает дерево структур. И тогда я не понимаю, почему, когда вы добавляете хеш в набор, если введите Articulo1 вместо redishop: items: Articulo1 в порядке, но в другом случае неверно ???? фактически, когда вы набираете hgetall Articulo1, вы получаете null, но когда вы набираете hgetall redishop: items: Articulo1, вы получаете все значения fels и ... это так странно.
- exec выполняет только все предложения, по этой причине должно быть одинаковое значение make it with multi или без multi.
Пожалуйста, любая помощь или объяснение по этому вопросу будет большим подспорьем. Заранее спасибо.