def test_can_set(self):
     """ Simple item set """
     key = 'somekey'
     data = 'some date to put to cache'
     redis = Redis('test')
     redis.set(key, data)
     full_key = redis.get_full_item_key(key)
     self.assertIsNotNone(redis.get_redis().hget(full_key, 'data'))
 def test_can_set_with_expiration(self):
     """ Doing set item with expiration """
     key = 'somekey'
     data = 'some date to put to cache'
     expire = '+1second'
     redis = Redis('test')
     redis.set(key, data, expires_at=expire)
     full_key = redis.get_full_item_key(key)
     time.sleep(1.1)
     self.assertIsNone(redis.get_redis().hget(full_key, 'data'))
 def test_can_set_with_ttl(self):
     """ Doing set item with custom ttl"""
     ttl = 1
     key = 'somekey'
     data = 'some date to put to cache'
     redis = Redis('test')
     redis.set(key, data, ttl=ttl)
     full_key = redis.get_full_item_key(key)
     time.sleep(1)
     self.assertIsNone(redis.get_redis().hget(full_key, 'data'))
    def test_can_optimize(self):
        """ Performing storage optimization """

        redis = Redis('test')
        data = 'this data will be used for everything'

        key1 = 'item1'
        tags1 = ['tag1', 'tag2', 'tag3']
        key2 = 'item2'
        tags2 = ['tag1', 'tag2', 'tag3']
        key3 = 'item3'
        tags3 = ['tag3', 'tag4', 'tag5']
        key4 = 'item4'
        tags4 = ['tag3', 'tag4', 'tag5']

        redis.set(key1, data, ttl=1, tags=tags1)
        redis.set(key2, data, ttl=1, tags=tags2)

        redis.set(key3, data, tags=tags3)
        redis.set(key4, data, tags=tags4)

        redis.get_redis().delete(redis.get_tag_set_key('tag4'))
        redis.get_redis().delete(redis.get_tag_set_key('tag5'))

        time.sleep(1.1)
        redis.optimize()

        # missing items should be removed from tags
        self.assertNotIn(redis.get_full_item_key(key1),
                         redis.get_tagged_items('tag3'))
        self.assertNotIn(redis.get_full_item_key(key2),
                         redis.get_tagged_items('tag3'))

        # empty tags should be removed
        self.assertFalse(redis.get_tagged_items('tag1'))
        self.assertFalse(redis.get_tagged_items('tag2'))

        # missing tags should be removed from items
        self.assertNotIn('tag4', redis.get_item_tags('item3'))
        self.assertNotIn('tag4', redis.get_item_tags('item4'))
        self.assertNotIn('tag5', redis.get_item_tags('item3'))
        self.assertNotIn('tag5', redis.get_item_tags('item4'))
 def test_can_put_to_redis(self):
     """ Can do basic put to storage """
     redis = Redis('testing')
     redis.get_redis().set('foo', 'bar')
     result = redis.get_redis().get('foo')
     self.assertEqual('bar', result)
 def test_get_redis(self):
     """ Getting redis connection """
     adapter = Redis('testing')
     redis = adapter.get_redis()
     self.assertIsInstance(redis, StrictRedis)
 def tearDown(self):
     redis = Redis('test')
     redis.get_redis().flushdb()
     TestCase.tearDown(self)