Ключи и значения сохраняются как байты. Вы не можете итерировать по
объектам базы данных db, но можете получить количество ключей с помощью
функции len(). Обратите внимание на то, что функции get() и setdefault() рабо-
тают точно так же, как и для словарей.
Memcached
memcached (http://memcached.org/) — это быстрый сервер кэширования, располага-
ющийся в памяти и работающий по принципу «ключ — значение». Его часто разме-
щают перед базой данных, также он может использоваться для хранения данных
сессии веб-сервера. Вы можете загрузить версии для Linux, OS X (http://bit.ly/install-osx)
и Windows (http://bit.ly/memcache-win). Если вы хотите попробовать запустить примеры,
показанные в этом разделе, вам понадобятся сервер memcached и драйвер Python.
Существует множество драйверов Python, тот, что работает с Python 3, называ-
ется python3-memcached (https://github.com/eguven/python3-memcached), вы можете
установить его с помощью этой команды:
$ pip install python-memcached
Для того чтобы использовать его, подключитесь к серверу memcached, после
чего можете:
устанавливать и получать значения ключей;
увеличивать и уменьшать значения;
удалять ключи.
Данные, хранимые в базе, неустойчивы, они могут исчезнуть. Это происходит
из-за того, что memcached является сервером кэша. Он избегает ситуаций, когда
у него заканчивается память, стирая старые данные.
Вы можете подключиться к нескольким серверам memcached одновременно.
В следующем примере мы беседуем с одним и тем же компьютером:
>>> import memcache
>>> db = memcache.Client(['127.0.0.1:11211'])
>>> db.set('marco', 'polo')
True
>>> db.get('marco')
'polo'
>>> db.set('ducks', 0)
True
>>> db.get('ducks')
0
>>> db.incr('ducks', 2)
2
>>> db.get('ducks')
2
246
Глава 8. Данные должны куда-то попадать
Redis
Redis — это сервер структур данных. Как и в случае с memcached, все данные сер-
вера Redis должны поместиться в память (хотя у нас имеется возможность сохра-
нить все данные на диск). В отличие от memcached Redis может делать следующее:
сохранять данные на диск для надежности в случае перезагрузки;
хранить старые данные;
предоставлять более сложные структуры данных, нежели строки.
Типы данных, используемые Redis, похожи на типы данных, используемые