Commit Graph

550 Commits

Author SHA1 Message Date
antirez
93ea375904 Infinite number of arguments for MGET and all the other commands 2009-05-06 23:54:57 +02:00
antirez
0bc0337896 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-05-04 16:26:06 +02:00
antirez
dec423d9cf fixed for HT resize check 32bits overflow 2009-04-29 16:50:48 +02:00
antirez
5a7c647e9a Check for fork() failure in background saving 2009-04-29 10:33:29 +02:00
antirez
3a2694c441 fix for the LZF off-by-one bug added 2009-04-29 01:04:04 +02:00
antirez
b284af55d8 print bytes used at exit on SHUTDOWN 2009-04-28 22:04:41 +02:00
antirez
a4460ef43f SMOVE command implemented 2009-04-28 20:36:08 +02:00
antirez
bb0b03a3d7 less CPU usage in command parsing, case insensitive config directives 2009-04-28 16:54:56 +02:00
antirez
a431eb74ba GETSET implemented 2009-04-28 14:42:55 +02:00
antirez
b8b553c84f ability to specify a different file name for the DB 2009-04-27 18:10:00 +02:00
antirez
85dd2f3ad2 log file parsing code improved a bit 2009-04-27 18:03:34 +02:00
antirez
be2bb6b07e bgsave_in_progress field in INFO output 2009-04-27 17:52:04 +02:00
antirez
d68ed1201a INCRBY/DECRBY now support 64bit increments, with tests 2009-04-27 17:50:26 +02:00
antirez
ca37e9cde8 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-22 01:44:48 +02:00
antirez
6208b3a776 Non blocking replication (finally!). C-side linked lists API improved. 2009-04-20 23:51:51 +02:00
antirez
40d224a9e3 SUNION, SUNIONSTORE, Initial work on non blocking replication 2009-04-19 10:02:36 +02:00
antirez
6bea3d5f58 Redis 0.091 released 2009-04-10 13:49:50 +02:00
antirez
5faa6025f5 SINTER/SINTERSTORE/SLEMENTS fix: misisng keys are now not errors, but just like empty sets 2009-04-10 13:43:41 +02:00
Bob Potter
5a6e8b1daa Rearrange redisObject struct to reduce memory usage in 64bit environments (as recommended http://groups.google.com/group/redis-db/msg/68f5a743f8f4e287) 2009-04-07 18:40:33 -05:00
Bob Potter
5fba9f717b 64bit fixes for usedmemory 2009-04-07 18:33:44 -05:00
antirez
ce7bef0795 RANDOMKEY issue 26 fixed, generic test + regression added 2009-04-08 00:59:53 +02:00
antirez
05557f6de7 Don't accept SAVE if BGSAVE is in progress 2009-04-06 10:29:36 +02:00
antirez
bb32ede52e persistent EXPIRE 2009-04-03 11:07:37 +02:00
antirez
0c66a4713a dirty increment was missing in two points. TODO updated 2009-04-03 10:04:51 +02:00
antirez
88e859984a compression/decompression of large values on disk now working 2009-04-02 17:10:02 +02:00
antirez
40c32c3e49 disable LZF compression since it's not able to load the DB for now, the load part is missing 2009-04-02 10:02:06 +02:00
antirez
2e77c2ee72 Fixed issue 23 about AUTH 2009-04-02 09:57:06 +02:00
antirez
774e304780 Issue 22 fixed 2009-04-02 09:54:45 +02:00
antirez
94754ccc3c non-lazy expired keys purging implemented 2009-04-01 20:40:00 +02:00
antirez
3305306f09 Initial implementation of EXPIRE 2009-04-01 13:22:35 +02:00
antirez
e3566d4b46 Integer encoding implemented in dump file. Doc updated 2009-03-28 10:58:19 +01:00
antirez
23d4709dfb feature macros defined to play well with C99 2009-03-27 22:00:27 +01:00
antirez
17be1a4a17 IMPORTANT FIX: new dump format implementation was broken. Now it's ok but tests for the 32-bit case values are needed 2009-03-27 21:27:42 +01:00
antirez
a4d1ba9a73 ANSI-C compatibility changes 2009-03-27 20:48:32 +01:00
antirez
e63943a450 AUTH merged from Brian Hammond fork, reworked a bit to fix minor problems 2009-03-26 11:46:14 +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
antirez
f78fd11b71 New file dump format, perl client library added 2009-03-25 16:47:22 +01:00
antirez
7b45bfb2a4 New protocol fix for LREM 2009-03-25 00:26:47 +01:00
antirez
9eb00f21f0 protocol fix in SORT reply with null elements 2009-03-24 14:22:42 +01:00
antirez
c937aa89b5 Server replies now in the new format, test-redis.tcl and redis-cli modified accordingly 2009-03-24 13:37:32 +01:00
antirez
5a6948fbc0 random tested mode for test-redis.tcl, minor other stuff, version switched to 0.8 2009-03-24 00:43:38 +01:00
antirez
cf3f0c012d Now MONITOR/SYNC cannot be issued multiple times 2009-03-23 21:33:15 +01:00
antirez
87eca72788 MONITOR command implemented. 2009-03-23 19:43:39 +01:00
antirez
2a200c784d Merge git://github.com/lucsky/redis 2009-03-23 17:21:33 +01:00
antirez
092dac2a64 another missing free->zfree replacement fixed. Thanks to Ludo 2009-03-23 14:50:09 +01:00
Luc Heinrich
46713f83d4 Display the port on server startup. 2009-03-23 12:42:10 +01:00
Luc Heinrich
ed329fcf25 Allow to specify the pid file from the config file. 2009-03-23 12:31:33 +01:00
antirez
70003d28b8 INFO fixed, MGET implemented, redis-cli implements INFO/MGET 2009-03-22 14:54:14 +01:00
antirez
ed9b544e10 first commit 2009-03-22 10:30:00 +01:00