Команда разработчиков Picodata рада сообщить о выпуске Radix 0.6.0 — коммерческого плагина к Picodata, реализующего Redis на базе СУБД Picodata. В новой версии существенно расширена поддержка транзакций и Lua-скриптов.
В частности, Radix 0.6.0 добавляет следующую функциональность Redis:
- Полная поддержка Lua-скриптов:
- eval:
- redis.call
- redis.pcall
- redis.log
- redis.sha1hex
- redis.status_reply
- redis.error_reply
- redis.REDIS_VERSION
- redis.REDIS_VERSION_NUM
- evalro
- evalsha
- evalsharo
- script exists
- script load
- eval:
- поддержка транзакций:
- exec
- discard
- watch
- unwatch
- multi
Транзакции и Lua-скрипты в Radix работают так же как в Redis, но в ряде случаев есть своя специфика. Так, транзакции можно начинать на любом сервере (но важно закончить в рамках одного соединения), а каждый Lua-скрипт воспринимается как атомарная единица: в случае невозможности исполнить хотя бы одну команду из скрипта, он не будет исполнен полностью.
Соблюдение гарантии атомарности при применении транзакций — важное преимущество Radix перед Redis. Покажем это на примере:
Поведение Redis 7.4 (часть скрипта применяется, несмотря на ошибку):
$ redis-cli -c -p 6300
127.0.0.1:6300> get my_key
-> Redirected to slot [13711] located at 172.19.0.7:6379
(nil)
172.19.0.7:6379> SCRIPT LOAD "redis.call('SET', KEYS[1], '321'); return redis.call('EVAL', 'return 123', 0)"
"aff82320ad7eadc3b4c30944d0c39edfe81357dd"
172.19.0.7:6379> evalsha aff82320ad7eadc3b4c30944d0c39edfe81357dd 1 my_key
(error) ERR This Redis command is not allowed from script script: aff82320ad7eadc3b4c30944d0c39edfe81357dd, on @user_script:1.
172.19.0.7:6379> get my_key
"321"
172.19.0.7:6379>
Поведение Radix 0.6.0 (ошибка предотвращается на этапе загрузки скрипта):
$ redis-cli -p 7301
127.0.0.1:7301> get my_key
(nil)
127.0.0.1:7301> SCRIPT LOAD "redis.call('SET', KEYS[1], '321'); return redis.call('EVAL', 'return 123', 0)"
(error) ERR This Redis command is not allowed from script script: eval, on @user_script
127.0.0.1:7301> get my_key
(nil)
Более подробное описание плагина Radix приведено на сайте документации Picodata.
Вопросы и пожелания направляйте в наш Telegram-чат @picodataru.