Почему кодировка ключа «int» в Redis, но ее тип — «string» в сценарии lua?

Когда я использую lua-скрипт в Redis, я столкнулся с проблемой, которую не могу понять.

Например, у меня есть ключ «тест», его значение равно 2, а его кодировка — int:

127.0.0.1:6379> set test 2
OK
127.0.0.1:6379> object encoding test
"int"

но когда я использую ключ в скрипте lua, его тип в lua становится строкой:

127.0.0.1:6379> eval "local a = redis.call('get', 'test'); return type(a);" 0
"string"

Почему redis преобразует ключ кодировки в строку в lua?

Потому что тип значения команды SETНИТЬ, хотя ее внутренняя кодировка — INT.

for_stack 08.04.2019 14:43

@for_stack превратите комментарий в ответ, и я проголосую за него

Itamar Haber 08.04.2019 18:04

@for_stack Спасибо. Ну, я думаю, что большинство типов значений команд Redis являются строковыми, поэтому я всегда получаю строковый тип в lua.

nethibernate 09.04.2019 04:18

@ItamarHaber Хорошо, я сделаю это. B.T.W давно не виделись :)

for_stack 09.04.2019 05:51

@nethibernate Есть и другие типы, подробности смотрите в моем ответе.

for_stack 09.04.2019 05:52

@for_stack да, завален задачами и не успел здесь провести. Теперь, когда RedisConf19 закончился, я могу вернуться к нормальной жизни :)

Itamar Haber 09.04.2019 14:43
Создание Twitter-подобного приложения Trending Topics App с Redis (на примере PHP)
Создание Twitter-подобного приложения Trending Topics App с Redis (на примере PHP)
Redis - это популярная база данных типа "ключ-значение" в памяти с поддержкой различных типов и структур данных, которая в основном используется для...
0
6
236
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Тип значения команды SET — STRING, хотя ее внутренняя кодировка — INT (для экономии памяти и производительности).

Фактически, на основе Протокол Redis существует 5 типов возвращаемых значений. Вы можете проверить руководство для возвращаемого типа каждой команды. Также проверьте файл преобразование между типами данных Lua и Redis.

Другие вопросы по теме