1. 12 May, 2012 2 commits
    • antirez's avatar
    • antirez's avatar
      More incremental active expired keys collection process. · 9419eb0f
      antirez authored
      If a large amonut of keys are all expiring about at the same time, the
      "active" expired keys collection cycle used to block as far as the
      percentage of already expired keys was >= 25% of the total population of
      keys with an expire set.
      
      This could block the server even for many seconds in order to reclaim
      memory ASAP. The new algorithm uses at max a small amount of
      milliseconds per cycle, even if this means reclaiming the memory less
      promptly it also means a more responsive server.
      9419eb0f
  2. 11 May, 2012 2 commits
  3. 09 May, 2012 2 commits
  4. 02 May, 2012 1 commit
  5. 01 May, 2012 1 commit
    • Pieter Noordhuis's avatar
      Use safe dictionary iterator from KEYS · f2ffb592
      Pieter Noordhuis authored
      Every matched key in a KEYS call is checked for expiration. When the key
      is set to expire, the call to `getExpire` will assert that the key also
      exists in the main dictionary. This in turn causes a rehashing step to
      be executed. Rehashing a dictionary when there is an iterator active may
      result in the iterator emitting duplicate entries, or not emitting some
      entries at all. By using a safe iterator, the rehash step is omitted.
      f2ffb592
  6. 30 Apr, 2012 5 commits
  7. 29 Apr, 2012 2 commits
  8. 21 Apr, 2012 1 commit
    • antirez's avatar
      Limit memory used by big SLOWLOG entries. · df10c797
      antirez authored
      Two limits are added:
      
      1) Up to SLOWLOG_ENTRY_MAX_ARGV arguments are logged.
      2) Up to SLOWLOG_ENTRY_MAX_STRING bytes per argument are logged.
      3) slowlog-max-len is set to 128 by default (was 1024).
      
      The number of remaining arguments / bytes is logged in the entry
      so that the user can understand better the nature of the logged command.
      df10c797
  9. 19 Apr, 2012 1 commit
  10. 18 Apr, 2012 2 commits
  11. 17 Apr, 2012 1 commit
    • antirez's avatar
      lookupKeyByPattern() used by SORT GET/BY rewritten. Fixes issue #460. · 8e5e8f0e
      antirez authored
      lookupKeyByPattern() was implemented with a trick to speedup the lookup
      process allocating two fake Redis obejcts on the stack. However now that
      we propagate expires to the slave as DEL operations the lookup of the
      key may result into a call to expireIfNeeded() having the stack
      allocated object as argument, that may in turn use it to create the
      protocol to send to the slave. But since this fake obejcts are
      inherently read-only this is a problem.
      
      As a side effect of this fix there are no longer size limits in the
      pattern to be used with GET/BY option of SORT.
      
      See https://github.com/antirez/redis/issues/460 for bug details.
      8e5e8f0e
  12. 06 Apr, 2012 1 commit
  13. 04 Apr, 2012 1 commit
  14. 30 Mar, 2012 3 commits
  15. 29 Mar, 2012 2 commits
  16. 19 Mar, 2012 1 commit
  17. 18 Mar, 2012 9 commits
  18. 26 Feb, 2012 1 commit
  19. 22 Feb, 2012 2 commits