Простой Python. Современный стиль программирования (Любанович) - страница 141

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

Redis

Redis — это сервер структур данных. Как и в случае с memcached, все данные сервера Redis должны поместиться в память (хотя у нас имеется возможность сохранить все данные на диск). В отличие от memcached Redis может делать следующее:

• сохранять данные на диск для надежности в случае перезагрузки;

• хранить старые данные;

• предоставлять более сложные структуры данных, нежели строки.

Типы данных, используемые Redis, похожи на типы данных, используемые в Python, и сервер Redis может быть применен в качестве промежуточного решения для того, чтобы одно или несколько приложений делились данными друг с другом. Я нахожу это настолько полезным, что посвящу этому небольшой фрагмент этой книги.

Исходный код драйвера Python redis-py и тесты находятся на GitHub (https://github.com/andymccurdy/redis-py), вы также можете найти документацию по нему (http://bit.ly/redis-py-docs). Можно установить этот драйвер с помощью следующей команды:

>$ pip install redis

Сам по себе сервер Redis (http://redis.io/) хорошо задокументирован. Если вы установите и запустите его на своем локальном компьютере, который имеет сетевое имя localhost, можете попробовать запустить программы из следующих разделов.