API docs for “spamfighter.core.storage.memory.MemoryStorage”

# Class s.c.s.m.MemoryStorage(object):

Part of spamfighter.core.storage.memory View Source View In Hierarchy

Хранилище пар (ключ, значение) в памяти. Каждая пара имеет индивидуальное время жизни. По истечении срока жизни пара удаляется из хранилища.

Удаление ключей из памяти происходит либо при обращении ключу, либо по периодически запускаемой задаче, которая уничтожает просроченные ключи массово.

Instance Variables | hash | хэш вида: ключ -> (время_жизни, значение) (type: `dict` )
| deleteQueue | "очередь" ключей на удаление, хэш вида: момент_удаления -> { хэш ключ_на_удаление -> 1 } (type: `dict` )
| deleteInterval | интервал группировки ключей на удаление в секундах (ключи с временем жизни в данном интервале будут удалены общей пачкой) (type: `int` )
| cleanupInterval | интервал запуска задачи очистки просроченных ключей (type: `int` )
| lastDeleteTime | первый момент удаления ключей для следующего запуска задачи очистки (type: `int` )
Class Variables | instance | синглтон-экземпляр MemoryStorage (type: `MemoryStorage` )

Method | __init__ | Конструктор.
Method | set | Записать (перезаписать) значение ключа.
Method | get | Получить значения ключа.
Method | add | Добавить ключ в хранилище.
Method | append | Дописать в конец значения ключа еще один элемент.
Method | delete | Удалить ключ из хранилища.
Method | incr | Увеличить значени счетчика на указанное значение
Static Method | getInstance | Получить синглтон-экземпляр хранилища.
Method | _cleanup | Очистить старые ключи.
Method | _exists | Внутренний метод: существует ли указанный ключ в хранилище?

def __init__(self, deleteInterval=10, cleanupInterval=60): (source)
Конструктор.

Parameters | deleteInterval | интервал группировки ключей на удаление в секундах (ключи с временем жизни в данном интервале будут удалены общей пачкой) (type: `int` )
| cleanupInterval | интервал запуска задачи очистки просроченных ключей, если интервал 0, то задача очистки не запускается никогда (type: `int` )

def _cleanup(self): (source)
Очистить старые ключи.

Метод либо вызывается автоматически через каждые `cleanupInterval` секунд, либо может вызываться в любой момент времени.

def _exists(self, key): (source)
Внутренний метод: существует ли указанный ключ в хранилище?

Returns | (type: `bool` )

def set(self, key, value, expire): (source)
Записать (перезаписать) значение ключа.

Parameters | key | ключ (type: `str` )
| value | значение (type: `str` или `int` )
| expire | время жизни ключа в секундах, 0 - хранить "вечно" (type: `int` )
Returns | Deferred о завершении операции (type: `twisted.internet.Deferred` )

def get(self, key): (source)
Получить значения ключа.

Если ключ не найден (не существует, потерян, истекло время жизни), возвращается исключение `KeyError`.

Parameters | key | ключ (type: `str` )
Returns | Deferred значение ключа, `str` или `int` (type: `twisted.internet.Deferred` )

def add(self, key, value, expire): (source)
Добавить ключ в хранилище.

Операция аналогична `set`, но если ключ уже существует, будет возвращена ошибка `KeyError`.

Parameters | key | ключ (type: `str` )
| value | значение
| expire | время жизни ключа в секундах, 0 - хранить "вечно" (type: `int` )
Returns | Deferred о завершении операции (type: `twisted.internet.Deferred` )

def append(self, key, value): (source)
Дописать в конец значения ключа еще один элемент. Работает только над существующими ключами, если ключ не существует, будет возвращена ошибка `KeyError`.

Parameters | key | ключ (type: `str` )
| value | дописываемое значение
Returns | Deferred о завершении операции (type: `twisted.internet.Deferred` )

def delete(self, key): (source)
Удалить ключ из хранилища.

Если ключ не найден, возвращается исключение `KeyError`.

Parameters | key | ключ (type: `str` )
Returns | Deferred о завершении операции (type: `twisted.internet.Deferred` )

def incr(self, key, value=1): (source)
Увеличить значени счетчика на указанное значение Работает только над существующими ключами, если ключ не существует, будет возвращена ошибка `KeyError`.

Parameters | key | ключ (type: `str` )
| value | значение на которое увеличиваем (type: `int` )
Returns | Deferred о завершении операции, `int` (type: `twisted.internet.Deferred` )

@staticmethod
def getInstance(): (source)
Получить синглтон-экземпляр хранилища.

Returns | (type: `MemoryStorage` )