Commit Graph

245 Commits

Author SHA1 Message Date
antirez
ba864e09d4 Comments about security of slave-read-only in redis.coinf. 2012-03-21 12:26:05 +01:00
antirez
f3fd419fc9 Support for read-only slaves. Semantical fixes.
This commit introduces support for read only slaves via redis.conf and CONFIG GET/SET commands. Also various semantical fixes are implemented here:

1) MULTI/EXEC with only read commands now work where the server is into a state where writes (or commands increasing memory usage) are not allowed. Before this patch everything inside a transaction would fail in this conditions.

2) Scripts just calling read-only commands will work against read only
slaves, when the server is out of memory, or when persistence is into an
error condition. Before the patch EVAL always failed in this condition.
2012-03-20 17:32:48 +01:00
quiver
96e9f8d5e3 fix typo of redis.conf 2012-03-10 21:09:34 +09:00
antirez
8562798308 Merge conflicts resolved. 2012-03-09 22:07:45 +01:00
antirez
4d3bbf3590 By default Redis refuses writes with an error if the latest BGSAVE failed (and at least one save point is configured). However people having good monitoring systems may prefer a server that continues to work, since they are notified that there are problems by their monitoring systems. This commit implements the ability to turn the feature on or off via redis.conf and CONFIG SET. 2012-03-07 18:02:26 +01:00
antirez
f9ef912c66 more practical maxmemory+slaves hint in redis.conf 2012-02-08 00:20:46 +01:00
antirez
cebb7b92ce redis.conf updated with new maxmemory semantics 2012-02-08 00:17:27 +01:00
Pieter Noordhuis
d3ea4c86a8 Update default configuration 2012-01-25 13:37:43 -08:00
antirez
3cbce4f45e redis.conf typo fixed in the client-output-buffer-limit documentation 2012-01-24 14:46:23 +01:00
antirez
c8a607f2b6 client-output-buffer-limit documented in redis.conf 2012-01-24 11:23:23 +01:00
antirez
f7ccc4830b Merge remote-tracking branch 'origin/unstable' into unstable 2012-01-16 16:50:41 +01:00
antirez
4aac3ff247 It is now posible to flush all the previous saving points in redis.conf by using a save directive with a single empty string argument, like it happens for CONFIG SET save. 2012-01-16 16:50:24 +01:00
Kashif Rasul
57c0cf8b85 Fixed some typos in redis.conf. 2011-12-28 22:14:23 +01:00
diegok
ce6628dae7 Fixed a config docs typo. 2011-12-22 12:22:23 +01:00
antirez
c6f9ee88fa default log level is now notice. 2011-11-30 15:04:40 +01:00
Jérémy Bethmont
92a157eae5 Fixed a typo in comments. 2011-11-21 09:38:14 +08:00
antirez
0b14e44118 redis.conf updated to reflect the new scripting timeout semantics. 2011-11-18 16:29:22 +01:00
antirez
aba4adb7dc use timeout 0 by default, as this is a common source of problems. 2011-10-31 15:43:09 +01:00
antirez
85ccd57632 added more clarifications in redis.conf about ther right value to set as replication timeout. 2011-10-31 11:17:21 +01:00
Herbert G. Fischer
f15e33a884 fixed typo in comments 2011-10-31 11:13:37 +01:00
antirez
8996bf7720 7c6da73 2011-10-31 11:13:28 +01:00
antirez
58732c23d5 maxclients configuration is now implemented dealing with the actual process rlimits. Setting maxclients to 0 no longer makes sense and is now invalid, the new default is 10000.
See issue #162 for more information.
2011-10-31 10:49:27 +01:00
antirez
115e3ff39e If a Lua script executes for more time than the max time specified in the configuration Redis will log a warning, and will start accepting queries (re-entering the event loop), returning -SLOWSCRIPT error for all the commands but SHUTDOWN that remains callable. 2011-10-27 14:49:10 +02:00
Nathan Florea
8523876503 Added a config directive for a Unix socket mask
Added a configuration directive to allow a user to specify the
permissions to be granted to the Unix socket file.  I followed
the format Pieter and Salvatore discusses in issue #85 (
https://github.com/antirez/redis/issues/85).
2011-10-10 11:21:15 -07:00
antirez
07c152a7bd cluster config file entries added to the example configuration file 2011-09-28 15:55:52 +02:00
antirez
0681c5ad84 master branch merged into scripting. 2011-07-12 12:39:16 +02:00
antirez
208092ad70 Fixed typo in redis.conf related to slow log parameters 2011-07-03 15:49:49 +02:00
antirez
de32c37c06 More redis.conf self-documentation. Now even queries that took exactly server.slow_log_slower_than are logged, as this is not exact but is more intuitive for people, and a value of 0 will force every query to be logged. 2011-06-30 15:54:05 +02:00
antirez
35a6044140 slow log configuration implemented 2011-06-30 15:47:15 +02:00
antirez
994ed2bc55 unstable merge conflicts resolved 2011-06-25 12:29:24 +02:00
antirez
c9d0c3623a diskstore removed 2011-06-25 12:22:03 +02:00
antirez
0d1650f8a9 Updated to unstable 2011-06-14 18:06:39 +02:00
antirez
b333e23997 automatic AOF rewrite first implementation. Still to be tested. 2011-06-10 12:39:23 +02:00
antirez
eeffcf380f Lua scripts max execution time 2011-05-25 12:32:48 +02:00
Pieter Noordhuis
3ea204e103 Configurable thresholds for encoded sorted sets 2011-03-09 14:01:57 +01:00
antirez
68d6345ddf If port zero is specified, Redis will not listen for TCP connections 2011-02-07 12:52:01 +01:00
antirez
b8cfcea424 default hash encoding settings also fixed in redis.conf 2011-01-15 22:31:07 +01:00
Pieter Noordhuis
a2b33f2f93 Remove glueoutputbuf from redis.conf 2011-01-05 10:42:37 +01:00
antirez
aa81e4d5f4 minor changes to doc and comments 2010-12-31 18:23:31 +01:00
antirez
6a246b1e7e special encoding limits redefined, and all the config options for special encodings added in the example redis.conf file 2010-12-14 18:23:52 +01:00
Jonah H. Harris
e1a586ee69 syslog support 2010-12-09 11:10:21 -05:00
antirez
5402c4262e added noeviction policy to redis maxmemory. ZSCORE removed from the list of commands that can't be called when we are low on memory, this command was added in the past for a stupid error. 2010-11-08 16:12:16 +01:00
antirez
4ebfc45528 config option to select if when replication link with master a slave should or not serve stale data 2010-11-04 19:59:21 +01:00
antirez
8d3e063a0a added support for command renaming/suppression in redis.conf 2010-11-03 12:14:36 +01:00
antirez
0a546fc017 Merge remote branch 'pietern/unixsocket' 2010-11-02 23:47:52 +01:00
antirez
a36879293d maxmemory-samples implemented in CONFIG command and configuration file 2010-10-15 11:57:38 +02:00
antirez
165346ca29 implemented different algorithms for maxmemory 2010-10-14 21:22:21 +02:00
Pieter Noordhuis
893819801d Remove disabling TCP with port -1 2010-10-13 17:18:58 +02:00
Pieter Noordhuis
5d10923f7b Rename variable sockpath to unixsocket 2010-10-13 17:17:56 +02:00
Pieter Noordhuis
a5639e7dd9 Change initialization to allow listening on both a port and socket 2010-08-03 13:33:12 +02:00
antirez
d5d23dabd7 redis.conf new features the new option, a minor typo preventing the compilation fixed 2010-05-28 10:48:04 +02:00
antirez
9682a58fca conflicts resolved 2010-05-13 14:24:41 +02:00
antirez
1b67773229 CONFIG now can change appendfsync policy at run time 2010-05-10 20:56:54 +02:00
Pieter Noordhuis
f3b52411db make append only filename configurable 2010-05-07 11:55:12 +02:00
antirez
a0e7e5f516 swap file name pid expansion removed. Not suited for mission critical software... 2010-05-07 09:36:37 +02:00
antirez
029245feac clarified a few messages in redis.conf 2010-05-06 18:04:51 +02:00
antirez
723240057a new units for bytes specification 2010-04-22 15:09:07 +02:00
antirez
8ca3e9d10b Active rehashing 2010-04-15 18:07:57 +02:00
antirez
bdcb92f273 shareobjects feautres killed - no gains most of the time, but VM complexities 2010-04-09 17:13:39 +02:00
antirez
4005fef124 Now PUBLISH commands are replicated to slaves 2010-04-02 16:42:15 +02:00
Jeremy Zawodny
b3f83f1272 support for include directive in config parser 2010-03-19 22:24:17 -07:00
antirez
cbba7dd7c9 HSET fixes, now the new pointer is stored back in the object pointer field 2010-03-07 23:41:48 +01:00
antirez
5921aa36ed Bug #169 fixed (BLOP/BRPOP interrupted connections are not cleared from the queue) 2010-02-27 12:26:08 +01:00
antirez
ce8330208a Saner VM defaults for redis.conf 2010-02-10 15:59:09 +01:00
antirez
6766f45ef2 multi bulk requests in redis-benchmark, default fsync policy changed to everysec, added a prefix character for DEBUG logs 2010-02-06 13:39:07 +01:00
antirez
054e426dbd support for named VM swap file. Fixed a few important interaction issues between the background saving processes and IO threads 2010-01-15 13:14:23 -05:00
antirez
72e9fd40b6 support for blocking VM in config file 2010-01-12 15:23:52 -05:00
antirez
92f8e88204 non-blocking VM data structures, just a start 2010-01-09 12:46:52 -05:00
antirez
c9e5c23d5b vm-enabled set to no by default in redis.conf 2010-01-06 21:05:03 -05:00
antirez
38aba9a121 a new default redis.conf 2010-01-06 21:03:16 -05:00
antirez
7d98e08c0a VM stats in INFO command 2010-01-06 20:14:27 -05:00
antirez
f870935d3e 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-06 09:15:17 -05:00
antirez
e7546c6393 BGREWRITEAOF now works with swapping on 2010-01-05 19:15:15 -05:00
antirez
4ef8de8ad7 basic VM mostly working! 2010-01-05 12:46:59 -05:00
antirez
a35ddf129c more object-level VM primitives 2010-01-05 07:19:09 -05:00
antirez
b055378971 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 15:48:57 -05:00
antirez
121f70cfae lzf compression switched off by default now, with config file option to enable it in redis.conf 2009-12-16 11:28:41 -05:00
antirez
49b99ab43e 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 16:52:43 +01:00
antirez
3f477979b3 TODO list modified. What's planned for 1.4 is now written in the stone ;) 2009-12-12 19:42:42 +01:00
antirez
4e141d5a21 append only mode is now able to translate EXPIRE into EXPIREAT transparently 2009-10-30 17:20:24 +01:00
antirez
0154acdc57 appendfsync is now set to NO by default 2009-10-30 16:35:16 +01:00
antirez
48f0308ad3 support for appendonly mode no, always, everysec 2009-10-30 13:48:53 +01:00
antirez
44b38ef432 Initial implementation of append-only mode. Loading still not implemented. 2009-10-30 01:04:17 +01:00
antirez
e52c65b90a shareobjectspoolsize implemented in reds.conf, in order to control the pool size when object sharing is on 2009-06-03 16:01:32 +02:00
antirez
144d479b7c minor fix for Solaris boxes 2009-05-28 18:25:22 +02:00
antirez
3fd78bcd45 maxmemory implemented 2009-05-27 22:53:20 +02:00
antirez
285add5558 maxclients implemented, see redis.conf for details 2009-05-25 23:29:18 +02:00
Aman Gupta
0150db364d Allow timeout=0 config to disable client timeouts 2009-05-19 22:36:11 -07:00
antirez
b8b553c84f ability to specify a different file name for the DB 2009-04-27 18:10:00 +02:00
antirez
290deb8b8c TODO changes, minor change to default redis.conf 2009-04-08 13:46:26 +02:00
antirez
f2aa84bd63 Lua client added thanks to Daniele Alessandri 2009-03-26 17:23:51 +01:00
Brian Hammond
abcb223ec0 Adds AUTH command.
$ make
cc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  adlist.c
cc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  ae.c
cc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  anet.c
cc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  dict.c
cc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  redis.c
cc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  sds.c
cc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  zmalloc.c
cc -o redis-server -O2 -Wall -W -DSDS_ABORT_ON_OOM -g adlist.o ae.o anet.o dict.o redis.o sds.o zmalloc.o

