1. 11 2月, 2014 17 次提交
  2. 10 2月, 2014 9 次提交
  3. 08 2月, 2014 2 次提交
  4. 07 2月, 2014 1 次提交
  5. 05 2月, 2014 6 次提交
  6. 04 2月, 2014 1 次提交
    • A
      CLIENT PAUSE and related API implemented. · 4919a13f
      antirez 提交于
      The API is one of the bulding blocks of CLUSTER FAILOVER command that
      executes a manual failover in Redis Cluster. However exposed as a
      command that the user can call directly, it makes much simpler to
      upgrade a standalone Redis instance using a slave in a safer way.
      
      The commands works like that:
      
          CLIENT PAUSE <milliesconds>
      
      All the clients that are not slaves and not in MONITOR state are paused
      for the specified number of milliesconds. This means that slaves are
      normally served in the meantime.
      
      At the end of the specified amount of time all the clients are unblocked
      and will continue operations normally. This command has no effects on
      the population of the slow log, since clients are not blocked in the
      middle of operations but only when there is to process new data.
      
      Note that while the clients are unblocked, still new commands are
      accepted and queued in the client buffer, so clients will likely not
      block while writing to the server while the pause is active.
      4919a13f
  7. 03 2月, 2014 4 次提交
    • A
      Scripting: expire keys in scripts only at first access. · b089ba98
      antirez 提交于
      Keys expiring in the middle of the execution of Lua scripts are to
      create inconsistencies in masters and / or AOF files. See the following
      example:
      
          if redis.call("exists",KEYS[1]) == 1
          then
              redis.call("incr","mycounter")
          end
      
          if redis.call("exists",KEYS[1]) == 1
          then
              return redis.call("incr","mycounter")
          end
      
      The script executes two times the same *if key exists then incrementcounter*
      logic. However the two executions will work differently in the master and
      the slaves, provided some unlucky timing happens.
      
      In the master the first time the key may still exist, while the second time
      the key may no longer exist. This will result in the key incremented just one
      time. However as a side effect the master will generate a synthetic
      `DEL` command in the replication channel in order to force the slaves to
      expire the key (given that key expiration is master-driven).
      
      When the same script will run in the slave, the key will no longer be
      there, so the script will not increment the key.
      
      The key idea used to implement the expire-at-first-lookup semantics was
      provided by Marc Gravell.
      b089ba98
    • A
      Allow CONFIG and SHUTDOWN while in stale-slave state. · b770079f
      antirez 提交于
      b770079f
    • A
      Scripting: use mstime() and mstime_t for lua_time_start. · 89884e8f
      antirez 提交于
      server.lua_time_start is expressed in milliseconds. Use mstime_t instead
      of long long, and populate it with mstime() instead of ustime()/1000.
      
      Functionally identical but more natural.
      89884e8f
    • S
      Merge pull request #1534 from gdi2290/patch-1 · b0335287
      Salvatore Sanfilippo 提交于
      update copyright year
      b0335287