Back to home page

Redis cross reference

 
 

    


0001 Redis 2.6 release notes
0002 =======================
0003 
0004 ** IMPORTANT ** Check the 'Migrating from 2.4 to 2.6' section at the end of
0005                 this file for information about what changed between 2.4 and
0006                 2.6 and how this may affect your application.
0007 
0008 --------------------------------------------------------------------------------
0009 Upgrade urgency levels:
0010 
0011 LOW:      No need to upgrade unless there are new features you want to use.
0012 MODERATE: Program an upgrade of the server, but it's not urgent.
0013 HIGH:     There is a critical bug that may affect a subset of users. Upgrade!
0014 CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
0015 --------------------------------------------------------------------------------
0016 
0017 --[ Redis 2.6.13 ]
0018 
0019 UPGRADE URGENCY: MODERATE, nothing very critical but upgrading is suggested
0020                  if you experienced:
0021 
0022                  1) Strange issues with Lua scripting.
0023                  2) Not reconfigured reappearing master using Sentinel.
0024                  3) Server continusly trying to save on save error.
0025 
0026                  This version of Redis may also help with AOF and slow / busy
0027                  disks and latency issues.
0028 
0029 * [FIX] Throttle BGSAVE attempt on saving error.
0030 * [FIX] redis-cli: raise error on bad command line switch.
0031 * [FIX] Redis/Jemalloc Gitignore were too aggressive.
0032 * [FIX] Test: fix RDB test checking file permissions.
0033 * [FIX] Sentinel: always redirect on master->slave transition.
0034 * [FIX] Lua updated to version 5.1.5. Fixes rare scripting issues.
0035 * [NEW] AOF: improved latency figures with slow/busy disks.
0036 * [NEW] Sentinel: turn old master into a slave when it comes back.
0037 * [NEW] More explicit panic message on out of memory.
0038 * [NEW] redis-cli: --latency-history mode implemented.
0039 
0040 --[ Redis 2.6.12 ]
0041 
0042 UPGRADE URGENCY: MODERATE, nothing very critical but a few non trivial bugs.
0043 
0044 * [BUGFIX]   redis-cli --bigkeys: don't crash with empty DB.
0045 * [BUGFIX]   stop-writes-on-bgsave-error now works in redis.conf
0046 * [BUGFIX]   Don't crash at startup if RDB is there but can't be opened.
0047 * [BUGFIX]   Initial value for master_link_down_since_seconds is now huge.
0048 * [BUGFIX]   Allow SELECT while loading the DB.
0049 * [BUGFIX]   Don't replicate/AOF an empty MULTI/EXEC if the transaction
0050              is empty or containing just read-only commands.
0051 * [BUGFIX]   EXPIRE should not be able to resurrect keys (see issue #1026).
0052 * [IMPROVED] Extended SET back ported from Redis 2.8 / unstable
0053              See http://redis.io/commands/set for more information.
0054 * [IMPROVED] Test suite improved.
0055 
0056 --[ Redis 2.6.11 ]
0057 
0058 UPGRADE URGENCY: LOW, however updating is encouraged if you have many instances
0059                  per server and you want to lower the CPU / energy usage.
0060 
0061 * [BUGFIX]   Replication: more strict error checking for master PING reply.
0062 * [BUGFIX]   redis-cli: use keepalive socket option for improved reliability.
0063 * [BUGFIX]   Allow AUTH while loading the DB in memory.
0064 * [BUGFIX]   Don't segfault on unbalanced quotes while parsing config file.
0065 * [BUGFIX]   Don't segfault if command gets propagated to AOF / replication
0066              link as another command name that was renamed in redis.conf
0067 * [IMPROVED] serverCron() frequency is now a runtime parameter (was REDIS_HZ).
0068 * [IMPROVED] Use a lot less CPU when idle, even with many configured DBs.
0069 
0070 --[ Redis 2.6.10 ]
0071 
0072 UPGRADE URGENCY: MODERATE, this release contains many non-critical fixes
0073                  and many small improvements.
0074 
0075 * [BUGFIX]   redis-cli --rdb, fixed when the server sends newlines to ping.
0076 * [BUGFIX]   redis-cli, minor fixes on connection handling, prompt.
0077 * [BUGFIX]   Slow log: don't log EXEC, just executed commands.
0078 * [BUGFIX]   On failed shutdown don't try again and again compulsively.
0079 * [BUGFIX]   Fix build on sunos without backtrace().
0080 * [BUGFIX]   UNSUBSCRIBE and PUNSUBSCRIBE: always provide a reply (see 742e580)
0081 * [BUGFIX]   Lua struct library was broken, upgraded.
0082 * [BUGFIX]   Fix a bug in srandmemberWithCountCommand() with count argument.
0083 * [BUGFIX]   Test: disable clients timeout to prevent issues on slow systems.
0084 * [BUGFIX]   Sentinel: don't advertise the promoted slave as master too early.
0085 * [IMPROVED] Whitelist SIGUSR1, see http://redis.io/topics/signals.
0086 * [IMPROVED] Simpler to understand redis-cli --bigkeys output.
0087 * [IMPROVED] Test now works with tclsh > 8.5.
0088 * [IMPROVED] Added option to turn of the Nagle algorithm in slave socket.
0089 * [IMPROVED] Optionally use SO_KEEPALIVE to detect dead peers.
0090 
0091 --[ Redis 2.6.9 ]
0092 
0093 UPGRADE URGENCY: MODERATE if you use replication.
0094 
0095 * [BUGFIX]   Changing master at runtime (SLAVEOF command) in presence of
0096              network problems, or in very rapid succession, could result
0097              in non-critical problems (GitHub Issue #828).
0098 * [IMPROVED] CLINGET GETNAME and SETNAME to set and query connection names
0099              reported by CLIENT LIST. Very useful for debugging of
0100              problems.
0101 * [IMPROVED] redis-cli is now able to transfer an RDB file from a remote
0102              server to a local file using the --rdb <filename> command
0103              line option.
0104 
0105 --[ Redis 2.6.8 ]
0106 
0107 UPGRADE URGENCY: MODERATE if you use Lua scripting. Otherwise LOW.
0108 
0109 * [BUGFIX]   Multiple fixes for EVAL (issue #872).
0110 * [BUGFIX]   Fix overflow in mstime() in redis-cli and benchmark.
0111 * [BUGFIX]   Fix Linux / PPC64 behavior by correcting endianess detection.
0112 * [BUGFIX]   Fix NetBSD build by defining _XOPEN_SOURCE appropriately.
0113 * [BUGFIX]   Added missing license and copyright in a few places.
0114 * [BUGFIX]   Better error reporting when fd event creation fails.
0115 
0116 --[ Redis 2.6.7 ]
0117 
0118 UPGRADE URGENCY: MODERATE (unless you BLPOP using the same key multiple times).
0119 
0120 * [BUGFIX]   Don't crash if BLPOP & co are called with the same key repeated
0121              multiple times (Issue #801).
0122 
0123 --[ Redis 2.6.6 ]
0124 
0125 UPGRADE URGENCY: CRITICAL if you experienced one more more crashes.
0126                  MODERATE if Redis is running fine for you.
0127 
0128 * [BUGFIX]   Jemalloc updated to 3.2.0.
0129 
0130 --[ Redis 2.6.5 ]
0131 
0132 UPGRADE URGENCY: MODERATE
0133 
0134 Warning: this release of Redis introduces a different behavior in MULTI/EXEC
0135          handling of errors. This was done because the new behavior is safer
0136          compared to the old one, and should not break any code targeting
0137          Redis 2.6 in a critical way.
0138 
0139          For more information check http://redis.io/topics/transactions
0140 
0141 * [IMPROVED] RDB/AOF childern now log amount of additional memory used
0142              because of copy on write.
0143 * [BUGFIX]   MIGRATE non critical fixes (see commits for details).
0144 * [BUGFIX]   MULTI/EXEC: now EXEC aborts on errors before EXEC.
0145 * [BUGFIX]   Fix integer overflow in zunionInterGenericCommand resulting
0146              into Z[INTER|UNION][STORE] commands to crash under extremely
0147              unlikely conditions (almost impossible in real world).
0148 * [BUGFIX]   EVALSHA is now case insensitive (and will not crash).
0149 
0150 --[ Redis 2.6.4 ]
0151 
0152 UPGRADE URGENCY: LOW
0153 
0154 * [IMPROVED] BSD license and copyright notice added to every .c and .h file.
0155 
0156 --[ Redis 2.6.2 ]
0157 
0158 UPGRADE URGENCY: LOW
0159 
0160 * [BUGFIX]   The compilation fix for RHLE5 in 2.6.1 was broken. Fixed.
0161 * [IMPROVED] Linenoise updated, now supports Ctrl+w.
0162 
0163 ---[ Redis 2.6.1 ]
0164 
0165 UPGRADE URGENCY: LOW
0166 
0167 * [BUGFIX]   Compilation on Linux < 2.6.17 or glibc < 2.6 fixed (RHLE5 & co).
0168 
0169 ---[ Redis 2.6.0 ]
0170 
0171 UPGRADE URGENCY: HIGH
0172 
0173 * [BUGFIX]   Allow AUTH when server is in -BUSY state because of a slow script.
0174 * [BUGFIX]   MULTI/EXEC flow now makes sense when observed in MONITOR
0175 * [BUGFIX]   SCRIPT KILL now uses different error prefixes for different errors.
0176 * [BUGFIX]   Default memory limit for 32bit archs lowered from 3.5 to 3 GB.
0177 * [BUGFIX]   redis-check-dump is now compatible with RDB files generated by 2.6.
0178 * [IMPROVED] New field in INFO: slave_read_only.
0179 
0180 ---[ Redis 2.5.14 (2.6 Release Candidate 8) ]
0181 
0182 * [BUGFIX]   Fixed compilation on FreeBSD.
0183 * [IMPROVED] SRANDMEMBER <count> that returns multiple random elements.
0184 * [IMPROVED] Sentinel backported to 2.6. It will be taken in sync with 2.8.
0185 * [IMPROVED] Helper function for scripting to return errors and status replies.
0186 * [IMPROVED] SORT by nosort [ASC|DESC] uses sorted set elements ordering.
0187 * [BUGFIX]   Better resistence to system clock skew.
0188 * [IMPROVED] Warn the user when the configured maxmemory seems odd.
0189 * [BUGFIX]   Hashing function is now murmurhash2 for security purposes.
0190 * [IMPROVED] Install script no longer uses a template but redis.conf itself.
0191 
0192 ---[ Redis 2.5.13 (2.6 Release Candidate 7) ]
0193 
0194 UPGRADE URGENCY: HIGH
0195 
0196 * [BUGFIX]   Theoretical bug in ziplist fixed.
0197 * [BUGFIX]   Better out of memory handling (Log produced in log file).
0198 * [BUGFIX]   Incrementally flush RDB file on slave side while performing the
0199              first synchronization with the master. This makes Redis less
0200              blocking in environments where disk I/O is slow.
0201 * [BUGFIX]   Don't crash with Lua's redis.call() without arguments.
0202 * [BUGFIX]   Don't crash after a big number of Lua calls on 32 bit systems
0203              because of a failed assertion.
0204 * [BUGFIX]   Fix SORT behaviour when called from scripting.
0205 * [BUGFIX]   Adjust slave PING period accordingly to REDIS_HZ define.
0206 * [BUGFIX]   BITCOUNT: fix crash on overflowing arguments.
0207 * [BUGFIX]   Return an error when SELECT argument is not an integer.
0208 * [BUGFIX]   Blocking operations on lists were completely reimplemented for
0209              correctness. Now blocking list ops and pushes originated from
0210              Lua scripts will play well together and will be replicated
0211              and transmitted to the AOF correctly.
0212 * [IMPROVED] Send async PING before starting replication to avoid blocking if
0213              master allows us to connect but it is actually not able to reply.
0214 * [IMPROVED] Support slave-priority for Redis Sentinel.
0215 * [IMPROVED] Hiredis library updated.
0216 
0217 ---[ Redis 2.5.12 (2.6 Release Candidate 6) ]
0218 
0219 UPGRADE URGENCY: MODERATE.
0220 
0221 * [BUGFIX]   Fixed a timing attack on AUTH (Issue #560).
0222 * [BUGFIX]   Don't assume that "char" is signed.
0223 * [BUGFIX]   Check that we have connection before enabling pipe mode.
0224 * [BUGFIX]   Use the optimized version of the function to convert a double to
0225              its string representation. Compilation was disabled because of
0226              a typo in the #if statement.
0227 * [IMPROVED} REPLCONF internal command introduced, now INFO shows slaves with
0228              correct port numbers. This makes 2.5.12 Redis Sentinel compatible.
0229 * [IMPROVED] Truncate short write from the AOF for a cleaner restart. On short
0230              writes (for instance out of space) Redis will now try to remove
0231              the half-written data so that the next restart will work without
0232              the need for the "redis-check-aof" utility.
0233 * [IMPROVED] New in INFO: aof_last_bgrewrite_status
0234 * [IMPROVED] Allow Pub/Sub in contexts where other commands are blocked.
0235 * [BUGFIX]   mark fd as writable when EPOLLERR or EPOLLHUP is returned by
0236              epoll_wait.
0237 
0238 ---[ Redis 2.5.11 (2.6 Release Candidate 5) ]
0239 
0240 UPGRADE URGENCY: HIGH.
0241 
0242 * [BUGFIX]   Fixed Hash corruption when loading an RDB file generated by
0243              previous versions of Redis that encoded hashes using
0244              a different ziplist encoding format for small integers.
0245              All the fileds that are integers in the range 0-255 may not
0246              be recognized, or duplicated un updates, causing a crash
0247              when the ziplist is converted to a real hash. (Issue #547).
0248 * [BUGFIX]   Fixed the count of memory used by output buffers in the
0249              setDeferredMultiBulkLength() function.
0250 
0251 ---[ Redis 2.5.10 (2.6 Release Candidate 4) ]
0252 
0253 UPGRADE URGENCY: HIGH.
0254 
0255 * [BUGFIX]   Allow PREFIX to be overwritten on "make install".
0256 * [BUGFIX]   Run the test with just one client if the computer is slow.
0257 * [BUGFIX]   Event port support in our event driven libray.
0258 * [BUGFIX]   Jemalloc updated to 3.0.0. This fixes a possibly AOF rewrite issue.
0259              See https://github.com/antirez/redis/issues/504 for info.
0260 * [BUGFIX]   Fixed issue #516: ZINTERSTORE / ZUNIONSTORE with mixed sets/zsets.
0261 * [BUGFIX]   Set fd to writable when poll(2) detects POLLERR or POLLHUP event.
0262 * [BUGFIX]   Fixed RESTORE hash failure (Issue #532).
0263 * [IMPROVED] Allow an AOF rewrite buffer > 2GB (Related to issue #504).
0264 * [IMPROVED] Server cron function frequency is now configurable (REDIS_HZ).
0265 * [IMPROVED] Better, less blocking expired keys collection algorithm.
0266 * [FEATURE]  New commands: BITOP and BITCOUNT.
0267 * [FEATURE]  redis-cli --pipe for mass import.
0268 
0269 What's new in Redis 2.5.9 (aka 2.6 Release Candidate 3)
0270 =======================================================
0271 
0272 UPGRADE URGENCY: critical, upgrade ASAP.
0273 
0274 * [BUGFIX] Fix for issue #500 (https://github.com/antirez/redis/pull/500).
0275            Redis 2.6-RC1 and RC2 may corrupt ziplist-encoded sorted sets
0276            produced by Redis 2.4.x.
0277 * [BUGFIX] Fixed several bugs in init.d script.
0278 * [BUGFIX] syncio.c functions modified for speed and correctness. On osx
0279            (and possibly other BSD-based systems) the slave would block on
0280            replication to send the SYNC command when the master was not
0281            available. This is fixed now, but was not affecting Linux installs.
0282 * Now when slave-serve-stale-data is set to yes and the master is down, instead
0283   of reporting a generic error Redis replies with -MASTERDOWN.
0284 
0285 What's new in Redis 2.5.8 (aka 2.6 Release Candidate 2)
0286 =======================================================
0287 
0288 UPGRADE URGENCY: high for all the users of the KEYS command, otherwise low.
0289 
0290 * [BUGFIX] Fix for KEYS command: if the DB contains keys with expires the KEYS
0291            command may return the wrong output, having duplicated or missing
0292            keys. See issue #487 and #488 on github for details.
0293 
0294 What's new in Redis 2.5.7 (aka 2.6 Release Candidate 1)
0295 =======================================================
0296 
0297 UPGRADE URGENCY: upgrade not recommended because this is an RC release.
0298 
0299 * This is the first release candidate for Redis 2.6. We are not aware of
0300   bugs, but part of this code is young and was never tested in production
0301   environments, so handle with care.
0302 
0303 An overview of new features and changes in Redis 2.6.x
0304 ======================================================
0305 
0306 * Server side Lua scripting, see http://redis.io/commands/eval
0307 * Virtual Memory removed (was deprecated in 2.4)
0308 * Hardcoded limits about max number of clients removed.
0309 * AOF low level semantics is generally more sane, and especially when used
0310   in slaves.
0311 * Milliseconds resolution expires, also added new commands with milliseconds
0312   precision (PEXPIRE, PTTL, ...).
0313 * Better memory usage for "small" lists, ziplists and hashes when fields or
0314   values contain small integers.
0315 * Read only slaves.
0316 * New bit opeations: BITCOUNT and BITOP commands.
0317 * Clients max output buffer soft and hard limits. You can specifiy different
0318   limits for different classes of clients (normal,pubsub,slave).
0319 * More incremental (less blocking) expired keys collection algorithm, in
0320   practical terms this means that Redis is more responsive when a very
0321   big number of keys expire about at the same time.
0322 * AOF is now able to rewrite aggregate data types using variadic commands,
0323   often producing an AOF that is faster to save, load, and is smaller in size.
0324 * Every redis.conf directive is now accepted as a command line option for the
0325   redis-server binary, with the same name and number of arguments.
0326 * Hash table seed randomization for protection against collisions attacks.
0327 * Performances improved when writing large objects to Redis.
0328 * Integrated memory test, see redis-server --test-memory.
0329 * INCRBYFLOAT and HINCRBYFLOAT commands.
0330 * New DUMP, RESTORE, MIGRATE commands (back ported from Redis Cluster to 2.6).
0331 * CRC64 checksump in RDB files.
0332 * Better MONITOR output and behavior (now commands are logged before execution).
0333 * "Software Watchdog" feature to debug latency issues.
0334 * Significant parts of the core refactored or rewritten. New internal APIs
0335   and core changes allowed to develop Redis Cluster on top of the new code,
0336   however for 2.6 all the cluster code was removed, and will be released with
0337   Redis 3.0 when it is more complete and stable.
0338 * Redis ASCII art logo added at startup.
0339 * Crash report on memory violation or failed asserts improved significantly
0340   to make debugging of hard to catch bugs simpler.
0341 * redis-benchmark improvements: ability to run selected tests,
0342   CSV output, faster, better help.
0343 * redis-cli improvements: --eval for comfortable development of Lua scripts.
0344 * SHUTDOWN now supports two optional arguments: "SAVE" and "NOSAVE".
0345 * INFO output split into sections, the command is now able to just show 
0346   pecific sections.
0347 * New statistics about how many time a command was called, and how much
0348   execution time it used (INFO commandstats).
0349 * More predictable SORT behavior in edge cases.
0350 * Better support for big endian and *BSD systems.
0351 * Build system improved.
0352 
0353 Migrating from 2.4 to 2.6
0354 =========================
0355 
0356 Redis 2.4 is mostly a strict subset of 2.6. However there are a few things
0357 that you should be aware of:
0358 
0359 * You can't use .rdb and AOF files generated with 2.6 into a 2.4 instance.
0360 * 2.6 slaves can be attached to 2.4 masters, but not the contrary, and only
0361   for the time needed to perform the version upgrade.
0362 
0363 There are also a few API differences, that are unlikely to cause problems,
0364 but it is better to keep them in mind:
0365 
0366 * SORT now will refuse to sort in numerical mode elements that can't be parsed
0367   as numbers.
0368 * EXPIREs now all have millisecond resolution (but this is very unlikely to
0369   break code that was not conceived exploting the previous resolution error
0370   in some way.)
0371 * INFO output is a bit different now, and contains empty lines and comments
0372   starting with '#'. All the major clients should be already fixed to work
0373   with the new INFO format.
0374 * Slaves are only read-only by default (but you can change this easily
0375   setting the "slave-read-only" configuration option to "no" editing your
0376   redis.conf or using CONFIG SET.
0377 
0378 The following INFO fields were renamed for consistency:
0379 
0380      changes_since_last_save -> rdb_changes_since_last_save
0381      bgsave_in_progress -> rdb_bgsave_in_progress
0382      last_save_time -> rdb_last_save_time
0383      last_bgsave_status -> rdb_last_bgsave_status
0384      bgrewriteaof_in_progress -> aof_rewrite_in_progress
0385      bgrewriteaof_scheduled -> aof_rewrite_scheduled
0386 
0387 The following redis.conf and CONFIG GET / SET parameters changed:
0388 
0389     * hash-max-zipmap-entries, now replaced by hash-max-ziplist-entries
0390     * hash-max-zipmap-value, now replaced by hash-max-ziplist-value
0391     * glueoutputbuf option was now completely removed (was deprecated)
0392 
0393 --------------------------------------------------------------------------------
0394 
0395 Credits: Where not specified the implementation and design are done by
0396 Salvatore Sanfilippo and Pieter Noordhuis. Thanks to VMware for making all
0397 this possible. Also many thanks to all the other contributors and the amazing
0398 community we have.
0399 
0400 See commit messages for more credits.
0401 
0402 Cheers,
0403 Salvatore