Hint: To run the test-redis.tcl script is a good idea.
Launch the redis server with ./redis-server, then in another
terminal window enter this directory and run 'make test'.

cc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  benchmark.c
cc -o redis-benchmark -O2 -Wall -W -DSDS_ABORT_ON_OOM -g ae.o anet.o benchmark.o sds.o adlist.o zmalloc.o
cc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  redis-cli.c
cc -o redis-cli -O2 -Wall -W -DSDS_ABORT_ON_OOM -g anet.o sds.o adlist.o redis-cli.o zmalloc.o

$ tail -1 redis.conf

$ ./redis-server redis.conf &
[1] 52494
$ - Server started, Redis version 0.08
- DB loaded from disk
- The server is now ready to accept connections on port 6379
. 0 clients connected (0 slaves), 1932 bytes in use

$ make test
tclsh test-redis.tcl
DEL all keys to start with a clean DB                                  . Accepted 127.0.0.1:54490
PASSED
SET and GET an item                                                    PASSED
DEL against a single item                                              PASSED
KEYS with pattern                                                      PASSED
KEYS to get all keys                                                   PASSED
DBSIZE                                                                 PASSED
DEL all keys                                                           PASSED
Very big payload in GET/SET                                            PASSED
SET 10000 numeric keys and access all them in reverse order            . DB 0: 10001 keys in 16384 slots HT.
. 1 clients connected (0 slaves), 4885707 bytes in use
PASSED
DBSIZE should be 10001 now                                             PASSED
INCR against non existing key                                          PASSED
INCR against key created by incr itself                                PASSED
INCR against key originally set with SET                               PASSED
SETNX target key missing                                               PASSED
SETNX target key exists                                                PASSED
EXISTS                                                                 PASSED
Zero length value in key. SET/GET/EXISTS                               PASSED
Commands pipelining                                                    PASSED
Non existing command                                                   PASSED
Basic LPUSH, RPUSH, LLENGTH, LINDEX                                    PASSED
DEL a list                                                             PASSED
Create a long list and check every single element with LINDEX          PASSED
Test elements with LINDEX in random access                             PASSED
LLEN against non-list value error                                      PASSED
LINDEX against non-list value error                                    PASSED
LPUSH against non-list value error                                     PASSED
RPUSH against non-list value error                                     PASSED
RENAME basic usage                                                     PASSED
RENAME source key should no longer exist                               PASSED
RENAME against already existing key                                    PASSED
RENAMENX basic usage                                                   PASSED
RENAMENX against already existing key                                  PASSED
RENAMENX against already existing key (2)                              PASSED
RENAME against non existing source key                                 PASSED
RENAME where source and dest key is the same                           PASSED
DEL all keys again (DB 0)                                              PASSED
DEL all keys again (DB 1)                                              PASSED
MOVE basic usage                                                       PASSED
MOVE against key existing in the target DB                             PASSED
SET/GET keys in different DBs                                          PASSED
Basic LPOP/RPOP                                                        PASSED
LPOP/RPOP against empty list                                           PASSED
LPOP against non list value                                            PASSED
Mass LPUSH/LPOP                                                        PASSED
LRANGE basics                                                          PASSED
LRANGE inverted indexes                                                PASSED
LRANGE out of range indexes including the full list                    PASSED
LRANGE against non existing key                                        PASSED
LTRIM basics                                                           PASSED
LSET                                                                   PASSED
LSET out of range index                                                PASSED
LSET against non existing key                                          PASSED
LSET against non list value                                            PASSED
SADD, SCARD, SISMEMBER, SMEMBERS basics                                PASSED
SADD adding the same element multiple times                            PASSED
SADD against non set                                                   PASSED
SREM basics                                                            PASSED
Mass SADD and SINTER with two sets                                     PASSED
SINTERSTORE with two sets                                              PASSED
SINTER against three sets                                              PASSED
SINTERSTORE with three sets                                            PASSED
SAVE - make sure there are all the types as values                     - DB saved on disk
PASSED
Create a random list                                                   . DB 0: 6057 keys in 16384 slots HT.
. DB 1: 3 keys in 16 slots HT.
. 1 clients connected (0 slaves), 1045147 bytes in use
PASSED
SORT with BY against the newly created list                            PASSED
SORT direct, numeric, against the newly created list                   PASSED
SORT decreasing sort                                                   PASSED
SORT speed, sorting 10000 elements list using BY, 100 times
  Average time to sort: 5.28 milliseconds PASSED
