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 — это сервер структур данных. Как и в случае с 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, можете попробовать запустить программы из следующих разделов.