Esempio n. 1
0
def test_incr_decr(client_class, host, port, socket_module):
    client = Client((host, port), socket_module=socket_module)
    client.flush_all()

    result = client.incr(b'key', 1, noreply=False)
    assert result is None

    result = client.set(b'key', b'0', noreply=False)
    assert result is True
    result = client.incr(b'key', 1, noreply=False)
    assert result == 1

    def _bad_int():
        client.incr(b'key', b'foobar')

    with pytest.raises(MemcacheClientError):
        _bad_int()

    result = client.decr(b'key1', 1, noreply=False)
    assert result is None

    result = client.decr(b'key', 1, noreply=False)
    assert result == 0
    result = client.get(b'key')
    assert result == b'0'
Esempio n. 2
0
def test_incr_decr(client_class, host, port, socket_module):
    client = Client((host, port), socket_module=socket_module)
    client.flush_all()

    result = client.incr(b'key', 1, noreply=False)
    assert result is None

    result = client.set(b'key', b'0', noreply=False)
    assert result is True
    result = client.incr(b'key', 1, noreply=False)
    assert result == 1

    def _bad_int():
        client.incr(b'key', b'foobar')

    with pytest.raises(MemcacheClientError):
        _bad_int()

    result = client.decr(b'key1', 1, noreply=False)
    assert result is None

    result = client.decr(b'key', 1, noreply=False)
    assert result == 0
    result = client.get(b'key')
    assert result == b'0'
Esempio n. 3
0
class Dao:
    def __init__(self, host, port):
        self.db = Client((host, port),
                         default_noreply=False,
                         serializer=self.__json_serializer,
                         deserializer=self.__json_deserializer)

    def __json_serializer(self, key, value):
        if type(value) == str:
            return value, 1
        return json.dumps(value), 2

    def __json_deserializer(self, key, value, flags):
        if flags == 1:
            return value.decode('utf-8')
        if flags == 2:
            return json.loads(value.decode('utf-8'))
        raise Exception('Unknown serialization format')

    def get_osushi(self, id):
        osushi = self.db.get(f'osushi:{id}')
        return osushi

    def get_osushi_list(self, start_id, n):
        osushi_list = []
        for i in range(n):
            id = start_id - i
            osushi = self.db.get(f'osushi:{id}')
            if osushi is None:
                break
            osushi_list.append({'id': id, **osushi})

        return osushi_list

    def get_all_osushi(self):
        count = self.get_osushi_count()
        ids = range(1, count + 1)
        result = self.db.get_multi([f'osushi:{id}' for id in ids])
        return [{'id': id, **result[f'osushi:{id}']} for id in ids]

    def get_osushi_count(self):
        count = self.db.get('osushi:count')
        return count if count else 0

    def set_osushi(self, id, osushi):
        if type(osushi) is sushi.Sushi:
            osushi = dataclasses.asdict(osushi)
        self.db.set(f'osushi:{id}', osushi)

    def incr_osushi_count(self):
        count = self.db.get('osushi:count')
        if count:
            return self.db.incr('osushi:count', 1)
        else:
            self.db.set('osushi:count', 1)
            return 1

    def is_first_time(self, address):
        key = f'visited:{address}'
        result = self.db.get(key)
        if result is None:
            return True

        return False

    def visit_user(self, address):
        key = f'visited:{address}'
        self.db.set(key, True)
from pymemcache.client.base import Client

if __name__ == '__main__':
    client = Client(('localhost', 11211))
    client.set('titulo_libro', 'Python A Fondo')

    contador = client.get('contador')
    if contador is None:
        client.set('contador', 1)

    print(client.get('contador'))
    client.incr('contador', 5)
    client.incr('contador', 5)
    print(client.get('contador'))
    client.close()