SORT speed, sorting 10000 elements list directly, 100 times
  Average time to sort: 1.53 milliseconds PASSED
SORT speed, pseudo-sorting 10000 elements list, BY <const>, 100 times
  Average time to sort: 0.47 milliseconds PASSED
SORT regression for issue #19, sorting floats                          - DB saved on disk
PASSED
LREM, remove all the occurrences                                       - DB saved on disk
PASSED
LREM, remove the first occurrence                                      PASSED
LREM, remove non existing element                                      PASSED
LREM, starting from tail with negative count                           - DB saved on disk
PASSED
LREM, starting from tail with negative count (2)                       PASSED
MGET                                                                   - DB saved on disk
PASSED
MGET against non existing key                                          PASSED
MGET against non-string key                                            PASSED
FLUSHALL                                                               - DB saved on disk
PASSED

79 tests, 79 passed, 0 failed
. Client closed connection
. 0 clients connected (0 slaves), 1347660 bytes in use

$ kill -15 %1
[1]+  Terminated              ./redis-server redis.conf

$ vim redis.conf

$ tail -1 redis.conf
requirepass foobared

$ ./redis-server redis.conf &
[1] 52518
$ - Server started, Redis version 0.08
- DB loaded from disk
- The server is now ready to accept connections on port 6379
. 0 clients connected (0 slaves), 1945 bytes in use

