1. 13 May, 2012 1 commit
    • antirez's avatar
      Redis timer interrupt frequency configurable as REDIS_HZ. · 94343492
      antirez authored
      Redis uses a function called serverCron() that is very similar to the
      timer interrupt of an operating system. This function is used to handle
      a number of asynchronous things, like active expired keys collection,
      clients timeouts, update of statistics, things related to the cluster
      and replication, triggering of BGSAVE and AOF rewrite process, and so
      forth.
      
      In the past the timer was called 1 time per second. At some point it was
      raised to 10 times per second, but it still was fixed and could not be
      changed even at compile time, because different functions called from
      serverCron() assumed a given fixed frequency.
      
      This commmit makes the frequency configurable, so that it is simpler to
      pick a good tradeoff between overhead of this function (that is usually
      very small) and the responsiveness of Redis during a few critical
      circumstances where a lot of work is done inside the timer.
      
      An example of such a critical condition is mass-expire of a lot of keys
      in the same second. Up to a given percentage of CPU time is used to
      perform expired keys collection per expire cylce. Now changing the
      REDIS_HZ macro it is possible to do less work but more times per second
      in order to block the server for less time.
      
      If this patch will work well in our tests it will enter Redis 2.6-final.
      94343492
  2. 11 May, 2012 5 commits
  3. 09 May, 2012 2 commits
  4. 07 May, 2012 1 commit
  5. 06 May, 2012 1 commit
    • Pieter Noordhuis's avatar
      Compare integers in ziplist regardless of encoding · bf219416
      Pieter Noordhuis authored
      Because of the introduction of new integer encoding types for ziplists
      in the 2.6 tree, the same integer value may have a different encoding in
      different versions of the ziplist implementation. This means that the
      encoding can NOT be used as a fast path in comparing integers.
      bf219416
  6. 04 May, 2012 2 commits
  7. 02 May, 2012 4 commits
  8. 01 May, 2012 2 commits
    • Pieter Noordhuis's avatar
      Use safe dictionary iterator from KEYS · cc4f65fe
      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.
      cc4f65fe
    • Harmen's avatar
  9. 30 Apr, 2012 1 commit
  10. 29 Apr, 2012 1 commit
  11. 27 Apr, 2012 3 commits
    • antirez's avatar
    • antirez's avatar
      841048f2
    • antirez's avatar
      Set LUA_MASKCOUNT hook more selectively. Fixes issue #480. · 0ad10db2
      antirez authored
      An user reported a crash with Redis scripting (see issue #480 on
      github), inspection of the kindly provided strack trace showed that
      server.lua_caller was probably set to NULL. The stack trace also slowed
      that the call to the hook was originating from a point where we just
      used to set/get a few global variables in the Lua state.
      
      What was happening is that we did not set the timeout hook selectively
      only when the user script was called. Now we set it more selectively,
      specifically only in the context of the lua_pcall() call, and make sure
      to remove the hook when the call returns. Otherwise the hook can get
      called in random contexts every time we do something with the Lua
      state.
      0ad10db2
  12. 26 Apr, 2012 6 commits
  13. 25 Apr, 2012 2 commits
  14. 24 Apr, 2012 9 commits