|
Revision tags: 8.0-m02, 6.2.16, 7.2.6, 7.4.1, 8.0-m01, 7.4.0, 7.4-rc2, 7.4-rc1, 7.2.5, 7.2.4, 7.0.15, 7.2.3, 7.2.2, 7.0.14, 6.2.14, 6.2.15, 7.2.1, 7.0.13, 7.2.0, 7.2-rc3, 7.0.12, 6.2.13, 6.0.20, 7.2-rc2, 6.0.19, 6.2.12, 7.0.11, 7.2-rc1, 7.0.10, 7.0.9, 6.2.11, 6.0.18, 6.2.10, 6.0.17, 6.2.9, 7.0.8, 7.0.7, 7.0.6, 6.2.8, 7.0.5, 7.0.4, 7.0.3, 7.0.2, 7.0.1, 7.0.0, 6.2.7, 7.0-rc3, 7.0-rc2, 7.0-rc1, 6.2.6, 6.0.16, 5.0.14, 5.0.13, 6.0.15, 6.2.5, 6.0.14, 6.2.4, 6.2.3, 6.0.13, 6.2.2, 6.2.1, 6.0.12, 5.0.12, 6.0.11, 6.2.0, 5.0.11, 6.2-rc3, 6.0.10, 6.2-rc2, 6.2-rc1, 6.0.9, 5.0.10, 6.0.8, 6.0.7, 6.0.6, 6.0.5, 6.0.4, 6.0.3, 6.0.2, 6.0.1, 6.0.0, 5.0.9, 6.0-rc4, 6.0-rc3, 5.0.8, 6.0-rc2, 6.0-rc1, 5.0.7, 5.0.6, 5.0.5, 3.2.13, 4.0.14, 5.0.4, 4.0.13, 5.0.3, 4.0.12, 5.0.2, 5.0.1, 5.0.0, 5.0-rc6, 5.0-rc5, 4.0.11, 5.0-rc4, 5.0-rc3, 5.0-rc2, 4.0.10, 3.2.12, 5.0-rc1, 4.0.9, 4.0.8, 4.0.7, 4.0.6, 4.0.5, 4.0.4, 4.0.3, 3.2.11, 4.0.2, 3.2.10, 4.0.1, 4.0.0, 3.2.9, 4.0-rc3, 3.2.8, 3.2.7, 3.2.6, 4.0-rc2, 4.0-rc1, 3.2.5, 3.2.4, 3.2.3, 3.2.2 |
|
| #
0a45fbc3 |
| 27-Jul-2016 |
antirez <[email protected]> |
Ability of slave to announce arbitrary ip/port to master.
This feature is useful, especially in deployments using Sentinel in order to setup Redis HA, where the slave is executed with NAT or port fo
Ability of slave to announce arbitrary ip/port to master.
This feature is useful, especially in deployments using Sentinel in order to setup Redis HA, where the slave is executed with NAT or port forwarding, so that the auto-detected port/ip addresses, as listed in the "INFO replication" output of the master, or as provided by the "ROLE" command, don't match the real addresses at which the slave is reachable for connections.
show more ...
|
| #
21cffc26 |
| 21-Jul-2016 |
antirez <[email protected]> |
Avoid simultaneous RDB and AOF child process.
This patch, written in collaboration with Oran Agra (@oranagra) is a companion to 780a8b1. Together the two patches should avoid that the AOF and RDB sa
Avoid simultaneous RDB and AOF child process.
This patch, written in collaboration with Oran Agra (@oranagra) is a companion to 780a8b1. Together the two patches should avoid that the AOF and RDB saving processes can be spawned at the same time. Previously conditions that could lead to two saving processes at the same time were:
1. When AOF is enabled via CONFIG SET and an RDB saving process is already active.
2. When the SYNC command decides to start an RDB saving process ASAP in order to serve a new slave that cannot partially resynchronize (but only if we have a disk target for replication, for diskless replication there is not such a problem).
Condition "1" is not very severe but "2" can happen often and is definitely good at degrading Redis performances in an unexpected way.
The two commits have the effect of always spawning RDB savings for replication in replicationCron() instead of attempting to start an RDB save synchronously. Moreover when a BGSAVE or AOF rewrite must be performed, they are instead just postponed using flags that will try to perform such operations ASAP.
Finally the BGSAVE command was modified in order to accept a SCHEDULE option so that if an AOF rewrite is in progress, when this option is given, the command no longer returns an error, but instead schedules an RDB rewrite operation for when it will be possible to start it.
show more ...
|
| #
35b18bfb |
| 01-Jul-2016 |
antirez <[email protected]> |
In Redis RDB check: better error reporting.
|
| #
f578f085 |
| 30-Jun-2016 |
antirez <[email protected]> |
In Redis RDB check: initial POC.
So far we used an external program (later executed within Redis) and parser in order to check RDB files for correctness. This forces, at each RDB format update, to h
In Redis RDB check: initial POC.
So far we used an external program (later executed within Redis) and parser in order to check RDB files for correctness. This forces, at each RDB format update, to have two copies of the same format implementation that are hard to keep in sync. Morover the former RDB checker only checked the very high-level format of the file, without actually trying to load things in memory. Certain corruptions can only be handled by really loading key-value pairs.
This first commit attempts to unify the Redis RDB loadig code with the task of checking the RDB file for correctness. More work is needed but it looks like a sounding direction so far.
show more ...
|
|
Revision tags: 3.2.1 |
|
| #
b23aa670 |
| 14-Jun-2016 |
antirez <[email protected]> |
TTL and TYPE LRU access fixed. TOUCH implemented.
|
| #
620783e3 |
| 28-May-2016 |
Itamar Haber <[email protected]> |
Allow SPOP from Lua scripts
The existing `R` flag appears to be sufficient and there's no apparent reason why the command should be blocked.
|
| #
60323407 |
| 09-May-2016 |
oranagra <[email protected]> |
minor fixes - mainly signalModifiedKey, and GEORADIUS
|
|
Revision tags: 3.2.0 |
|
| #
f01a2714 |
| 05-May-2016 |
antirez <[email protected]> |
Revert "Fix commandCommand arity"
This reverts commit 1189a4eae6d009fc0da8d50fd542ba1391542165.
Actually this is wrong, the command can be called without args at all.
|
|
Revision tags: 3.2.0-rc3, 3.0.7, 3.2.0-rc2 |
|
| #
1189a4ea |
| 04-Jan-2016 |
Ruben Bridgewater <[email protected]> |
Fix commandCommand arity
|
| #
708f486c |
| 05-May-2016 |
antirez <[email protected]> |
Cluster: make getNodeByQuery() responsible of -CLUSTERDOWN errors.
This fixes a bug introduced by d827dbf, and makes the code consistent with the logic of always allowing, while the cluster is down,
Cluster: make getNodeByQuery() responsible of -CLUSTERDOWN errors.
This fixes a bug introduced by d827dbf, and makes the code consistent with the logic of always allowing, while the cluster is down, commands that don't target any key.
As a side effect the code is also simpler now.
show more ...
|
| #
0fda0622 |
| 05-May-2016 |
antirez <[email protected]> |
Bind both IPv4 and IPv6 or exit with an error by default.
Thanks to @tushar2708 for the PR. I applied a slightly different fix. Thanks to @cespare for reporting.
Close #3024 Close #3020
|
| #
1f3ed652 |
| 11-Mar-2016 |
Chris Thunes <[email protected]> |
Ensure slots are rechecked on EXEC.
Fixes #2515.
|
| #
3a481067 |
| 22-Apr-2016 |
therealbill <[email protected]> |
fix for #3187
I've renamed maxmemoryToString to evictPolicyToString since that is more accurate (and easier to mentally connect with the correct data), as well as updated the function to user server
fix for #3187
I've renamed maxmemoryToString to evictPolicyToString since that is more accurate (and easier to mentally connect with the correct data), as well as updated the function to user server.maxmemory_policy rather than server.maxmemory. Now with a default config it is actually returning the correct policy rather than volatile-lru.
show more ...
|
| #
ae95de93 |
| 04-May-2016 |
antirez <[email protected]> |
Allow CONFIG GET during loading.
Thanks to @oranagra for the idea of allowing CONFIG GET during loading.
|
| #
3ff8f57e |
| 04-May-2016 |
antirez <[email protected]> |
Command "r" flag removed from commands not accessing the key space.
Thanks to @oranagra for the hint about misplaced 'r' flags.
|
| #
07b852d2 |
| 04-May-2016 |
antirez <[email protected]> |
DEBUG command self documentation.
|
| #
ba9154d7 |
| 02-Mar-2016 |
antirez <[email protected]> |
Fix INFO commandstats reporting when argv is rewritten.
We want to report the original command in the stats, for example GEOADD, even when what is actually executed is the ZADD implementation.
|
| #
761a7728 |
| 25-Feb-2016 |
antirez <[email protected]> |
BITFIELD command initial implementation.
The new bitfield command is an extension to the Redis bit operations, where not just single bit operations are performed, but the array of bits composing a s
BITFIELD command initial implementation.
The new bitfield command is an extension to the Redis bit operations, where not just single bit operations are performed, but the array of bits composing a string, can be addressed at random, not aligned offsets, with any width unsigned and signed integers like u8, s5, u10 (up to 64 bit signed integers and 63 bit unsigned integers).
The BITFIELD command supports subcommands that can SET, GET, or INCRBY those arbitrary bit counters, with multiple overflow semantics.
Trivial and credits:
A similar command was imagined a few times in the past, but for some reason looked a bit far fetched or not well specified. Finally the command was proposed again in a clear form by Yoav Steinberg from Redis Labs, that proposed a set of commands on arbitrary sized integers stored at bit offsets.
Starting from this proposal I wrote an initial specification of a single command with sub-commands similar to what Yoav envisioned, using short names for types definitions, and adding control on the overflow.
This commit is the resulting implementation.
Examples:
BITFIELD mykey OVERFLOW wrap INCRBY i2 10 -1 GET i2 10
show more ...
|
| #
0b6daf5a |
| 18-Feb-2016 |
antirez <[email protected]> |
New options for GEORADIUS: STORE and STOREDIST.
Related to issue #3019.
|
| #
cd9f7c69 |
| 03-Feb-2016 |
Itamar Haber <[email protected]> |
Fixes a typo
|
| #
b81fb9cd |
| 26-Jan-2016 |
antirez <[email protected]> |
Use a smoother running average for avg_ttl in INFO.
Reported here: https://www.reddit.com/r/redis/comments/42r0i0/avg_ttl_varies_a_lot/
|
| #
273c49e7 |
| 07-Jan-2016 |
antirez <[email protected]> |
New security feature: Redis protected mode.
An exposed Redis instance on the internet can be cause of serious issues. Since Redis, by default, binds to all the interfaces, it is easy to forget an in
New security feature: Redis protected mode.
An exposed Redis instance on the internet can be cause of serious issues. Since Redis, by default, binds to all the interfaces, it is easy to forget an instance without any protection layer, for error.
Protected mode try to address this feature in a soft way, providing a layer of protection, but giving clues to Redis users about why the server is not accepting connections.
When protected mode is enabeld (the default), and if there are no minumum hints about the fact the server is properly configured (no "bind" directive is used in order to restrict the server to certain interfaces, nor a password is set), clients connecting from external intefaces are refused with an error explaining what to do in order to fix the issue.
Clients connecting from the IPv4 and IPv6 lookback interfaces are still accepted normally, similarly Unix domain socket connections are not restricted in any way.
show more ...
|
|
Revision tags: 3.2-rc1, 3.0.6, 2.8.24 |
|
| #
7a7e46b2 |
| 17-Dec-2015 |
antirez <[email protected]> |
Fix a race that may lead to the active (slave) client to be freed.
In issue #2948 a crash was reported in processCommand(). Later Oran Agra (@oranagra) traced the bug (in private chat) in the follow
Fix a race that may lead to the active (slave) client to be freed.
In issue #2948 a crash was reported in processCommand(). Later Oran Agra (@oranagra) traced the bug (in private chat) in the following sequence of events:
1. Some maxmemory is set. 2. The slave is the currently active client and is executing PING or REPLCONF or whatever a slave can send to its master. 3. freeMemoryIfNeeded() is called since maxmemory is set. 4. flushSlavesOutputBuffers() is called by freeMemoryIfNeeded(). 5. During slaves buffers flush, a write error could be encoutered in writeToClient() or sendReplyToClient() depending on the version of Redis. This will trigger freeClient() against the currently active client, so a segmentation fault will likely happen in processCommand() immediately after the call to freeMemoryIfNeeded().
There are different possible fixes:
1. Add flags to writeToClient() (recent versions code base) so that we can ignore the write errors, and use this flag in flushSlavesOutputBuffers(). However this is not simple to do in older versions of Redis. 2. Use freeClientAsync() during write errors. This works but changes the current behavior of releasing clients ASAP when possible. Normally we write to clients during the normal event loop processing, in the writable client, where there is no active client, so no care must be taken. 3. The fix of this commit: to detect that the current client is no longer valid. This fix is a bit "ad-hoc", but works across all the versions and has the advantage of not changing the remaining behavior. Only alters what happens during this race condition, hopefully.
show more ...
|
| #
f50dfff0 |
| 17-Dec-2015 |
antirez <[email protected]> |
Fix processCommand() comment about return value.
|
| #
00353f99 |
| 11-Dec-2015 |
antirez <[email protected]> |
MIGRATE: Fix key extraction for new form.
|