2010-03-02 Remove trailing newline in interactive mode.
2010-03-02 minor fix for a Linux warning
2010-03-02 Add interactive mode to redis-cli.
2010-03-02 Better to increment the version minor number when a VM bug is fixed... it will be simpler to understand what's going on when users will report problems with the INFO trace.
2010-03-02 Fixed a subtle VM bug... was not flushing the buffer so the child process read truncated data
2010-03-01 KEYS now returns a multi bulk reply
2010-02-27 Add DISCARD command to discard queued MULTI commands.
2010-03-01 Swappability bug due to a typo fixed thanks to code review by Felix Geisendörfer @felixge
2010-02-28 minor fixes for zipmap.c
2010-02-27 first zipmap fix of a long sequence in the days to come ;)
2010-02-27 initial zipmap.c implementation
2010-02-27 Bug #169 fixed (BLOP/BRPOP interrupted connections are not cleared from the queue)
2010-02-22 Fixed 32bit make target to work on Linux out of the box
2010-02-19 A problem with replication with multiple slaves connectiong to a single master fixed. It was due to a typo, and reported on github by the user micmac. Also the copyright year fixed from many files.
2010-02-10 Saner VM defaults for redis.conf
2010-02-09 VM now is able to block clients on swapped keys for all the commands
2010-02-07 ZCOUNT and ZRANGEBYSCORE new tests
2010-02-07 ZRANGEBYSCORE now supports open intervals, prefixing double values with a open paren. Added ZCOUNT that can count the elements inside an interval of scores, this supports open intervals too
2010-02-07 WITHSCORES in ZRANGEBYSCORE thanks to Sam Hendley
2010-02-06 Added "withscores" option to zrangebyscore command. Based on withscores support in zrange function, ugliest part was the argument parsing to handle using it with the limit option.
2010-02-06 DEBUG OBJECT provide info about serialized object length even when VM is disabled
2010-02-06 multi bulk requests in redis-benchmark, default fsync policy changed to everysec, added a prefix character for DEBUG logs
2010-02-04 APPEND tests
2010-02-04 APPEND command
2010-02-02 Faster version of the function hashing possibly encoded objects, leading to a general speed gain when working with Sets of integers
2010-02-02 faster Set loading time from .rdb file resizing the hash table to the right size before loading elements
2010-02-02 Log time taken to load the DB at startup, in seconds
2010-01-31 Fixed VM corruption due to child fclosing the VM file directly or indirectly calling exit(), now replaced with _exit() in all the sensible places. Masked a few signals from IO threads.
2010-01-28 loading side of the threaded VM
2010-01-26 TODO cahnges
2010-01-23 Fixed memory human style memory reporting, removed server.usedmemory, now zmalloc_used_memory() is used always.
2010-01-22 VM tuning thanks to redis-stat vmstat. Now it performs much better under high load
2010-01-21 REDIS_MAX_COMPLETED_JOBS_PROCESSED is now in percentage, not number of jobs. Moved a debugging message a few lines forward as it was called where a few logged parameters where invalid, leading to a crash
2010-01-20 fixed a deadlock caused by too much finished processes in queue so that I/O clients writing to the wirte side of the pipe used to awake the main thread where blocking. Then a BGSAVE started waiting for the last active thread to finish, condition impossible because all the I/O threads where blocking on threads. Takes this as a note to myself...
2010-01-20 ae.c event loop does no longer support exception notifications, as they are fully pointless. Also a theoretical bug that never happens in practice fixed.
2010-01-19 commercial tools stuff removed from the Redis makefile. cotools are now migrated into a different repos
2010-01-19 removed a bug in the function to cancel an I/O job
2010-01-17 static symbols update
2010-01-16 removed support for REDIS_HELGRIND_FRIENDLY since Helgrind 3.5.0 is friendly enough even with many threads created and destroyed
2010-01-15 now redis-cli understands -h
2010-01-15 Create swap file only if not exists
2010-01-15 I hate warnings
2010-01-15 fixed a minor memory leak in configuration file parsing
2010-01-15 minor fix
2010-01-15 support for named VM swap file. Fixed a few important interaction issues between the background saving processes and IO threads
2010-01-15 fix for the just added new test
2010-01-15 useless debugging messages removed
2010-01-15 new test added
2010-01-15 thread safe zmalloc used memory counter
2010-01-15 A define to make Redis more helgrind friendly
2010-01-15 removed a few races from threaded VM
2010-01-14 Fixed a never experienced, theoretical bug that can actually happen in practice. Basically when a thread is working on a I/O Job we need to wait it to finish before to cancel the Job in vmCancelThreadedIOJob(), otherwise the thread may mess with an object that is being manipulated by the main thread as well.
2010-01-14 Set the new threads stack size to a LZF friendly amount
2010-01-13 access to already freed job structure fixed by statements reoredering
2010-01-13 removed a useless debugging message
2010-01-13 Wait zero active threads condition before to fork() for BGSAVE or BGREWRITEAOF
2010-01-13 list API is now thread safe
2010-01-13 minor TODO and debugging info changes
2010-01-12 support for blocking VM in config file
2010-01-12 more non blocking VM changes
2010-01-12 fix for test #11
2010-01-12 a few more stuff in INFO about VM. Test #11 changed a bit in order to be less lame
2010-01-12 Added a define to configure how many completed IO jobs the handler should process at every call.
2010-01-11 Fixed a bug in the IO Job canceling funtion
2010-01-11 more steps towards a working non blocking VM
2010-01-11 converted random printfs in debug logs
2010-01-11 removed a bug introduced with non blocking VM
2010-01-11 a few non blocking VM bugs fixed
2010-01-11 More work on non-blocking VM. Should work in a few days
2010-01-11 More threaded I/O VM work + Redis init script
2010-01-10 more work on VM threaded I/O. Still nothing of usable
2010-01-09 non-blocking VM data structures, just a start
2010-01-08 used_memory_human added to INFO output. Human readable amount of memory used.
2010-01-07 Now DEBUG OBJECT plays well with swapped out objects
2010-01-07 fflush VM swap file after object swapping
2010-01-07 added the fmacros to enable support for fseeko() lseeko() with 64bit off_t
2010-01-07 VM now swaps objects out while loading datasets not fitting into vm-max-memory bytes of RAM
2010-01-07 added process id information in INFO
2010-01-06 vm-enabled set to no by default in redis.conf
2010-01-06 a new default redis.conf
2010-01-06 VM stats in INFO command
2010-01-06 Introduced a new log verbosity level, so now DEBUG is really for debugging. Refactored a bit maxmemory. When virtual memory is short in RAM free the objects freelist as well as swapping things out.
2010-01-05 fixed a bug in bgsave when VM is off but still it was testing for obj->storage field
2010-01-05 converted a few calls to assert() => redisAssert() to print stack trace
2010-01-05 BGREWRITEAOF now works with swapping on
2010-01-05 A first fix for SET key overwrite
2010-01-05 SAVE now works with VM
2010-01-05 swapping algorithm a bit more aggressive under low memory
2010-01-05 basic VM mostly working!
2010-01-05 New object field (one of the unused bytes) to hold the type of the swapped out value object in key objects
2010-01-05 VM internals bugfixes, set 1
2010-01-05 load key from swap on key lookup
2010-01-05 more object-level VM primitives
2010-01-05 Redis objects swapping / loading
2010-01-05 rdbLoadObject() as a separated function to load objects from disk. Dropped support for RDB version 0, I guess no longer has this legacy DBs around
2010-01-04 VM low level pages handling
2010-01-04 vm swap file creation, and some basic configuration
2010-01-04 version marked 1.3.2
2010-01-04 saving code refactored a bit, added a function returning the number of bytes an object will use on disk
2010-01-02 Now the PUSH side of RPOPLPUSH is able to unblock clients blocked on BLPOP
2010-01-02 Version is now 1.3.1
2010-01-02 New vararg BLPOP able to block against multiple keys
2009-12-29 fixed a problem with BLPOP timeout of zero, now it blocks forever
2009-12-29 BLPOP timeouts implemented
2009-12-29 first working implementation of BLPOP and BRPOP, still everything is to test well
2009-12-29 a few more fixes, still broken
2009-12-29 First fix, still broken
2009-12-29 minor fix for Linux 64 bit
2009-12-29 not yet working BLPOP implementation
2009-12-27 AOFSYNC removed, got a better idea...
2009-12-27 AOFSYNC command implemented
2009-12-27 Version changed to 1.3.0, welcome to the new unstable
2009-12-27 Now MULTI returns +OK as well
2009-12-27 MULTI/EXEC first implementation
2009-12-24 Fixed a minor bug in GETSET, now the SET part is not performed if the GET fails because the key does not contain a string value
2009-12-23 html doc readded
2009-12-23 ZRANGE WITHSCORES test added
2009-12-23 version is now 1.1.94
2009-12-23 Add the command name in the unknown command error message.
2009-12-22 ZRANGE, ZREVRANGE now support WITHSCORES options
2009-12-22 html docs update (ZINCRBY added)
2009-12-18 TODO list update
2009-12-18 the pipelining test was ran against DB 1 for error, now it runs on DB 9 like all the other tests
2009-12-18 still more tests
2009-12-18 SORT STORE test added
2009-12-18 Now SORT returns an empty bulk reply if the key does not exist
2009-12-18 modified a bit the ZREVRANGE test to cover a few lines of code more
2009-12-18 SHUTDOWN now does the right thing when append only is on, that is, fsync instead to save the snapshot.
2009-12-18 Added a missing server.dirty increment in a non critical place, added more tests
2009-12-18 LTRIM stress testing test added
2009-12-18 LTRIM now returns +OK against non existing keys. More tests in test-redis.tcl
2009-12-18 added sdstoupper() declaration in sds.h
2009-12-18 Fixed sds.c bug #124
2009-12-16 LZF compression re-enabled by default, but with INIT_HTAB set to 0 to avoid the very costly memset initialization. Note that with this option set valgrind will output some false positive about lzf_c.c
2009-12-16 lzf compression switched off by default now, with config file option to enable it in redis.conf
2009-12-16 Regression for epoll bug in redis-test.tcl, version is now 1.1.93
2009-12-15 Two important fixes to append only file: zero length values and expires. A pretty neat new test to check consistency of randomly build datasets against snapshotting and AOF.
2009-12-15 debug loadaof implemented in order to add more consistency tests in test-redis.tcl
2009-12-15 Added a new test able to stress a lot the snapshotting engine
2009-12-15 Unified handling of empty queries with normal queries.
2009-12-15 Fixed some subtle bug in the command processing code almost impossible to spot in the real world, thanks to gcov
2009-12-15 Regression test for SINTERSTORE added
2009-12-15 Fixed issue #121
2009-12-14 a few more tests and ability to run a specific test in test-redis.tcl
2009-12-13 Changed the reply of BGSAVE and BGREWRITEAOF from +OK to a more meaningful message that makes the user aware of an operation that just started and is not yet finished.
2009-12-13 Set the master->slave logical client as authenticated on creation, so that if the slave requires a password replication works anyway
2009-12-13 TODO update
2009-12-12 bgrewriteaof_in_progress added to INFO
2009-12-12 TODO list modified. What's planned for 1.4 is now written in the stone ;)
2009-12-12 better handling of non blocking connect on redis-benchmark: EPIPE on read does not print an error message now
2009-12-11 some change to redis-sha1.rb utility to make it more robust against non-meaningful changes in the dataset
2009-12-10 redis-sha1.rb utility updated
2009-12-10 a bit more verbose -ERR wrong number o arguments error, now gives info about the command name causing the error
2009-12-10 TODO change and minor SETNX optimization
2009-12-06 in rdbLoadDoubleValue now the buffer is nul terminated correctly. Thanks valgrind.
2009-12-06 printf format warnings fixed by casting
2009-12-06 Regression tests for SETNX and MSETNX bugs added
2009-12-06 SETNX and MSETNX now respect the delete-on-write operation of EXPIREing keys
2009-12-06 Fixed daemonization when using kqueue/kevent. Now the server initialization is performed *after* the daemonization
2009-12-05 use __attribute__ format in sdscatprintf() when the compiler is GCC. Fixed format bugs resulting from the new warnings.
2009-12-01 TODO update
2009-12-01 compilation problem on 64bit mac os x 10.5 possibly fixed
2009-12-01 virtual memory design doc typos
2009-12-01 design documents added to the project
2009-11-30 Fixed issued #85 (getDecodedObject: Assertion 1 != 1 failed. While sorting a set), added a smarter assert() function to dump the stacktrace, provided a macro to initalize Redis objects on the stack to avoid this kind of bugs.
2009-11-30 fixed a subtle bug in redis-cli not having visible effects
2009-11-29 TODO updated
2009-11-29 Version chagned to 1.100, also known as the first first 2.0 beta version
2009-11-29 more tests in test-redis.tcl, some minor fix
2009-11-29 SORT support for sorted sets
2009-11-28 Implemented LIMIT option in ZRANGEBYSCORE. We now enter feature-freeze
2009-11-24 minor fix to avoid a false valgrind warning.
2009-11-23 epoll support enabled by default for Linux builds
2009-11-23 epoll module for ae.c implemented. Some more testing needed
2009-11-23 commented the HAVE_EPOLL test in config.h to allow compilation under Linux now that the epoll module is still missing
2009-11-23 ae_select module added
2009-11-23 ae.c now supports multiple polling API modules, even if only ae_select.c is implemented currently. Also adding and removing an event is now O(1).
2009-11-23 ae.c initial refactoring for epoll implementation
2009-11-21 version incremented up to 1.06
2009-11-21 TODO aesthetic changes
2009-11-21 TODO updated with plans up to 1.5
2009-11-21 SRANDMEMBER test
2009-11-21 Fixed a SORT memory leak that should never happen in practice
2009-11-21 SORT GET # implemented, with a test
2009-11-21 EXPIREAT test
2009-11-20 EXPIRE tests
2009-11-20 more RPOPLPUSH tests
2009-11-20 RPOPLPUSH tests added
2009-11-20 ZINCRBY return value fixed
2009-11-20 ZINCRSCOREBY => ZINCRBY
2009-11-19 ZINCRSCOREBY implemented
2009-11-19 writev() finally uncommented again
2009-11-19 redis-benchmark hopefully last bug with multi bulk reply fixed
2009-11-19 debug mode in redis-bench
2009-11-19 Use writev(2) if glue output buffers is disabled
2009-11-19 benchmark.c fixes
2009-11-18 more experiments with long replies, glue output buffer, and writev.
2009-11-18 benchmarking with different number of LRANGE elements. Ability to change the glue output buffer limit by #define
2009-11-18 more writev tests/work
2009-11-18 redis-benchmark multi bulk reply support hopefully fixed
2009-11-17 support for writev implemented but currently ifdef-ed in order to understan why I can't see the improvements expected. Btw code provided by Stefano Barbato
2009-11-17 multi-bulk reply support for redis-bench, and as a result LRANGE is not tested, providing some number for the tuning of multi-bulk requests performances server-side
2009-11-04 redis-test is now a better Redis citizen, testing everything against DB 9 and 10 and only if this DBs are empty.
2009-11-04 fixed a refcounting bug with SORT ... STORE leading to random crashes
2009-11-04 masterauth option merged, thanks to Anthony Lauzon
2009-11-03 ZSets double to string serialization fixed
2009-11-03 client-libraries directory readded
2009-11-03 redis.tcl put at toplevel since it's uesd for the test-redis.tcl script
2009-11-03 client libs removed from Redis git
2009-11-03 redis-cli now accepts a -r (repeat) switch. Still there is a memory leaks to fix
2009-11-01 TODO updated again
2009-11-01 TODO updated
2009-11-01 redis-cli now makes clear when the returned string is an integer
2009-11-01 SORT STORE option
2009-11-01 now Redis prints DB stats just after the startup without to wait a second for the first report
2009-11-01 another fix for append only mode, now read-only operations are not appended
2009-11-01 appendfsync parsing in config file fixed. If you benchmarked Redis against different appendfsync options is time to try again ;)
2009-11-01 append only file loading fixed
2009-11-01 first version of append only file loading -- STILL BROKEN don't use it
2009-10-31 Fixed Issue 83:Using TYPE on a zset results in a malformed response from the Redis server
2009-10-31 Fixed compilation on Linux
2009-10-30 append only mode is now able to translate EXPIRE into EXPIREAT transparently
2009-10-30 appendfsync is now set to NO by default
2009-10-30 support for appendonly mode no, always, everysec
2009-10-30 first fix for append only mode
2009-10-30 Initial implementation of append-only mode. Loading still not implemented.
2009-10-30 EXPIRE behaviour changed a bit, a negative TTL or an EXPIREAT with unix time in the past will now delete the key. It seems saner to me than doing nothing.
2009-10-30 EXPIREAT implemented, will be useful for the append-only mode
2009-10-29 Fixed Issue 74 (ERR just returned on invalid password), now the error message is -ERR invalid password.
2009-10-29 Fixed issue 72 (SLAVEOF shutdowns redis-server on malformed reply)
2009-10-29 Fixed issue 77 (Incorrect time in log files) thanks to youwantalex
2009-10-29 Fixed Issue 76 (redis-server crashes when it can't connect to MASTER and client connects to SLAVE)
2009-10-29 ZREMRANGEBYSCORE implemented. Remove a range of elements with score between min and max
2009-10-28 TODO changes and mostly theoretical minor skiplist change
2009-10-28 ZLEN renamed ZCARD for consistency with SCARD
2009-10-26 ZSETs random fixes. Now the implementation appears to be pretty stable
2009-10-26 another leak fixed. Can't find more for now, but still a bug in ZSETs to fix
2009-10-26 ZSETs memory leak #1 solved, another one missing
2009-10-26 Fix for skiplists backward link
2009-10-26 Merged Solaris patches provided by Alan Harder
2009-10-26 backward support to skiplists for ZREVRANGE, still broken, committing since I've to merge the Solaris patches
2009-10-26 TODO updated
2009-10-26 ZREM implemented
2009-10-24 fix for ZADD in score update mode
2009-10-24 some work on ZADD against existing element (score update), still broken...
2009-10-23 zrange now starts to work. zadd still does not support update and will crash or leak or b000mmmmm
2009-10-23 zrange initial hack (not working for now)
2009-10-23 first skiplist fix, courtesy of valgrind
2009-10-23 zset symbols added to stack trace code. ZSets will simply crash at the moment
2009-10-23 more work on ZSETs and a new make target called 32bit to build i386 binaries on mac os x leopard
2009-10-23 initial skiplist implementation. Most memory checks removed and zmalloc() modified to fail with an error message and abort. Anyway Redis is not designed to recover from out of memory conditions.
2009-10-23 Fixed compilation in mac os x snow leopard when compiling a 32 bit binary.
2009-10-22 version incremented to 1.050 to distinguish from 1.001 stable and next stable versions with minor fixes
2009-10-20 Imporant bug leading to data corruption fixed (NOT affecting stable distribution), Tcl client lib MSET/MSETNX implementation fixed, Added new tests for MSET and MSETNX in test-redis.tcl
2009-10-17 added multi-bulk protocol support to redis-cli and support for MSET and MSETNX
2009-10-17 MSET fixed, was not able to replace keys already set for a stupid bug
2009-10-16 some dead code removed
2009-10-16 multi bulk input protocol fixed
2009-10-16 MSET and MSETNX commands implemented
2009-10-07 undoed all the sds hacking that lead just to random bugs and no memory saving ;)
2009-10-07 initial multi-bulk query protocol, this will allow MSET and other interesting features.
2009-10-03 benchmark now outputs the right command line to shorten the TIME_WAIT interval on Mac OS X when keep alive is set
2009-10-02 Issue 69 fixed. Object integer encoding now works with replication and MONITORing again.
2009-09-01 Fixed crash with only space and newline as command (issue 61), thanks to a guy having as nick "fixxxerrr"
2009-08-11 TODO list modified
2009-07-24 more snow leopard related fixes (for 32bit systems)
2009-07-24 fixed compilation with Snow Leopard, thanks to Lon Baker for providing SSH access to Snow Leopard box
2009-07-22 Fixed NetBSD compile problems
2009-07-17 now the size of the shared pool can be really modified via config, also the number of objects in the sharing pool is logged when the log level is set to debug. Thanks to Aman Gupta
2009-07-05 added utils/redis-copy.rb, a script that is able to copy data from one Redis server to another one on the fly.
2009-07-04 Applied three different patches thanks to Chris Lamb, one to fix compilation and get the IP register value on Linux IA64 and other systems. One in order to log the overcommit problem on the logs instead of the standard output when Redis is demonized. The latest in order to suggest a more consistent way in order to switch to 1 the memory overcommit Linux feature.
2009-07-03 bugfix: EXPIRE now propagates to the Slave.
2009-06-07 Dump a backtrace on sigsegv/sigbus, original coded thanks to Diego Rosario Brogna, modified in order to work on different OSes and to enhance reliability
2009-06-06 Merge git://github.com/dierbro/redis
2009-06-06 add more output
2009-06-06 store static function pointer for a useful stack trace
2009-06-05 Avoid a busy loop while sending very large replies against very fast links, this allows to be more responsive with other clients even under a KEY * against the loopback interface
2009-06-05 Kill the background saving process before performing SHUTDOWN to avoid races
2009-06-05 LREM now returns :0 for non existing keys
2009-05-26 ignore gcc warning about write() return code not checked. It is esplicitily this way since the "max number of clients reached" is a best-effort error
2009-05-26 max bytes of a received command enlarged from 1k to 16k
2009-05-26 RubyRedis: set TCP_NODELAY TCP socket option to to disable the neagle algorithm. Makes a huge difference under some OS, notably Linux
2009-05-24 Issue with redis-client used in scripts solved, now to check if the latest argument must come from standard input we do not check that stdin is or not a tty but the command arity
2009-05-23 RubyRedis: now sets are returned as arrays again, and not as Set objects
2009-05-23 SLAVEOF command documented
2009-05-23 SLAVEOF command implemented for replication remote control
2009-05-22 Fix: no connection timeout for the master!
2009-05-22 replication slave timeout when receiving the initial bulk data set to 3600 seconds, now that replication is non-blocking the server must save the db before to start the async replication and this can take a lot of time with huge datasets
2009-05-22 README tutorial now reflects the new proto
2009-05-22 critical bug about glueoutputbuffers=yes fixed. Under load and with pipelining and clients disconnecting on the middle of the chat with the server, Redis could block. Now it's ok
2009-05-09 CPP client added thanks to Brian Hammond
2009-05-06 Infinite number of arguments for MGET and all the other commands
2009-05-04 Warns if /proc/sys/vm/overcommit_memory is set to 0 on Linux. Also make sure to don't resize the hash tables while the child process is saving in order to avoid copy-on-write of memory pages
2009-04-30 zmalloc fix, return NULL or real malloc failure
2009-04-30 more fixes for dict.c and the 150 million keys limit
2009-04-30 dict.c modified to be able to handle more than 150,000,000 keys
2009-04-29 fuzz stresser implemented in redis-test
2009-04-22 FLUSHALL/FLUSHDB no longer sync on disk. Just increment the dirty counter by the number of elements removed, that will probably trigger a background saving operation
2009-04-21 forgot to comment testing code in PHP lib. Now it is ok
2009-04-21 PHP client ported to PHP5 and fixed
2009-04-21 doc update
2009-04-20 Non blocking replication (finally!). C-side linked lists API improved.
2009-04-19 SUNION, SUNIONSTORE, Initial work on non blocking replication