Глава 8. Данные должны куда-то попадать
Значит, tire_kicker не посещал сайт во второй день.
Сколько пользователей посещает сайт каждый день?
>>> conn.bitop('and', 'everyday', *days)
68777
>>> conn.bitcount('everyday')
1
Угадайте с трех попыток, кто это:
>>> conn.getbit('everyday', big_spender)
1
Наконец, сколько уникальных пользователей посетили сайт за эти три дня?
>>> conn.bitop('or', 'alldays', *days)
68777
>>> conn.bitcount('alldays')
3
Кэши и истечение срока действия
У всех ключей Redis есть время жизни, или дата истечения срока действия. По умол-
чанию этот срок длится вечно. Мы можем использовать функцию expire(), чтобы
указать Redis, как долго хранить заданный ключ. Как показано далее, значением
является количество секунд:
>>> import time
>>> key = 'now you see it'
>>> conn.set(key, 'but not for long')
True
>>> conn.expire(key, 5)
True
>>> conn.ttl(key)
5
>>> conn.get(key)
b'but not for long'
>>> time.sleep(6)
>>> conn.get(key)
>>>
Команда expireat() указывает, что действие ключа истекает в заданное время
эпохи Unix. Это может оказаться полезным для того, чтобы кэш оставался свежим
и чтобы ограничить сессии авторизации.
Прочие серверы NoSQL
Серверы NoSQL, перечисленные здесь, могут работать с данными, объем которых
превышает объем доступной памяти, и многие из них требуют использования не-
скольких компьютеров. В табл. 8.6 показаны наиболее популярные серверы и их
библиотеки Python.
Упражнения
255
Таблица 8.6. Базы данных NoSQL
Сайт
Python API
Cassandra
pycassa
CouchDB