Для того чтобы использовать его, подключитесь к серверу 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 — это
• сохранять данные на диск для надежности в случае перезагрузки;
• хранить старые данные;
• предоставлять более сложные структуры данных, нежели строки.
Типы данных, используемые 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, можете попробовать запустить программы из следующих разделов.
Ключ, имеющий одно значение, является
>>> import redis
>>> conn = redis.Redis()
Строки redis.Redis('localhost') или redis.Redis('localhost', 6379) дадут тот же результат.
Перечислим все ключи (которых пока нет):
>>> conn.keys('*')
[]
Создадим простую строку (с ключом 'secret'), целое число (с ключом 'carats') и число с плавающей точкой (с ключом 'fever'):
>>> conn.set('secret', 'ni!')
True
>>> conn.set('carats', 24)
True
>>> conn.set('fever', '101.5')
True
Получим значения согласно заданным ключам:
>>> conn.get('secret')
b'ni!'
>>> conn.get('carats')
b'24'
>>> conn.get('fever')
b'101.5'
Метод setnx() устанавливает значение, но только если ключа не существует:
>>> conn.setnx('secret', 'icky-icky-icky-ptang-zoop-boing!')
False
Метод не сработал, поскольку мы уже определили ключ 'secret':
>>> conn.get('secret')
b'ni!'
Метод getset() возвращает старое значение и одновременно устанавливает новое:
>>> conn.getset('secret', 'icky-icky-icky-ptang-zoop-boing!')
b'ni!'
Не будем сильно забегать вперед. Это сработало?
>>> conn.get('secret')
b'icky-icky-icky-ptang-zoop-boing!'
Теперь мы получим подстроку с помощью метода getrange() (как и в Python, смещение обозначается как 0 для начала списка и -1 для конца):
>>> conn.getrange('secret', -6, -1)
b'boing!'
Заменим подстроку с помощью метода setrange() (используя смещение, которое начинается с нуля):
>>> conn.setrange('secret', 0, 'ICKY')
32
>>> conn.get('secret')
b'ICKY-icky-icky-ptang-zoop-boing!'
Далее установим значения сразу нескольких ключей с помощью метода mset():
>>> conn.mset({'pie': 'cherry', 'cordial': 'sherry'})
True
Получим более одного значения с помощью метода mget():
>>> conn.mget(['fever', 'carats'])
[b'101.5', b'24']
Удалим ключ с помощью метода delete():
>>> conn.delete('fever')
True
Выполним инкремент с помощью команд incr() и incrbyfloat() и декремент с помощью команды decr():