Commits on Nov 28, 2012
  1. Redis 2.4.18

    antirez committed Nov 28, 2012
Commits on Sep 11, 2012
  1. Make sure that SELECT argument is an integer or return an error.

    antirez committed Sep 11, 2012
    Unfortunately we had still the lame atoi() without any error checking in
    place, so "SELECT foo" would work as "SELECT 0". This was not an huge
    problem per se but some people expected that DB can be strings and not
    just numbers, and without errors you get the feeling that they can be
    numbers, but not the behavior.
    Now getLongFromObjectOrReply() is used as almost everybody else across
    the code, generating an error if the number is not an integer or
    overflows the long type.
    Thanks to @mipearson for reporting that on Twitter.
Commits on Aug 30, 2012
  1. Redis 2.4.17

    antirez committed Aug 30, 2012
  2. Sentinel: Redis-side support for slave priority.

    antirez committed Aug 28, 2012
    A Redis slave can now be configured with a priority, that is an integer
    number that is shown in INFO output and can be get and set using the
    redis.conf file or the CONFIG GET/SET command.
    This field is used by Sentinel during slave election. A slave with lower
    priority is preferred. A slave with priority zero is never elected (and
    is considered to be impossible to elect even if it is the only slave
    A next commit will add support in the Sentinel side as well.
  3. run_id added to INFO output (backported from 2.6).

    antirez committed Mar 8, 2012
    This change is required to make Redis 2.4 compatible with Sentinel.
    The Run ID is a field that identifies a single execution of the Redis
    server. It can be useful for many purposes as it makes easy to detect if
    the instance we are talking about is the same, or if it is a different
    one or was rebooted. An application of run_id will be in the partial
    synchronization of replication, where a slave may request a partial sync
    from a given offset only if it is talking with the same master. Another
    application is in failover and monitoring scripts.
Commits on Aug 22, 2012
  1. Use correct variable name for value to convert.

    mgp authored and antirez committed Jul 26, 2012
    Note by @antirez: this code was never compiled because utils.c lacked the
    float.h include, so we never noticed this variable was mispelled in the
    This should provide a noticeable speed boost when saving certain types
    of databases with many sorted sets inside.
Commits on Aug 1, 2012
  1. Redis 2.4.16

    antirez committed Aug 1, 2012
Commits on Jul 9, 2012
  1. Typo in comment.

    antirez committed Jun 27, 2012
  2. REPLCONF internal command introduced.

    antirez committed Jun 26, 2012
    The REPLCONF command is an internal command (not designed to be directly
    used by normal clients) that allows a slave to set some replication
    related state in the master before issuing SYNC to start the
    The initial motivation for this command, and the only reason currently
    it is used by the implementation, is to let the slave instance
    communicate its listening port to the slave, so that the master can
    show all the slaves with their listening ports in the "replication"
    section of the INFO output.
    This allows clients to auto discover and query all the slaves attached
    into a master.
    Currently only a single option of the REPLCONF command is supported, and
    it is called "listening-port", so the slave now starts the replication
    process with something like the following chat:
        REPLCONF listening-prot 6380
    Note that this works even if the master is an older version of Redis and
    does not understand REPLCONF, because the slave ignores the REPLCONF
    In the future REPLCONF can be used for partial replication and other
    replication related features where there is the need to exchange
    information between master and slave.
    NOTE: This commit also fixes a bug: the INFO outout already carried
    information about slaves, but the port was broken, and was obtained
    with getpeername(2), so it was actually just the ephemeral port used
    by the slave to connect to the master as a client.
Commits on Jun 21, 2012
  1. Redis 2.4.15

    antirez committed Jun 21, 2012
Commits on Jun 2, 2012
  1. Added time.h include in redis-cli.

    antirez committed May 14, 2012
    redis-cli.c uses the time() function to seed the PRNG, but time.h was
    not included. This was not noticed since sys/time.h is included and was
    enough in most systems (but not correct). With Ubuntu 12.04 GCC
    generates a warning that made us aware of the issue.
  2. future-proof version comparison

    anydot authored and antirez committed Apr 5, 2012
  3. Deleted jemalloc.orig from /deps.

    antirez committed May 16, 2012
    In the commit upgrading jemalloc to version 3.0.0 I added the old
    version of Jemalloc in the 'jemalloc.orig' directory for an error.
    This commit removes the not useful version of jemalloc.
  4. Jemalloc updated to 3.0.0.

    antirez committed May 15, 2012
    Full changelog here:;a=blob_plain;f=ChangeLog;hb=master
    Notable improvements from the point of view of Redis:
    1) Bugfixing.
    2) Support for Valgrind.
    3) Support for OSX Lion, FreeBSD.
Commits on May 23, 2012
  1. Redis 2.4.14

    antirez committed May 23, 2012
  2. Fixed a typo in

    ThePicard authored and antirez committed Apr 1, 2012
  3. Fixed issue #516 (ZINTERSTORE mixing sets and zsets).

    antirez committed May 23, 2012
    Weeks ago trying to fix an harmless GCC warning I introduced a bug in
    the ziplist-encoded implementations of sorted sets.
    The bug completely broke zuiNext() iterator, that is used in the
    ZINTERSTORE and ZUNIONSTORE implementation, so those two commands are no
    longer reliable starting from Redis version 2.4.12 and latest 2.6.0-RC
    This commit fixes the problem and adds a regression test.
Commits on May 12, 2012
  1. Add an implementation of mstime() to 2.4.

    antirez committed May 12, 2012
    Commit 9419eb0 back ported a better expired keys collection algorithm
    that is more incremental but for it to compile and work we need an
    implementation of the mstime() function that was missing in 2.4.
  2. redis-cli pipe mode: handle EINTR properly as well so that SIGSTOP/SI…

    antirez committed May 11, 2012
    …GCONT are handled correctly.
  3. If the computer running the Redis test is slow, we revert to --client…

    antirez committed May 11, 2012
    …s 1 to avoid false positives.
  4. More incremental active expired keys collection process.

    antirez committed May 11, 2012
    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.
Commits on May 11, 2012
Commits on May 9, 2012
  1. Fix PREFIX typo in Makefile.

    antirez committed May 9, 2012