1. 18 Jul, 2016 2 commits
  2. 15 Jul, 2016 1 commit
  3. 14 Jul, 2016 4 commits
    • antirez's avatar
      LFU simulator: remove dead code. · ada70c7c
      antirez authored
      ada70c7c
    • antirez's avatar
      LRU simulator: fix new entry creation decr time. · fc92c667
      antirez authored
      fc92c667
    • antirez's avatar
      LRU simulator: fix new entry creation. · f50dc38b
      antirez authored
      f50dc38b
    • antirez's avatar
      LFU: Simulation of the algorithm planned for Redis. · 09fcb002
      antirez authored
      We have 24 total bits of space in each object in order to implement
      an LFU (Least Frequently Used) eviction policy.
      
      We split the 24 bits into two fields:
      
            8 bits      16 bits
          +--------+----------------+
          | LOG_C  | Last decr time |
          +--------+----------------+
      
      LOG_C is a logarithmic counter that provides an indication of the access
      frequency. However this field must also be deceremented otherwise what used
      to be a frequently accessed key in the past, will remain ranked like that
      forever, while we want the algorithm to adapt to access pattern changes.
      
      So the remaining 16 bits are used in order to store the "decrement time",
      a reduced-precision unix time (we take 16 bits of the time converted
      in minutes since we don't care about wrapping around) where the LOG_C
      counter is halved if it has an high value, or just decremented if it
      has a low value.
      
      New keys don't start at zero, in order to have the ability to collect
      some accesses before being trashed away, so they start at COUNTER_INIT_VAL.
      The logaritmic increment performed on LOG_C takes care of COUNTER_INIT_VAL
      when incrementing the key, so that keys starting at COUNTER_INIT_VAL
      (or having a smaller value) have a very high chance of being incremented
      on access.
      
      The simulation starts with a power-law access pattern, and later converts
      into a flat access pattern in order to see how the algorithm adapts.
      Currenty the decrement operation period is 1 minute, however note that
      it is not guaranteed that each key will be scanned 1 time every minute,
      so the actual frequency can be lower. However under high load, we access
      3/5 keys every newly inserted key (because of how Redis eviction works).
      
      This is a work in progress at this point to evaluate if this works well.
      09fcb002
  4. 13 Jul, 2016 1 commit
    • antirez's avatar
      LRU: Make cross-database choices for eviction. · e423f76e
      antirez authored
      The LRU eviction code used to make local choices: for each DB visited it
      selected the best key to evict. This was repeated for each DB. However
      this means that there could be DBs with very frequently accessed keys
      that are targeted by the LRU algorithm while there were other DBs with
      many better candidates to expire.
      
      This commit attempts to fix this problem for the LRU policy. However the
      TTL policy is still not fixed by this commit. The TTL policy will be
      fixed in a successive commit.
      
      This is an initial (partial because of TTL policy) fix for issue #2647.
      e423f76e
  5. 12 Jul, 2016 5 commits
  6. 11 Jul, 2016 4 commits
  7. 06 Jul, 2016 13 commits
  8. 05 Jul, 2016 2 commits
    • antirez's avatar
      redis-cli: check SELECT reply type just in state updated. · ef6a4df2
      antirez authored
      In issues #3361 / #3365 a problem was reported / fixed with redis-cli
      not updating correctly the current DB on error after SELECT.
      
      In theory this bug was fixed in 0042fb0e, but actually the commit only
      fixed the prompt updating, not the fact the state was set in a wrong
      way.
      
      This commit removes the check in the prompt update, now that hopefully
      it is the state that is correct, there is no longer need for this check.
      ef6a4df2
    • Salvatore Sanfilippo's avatar
      Merge pull request #3365 from sskorgal/unstable · 0df28659
      Salvatore Sanfilippo authored
      Fix for redis_cli printing default DB when select command fails. #3361
      0df28659
  9. 04 Jul, 2016 4 commits
    • antirez's avatar
      Sentinel: fix cross-master Sentinel address update. · c383be3b
      antirez authored
      This commit both fixes the crash reported with issue #3364 and
      also properly closes the old links after the Sentinel address for the
      other masters gets updated.
      
      The two problems where:
      
      1. The Sentinel that switched address may not monitor all the masters,
         it is possible that there is no match, and the 'match' variable is
         NULL. Now we check for no match and 'continue' to the next master.
      
      2. By ispecting the code because of issue "1" I noticed that there was a
         problem in the code that disconnects the link of the Sentinel that
         needs the address update. Basically link->disconnected is non-zero
         even if just *a single link* (cc -- command link or pc -- pubsub
         link) are disconnected, so to check with if (link->disconnected)
         in order to close the links risks to leave one link connected.
      
      I was able to manually reproduce the crash at "1" and verify that the
      commit resolves the issue.
      
      Close #3364.
      c383be3b
    • antirez's avatar
      CONFIG GET is now no longer case sensitive. · b2cc8bcc
      antirez authored
      Like CONFIG SET always was. Close #3369.
      b2cc8bcc
    • antirez's avatar
      Fix test for new RDB checksum failure message. · a0dd0140
      antirez authored
      a0dd0140
    • antirez's avatar
      Make tcp-keepalive default to 300 in internal conf. · b99ad1bd
      antirez authored
      We already changed the default in the redis.conf template, but I forgot
      to change the internal config as well.
      b99ad1bd
  10. 01 Jul, 2016 4 commits