mirror of
https://github.com/fluencelabs/redis
synced 2025-04-30 04:52:13 +00:00
332 lines
15 KiB
Plaintext
332 lines
15 KiB
Plaintext
Redis 3.0 release notes
|
|
=======================
|
|
|
|
WARNING: Redis 3.0 is currently a BETA not suitable for production environments.
|
|
|
|
--------------------------------------------------------------------------------
|
|
Upgrade urgency levels:
|
|
|
|
LOW: No need to upgrade unless there are new features you want to use.
|
|
MODERATE: Program an upgrade of the server, but it's not urgent.
|
|
HIGH: There is a critical bug that may affect a subset of users. Upgrade!
|
|
CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
|
|
--------------------------------------------------------------------------------
|
|
|
|
--[ Redis 3.0.0 Beta 8 (version 2.9.57) ] Release date: 29 jul 2014
|
|
|
|
This is the 8th beta of Redis 3.0.0.
|
|
|
|
>> General changes
|
|
|
|
* [FIX] Solaris compilation issues. (Matt Stancliff, Salvatore Sanfilippo)
|
|
* [FIX] Allow shared integer objects if maxmemory policy is not LRU based.
|
|
(Salvatore Sanfilippo)
|
|
* [FIX] PFSELFTEST: less false positives. (Salvatore Sanfilippo)
|
|
* [FIX] Fail SYNC if background save child aborted due to a signal. (Yossi
|
|
Gottlieb)
|
|
|
|
* [NEW] Latency framework backported from unstable branch. (Salvatore
|
|
Sanfilippo)
|
|
* [NEW] AOF rewrite improved for latency. (Salvatore Sanfilippo)
|
|
* [NEW] Pub/Sub PING. (Salvatore Sanfilippo)
|
|
* [NEW] Much faster ZUNIONSTORE. (Kyle Hubert, Salvatore Sanfilippo)
|
|
* [NEW] Faster ll2string() implementation. (Salvatore Sanfilippo)
|
|
|
|
>> Cluster changes
|
|
|
|
* [FIX] CLUSTER RESET: Flush slave dataset on reset. (Salvatore Sanfilippo)
|
|
* [FIX] Replica migration: don't migrate to masters that never had slaves
|
|
in the past, but only to masters that remained orphaned after
|
|
failure events. (Salvatore Sanfilippo)
|
|
|
|
* [NEW] redis-trib: allow to reshard in non-interactive way. (Salvatore
|
|
Sanfilippo)
|
|
* [NEW] Cluster test: unit 04, check consistency during resharding. (Salvatore
|
|
Sanfilippo)
|
|
* [NEW] Cluster test: unit 05, slave selection. (Salvatore Sanfilippo)
|
|
* [NEW] Cluster test: unit 06, slaves with stale data can't failover. (Salvatore
|
|
Sanfilippo)
|
|
* [NEW] Cluster test: unit 07, replicas migration. (Salvatore Sanfilippo)
|
|
|
|
>> Sentinel changes
|
|
|
|
* No Sentinel changes in this release.
|
|
|
|
--[ Redis 3.0.0 Beta 7 (version 2.9.56) ] Release date: 30 jun 2014
|
|
|
|
This is the 7th beta of Redis 3.0.0.
|
|
|
|
>> General changes
|
|
|
|
* [FIX] Scripting fixes backported from unstable, see Redis 2.8.12 changelog
|
|
for more info. (Salvatore Sanfilippo)
|
|
* [FIX] Cancel SHUTDOWN if initial AOF is being written. (Matt Stancliff)
|
|
|
|
* [NEW] New command: COMMAND, for commands introspection (Matt Stancliff &
|
|
Salvatore Sanfilippo)
|
|
* [NEW] hiredis: Update to latest version. (Matt Stancliff)
|
|
* [NEW] Jemalloc updated to 3.6.0. (Salvatore Sanfilippo)
|
|
|
|
>> Cluster changes
|
|
|
|
* [FIX] Cluster: clear NOADDR flag when updating node address.
|
|
(Salvatore Sanfilippo)
|
|
|
|
* [NEW] New CLUSTER SLOTS command to simplify Cluster clients operations.
|
|
(Matt Stancliff)
|
|
* [NEW] More Cluster tests. (Salvatore Sanfilippo)
|
|
* [NEW] Log when failover authorization are granted / denied.
|
|
(Salvatore Sanfilippo)
|
|
|
|
>> Sentinel changes
|
|
|
|
* [FIX] A few Sentinel bugs fixed and improvements, see Redis 2.8.12
|
|
changelog for more info. (Salvatore Sanfilippo & Matt Stancliff)
|
|
* [NEW] New Sentinel-Client handshake protocol, ROLE command, CLIENT KILL,
|
|
all backported to 3.0 branch. (Salvatore Sanfilippo)
|
|
|
|
--[ Redis 3.0.0 Beta 6 (version 2.9.55) ] Release date: 9 jun 2014
|
|
|
|
This is the 6th beta of Redis 3.0.0.
|
|
|
|
>> General changes
|
|
|
|
* [FIX] Fix software watchdog signal handler crash due to re-entering.
|
|
* [FIX] Better Lua number -> string conversion for Lua scripts.
|
|
* [FIX] Serious replication bug when min-slaves-* feature is used in slaves
|
|
configuration fixed.
|
|
* [FIX] Blocking pop on lists now works when the list is created by commands
|
|
other than *PUSH* (for example SORT STORE).
|
|
|
|
>> Cluster changes
|
|
|
|
* [FIX] CRITICAL: For a bug in the implementation of CLUSTER SET-CONFIG-EPOCH
|
|
introduced with beta-3 (especially beta-4 where the command
|
|
is actually used by redis-trib), a configEpoch for a node could
|
|
jump backward, breaking the eventual consistency property of the
|
|
slots -> nodes mapping in the cluster.
|
|
|
|
>> Sentinel changes
|
|
|
|
* No changes for Sentinel in this release.
|
|
|
|
--[ Redis 3.0.0 Beta 5 (version 2.9.54) ] Release date: 26 may 2014
|
|
|
|
This is the 5th beta of Redis 3.0.0. It does not include any real
|
|
worthwhile change (just three days passed since the previous beta), but
|
|
fixes two stupid bugs preventing cluster tests to pass.
|
|
|
|
--[ Redis 3.0.0 Beta 4 (version 2.9.53) ] Release date: 23 may 2014
|
|
|
|
This is the fourth beta of Redis 3.0.0.
|
|
|
|
>> General changes
|
|
|
|
* [NEW] Scripting engine performances improvements.
|
|
* [NEW] Log format slightly changed to report current node role.
|
|
|
|
* [FIX] Correct the HyperLogLog stale cache flag to prevent unnecessary
|
|
computation.
|
|
|
|
>> Cluster changes
|
|
|
|
* [NEW] redis-trib: ability to import data from standalone Redis instances.
|
|
* [NEW] redis-trib: "fix" subcommand much better at fixing errors.
|
|
* [NEW] CLUSTER FAILOVER FORCE implemented.
|
|
* [NEW] CLUSTER RESET implemented, it is now possible to completely reset
|
|
nodes and create a new cluster without restarting anything.
|
|
* [NEW] Slave validity factor (max estimated data age to still failover)
|
|
is now under the control of the user, and can be configured via
|
|
redis.conf or CONFIG SET. Option name cluster-slave-validity-factor.
|
|
* [NEW] Cluster test: failure detection and failover initial tests.
|
|
* [NEW] CLUSTER MEET: better error messages when address is invalid.
|
|
* [NEW] Bulk-accept new Cluster nodes in the Cluster bus instead of
|
|
performing just a single accept() per event fired.
|
|
|
|
* [FIX] Bypass data_age check for manual failovers.
|
|
* [FIX] Fixed data_age computation / check integer overflow.
|
|
* [FIX] Various fixes to Tcl client.tcl Redis Cluster client used in tests.
|
|
* [FIX] Better handling of stolen slots.
|
|
* [FIX] Don't accept cluster bus connections during startup.
|
|
|
|
>> Sentinel changes
|
|
|
|
* [NEW] Generate +config-update-from event when a new config is received.
|
|
* [NEW] Log when a failover will be re-attempted again.
|
|
|
|
* [FIX] Sentinel: Add "dir /tmp" directive in example sentinel.conf.
|
|
|
|
--[ Redis 3.0.0 Beta 3 (version 2.9.52) ] Release date: 5 may 2014
|
|
|
|
This is the third beta of Redis 3.0.0.
|
|
|
|
>> General changes
|
|
|
|
* [NEW] New data structure: the HyperLogLog (see 2.8 release notes).
|
|
* [NEW] Lexicograhical range queries in sorted sets (see 2.8 release notes).
|
|
* [NEW] LRU algorithm precision greatly improved.
|
|
|
|
* [FIX] Redis is now much more responsive to reply with LOADING / BUSY errors.
|
|
|
|
>> Cluster changes
|
|
|
|
* [NEW] Cluster testing framework and initial tests.
|
|
* [NEW] Cluster epochs collision resolution (make Redis Cluster more resilient
|
|
to admin and programming errors).
|
|
* [NEW] Persist / fsync some global state to ensure correct crash-recovery
|
|
semantics.
|
|
* [NEW] New command introduced: CLUSTER SET-CONFIG-EPOCH, still not used
|
|
by redis-trib. Will be used to speedup the assignment of unique
|
|
epochs to different nodes at cluster creation time. For now this is
|
|
handled as a side effect of the cluster epochs collision resolution.
|
|
|
|
* [FIX] Different fixes to redis-trib cluster creation.
|
|
* [FIX] Fix an error in the CLUSTER NODES output for nodes slots.
|
|
|
|
>> Sentinel changes
|
|
|
|
* [NEW] Sentinels are now able to send update messages in a peer-to-peer
|
|
fashion even if no Redis instances are available. Now the Sentinel
|
|
liveness property that the most updated configuration in a given
|
|
partition is propagated to all the Sentinels is extended to partitions
|
|
without reachable instances.
|
|
* [NEW] Sentinel safety properties are now ensured in a crash-recovery system
|
|
model since some state is persisted on disk before replying to other
|
|
nodes, and reloaded at startup.
|
|
* [NEW] Sentinel now uses CLIENT SETNAME so that it is easy to identify
|
|
Sentinels using CLIENT LIST among other clients.
|
|
* [NEW] Sentinel failure detection and reconnection code improved.
|
|
|
|
--[ Redis 3.0.0 Beta 2 (version 2.9.51) ] Release date: 11 mar 2014
|
|
|
|
This is the second beta of Redis 3.0.0.
|
|
|
|
>> General changes
|
|
|
|
* [FIX] Sometimes the absolute config file path was obtained in a wrong way.
|
|
This happened when there was a "dir" directive inside the config file
|
|
and at the same time the configuration file was given as a relative
|
|
path to redis-server or redis-sentinel executables.
|
|
* [FIX] redis-cli: Automatically enter --slave mode when SYNC or PSYNC are
|
|
called during an interactive session.
|
|
* [FIX] BITCOUNT: fixed unaligned access causing issues in sparc and other
|
|
archs not capable of dealing with unaligned accesses. This also makes
|
|
the code faster in archs where unaligned accesses are allowed.
|
|
* [FIX] Force INFO used_memory_peak to match peak memory. This generated some
|
|
confusion among users even if it was not an actual bug.
|
|
* [FIX] Fixed an critical EVALSHA script cache bug: scripts executed may not
|
|
propagate to AOF / Slaves correctly under certain conditions.
|
|
See issue #1549 at Github for more information.
|
|
* [FIX] Fixed multiple bugs resulting into closing the link with master or slave
|
|
during replication without good reasons. This will result in useless
|
|
resynchronizations, or infinite loops where the replication link can't
|
|
be established.
|
|
* [FIX] Don't count the time needed to populate the buffers of clients waiting
|
|
in MONITOR mode when populating the Slow Log entries.
|
|
|
|
* [NEW] Redis-cli updated to use SCAN instead of random sampling via
|
|
RANDOMKEY in order to implement --bigkeys feature. Moreover the
|
|
implementation now supports pipelining and reports more information
|
|
at the end of the scan. Much faster, much better. A special thank
|
|
you to Michael Grunder for this improvement.
|
|
* [NEW] redis-cli now supports a new --intrinsic-latency mode that is able
|
|
to meter the latency of a system due to kernel / hypervisor.
|
|
How to use it is explained at http://redis.io/topics/latency.
|
|
* [NEW] New command BITPOS: find first bit set or clear in a bitmap.
|
|
* [NEW] CONFIG REWRITE calls are now logged.
|
|
* [NEW] AOF write errors (like no space on device) no longer abort Redis if the
|
|
fsync policy is none or every second. The database enters a read-only
|
|
mode where every write is refused with an error. Normal operations are
|
|
restored as soon as Redis is able to append again data to the AOF file.
|
|
* [NEW] Sentinel now accepts SHUTDOWN command.
|
|
|
|
|
|
>> Cluster changes
|
|
|
|
* [FIX] Bind the first interface listed in the "bind" configuration directive
|
|
if any, in order to perform outgoing connections. This fixes Cluster
|
|
usage when an address is bound but there are multiple interfaces that
|
|
may be used to connect with other nodes.
|
|
* [FIX] When an "Importing" slot is closed via CLUSTER SETSLOT NODE ...
|
|
increment the configEpoch in the special case it is zero.
|
|
* [FIX] Current transaction is invalidated on redirection errors.
|
|
* [FIX] Abort if port does not allow for a valid cluster bus port that is
|
|
always at fixed +10000 offset.
|
|
* [FIX] Keys extraction algorithm fixed for ZUNIONSTORE/ZINTERSTORE and SORT.
|
|
* [FIX] Better failover timeout and retry times: failover should now work
|
|
reliabily when node-timeout is very small (a few milliseconds).
|
|
* [FIX] Don't allow SORT GET/BY options in Cluster mode.
|
|
* [FIX] Clear importing/migrating state when turning from master to slave role.
|
|
* [FIX] Set slot error if we receive an update for a busy slot.
|
|
* [FIX] Update node configEpoch on UPDATE messages.
|
|
|
|
* [NEW] Support multi-key operations as long as keys resolve to the same
|
|
hash slot, and the slot is not migrating, or it is migrating but all
|
|
the mentioned keys are available.
|
|
* [NEW] New DEBUG command CMDKEYS available to debug / test keys identification
|
|
in Redis commands.
|
|
* [NEW] redis-trib: create subcommand is now able to assign spare slaves.
|
|
* [NEW] redis-trib: new subcommand 'call'. Exec command in all nodes.
|
|
|
|
|
|
>> Sentinel changes
|
|
|
|
* [FIX] Sentinel "IDONTKNOW" error removed as it does not made sense with the
|
|
new Sentinel design. This error was actually a fix for a design error
|
|
in the first implementation of Sentinel.
|
|
* [FIX] Sentinel: added a missing exit() call to abort after config file
|
|
checks at startup. This error was introduced with an improvement in
|
|
a previous 2.8 release.
|
|
* [FIX] Sentinel: better nodes fail over start time desynchronization to avoid
|
|
split-brain during the voting process needed to get authorization to
|
|
fail over. This means the system is less likely to need to retry
|
|
and will fail over faster. No changes in behavior / correctness.
|
|
|
|
* [NEW] Sentinel unit tests and framework. More tests needed and units must
|
|
be improved in order to have less false positives, but it is a start
|
|
and features a debugging console that is useful to fix tests or to
|
|
inspect bugs causing tests failures.
|
|
* [NEW] New Sentinel events: +/-monitor and +set used to monitor when an
|
|
instance to monitor is added or removed, or when a configuration
|
|
is modified via SENTINEL SET.
|
|
|
|
--[ Redis 3.0.0 Beta 1 (version 2.9.50) ] Release date: 11 Feb 2014
|
|
|
|
This is the first beta of Redis 3.0.0.
|
|
|
|
The following is a list of improvements in Redis 3.0, compared to Redis 2.8.
|
|
|
|
* [NEW] Redis Cluster: a distributed implementation of a subset of Redis.
|
|
* [NEW] New "embedded string" object encoding resulting in less cache
|
|
misses. Big speed gain under certain work loads.
|
|
* [NEW] WAIT command to block waiting for a write to be transmitted to
|
|
the specified number of slaves.
|
|
* [NEW] MIGRATE connection caching. Much faster keys migraitons.
|
|
* [NEW] MIGARTE new options COPY and REPLACE.
|
|
* [NEW] CLIENT PAUSE command: stop processing client requests for a
|
|
specified amount of time.
|
|
|
|
Migrating from 2.8 to 3.0
|
|
=========================
|
|
|
|
Redis 3.0 is mostly a strict subset of 2.8, you should not have any problem
|
|
upgrading your application from 2.8 to 3.0. However this is a list of small
|
|
non-backward compatible changes introduced in the 3.0 release:
|
|
|
|
* The log format was modified. The prefix of each line included the pid
|
|
in the following format [1234]. Now instead it is 1234:? Where
|
|
'?' is actually the role of the instance. M for master, S for slave, C
|
|
if this process is a saving child (for RDB/AOF), and X for Sentinel.
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
Credits: Where not specified the implementation and design is done by
|
|
Salvatore Sanfilippo. Thanks to Pivotal for making all this possible.
|
|
Also many thanks to all the other contributors and the amazing community
|
|
we have.
|
|
|
|
See commit messages for more credits.
|
|
|
|
Cheers,
|
|
Salvatore
|