Exemplo n.º 1
0
 def put(self, key, value=None):
     if key not in self.stored:
         current_time = time.time()
         if self.cn == self.c:
             # 0 <= is[0],...,is[self.k-1] <= self.cn-1
             ivals = [
                 random.randint(0, self.cn - 1) for i in xrange(self.k)
             ]
             oldest_time = float("inf")
             oldest_key = None
             oldest_i = None
             for i in ivals:
                 o_key = self.cache[i]
                 o_e = self.stored[o_key]
                 o_time = o_e.timestamp
                 if o_time < oldest_time:
                     oldest_i = i
                     oldest_time = o_time
                     oldest_key = o_key
             assert oldest_i != None
             assert oldest_key != None
             del self.stored[oldest_key]
             self.cache[oldest_i] = key
         else:
             self.cn += 1
             self.cache.append(key)
         e = Entry(key, value)
         e.timestamp = current_time
         self.stored[key] = e
         return 1
     else:
         return 0
Exemplo n.º 2
0
 def put(self, key, value=None):
     if key not in self.stored:
         current_time = time.time()
         if self.cn == self.c:
             # 0 <= is[0],...,is[self.k-1] <= self.cn-1
             ivals = [ random.randint(0, self.cn-1) for i in xrange(self.k) ]
             oldest_time = float("inf")
             oldest_key = None
             oldest_i = None
             for i in ivals:
                 o_key = self.cache[i]
                 o_e = self.stored[o_key]
                 o_time = o_e.timestamp
                 if o_time < oldest_time:
                     oldest_i = i
                     oldest_time = o_time
                     oldest_key = o_key
             assert oldest_i != None
             assert oldest_key != None
             del self.stored[oldest_key]
             self.cache[oldest_i] = key
         else:
             self.cn += 1
             self.cache.append(key)
         e = Entry(key, value)
         e.timestamp = current_time
         self.stored[key] = e
         return 1
     else:
         return 0
Exemplo n.º 3
0
 def put(self, key, value=None):
     e = self.stored.get(key)
     current_time = time.time()
     if not e:
         # Evict first before inserting (don't want to evict the new item)
         if self.cn == self.c:
             # 0 <= is[0],...,is[self.k-1] <= self.cn-1
             ivals = [
                 random.randint(0, self.cn - 1) for i in xrange(self.k)
             ]
             oldest_time = float("inf")
             oldest_key = None
             oldest_i = None
             for i in ivals:
                 o_key = self.cache[i]
                 o_e = self.stored[o_key]
                 o_time = o_e.timestamp
                 if o_time < oldest_time:
                     oldest_i = i
                     oldest_time = o_time
                     oldest_key = o_key
             assert oldest_i != None
             assert oldest_key != None
             o = self.stored[oldest_key]
             self.stats.Evict(o)
             del self.stored[oldest_key]
             self.cache[oldest_i] = key
         else:
             self.cn += 1
             self.cache.append(key)
         e = Entry(key, value)
         self.stats.Set(e)
         e.timestamp = current_time
         self.stored[key] = e
         return 1
     else:
         self.stats.Set(e)
         e.timestamp = current_time
         e.value = value
         return 1
Exemplo n.º 4
0
 def put(self, key, value=None):
     e = self.stored.get(key)
     current_time = time.time()
     if not e:
         # Evict first before inserting (don't want to evict the new item)
         if self.cn == self.c:
             # 0 <= is[0],...,is[self.k-1] <= self.cn-1
             ivals = [ random.randint(0, self.cn-1) for i in xrange(self.k) ]
             oldest_time = float("inf")
             oldest_key = None
             oldest_i = None
             for i in ivals:
                 o_key = self.cache[i]
                 o_e = self.stored[o_key]
                 o_time = o_e.timestamp
                 if o_time < oldest_time:
                     oldest_i = i
                     oldest_time = o_time
                     oldest_key = o_key
             assert oldest_i != None
             assert oldest_key != None
             o = self.stored[oldest_key]
             self.stats.Evict(o)
             del self.stored[oldest_key]
             self.cache[oldest_i] = key
         else:
             self.cn += 1
             self.cache.append(key)
         e = Entry(key, value)
         self.stats.Set(e)
         e.timestamp = current_time
         self.stored[key] = e
         return 1
     else:
         self.stats.Set(e)
         e.timestamp = current_time
         e.value = value
         return 1