Passed
Push — master ( 00153b...43cb7b )
by Dave
01:11
created

backend.fcmcache.Cache.getlist()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 2
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
import redis
2
3
class Cache:
4
    ''' in memory cache'''
5
    __redis = None
6
    isonline = False
7
    def __init__(self, servicelogin):
8
        self.encoding = 'utf-8'
9
        self.__redis = redis.Redis(host=servicelogin.host, port=servicelogin.port, password=servicelogin.password)
10
        self.isonline = True
11
    def iskeyexists(self, key):
12
        '''true when key exists in cache'''
13
        return self.__redis.exists(key)
14
    def get(self, key):
15
        '''get value from key'''
16
        try:
17
            return self.__redis.get(key)
18
        except redis.exceptions.ConnectionError as ex:
19
            self.isonline = False
20
            raise ex
21
    def getlist(self, key):
22
        '''get a list from key'''
23
        return self.__redis.lrange(key, 0, -1)
24
25
    def put(self, key, value):
26
        '''store a value into key'''
27
        self.__redis.set(key, value)
28
29
    def putinhashset(self, name, key, value):
30
        '''store value into key at name'''
31
        if not isinstance(value, str):
32
            raise ValueError('hashset value must be a string')
33
        self.__redis.hset(name, key, value)
34
35
    def getfromhashset(self, name, key):
36
        '''get value in hashset'''
37
        return self.__redis.hget(name, key)
38
39
    def gethashset(self, name):
40
        '''this will return keys and values from hashset'''
41
        output = {}
42
        hashitems = self.__redis.hgetall(name)
43
        for key, value in hashitems.items():
44
            output[key.decode(self.encoding)] = value.decode(self.encoding)
45
        return output
46
    def set(self, key, value):
47
        '''save value to cache key'''
48
        self.__redis.set(key, value)
49
50
    def delete(self, key):
51
        '''remove key'''
52
        self.__redis.delete(key)
53
54
    def hdel(self, name, key):
55
        '''remove key'''
56
        self.__redis.hdel(name, key)
57
58
    def purge(self):
59
        allkeys = self.__redis.scan_iter()
60
        for key in allkeys:
61
            self.delete(key)
62
            print("deleted key: {}".format(key))
63
64
    def close(self):
65
        '''close the cache'''
66
        self.__redis = None
67
68
class CacheKeys:
69
    '''all keys stored in cache'''
70
    knownminers = 'knownminers'
71
    knownpools = 'knownpools'
72
    knownsensors = 'knownsensors'
73
    #named pools, a big string. obsolete
74
    pools = 'pools'
75
    miners = 'miners'
76
    camera = 'camera'
77
78