Memcache
这里注意ttl等于0的kv对一直存在就行
from collections import namedtuple
class KVpair:
def __init__(self, start, value, ttl):
self.start = start
self.value = value
self.ttl = ttl
class Memcache:
def __init__(self):
# initialize your data structure here.
self.store = {}
self.invalidNum = 2 ** 31 - 1
# @param {int} curtTime an integer
# @param {int} key an integer
# @return an integer
def get(self, curtTime, key):
# Write your code here
tmp = self.store.get(key, -1)
if tmp != -1:
endTime = tmp.start + tmp.ttl - 1
if tmp.ttl != 0 and endTime < curtTime:
self.store.pop(key)
return self.invalidNum
return tmp.value
return self.invalidNum
# @param {int} curtTime an integer
# @param {int} key an integer
# @param {int} value an integer
# @param {int} ttl an integer
# @return nothing
def set(self, curtTime, key, value, ttl):
# Write your code here
self.store[key] = KVpair(curtTime, value, ttl)
# @param {int} curtTime an integer
# @param {int} key an integer
# @return nothing
def delete(self, curtTime, key):
# Write your code here
if key in self.store:
self.store.pop(key)
# @param {int} curtTime an integer
# @param {int} key an integer
# @param {int} delta an integer
# @return an integer
def incr(self, curtTime, key, delta):
# Write your code here
if key in self.store:
self.store[key].value += delta
return self.store[key].value
return self.invalidNum
# @param {int} curtTime an integer
# @param {int} key an integer
# @param {int} delta an integer
# @return an integer
def decr(self, curtTime, key, delta):
# Write your code here
if key in self.store:
self.store[key].value -= delta
return self.store[key].value
return self.invalidNum