Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > NoSQL > Redis: перевод официальной документации


Автор: vasac 16.9.2010, 23:42
http://pyha.ru/wiki/index.php?title=Redis:index.

Кто не в курсе, Redis это NoSQL-база данных. Как Memcache, только плюс к этому:

- Постоянное хранение
- Списки (+ куча команд для работы с ними)
- Множества (+ куча команд для работы с ними)
- Упорядоченные множества (+ куча команд для работы с ними)
- Хэши (+ куча команд для работы с ними)
- Транзакции
- Система подписок на сообщения
- Репликация
- И куча, куча чего надо...

При должном старании на многих проектах вполне может заменить реляционную БД, а тем более её органично дополнить.

Автор: Daevaorn 17.9.2010, 00:38
В Redis нет транзакцийsmile

Автор: vasac 17.9.2010, 10:24
http://pyha.ru/wiki/index.php?title=Redis::cmd-multi

Автор: Daevaorn 17.9.2010, 16:20
Цитата(vasac @  17.9.2010,  11:24 Найти цитируемый пост)
В Redis транзакций есть 

multi это не транзакции. Это  просто групповое выполнение команд. Без гарантий консистентности данных в случае ошибок их выполнения.

Автор: vasac 18.9.2010, 17:18
Откуда данные? 
В документации написано именно о гарантиях косистентности.

Автор: Daevaorn 19.9.2010, 03:07
Цитата(vasac @  18.9.2010,  18:18 Найти цитируемый пост)
Откуда данные? 
В документации написано именно о гарантиях косистентности. 

Из личного опыта и как не странно из документации.
Цитата(http://code.google.com/p/redis/wiki/MultiExecCommand)

IMPORTANT: even when a command will raise an error, all the other commands in the queue will be processed. Redis will NOT stop the processing of commands once an error is found. 

И к тому же нет rollback'а.

В комментариях к этой странице сам antirez пишет:
Цитата(antirez)
Still it is true that if there are programming erros like using a list command against a set, or a syntax error, only the sane commands will be performed and the others instead will fail, but it's very hard for this to happen in production.

Т.е. часть команд применится, а ошибочные соответственно нет. Вот тут и может получиться итоговая неконсистентность данных.

Увещевания, что этому трудно сучиться в продакшене, не делают "транзакции" в редисе настоящими. Хотя это возможно и к лучшему.

Автор: vasac 19.9.2010, 10:15
Ну всё-таки это не групповой макрос, а именно поддержка консистентности, хоть и с оговорками.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)