$ make test
tclsh test-redis.tcl
. Accepted 127.0.0.1:54492
DEL all keys to start with a clean DB

ERR operation not permitted

    while executing
"::redis::redis_read_reply $fd"
    (procedure "::redis::__dispatch__" line 13)
    invoked from within
"$r keys *"
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $code"
    (procedure "test" line 4)
    invoked from within
"test {DEL all keys to start with a clean DB} {
        foreach key [$r keys *] {$r del $key}
        $r dbsize
    } {0}"
    (procedure "main" line 13)
    invoked from within
"main 127.0.0.1 6379"
    invoked from within
"if {[llength $argv] == 0} {
    main 127.0.0.1 6379
} elseif {[llength $argv] == 1 && [lindex $argv 0] eq {stress}} {
    stress
} else {
    main [li..."
    (file "test-redis.tcl" line 630)
. Client closed connection
make: *** [test] Error 1
. 0 clients connected (0 slaves), 2041 bytes in use
. 0 clients connected (0 slaves), 2041 bytes in use

$ kill -15 %1
[1]+  Terminated              ./redis-server redis.conf

$ vim test-redis.tcl

$ git diff test-redis.tcl
2009-03-25 23:03:56 -04:00
antirez
10c43610de Nasty bug of the new DB format fixed, objects sharing implemented 2009-03-25 21:00:48 +01:00
Luc Heinrich
ed329fcf25 Allow to specify the pid file from the config file. 2009-03-23 12:31:33 +01:00
antirez
ed9b544e10 first commit 2009-03-22 10:30:00 +01:00