Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 189

245

Ключи и значения сохраняются как байты. Вы не можете итерировать по

объектам базы данных 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, похожи на типы данных, используемые