The installation process was done from an virtual environment on RPiB+ and Ubuntu 14.04 with a redis tarball from http://download.redis.io/redis-stable.tar.gz. In RPiB+ install package tcl8.5(sudo apt-get install tcl8.5) before initiate the installation process
(django-snapdots) heykel@heykel-pc:~$ tar -xzvf redis-stable.tar.gz
cd jemalloc && make CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS="" lib/libjemalloc.a
make[3]: Entering directory /home/heykel/redis-stable/deps/jemalloc' gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/jemalloc.o src/jemalloc.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/arena.o src/arena.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/atomic.o src/atomic.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/base.o src/base.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/bitmap.o src/bitmap.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk.o src/chunk.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk_dss.o src/chunk_dss.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk_mmap.o src/chunk_mmap.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/ckh.o src/ckh.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/ctl.o src/ctl.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/extent.o src/extent.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/hash.o src/hash.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/huge.o src/huge.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/mb.o src/mb.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/mutex.o src/mutex.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/pages.o src/pages.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/prof.o src/prof.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/quarantine.o src/quarantine.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/rtree.o src/rtree.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/stats.o src/stats.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/tcache.o src/tcache.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/util.o src/util.c gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/tsd.o src/tsd.c ar crus lib/libjemalloc.a src/jemalloc.o src/arena.o src/atomic.o src/base.o src/bitmap.o src/chunk.o src/chunk_dss.o src/chunk_mmap.o src/ckh.o src/ctl.o src/extent.o src/hash.o src/huge.o src/mb.o src/mutex.o src/pages.o src/prof.o src/quarantine.o src/rtree.o src/stats.o src/tcache.o src/util.o src/tsd.o make[3]: Leaving directory/home/heykel/redis-stable/deps/jemalloc'
make[2]: Leaving directory `/home/heykel/redis-stable/deps'
CC adlist.o
CC quicklist.o
CC ae.o
CC anet.o
CC dict.o
CC server.o
CC sds.o
CC zmalloc.o
CC lzf_c.o
CC lzf_d.o
CC pqsort.o
CC zipmap.o
CC sha1.o
CC ziplist.o
CC release.o
CC networking.o
CC util.o
CC object.o
CC db.o
CC replication.o
CC rdb.o
CC t_string.o
CC t_list.o
CC t_set.o
CC t_zset.o
CC t_hash.o
CC config.o
CC aof.o
CC pubsub.o
CC multi.o
CC debug.o
CC sort.o
CC intset.o
CC syncio.o
CC cluster.o
CC crc16.o
CC endianconv.o
CC slowlog.o
CC scripting.o
CC bio.o
CC rio.o
CC rand.o
CC memtest.o
CC crc64.o
CC bitops.o
CC sentinel.o
CC notify.o
CC setproctitle.o
CC blocked.o
CC hyperloglog.o
CC latency.o
CC sparkline.o
CC redis-check-rdb.o
CC redis-check-aof.o
CC geo.o
CC lazyfree.o
CC module.o
CC evict.o
CC expire.o
CC geohash.o
CC geohash_helper.o
CC childinfo.o
CC defrag.o
CC siphash.o
CC rax.o
LINK redis-server
INSTALL redis-sentinel
CC redis-cli.o
LINK redis-cli
CC redis-benchmark.o
LINK redis-benchmark
INSTALL redis-check-rdb
INSTALL redis-check-aof
Hint: It's a good idea to run 'make test' ;)
(django-snapdots) heykel@heykel-pc:~/redis-stable$ make test
cd src && make test
make[1]: Entering directory /home/heykel/redis-stable/src' CC Makefile.dep make[1]: Leaving directory/home/heykel/redis-stable/src'
make[1]: Entering directory `/home/heykel/redis-stable/src'
Cleanup: may take some time... OK
Starting test server at port 11111
Testing unit/printver
Testing unit/dump
Testing unit/auth
Testing unit/protocol
Testing unit/keyspace
Testing unit/scan
Testing unit/type/string
Testing unit/type/incr
Testing unit/type/list
Testing unit/type/list-2
Testing unit/type/list-3
Testing unit/type/set
Testing unit/type/zset
Testing unit/type/hash
Testing unit/sort
Testing unit/expire
ok: SET and GET an item
ok: SET and GET an empty item
ok: AUTH fails if there is no password configured server side
ok: Check encoding - ziplist
ok: DEL against a single item
ok: Explicit regression for a list bug
ok: Vararg DEL
ok: KEYS with pattern
ok: KEYS to get all keys
ok: ZSET basic ZADD and score update - ziplist
ok: ZSET element can't be set to NaN with ZADD - ziplist
ok: ZSET element can't be set to NaN with ZINCRBY
ok: ZADD with options syntax error with incomplete pair
ok: ZADD XX option without key - ziplist
ok: ZADD XX existing key - ziplist
ok: ZADD XX returns the number of elements actually added
ok: ZADD XX updates existing elements score
ok: ZADD XX and NX are not compatible
ok: ZADD NX with non exisitng key
ok: ZADD NX only add new elements without updating old ones
ok: DEL all keys
ok: ZADD INCR works like ZINCRBY
ok: ZADD INCR works with a single score-elemenet pair
ok: SCAN basic
ok: ZADD CH option changes return value to all changed elements
ok: INCR against non existing key
ok: ZINCRBY calls leading to NaN result in error
ok: INCR against key created by incr itself
ok: ZADD - Variadic version base case
ok: INCR against key originally set with SET
ok: ZADD - Return value is the number of actually added items
ok: INCR over 32bit value
ok: ZADD - Variadic version does not add nothing on single parsing err
ok: INCRBY over 32bit value with over 32bit increment
ok: ZADD - Variadic version will raise error on missing arg
ok: INCR fails against key with spaces (left)
ok: ZINCRBY does not work variadic even if shares ZADD implementation
ok: INCR fails against key with spaces (right)
ok: INCR fails against key with spaces (both)
ok: ZCARD basics - ziplist
ok: INCR fails against a key holding a list
ok: ZREM removes key after last element is removed
ok: DECRBY over 32bit value with over 32bit increment, negative res
ok: ZREM variadic version
ok: INCR uses shared objects in the 0-9999 range
ok: HSET/HLEN - Small hash creation
ok: ZREM variadic version -- remove elements after key deletion
ok: INCR can modify objects in-place
ok: Is the small hash encoded with a ziplist?
ok: ZRANGE basics - ziplist
ok: INCRBYFLOAT against non existing key
ok: ZREVRANGE basics - ziplist
ok: INCRBYFLOAT against key originally set with SET
ok: ZRANK/ZREVRANK basics - ziplist
ok: INCRBYFLOAT over 32bit value
ok: ZRANK - after deletion - ziplist
ok: INCRBYFLOAT over 32bit value with over 32bit increment
ok: ZINCRBY - can create a new sorted set - ziplist
ok: INCRBYFLOAT fails against key with spaces (left)
ok: ZINCRBY - increment and decrement - ziplist
ok: INCRBYFLOAT fails against key with spaces (right)
ok: ZINCRBY return value
ok: INCRBYFLOAT fails against key with spaces (both)
ok: ZRANGEBYSCORE/ZREVRANGEBYSCORE/ZCOUNT basics
ok: INCRBYFLOAT fails against a key holding a list
ok: ZRANGEBYSCORE with WITHSCORES
ok: INCRBYFLOAT does not allow NaN or Infinity
ok: ZRANGEBYSCORE with LIMIT
ok: INCRBYFLOAT decrement
ok: ZRANGEBYSCORE with LIMIT and WITHSCORES
ok: ZRANGEBYSCORE with non-value min or max
ok: ZRANGEBYLEX/ZREVRANGEBYLEX/ZCOUNT basics
ok: ZRANGEBYSLEX with LIMIT
ok: DUMP / RESTORE are able to serialize / unserialize a simple key
ok: ZRANGEBYLEX with invalid lex range specifiers
ok: RESTORE can set an arbitrary expire to the materialized key
ok: ZREMRANGEBYSCORE basics
ok: RESTORE can set an expire that overflows a 32 bit integer
ok: ZREMRANGEBYSCORE with non-value min or max
ok: RESTORE returns an error of the key already exists
ok: ZREMRANGEBYRANK basics
ok: RESTORE can overwrite an existing key with REPLACE
ok: ZUNIONSTORE against non-existing key doesn't set destination - ziplist
ok: RESTORE can detect a syntax error for unrecongized options
ok: ZUNIONSTORE with empty set - ziplist
ok: DUMP of non existing key returns nil
ok: ZUNIONSTORE basics - ziplist
ok: ZUNIONSTORE with weights - ziplist
ok: ZUNIONSTORE with a regular set and weights - ziplist
ok: ZUNIONSTORE with AGGREGATE MIN - ziplist
ok: ZUNIONSTORE with AGGREGATE MAX - ziplist
ok: ZINTERSTORE basics - ziplist
ok: ZINTERSTORE with weights - ziplist
ok: ZINTERSTORE with a regular set and weights - ziplist
ok: ZINTERSTORE with AGGREGATE MIN - ziplist
ok: ZINTERSTORE with AGGREGATE MAX - ziplist
ok: ZUNIONSTORE with +inf/-inf scores - ziplist
ok: ZUNIONSTORE with NaN weights ziplist
ok: ZINTERSTORE with +inf/-inf scores - ziplist
ok: SCAN COUNT
ok: ZINTERSTORE with NaN weights ziplist
ok: Check encoding - skiplist
ok: ZSET basic ZADD and score update - skiplist
ok: ZSET element can't be set to NaN with ZADD - skiplist
ok: ZSET element can't be set to NaN with ZINCRBY
ok: ZADD with options syntax error with incomplete pair
ok: ZADD XX option without key - skiplist
ok: ZADD XX existing key - skiplist
ok: ZADD XX returns the number of elements actually added
ok: ZADD XX updates existing elements score
ok: ZADD XX and NX are not compatible
ok: ZADD NX with non exisitng key
ok: ZADD NX only add new elements without updating old ones
ok: ZADD INCR works like ZINCRBY
ok: ZADD INCR works with a single score-elemenet pair
ok: ZADD CH option changes return value to all changed elements
ok: ZINCRBY calls leading to NaN result in error
ok: ZADD - Variadic version base case
ok: ZADD - Return value is the number of actually added items
ok: ZADD - Variadic version does not add nothing on single parsing err
ok: ZADD - Variadic version will raise error on missing arg
ok: ZINCRBY does not work variadic even if shares ZADD implementation
ok: ZCARD basics - skiplist
ok: ZREM removes key after last element is removed
ok: ZREM variadic version
ok: ZREM variadic version -- remove elements after key deletion
ok: ZRANGE basics - skiplist
ok: ZREVRANGE basics - skiplist
ok: ZRANK/ZREVRANK basics - skiplist
ok: ZRANK - after deletion - skiplist
ok: ZINCRBY - can create a new sorted set - skiplist
ok: ZINCRBY - increment and decrement - skiplist
ok: ZINCRBY return value
ok: ZRANGEBYSCORE/ZREVRANGEBYSCORE/ZCOUNT basics
ok: ZRANGEBYSCORE with WITHSCORES
ok: ZRANGEBYSCORE with LIMIT
ok: ZRANGEBYSCORE with LIMIT and WITHSCORES
ok: ZRANGEBYSCORE with non-value min or max
Testing Redis version 4.0.2 (00000000)
ok: SCAN MATCH
ok: Old Ziplist: SORT BY key
ok: SSCAN with encoding intset
ok: Old Ziplist: SORT BY key with limit
ok: SSCAN with encoding hashtable
ok: Old Ziplist: SORT BY hash field
ok: HSCAN with encoding ziplist
ok: ZRANGEBYLEX/ZREVRANGEBYLEX/ZCOUNT basics
ok: ZRANGEBYSLEX with LIMIT
ok: ZRANGEBYLEX with invalid lex range specifiers
ok: Handle an empty query
ok: ZREMRANGEBYSCORE basics
ok: ZREMRANGEBYSCORE with non-value min or max
ok: Regression for quicklist #3343 bug
ok: ZREMRANGEBYRANK basics
ok: ZUNIONSTORE against non-existing key doesn't set destination - skiplist
ok: Very big payload in GET/SET
ok: ZUNIONSTORE with empty set - skiplist
ok: ZUNIONSTORE basics - skiplist
ok: ZUNIONSTORE with weights - skiplist
ok: SADD, SCARD, SISMEMBER, SMEMBERS basics - regular set
ok: SADD, SCARD, SISMEMBER, SMEMBERS basics - intset
ok: ZUNIONSTORE with a regular set and weights - skiplist
ok: SADD against non set
ok: ZUNIONSTORE with AGGREGATE MIN - skiplist
ok: ZUNIONSTORE with AGGREGATE MAX - skiplist
ok: SADD a non-integer against an intset
ok: ZINTERSTORE basics - skiplist
ok: SADD an integer larger than 64 bits
ok: ZINTERSTORE with weights - skiplist
ok: ZINTERSTORE with a regular set and weights - skiplist
ok: ZINTERSTORE with AGGREGATE MIN - skiplist
ok: ZINTERSTORE with AGGREGATE MAX - skiplist
ok: ZUNIONSTORE with +inf/-inf scores - skiplist
ok: ZUNIONSTORE with NaN weights skiplist
ok: Negative multibulk length
ok: Out of range multibulk length
ok: Wrong multibulk payload header
ok: Negative multibulk payload length
ok: Out of range multibulk payload length
ok: Non-number multibulk payload length
ok: ZINTERSTORE with +inf/-inf scores - skiplist
ok: Multi bulk request not followed by bulk arguments
ok: ZINTERSTORE with NaN weights skiplist
ok: Generic wrong number of args
ok: Unbalanced number of quotes
ok: ZINTERSTORE regression with two sets, intset+hashtable
ok: LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - ziplist
ok: LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - regular list
ok: R/LPOP against empty list
ok: Variadic RPUSH/LPUSH
ok: DEL a list
ok: ZUNIONSTORE regression, should not create NaN in scores
ok: BLPOP, BRPOP: single existing list - linkedlist
ok: ZINTERSTORE #516 regression, mixed sets and ziplist zsets
ok: BLPOP, BRPOP: multiple existing lists - linkedlist
ok: BLPOP, BRPOP: second list has an entry - linkedlist
ok: BRPOPLPUSH - linkedlist
ok: BLPOP, BRPOP: single existing list - ziplist
ok: BLPOP, BRPOP: multiple existing lists - ziplist
ok: BLPOP, BRPOP: second list has an entry - ziplist
ok: BRPOPLPUSH - ziplist
ok: BLPOP, LPUSH + DEL should not awake blocked client
ok: BLPOP, LPUSH + DEL + SET should not awake blocked client
ok: SADD overflows the maximum allowed integers in an intset
ok: Variadic SADD
ok: BLPOP with same key multiple times should work (issue #801)
ok: MULTI/EXEC is isolated from the point of view of BLPOP
ok: BLPOP with variadic LPUSH
ok: EXPIRE - set timeouts multiple times
ok: EXPIRE - It should be still possible to read 'x'
ok: HSCAN with encoding hashtable
ok: ZSCAN with encoding ziplist
ok: HSET/HLEN - Big hash creation
ok: Is the big hash encoded with an hash table?
ok: HGET against the small hash
ok: ZSCAN with encoding skiplist
ok: Old Linked list: SORT BY key
ok: Old Linked list: SORT BY key with limit
ok: ZUNIONSTORE result is sorted
ok: Protocol desync regression test #1
ok: Old Linked list: SORT BY hash field
Testing unit/other
ok: ZSCORE - ziplist
ok: SCAN guarantees check under write load
ok: SSCAN with integer encoded object (issue #1345)
ok: SSCAN with PATTERN
ok: HSCAN with PATTERN
ok: ZSCAN with PATTERN
ok: Set encoding after DEBUG RELOAD
ok: SREM basics - regular set
ok: SREM basics - intset
ok: SREM with multiple arguments
ok: SREM variadic version with more args needed to destroy the key
ok: HGET against the big hash
ok: HGET against non existing key
ok: HSET in update and insert mode
ok: HSETNX target key missing - small hash
ok: HSETNX target key exists - small hash
ok: HSETNX target key missing - big hash
ok: HSETNX target key exists - big hash
ok: HMSET wrong number of args
ok: HMSET - small hash
Testing unit/multi
ok: Generated sets must be encoded as hashtable
ok: SINTER with two sets - hashtable
ok: SINTERSTORE with two sets - hashtable
ok: ZSCORE after a DEBUG RELOAD - ziplist
ok: ZSCAN scores: regression test for issue #2175
ok: SINTERSTORE with two sets, after a DEBUG RELOAD - hashtable
ok: ZSET sorting stresser - ziplist
ok: SUNION with two sets - hashtable
ok: SUNIONSTORE with two sets - hashtable
ok: SINTER against three sets - hashtable
ok: SINTERSTORE with three sets - hashtable
ok: SUNION with non existing keys - hashtable
ok: SDIFF with two sets - hashtable
ok: SDIFF with three sets - hashtable
ok: SDIFFSTORE with three sets - hashtable
ok: HMSET - big hash
ok: HMGET against non existing key and fields
ok: HMGET against wrong type
ok: HMGET - small hash
ok: AUTH fails when a wrong password is given
ok: Arbitrary command gives an error when AUTH is required
ok: AUTH succeeds when the right password is given
ok: Once AUTH succeeded we can actually send commands to the server
ok: Protocol desync regression test #2
ok: HMGET - big hash
ok: HKEYS - small hash
ok: Generated sets must be encoded as intset
ok: SINTER with two sets - intset
ok: SINTERSTORE with two sets - intset
ok: HKEYS - big hash
ok: MIGRATE is caching connections
ok: HVALS - small hash
ok: SINTERSTORE with two sets, after a DEBUG RELOAD - intset
ok: SUNION with two sets - intset
ok: SUNIONSTORE with two sets - intset
ok: SINTER against three sets - intset
ok: HVALS - big hash
ok: SINTERSTORE with three sets - intset
ok: HGETALL - small hash
ok: SUNION with non existing keys - intset
ok: SDIFF with two sets - intset
ok: SDIFF with three sets - intset
ok: SDIFFSTORE with three sets - intset
ok: SDIFF with first set empty
ok: SDIFF with same set two times
ok: SAVE - make sure there are all the types as values
ok: HGETALL - big hash
ok: MUTLI / EXEC basics
ok: Nested MULTI are not allowed
ok: MULTI where commands alter argc/argv
ok: WATCH inside MULTI is not allowed
ok: EXEC fails if there are errors while queueing commands #1
ok: EXEC fails if there are errors while queueing commands #2
ok: If EXEC aborts, the client MULTI state is cleared
ok: EXEC works on WATCHed key not modified
ok: EXEC fail on WATCHed key modified (1 key of 1 watched)
ok: EXEC fail on WATCHed key modified (1 key of 5 watched)
ok: EXEC fail on WATCHed key modified by SORT with STORE even if the result is empty
ok: After successful EXEC key is no longer watched
ok: After failed EXEC key is no longer watched
ok: It is possible to UNWATCH
ok: UNWATCH when there is nothing watched works as expected
ok: HDEL and return value
ok: HDEL - more than a single value
ok: HDEL - hash becomes empty before deleting all specified fields
ok: Is a ziplist encoded Hash promoted on big payload?
ok: HINCRBY against non existing database key
ok: HINCRBY against non existing hash key
ok: HINCRBY against hash key created by hincrby itself
ok: HINCRBY against hash key originally set with HSET
ok: HINCRBY over 32bit value
ok: HINCRBY over 32bit value with over 32bit increment
ok: HINCRBY fails against hash value with spaces (left)
ok: HINCRBY fails against hash value with spaces (right)
ok: HINCRBY can detect overflows
ok: HINCRBYFLOAT against non existing database key
ok: HINCRBYFLOAT against non existing hash key
ok: HINCRBYFLOAT against hash key created by hincrby itself
Testing unit/quit
ok: HINCRBYFLOAT against hash key originally set with HSET
ok: HINCRBYFLOAT over 32bit value
ok: HINCRBYFLOAT over 32bit value with over 32bit increment
ok: HINCRBYFLOAT fails against hash value with spaces (left)
Testing unit/aofrw
ok: HINCRBYFLOAT fails against hash value with spaces (right)
ok: HSTRLEN against the small hash
ok: FLUSHALL is able to touch the watched keys
ok: FLUSHALL does not touch non affected keys
ok: FLUSHDB is able to touch the watched keys
ok: FLUSHDB does not touch non affected keys
ok: WATCH is able to remember the DB a key belongs to
ok: WATCH will consider touched keys target of EXPIRE
ok: Protocol desync regression test #3
ok: HSTRLEN against the big hash
ok: HSTRLEN against non existing field
ok: HSTRLEN corner cases
ok: Hash ziplist regression test for large keys
ok: Hash fuzzing #1 - 10 fields
ok: Hash fuzzing #2 - 10 fields
ok: QUIT returns OK
ok: Pipelined commands after QUIT must not be executed
ok: Pipelined commands after QUIT that exceed read buffer size
ok: DEL against expired key
ok: Zero length value in key. SET/GET/EXISTS
ok: Commands pipelining
ok: Non existing command
ok: RENAME basic usage
ok: RENAME source key should no longer exist
ok: RENAME against already existing key
ok: RENAMENX basic usage
ok: RENAMENX against already existing key
ok: RENAMENX against already existing key (2)
ok: RENAME against non existing source key
ok: RENAME where source and dest key are the same (existing)
ok: RENAMENX where source and dest key are the same (existing)
ok: RENAME where source and dest key are the same (non existing)
ok: RENAME with volatile key, should move the TTL as well
ok: RENAME with volatile key, should not inherit TTL of target key
ok: DEL all keys again (DB 0)
ok: DEL all keys again (DB 1)
ok: MOVE basic usage
ok: MOVE against key existing in the target DB
ok: MOVE against non-integer DB (#1428)
ok: MOVE can move key expire metadata as well
Testing integration/replication
ok: MOVE does not create an expire if it does not exist
ok: SET/GET keys in different DBs
ok: RANDOMKEY against empty DB
ok: RANDOMKEY regression 1
ok: KEYS * two times with long key, Github issue #1208
ok: BRPOPLPUSH with zero timeout should block indefinitely
ok: Regression for a crash with blocking ops and pipelining
Testing integration/replication-2
Testing integration/replication-3
ok: FUZZ stresser with data model binary
ok: WATCH will not consider touched expired keys
ok: DISCARD should clear the WATCH dirty flag on the client
ok: DISCARD should UNWATCH all the keys
ok: MULTI / EXEC is propagated correctly (single write command)
ok: MULTI / EXEC is propagated correctly (empty transaction)
ok: MULTI / EXEC is propagated correctly (read-only commands)
ok: BRPOPLPUSH with a client BLPOPing the target list
ok: BRPOPLPUSH with wrong source type
ok: MULTI / EXEC is propagated correctly (write command, no effect)
ok: EXPIRE - After 2.1 seconds the key should no longer be here
ok: EXPIRE - write on expire should work
ok: EXPIREAT - Check for EXPIRE alike behavior
ok: SETEX - Set + Expire combo operation. Check for TTL
ok: SETEX - Check value
ok: SETEX - Overwrite old key
Testing integration/replication-4
ok: Slave enters handshake
ok: First server should have role slave after SLAVEOF
ok: First server should have role slave after SLAVEOF
ok: If min-slaves-to-write is honored, write is accepted
ok: No write if min-slaves-to-write is < attached slaves
ok: If min-slaves-to-write is honored, write is accepted (again)
ok: BRPOPLPUSH with wrong destination type
ok: BRPOPLPUSH maintains order of elements after failure
ok: BRPOPLPUSH with multiple blocked clients
ok: Linked BRPOPLPUSH
ok: Circular BRPOPLPUSH
ok: Self-referential BRPOPLPUSH
ok: BRPOPLPUSH inside a transaction
ok: PUSH resulting from BRPOPLPUSH affect WATCH
ok: BRPOPLPUSH does not affect WATCH while still blocked
ok: FUZZ stresser with data model alpha
ok: SETEX - Wait for the key to expire
ok: SETEX - Wrong time parameter
ok: PERSIST can undo an EXPIRE
ok: PERSIST returns 0 against non existing or non volatile keys
ok: Very big payload random access
ok: First server should have role slave after SLAVEOF
ok: Hash fuzzing #1 - 512 fields
ok: ZRANGEBYSCORE fuzzy test, 100 ranges in 128 element sorted set - ziplist
ok: FUZZ stresser with data model compr
ok: Old Big Linked list: SORT BY key
ok: Old Big Linked list: SORT BY key with limit
ok: BRPOPLPUSH timeout
ok: BLPOP when new key is moved into place
ok: BLPOP when result key is created by SORT..STORE
ok: BLPOP: with single empty list argument
ok: BLPOP: with negative timeout
ok: BLPOP: with non-integer timeout
ok: EXPIRE pricision is now the millisecond
ok: ZRANGEBYLEX fuzzy test, 100 ranges in 128 element sorted set - ziplist
ok: SELECT an out of range DB
ok: BLPOP: with zero timeout should block indefinitely
ok: BLPOP: second argument is not a list
ok: ZREMRANGEBYLEX fuzzy test, 100 ranges in 128 element sorted set - ziplist
ok: ZSETs skiplist implementation backlink consistency test - ziplist
ok: PEXPIRE/PSETEX/PEXPIREAT can set sub-second expires
ok: TTL returns tiem to live in seconds
ok: PTTL returns time to live in milliseconds
ok: TTL / PTTL return -1 if key has no expire
ok: TTL / PTTL return -2 if key does not exit
ok: Hash fuzzing #2 - 512 fields
ok: SET 10000 numeric keys and access all them in reverse order
ok: DBSIZE should be 10000 now
ok: SETNX target key missing
ok: SETNX target key exists
ok: SETNX against not-expired volatile key
ok: Old Big Linked list: SORT BY hash field
ok: Intset: SORT BY key
ok: Intset: SORT BY key with limit
ok: EXPIRES after a reload (snapshot + append only file rewrite)
ok: Intset: SORT BY hash field
ok: BLPOP: timeout
ok: BLPOP: arguments are empty
ok: BRPOP: with single empty list argument
ok: BRPOP: with negative timeout
ok: BRPOP: with non-integer timeout
ok: Hash table: SORT BY key
ok: Hash table: SORT BY key with limit
ok: Hash table: SORT BY hash field
ok: Redis should actively expire keys incrementally
ok: ZSETs ZRANK augmented skip list stress testing - ziplist
ok: ZSCORE - skiplist
ok: ZSCORE after a DEBUG RELOAD - skiplist
ok: ZSET sorting stresser - skiplist
ok: BRPOP: with zero timeout should block indefinitely
ok: BRPOP: second argument is not a list
ok: No write if min-slaves-max-lag is > of the slave lag
ok: min-slaves-to-write is ignored by slaves
ok: Redis should lazy expire keys
ok: BRPOP: timeout
ok: BRPOP: arguments are empty
ok: BLPOP inside a transaction
ok: LPUSHX, RPUSHX - generic
ok: LPUSHX, RPUSHX - linkedlist
ok: LINSERT - linkedlist
ok: LPUSHX, RPUSHX - ziplist
ok: LINSERT - ziplist
ok: LINSERT raise error on bad syntax
ok: LINDEX consistency test - quicklist
ok: SDIFF fuzzing
ok: SINTER against non-set should throw error
ok: SUNION against non-set should throw error
ok: SINTER should handle non existing key as empty
ok: SINTER with same integer elements but different encoding
ok: SINTERSTORE against non existing keys should delete dstkey
ok: SUNIONSTORE against non existing keys should delete dstkey
ok: SPOP basics - hashtable
ok: SPOP with =1 - hashtable
ok: SRANDMEMBER - hashtable
ok: SPOP basics - intset
ok: SPOP with =1 - intset
ok: SRANDMEMBER - intset
ok: SPOP with ok: SPOP with ok: SPOP using integers, testing Knuth's and Floyd's algorithm
ok: SPOP using integers with Knuth's algorithm
ok: SPOP new implementation: code path #1
ok: SPOP new implementation: code path #2
ok: SPOP new implementation: code path #3
ok: SRANDMEMBER with against non existing key
ok: LINDEX random access - quicklist
ok: SRANDMEMBER with - hashtable
ok: SRANDMEMBER with - intset
ok: SMOVE basics - from regular set to intset
ok: SMOVE basics - from intset to regular set
ok: SMOVE non existing key
ok: SMOVE non existing src set
ok: SMOVE from regular set to non existing destination set
ok: SMOVE from intset to non existing destination set
ok: SMOVE wrong src key type
ok: SMOVE wrong dst key type
ok: SMOVE with identical source and destination
ok: EXPIRE should not resurrect keys (issue #1026)
ok: 5 keys in, 5 keys out
ok: EXPIRE with empty string as TTL should report an error
ok: Check if list is still ok after a DEBUG RELOAD - quicklist
ok: Test replication with parallel clients writing in differnet DBs
ok: Stress test the hash ziplist -> hashtable encoding conversion
ok: Test HINCRBYFLOAT for correct float representation (issue #2846)
ok: LINDEX consistency test - quicklist
ok: EXPIRES after AOF reload (without rewrite)
ok: LINDEX random access - quicklist
Testing integration/replication-psync
ok: Check if list is still ok after a DEBUG RELOAD - quicklist
ok: LLEN against non-list value error
ok: LLEN against non existing key
ok: LINDEX against non-list value error
ok: LINDEX against non existing key
ok: LPUSH against non-list value error
ok: RPUSH against non-list value error
ok: RPOPLPUSH base case - linkedlist
ok: RPOPLPUSH with the same list as src and dst - linkedlist
ok: RPOPLPUSH with linkedlist source and existing target linkedlist
ok: RPOPLPUSH with linkedlist source and existing target ziplist
ok: RPOPLPUSH base case - ziplist
ok: RPOPLPUSH with the same list as src and dst - ziplist
ok: RPOPLPUSH with ziplist source and existing target linkedlist
ok: RPOPLPUSH with ziplist source and existing target ziplist
ok: RPOPLPUSH against non existing key
ok: RPOPLPUSH against non list src key
ok: RPOPLPUSH against non list dst key
ok: RPOPLPUSH against non existing src key
ok: Basic LPOP/RPOP - linkedlist
ok: Basic LPOP/RPOP - ziplist
ok: LPOP/RPOP against non list value
ok: Mass RPOP/LPOP - quicklist
ok: Mass RPOP/LPOP - quicklist
ok: LRANGE basics - linkedlist
ok: LRANGE inverted indexes - linkedlist
ok: LRANGE out of range indexes including the full list - linkedlist
ok: LRANGE out of range negative end index - linkedlist
ok: LRANGE basics - ziplist
ok: LRANGE inverted indexes - ziplist
ok: LRANGE out of range indexes including the full list - ziplist
ok: LRANGE out of range negative end index - ziplist
ok: LRANGE against non existing key
ok: LTRIM basics - linkedlist
ok: LTRIM out of range negative end index - linkedlist
ok: LTRIM basics - ziplist
ok: LTRIM out of range negative end index - ziplist
ok: LSET - linkedlist
ok: LSET out of range index - linkedlist
ok: LSET - ziplist
ok: LSET out of range index - ziplist
ok: LSET against non existing key
ok: LSET against non list value
ok: LREM remove all the occurrences - linkedlist
ok: LREM remove the first occurrence - linkedlist
ok: LREM remove non existing element - linkedlist
ok: LREM starting from tail with negative count - linkedlist
ok: LREM starting from tail with negative count (2) - linkedlist
ok: LREM deleting objects that may be int encoded - linkedlist
ok: LREM remove all the occurrences - ziplist
ok: LREM remove the first occurrence - ziplist
ok: LREM remove non existing element - ziplist
ok: LREM starting from tail with negative count - ziplist
ok: LREM starting from tail with negative count (2) - ziplist
ok: LREM deleting objects that may be int encoded - ziplist
ok: SETNX against expired volatile key
ok: MGET against non existing key
ok: MGET against non-string key
ok: MSET base case
ok: MSET wrong number of args
ok: MSETNX with already existent key
ok: MSETNX with not existing keys
ok: STRLEN against non-existing key
ok: STRLEN against integer-encoded value
ok: STRLEN against plain string
ok: SETBIT against non-existing key
ok: SETBIT against string-encoded key
ok: SETBIT against integer-encoded key
ok: SETBIT against key with wrong type
ok: SETBIT with out of range bit offset
ok: SETBIT with non-bit argument
ok: ZRANGEBYSCORE fuzzy test, 100 ranges in 100 element sorted set - skiplist
ok: ZRANGEBYLEX fuzzy test, 100 ranges in 100 element sorted set - skiplist
ok: Regression for bug 593 - chaining BRPOPLPUSH with other blocking cmds
ok: SETBIT fuzzing
ok: GETBIT against non-existing key
ok: GETBIT against string-encoded key
ok: GETBIT against integer-encoded key
ok: SETRANGE against non-existing key
ok: SETRANGE against string-encoded key
ok: SETRANGE against integer-encoded key
ok: SETRANGE against key with wrong type
ok: SETRANGE with out of range offset
ok: GETRANGE against non-existing key
ok: GETRANGE against string value
ok: GETRANGE against integer-encoded value
ok: First server should have role slave after SLAVEOF
ok: With min-slaves-to-write (1,3): master should be writable
ok: With min-slaves-to-write (2,3): master should not be writable
ok: Slave should be able to synchronize with the master
ok: Detect write load to master
Testing integration/aof
ok: Test replication partial resync: no reconnection, just sync (diskless: no, reconnect: 0)
ok: Unfinished MULTI: Server should start if load-truncated is yes
ok: ZREMRANGEBYLEX fuzzy test, 100 ranges in 100 element sorted set - skiplist
ok: ZSETs skiplist implementation backlink consistency test - skiplist
ok: Slave is able to detect timeout during handshake
ok: PIPELINING stresser (also a regression for the old epoll bug)
ok: APPEND basics
ok: APPEND basics, integer encoded values
ok: APPEND fuzzing
ok: Short read: Server should start if load-truncated is yes
ok: Truncated AOF loaded: we expect foo to be equal to 5
ok: Append a new command after loading an incomplete AOF
ok: intsets implementation stress testing
ok: Perform a final SAVE to leave a clean DB on disk
Testing integration/rdb
Testing integration/convert-zipmap-hash-on-load
ok: Big Hash table: SORT BY key
ok: Big Hash table: SORT BY key with limit
ok: Short read + command: Server should start
ok: Truncated AOF loaded: we expect foo to be equal to 6 now
ok: ZSETs ZRANK augmented skip list stress testing - skiplist
ok: RDB encoding loading test
ok: RDB load zipmap hash: converts to ziplist
Testing integration/logging
ok: Bad format: Server should have logged an error
ok: Server started empty with non-existing RDB file
ok: RDB load zipmap hash: converts to hash table when hash-max-ziplist-entries is exceeded
ok: Slave should be able to synchronize with the master
ok: Detect write load to master
ok: Big Hash table: SORT BY hash field
ok: SORT GET #
ok: SORT GET ok: SORT GET (key and hash) with sanity check
ok: SORT BY key STORE
ok: SORT BY hash field STORE
ok: SORT extracts STORE correctly
ok: SORT extracts multiple STORE correctly
ok: SORT DESC
ok: SORT ALPHA against integer encoded strings
ok: SORT sorted set
ok: SORT sorted set BY nosort should retain ordering
ok: SORT sorted set BY nosort + LIMIT
ok: SORT sorted set BY nosort works as expected from scripts
ok: SORT sorted set: +inf and -inf handling
ok: SORT regression for issue #19, sorting floats
ok: SORT with STORE returns zero if result is empty (github issue 224)
ok: SORT with STORE does not create empty lists (github issue 224)
ok: SORT with STORE removes key if result is empty (github issue 227)
ok: SORT with BY and STORE should still order output
ok: SORT will complain with numerical sorting and bad doubles (1)
ok: SORT will complain with numerical sorting and bad doubles (2)
ok: SORT BY sub-sorts lexicographically if score is the same
ok: SORT GET with pattern ending with just -> does not get hash field
ok: SORT by nosort retains native order for lists
ok: SORT by nosort plus store retains native order for lists
ok: SORT by nosort with limit returns based on original list order
ok: Unfinished MULTI: Server should have logged an error
ok: SET - use EX/PX option, TTL should not be reseted after loadaof
ok: SORT speed, 100 element list BY key, 100 times
ok: SORT speed, 100 element list BY hash field, 100 times
ok: Server is able to generate a stack trace on selected systems
ok: SORT speed, 100 element list directly, 100 times
ok: SORT speed, 100 element list BY , 100 times
ok: Set instance A as slave of B
ok: BRPOPLPUSH replication, when blocking against empty list
ok: Short read: Server should have logged an error
ok: GETRANGE fuzzing
ok: Extended SET can detect syntax errors
ok: Extended SET NX option
ok: Extended SET XX option
ok: Extended SET EX option
ok: Extended SET PX option
ok: Extended SET using multiple options at once
ok: GETRANGE with huge ranges, Github issue #1844
ok: Short read: Utility should confirm the AOF is not valid
ok: Short read: Utility should be able to fix the AOF
Testing integration/psync2
Testing integration/psync2-reg
Testing unit/pubsub
ok: Server started empty with empty RDB file
ok: RDB load zipmap hash: converts to hash table when hash-max-ziplist-value is exceeded
ok: Fixed AOF: Server should have been started
ok: Fixed AOF: Keyspace should contain values that were parseable
Testing unit/slowlog
ok: Pub/Sub PING
ok: PUBLISH/SUBSCRIBE basics
ok: PUBLISH/SUBSCRIBE with two clients
ok: PUBLISH/SUBSCRIBE after UNSUBSCRIBE without arguments
ok: SUBSCRIBE to one channel more than once
ok: UNSUBSCRIBE from non-subscribed channels
ok: PUBLISH/PSUBSCRIBE basics
ok: PUBLISH/PSUBSCRIBE with two clients
ok: PUBLISH/PSUBSCRIBE after PUNSUBSCRIBE without arguments
ok: PUNSUBSCRIBE from non-subscribed channels
ok: NUMSUB returns numbers, not strings (#1561)
ok: Mix SUBSCRIBE and PSUBSCRIBE
ok: PUNSUBSCRIBE and UNSUBSCRIBE should always reply
ok: Keyspace notifications: we receive keyspace notifications
ok: Keyspace notifications: we receive keyevent notifications
ok: Keyspace notifications: we can receive both kind of events
ok: Keyspace notifications: we are able to mask events
ok: Keyspace notifications: general events test
ok: Keyspace notifications: list events test
ok: Keyspace notifications: set events test
ok: Keyspace notifications: zset events test
ok: Keyspace notifications: hash events test
Testing unit/scripting
ok: Server should not start if RDB file can't be open
ok: Keyspace notifications: expired events (triggered expire)
ok: SLOWLOG - check that it starts with an empty log
ok: AOF+SPOP: Server should have been started
ok: AOF+SPOP: Set should have 1 member
ok: EVAL - Does Lua interpreter replies to our requests?
ok: EVAL - Lua integer -> Redis protocol type conversion
ok: EVAL - Lua string -> Redis protocol type conversion
ok: EVAL - Lua true boolean -> Redis protocol type conversion
ok: EVAL - Lua false boolean -> Redis protocol type conversion
ok: EVAL - Lua status code reply -> Redis protocol type conversion
ok: EVAL - Lua error reply -> Redis protocol type conversion
ok: EVAL - Lua table -> Redis protocol type conversion
ok: EVAL - Are the KEYS and ARGV arrays populated correctly?
ok: EVAL - is Lua able to call Redis API?
ok: EVALSHA - Can we call a SHA1 if already defined?
ok: EVALSHA - Can we call a SHA1 in uppercase?
ok: EVALSHA - Do we get an error on invalid SHA1?
ok: EVALSHA - Do we get an error on non defined SHA1?
ok: EVAL - Redis integer -> Lua type conversion
ok: EVAL - Redis bulk -> Lua type conversion
ok: EVAL - Redis multi bulk -> Lua type conversion
ok: EVAL - Redis status reply -> Lua type conversion
ok: EVAL - Redis error reply -> Lua type conversion
ok: EVAL - Redis nil bulk reply -> Lua type conversion
ok: EVAL - Is the Lua client using the currently selected DB?
ok: EVAL - SELECT inside Lua should not affect the caller
ok: EVAL - Scripts can't run certain commands
ok: EVAL - Scripts can't run certain commands
ok: EVAL - No arguments to redis.call/pcall is considered an error
ok: EVAL - redis.call variant raises a Lua error on Redis cmd error (1)
ok: EVAL - redis.call variant raises a Lua error on Redis cmd error (1)
ok: EVAL - redis.call variant raises a Lua error on Redis cmd error (1)
ok: EVAL - JSON numeric decoding
ok: EVAL - JSON string decoding
ok: EVAL - cmsgpack can pack double?
ok: EVAL - cmsgpack can pack negative int64?
ok: EVAL - cmsgpack can pack and unpack circular references?
ok: EVAL - Numerical sanity check from bitop
ok: EVAL - Verify minimal bitop functionality
ok: EVAL - Able to parse trailing comments
ok: SCRIPTING FLUSH - is able to clear the scripts cache?
ok: SCRIPT EXISTS - can detect already defined scripts?
ok: SCRIPT LOAD - is able to register scripts in the scripting cache
ok: In the context of Lua the output of random commands gets ordered
ok: SORT is normally not alpha re-ordered for the scripting engine
ok: SORT BY output gets ordered for scripting
ok: SORT BY with GET gets ordered for scripting
ok: redis.sha1hex() implementation
ok: Globals protection reading an undeclared global variable
ok: Globals protection setting an undeclared global*
ok: Test an example script DECR_IF_GT
ok: Scripting engine resets PRNG at every script execution
ok: Scripting engine PRNG can be seeded correctly
ok: Server should not start if RDB is corrupted
ok: Keyspace notifications: expired events (background expire)
ok: Keyspace notifications: evicted events
ok: Keyspace notifications: test CONFIG GET/SET of event flags
ok: SLOWLOG - only logs commands taking more time than specified
ok: SLOWLOG - max entries is correctly handled
ok: SLOWLOG - GET optional argument to limit output len works
ok: SLOWLOG - RESET subcommand works
Testing unit/maxmemory
ok: LTRIM stress testing - linkedlist
ok: BRPOPLPUSH replication, list exists
ok: SLOWLOG - logged entry sanity check
ok: SLOWLOG - commands with too many arguments are trimmed
ok: SLOWLOG - too long arguments are trimmed
ok: Without maxmemory small integers are shared
ok: With maxmemory and non-LRU policy integers are still shared
ok: With maxmemory and LRU policy integers are not shared
Testing unit/introspection
ok: BLPOP followed by role change, issue #2473
ok: MIGRATE cached connections are released after some time
ok: SLOWLOG - EXEC is not logged, just executed commands
ok: PSYNC2: --- CYCLE 1 ---
ok: PSYNC2: [NEW LAYOUT] Set #3 as master
ok: PSYNC2: Set #0 to replicate from #3
ok: PSYNC2: Set #1 to replicate from #0
ok: PSYNC2: Set #2 to replicate from #1
ok: PSYNC2: Set #4 to replicate from #1
ok: CLIENT LIST
ok: MONITOR can log executed commands
ok: MONITOR can log commands issued by the scripting engine
ok: CLIENT GETNAME should return NIL if name is not assigned
ok: CLIENT LIST shows empty fields for unassigned names
ok: CLIENT SETNAME does not accept spaces
ok: CLIENT SETNAME can assign a name to this connection
ok: CLIENT SETNAME can change the name of an existing connection
ok: After CLIENT SETNAME, connection can still be closed
ok: AOF+SPOP: Server should have been started
ok: AOF+SPOP: Set should have 1 member
ok: SLOWLOG - can clean older entires
ok: EVAL does not leak in the Lua stack
Testing unit/introspection-2
ok: With min-slaves-to-write: master not writable with lagged slave
Testing unit/limits
ok: EVAL processes writes from AOF in read-only slaves
ok: We can call scripts rewriting client->argv from Lua
ok: Call Redis command with many args from Lua (issue #1764)
ok: Number conversion precision test (issue #1118)
ok: String containing number precision test (regression of issue #1118)
ok: Verify negative arg count is error instead of crash (issue #1842)
ok: Correct handling of reused argv (issue #1939)
ok: Functions in the Redis namespace are able to report errors
ok: MIGRATE is able to migrate a key between two instances
ok: MASTER and SLAVE consistency with expire
ok: maxmemory - is the memory limit honoured? (policy allkeys-random)
ok: PSYNC2 #3899 regression: setup
ok: AOF+EXPIRE: Server should have been started
ok: AOF+EXPIRE: List should be empty
ok: PSYNC2 #3899 regression: kill first slave
ok: Second server should have role master at first
ok: SLAVEOF should start with link status "down"
ok: The role should immediately be changed to "slave"
ok: MIGRATE is able to copy a key between two instances
ok: Redis should not try to convert DEL into EXPIREAT for EXPIRE -1
ok: First server should have role slave after SLAVEOF
ok: Timedout read-only scripts can be killed by SCRIPT KILL
ok: MIGRATE will not overwrite existing keys, unless REPLACE is used
ok: maxmemory - is the memory limit honoured? (policy allkeys-lru)
ok: Timedout script link is still usable after Lua returns
Testing unit/obuf-limits
ok: Check if maxclients works refusing connections
ok: Timedout scripts that modified data can't be killed by SCRIPT KILL
ok: SHUTDOWN NOSAVE can kill a timedout script anyway
ok: Sync should have transferred keys from master
ok: The link status should be up
ok: SET on the master should immediately propagate
ok: FLUSHALL should replicate
ok: ROLE in master reports master with a slave
ok: ROLE in slave reports slave in connected state
Testing unit/bitops
ok: MIGRATE propagates TTL correctly
ok: BITCOUNT returns 0 against non existing key
ok: BITCOUNT returns 0 with out of range indexes
ok: BITCOUNT returns 0 with negative indexes where start > end
ok: BITCOUNT against test vector #1
ok: BITCOUNT against test vector #2
ok: BITCOUNT against test vector #3
ok: BITCOUNT against test vector #4
ok: BITCOUNT against test vector #5
ok: maxmemory - is the memory limit honoured? (policy allkeys-lfu)
ok: Before the slave connects we issue two EVAL commands (scripts replication)
ok: PSYNC2 #3899 regression: kill first slave
ok: PSYNC2 #3899 regression: kill first slave
ok: PSYNC2: cluster is consistent after failover
ok: BITCOUNT fuzzing without start/end
ok: Connect a slave to the master instance (scripts replication)
ok: Now use EVALSHA against the master, with both SHAs (scripts replication)
ok: If EVALSHA was replicated as EVAL, 'x' should be '4' (scripts replication)
ok: Replication of script multiple pushes to list with BLPOP (scripts replication)
ok: EVALSHA replication when first call is readonly (scripts replication)
ok: Lua scripts using SELECT are replicated correctly (scripts replication)
ok: maxmemory - is the memory limit honoured? (policy volatile-lru)
ok: TTL and TYPYE do not alter the last access time of a key
ok: maxmemory - is the memory limit honoured? (policy volatile-lfu)
ok: PSYNC2 #3899 regression: kill chained slave
ok: BITCOUNT fuzzing with start/end
ok: BITCOUNT with start, end
ok: BITCOUNT syntax error #1
ok: BITCOUNT regression test for github issue #582
ok: BITCOUNT misaligned prefix
ok: BITCOUNT misaligned prefix + full words + remainder
ok: BITOP NOT (empty string)
ok: BITOP NOT (known string)
ok: BITOP where dest and target are the same key
ok: BITOP AND|OR|XOR don't change the string with single input key
ok: BITOP missing key is considered a stream of zero
ok: BITOP shorter keys are zero-padded to the key with max length
ok: Before the slave connects we issue two EVAL commands (commmands replication)
ok: MASTER and SLAVE dataset should be identical after complex ops
ok: Connect a slave to the master instance (commmands replication)
ok: Now use EVALSHA against the master, with both SHAs (commmands replication)
ok: If EVALSHA was replicated as EVAL, 'x' should be '4' (commmands replication)
ok: PSYNC2 #3899 regression: kill first slave
ok: Replication of script multiple pushes to list with BLPOP (commmands replication)
ok: EVALSHA replication when first call is readonly (commmands replication)
ok: Lua scripts using SELECT are replicated correctly (commmands replication)
ok: maxmemory - is the memory limit honoured? (policy volatile-random)
ok: PSYNC2 #3899 regression: kill chained slave
Testing unit/bitfield
ok: BITFIELD signed SET and GET basics
ok: BITFIELD unsigned SET and GET basics
ok: BITFIELD # form
ok: BITFIELD basic INCRBY form
ok: BITFIELD chaining of multiple commands
ok: BITFIELD unsigned overflow wrap
ok: BITFIELD unsigned overflow sat
ok: BITFIELD signed overflow wrap
ok: BITFIELD signed overflow sat
ok: Slave is able to evict keys created in writable slaves
ok: Test replication partial resync: ok psync (diskless: no, reconnect: 1)
ok: TOUCH alters the last access time of a key
ok: TOUCH returns the number of existing keys specified
ok: PSYNC2 #3899 regression: kill first slave
ok: BITFIELD overflow detection fuzzing
ok: Connect a slave to the master instance
ok: Redis.replicate_commands() must be issued before any write
ok: Redis.replicate_commands() must be issued before any write (2)
ok: Redis.set_repl() must be issued after replicate_commands()
ok: Redis.set_repl() don't accept invalid values
ok: Test selective replication of certain Redis commands from Lua
ok: PRNG is seeded randomly for command replication
ok: Using side effects is not a problem with command replication
ok: maxmemory - is the memory limit honoured? (policy volatile-ttl)
ok: BITOP and fuzzing
Testing unit/geo
ok: AOF rewrite during write load: RDB preamble=yes
ok: GEOADD create
ok: GEOADD update
ok: GEOADD invalid coordinates
ok: GEOADD multi add
ok: Check geoset values
ok: GEORADIUS simple (sorted)
ok: GEORADIUS withdist (sorted)
ok: PSYNC2 #3899 regression: kill chained slave
ok: GEORADIUS with COUNT
ok: GEORADIUS with COUNT but missing integer argument
ok: GEORADIUS with COUNT DESC
ok: GEORADIUS HUGE, issue #2767
ok: GEORADIUSBYMEMBER simple (sorted)
ok: GEORADIUSBYMEMBER withdist (sorted)
ok: GEOHASH is able to return geohash strings
ok: GEOPOS simple
ok: GEOPOS missing element
ok: GEODIST simple & unit
ok: GEODIST missing elements
ok: GEORADIUS STORE option: syntax error
ok: GEORANGE STORE option: incompatible options
ok: GEORANGE STORE option: plain usage
ok: GEORANGE STOREDIST option: plain usage
ok: GEORANGE STOREDIST option: COUNT ASC and DESC
Testing unit/memefficiency
ok: BITFIELD overflow wrap fuzzing
ok: BITFIELD regression for #3221
ok: BITFIELD regression for #3564
ok: PSYNC2: generate load while killing replication links
ok: PSYNC2: cluster is consistent after load (x = 23377)
ok: PSYNC2: total sum of full synchronizations is exactly 4
ok: PSYNC2: --- CYCLE 2 ---
ok: PSYNC2: [NEW LAYOUT] Set #2 as master
ok: PSYNC2: Set #0 to replicate from #2
ok: PSYNC2: Set #4 to replicate from #0
ok: PSYNC2: Set #3 to replicate from #2
ok: PSYNC2: Set #1 to replicate from #2
Testing unit/hyperloglog
ok: maxmemory - only allkeys- should remove non-volatile keys (allkeys-random)
ok: BITOP or fuzzing
ok: PSYNC2 #3899 regression: kill first slave
ok: First server should have role slave after SLAVEOF
ok: Slave should be able to synchronize with the master
ok: Detect write load to master
ok: PSYNC2: cluster is consistent after failover
ok: maxmemory - only allkeys- should remove non-volatile keys (allkeys-lru)
ok: BITOP xor fuzzing
ok: PSYNC2 #3899 regression: kill chained slave
ok: Memory efficiency with values in range 32
ok: BITOP NOT fuzzing
ok: BITOP with integer encoded source objects
ok: BITOP with non string source key
ok: BITOP with empty string after non empty string (issue #529)
ok: BITPOS bit=0 with empty key returns 0
ok: BITPOS bit=1 with empty key returns -1
ok: BITPOS bit=0 with string less than 1 word works
ok: BITPOS bit=1 with string less than 1 word works
ok: BITPOS bit=0 starting at unaligned address
ok: BITPOS bit=1 starting at unaligned address
ok: BITPOS bit=0 unaligned+full word+reminder
ok: BITPOS bit=1 unaligned+full word+reminder
ok: BITPOS bit=1 returns -1 if string is all 0 bits
ok: BITPOS bit=0 works with intervals
ok: BITPOS bit=1 works with intervals
ok: BITPOS bit=0 changes behavior if end is given
ok: PSYNC2 #3899 regression: kill first slave
ok: BITPOS bit=1 fuzzy testing using SETBIT
ok: PSYNC2 #3899 regression: kill first slave
ok: PSYNC2 #3899 regression: kill first slave
ok: BITPOS bit=0 fuzzy testing using SETBIT
ok: PSYNC2 #3899 regression: kill first slave
ok: maxmemory - only allkeys-* should remove non-volatile keys (volatile-lru)
Testing unit/lazyfree
ok: Memory efficiency with values in range 64
ok: PSYNC2: generate load while killing replication links
ok: PSYNC2: cluster is consistent after load (x = 42707)
ok: PSYNC2: total sum of full synchronizations is exactly 4
ok: PSYNC2: --- CYCLE 3 ---
ok: PSYNC2: [NEW LAYOUT] Set #0 as master
ok: PSYNC2: Set #4 to replicate from #0
ok: PSYNC2: Set #2 to replicate from #4
ok: PSYNC2: Set #1 to replicate from #0
ok: PSYNC2: Set #3 to replicate from #0
ok: HyperLogLog self test passes
ok: PFADD without arguments creates an HLL value
ok: Approximated cardinality after creation is zero
ok: PFADD returns 1 when at least 1 reg was modified
ok: PFADD returns 0 when no reg was modified
ok: PFADD works with empty string (regression)
ok: PFCOUNT returns approximated cardinality of set
ok: UNLINK can reclaim memory in background
ok: maxmemory - only allkeys-* should remove non-volatile keys (volatile-random)
ok: PSYNC2 #3899 regression: kill first slave
ok: Memory efficiency with values in range 128
ok: PSYNC2: cluster is consistent after failover
ok: FLUSHDB ASYNC can reclaim memory in background
ok: HyperLogLogs are promote from sparse to dense
Testing unit/wait
ok: maxmemory - only allkeys-* should remove non-volatile keys (volatile-ttl)
ok: PSYNC2 #3899 regression: kill first slave
ok: PSYNC2 #3899 regression: kill chained slave
ok: maxmemory - policy volatile-lru should only remove volatile keys.
ok: PSYNC2 #3899 regression: kill first slave
ok: Test replication partial resync: no backlog (diskless: no, reconnect: 1)
ok: PSYNC2 #3899 regression: kill chained slave
ok: Memory efficiency with values in range 1024
ok: maxmemory - policy volatile-lfu should only remove volatile keys.
ok: Setup slave
ok: WAIT should acknowledge 1 additional copy of the data
ok: PSYNC2 #3899 regression: kill chained slave
ok: HyperLogLog sparse encoding stress test
ok: WAIT should not acknowledge 2 additional copies of the data
ok: Corrupted sparse HyperLogLogs are detected: Additionl at tail
ok: Corrupted sparse HyperLogLogs are detected: Broken magic
ok: Corrupted sparse HyperLogLogs are detected: Invalid encoding
ok: Corrupted dense HyperLogLogs are detected: Wrong length
ok: PFADD, PFCOUNT, PFMERGE type checking works
ok: PFMERGE results on the cardinality of union of sets
ok: maxmemory - policy volatile-random should only remove volatile keys.
ok: Slave should be able to synchronize with the master
ok: Detect write load to master
ok: PSYNC2 #3899 regression: kill chained slave
ok: PSYNC2: generate load while killing replication links
ok: PSYNC2: cluster is consistent after load (x = 62739)
ok: PSYNC2: total sum of full synchronizations is exactly 4
ok: maxmemory - policy volatile-ttl should only remove volatile keys.
ok: PSYNC2 #3899 regression: verify consistency
ok: PSYNC2: Bring the master back again for next test
ok: PSYNC2: Partial resync after restart using RDB aux fields
ok: Memory efficiency with values in range 16384
ok: MIGRATE can correctly transfer large values
ok: WAIT should not acknowledge 1 additional copy if slave is blocked
ok: MIGRATE can correctly transfer hashes
ok: MIGRATE timeout actually works
ok: MIGRATE can migrate multiple keys at once
ok: MIGRATE with multiple keys must have empty key arg
ok: MIGRATE with mutliple keys migrate just existing ones
ok: LTRIM stress testing - ziplist
ok: MIGRATE with multiple keys: stress command rewriting
ok: MIGRATE with multiple keys: delete just ack keys
ok: Test replication partial resync: ok after delay (diskless: no, reconnect: 1)
ok: Slave should be able to synchronize with the master
ok: Detect write load to master
ok: PFCOUNT multiple-keys merge returns cardinality of union #1
ok: PFCOUNT multiple-keys merge returns cardinality of union #2
ok: MASTER and SLAVE consistency with EVALSHA replication
ok: PFDEBUG GETREG returns the HyperLogLog raw registers
ok: PFADD / PFCOUNT cache invalidation works
ok: Connect multiple slaves at the same time (issue #141), diskless=no
ok: AOF rewrite during write load: RDB preamble=no
ok: Client output buffer hard limit is enforced
ok: Replication: commands with many arguments (issue #1221)
ok: Turning off AOF kills the background writing child if any
ok: Replication of SPOP command -- alsoPropagate() API
ok: AOF rewrite of list with quicklist encoding, string data
ok: Test replication partial resync: backlog expired (diskless: no, reconnect: 1)
ok: AOF rewrite of list with quicklist encoding, int data
ok: AOF rewrite of set with intset encoding, string data
ok: AOF rewrite of set with hashtable encoding, string data
ok: Slave should be able to synchronize with the master
ok: Detect write load to master
ok: AOF rewrite of set with intset encoding, int data
ok: AOF rewrite of set with hashtable encoding, int data
ok: Test replication partial resync: no reconnection, just sync (diskless: yes, reconnect: 0)
ok: AOF rewrite of hash with ziplist encoding, string data
ok: AOF rewrite of hash with hashtable encoding, string data
ok: AOF rewrite of hash with ziplist encoding, int data
ok: Slave should be able to synchronize with the master
ok: Detect write load to master
ok: GEOADD + GEORANGE randomized test
ok: AOF rewrite of hash with hashtable encoding, int data
ok: AOF rewrite of zset with ziplist encoding, string data
ok: AOF rewrite of zset with skiplist encoding, string data
ok: AOF rewrite of zset with ziplist encoding, int data
ok: AOF rewrite of zset with skiplist encoding, int data
ok: BGREWRITEAOF is delayed if BGSAVE is in progress
ok: BGREWRITEAOF is refused if already in progress
ok: Test replication partial resync: ok psync (diskless: yes, reconnect: 1)
ok: Stress tester for #3343-alike bugs
ok: Slave should be able to synchronize with the master
ok: Detect write load to master
ok: Client output buffer soft limit is not enforced if time is not overreached
ok: ziplist implementation: value encoding and backlink
ok: Test replication partial resync: no backlog (diskless: yes, reconnect: 1)
ok: ziplist implementation: encoding stress testing
ok: Slave should be able to synchronize with the master
ok: Detect write load to master
ok: Connect multiple slaves at the same time (issue #141), diskless=yes
ok: Client output buffer soft limit is enforced if time is overreached
ok: Test replication partial resync: ok after delay (diskless: yes, reconnect: 1)
ok: Slave should be able to synchronize with the master
ok: Detect write load to master
ok: Test replication partial resync: backlog expired (diskless: yes, reconnect: 1)
Cleanup: may take some time... OK
make[1]: Leaving directory `/home/heykel/redis-stable/src'
(django-snapdots) heykel@heykel-pc:~/redis-stable$ sudo make install
[sudo] password for heykel:
cd src && make install
make[1]: Entering directory `/home/heykel/redis-stable/src'
Hint: It's a good idea to run 'make test' ;)
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
make[1]: Leaving directory `/home/heykel/redis-stable/src'
14833:C 25 Sep 14:52:56.592 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
14833:C 25 Sep 14:52:56.592 # Redis version=4.0.2, bits=64, commit=00000000, modified=0, pid=14833, just started
14833:C 25 Sep 14:52:56.592 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
14833:M 25 Sep 14:52:56.593 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
14833:M 25 Sep 14:52:56.593 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
14833:M 25 Sep 14:52:56.593 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
Redis 4.0.2 (00000000/0) 64 bit
Running in standalone mode
Port: 6379
PID: 14833
http://redis.io
14833:M 25 Sep 14:52:56.595 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
14833:M 25 Sep 14:52:56.595 # Server initialized
14833:M 25 Sep 14:52:56.595 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
14833:M 25 Sep 14:52:56.595 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
14833:M 25 Sep 14:52:56.595 * Ready to accept connections
^C closing Redis
14833:signal-handler (1506365702) Received SIGINT scheduling shutdown...
14833:M 25 Sep 14:55:02.818 # User requested shutdown...
14833:M 25 Sep 14:55:02.818 Saving the final RDB snapshot before exiting.
14833:M 25 Sep 14:55:02.842 DB saved on disk
14833:M 25 Sep 14:55:02.842 # Redis is now ready to exit, bye bye...
Verifying if redis server works
launch redis-server in a terminal
heykel@heykel-pc:~/SCRIPTS$ sudo redis-server
4244:C 26 Sep 08:54:09.183 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4244:C 26 Sep 08:54:09.183 # Redis version=4.0.2, bits=64, commit=00000000, modified=0, pid=4244, just started
4244:C 26 Sep 08:54:09.183 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
4244:M 26 Sep 08:54:09.183 Increased maximum number of open files to 10032 (it was originally set to 1024).
Redis 4.0.2 (00000000/0) 64 bit
Running in standalone mode
Port: 6379
PID: 4244
http://redis.io
4244:M 26 Sep 08:54:09.184 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
4244:M 26 Sep 08:54:09.184 # Server initialized
4244:M 26 Sep 08:54:09.184 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
4244:M 26 Sep 08:54:09.184 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
4244:M 26 Sep 08:54:09.184 DB loaded from disk: 0.000 seconds
4244:M 26 Sep 08:54:09.184 * Ready to accept connections
execute redis-cli command in other terminal
heykel@heykel-pc:~/SCRIPTS$ redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379> exit
heykel@heykel-pc:~/SCRIPTS$
Closing redis-server in the terminal where redis-server was launched
^C
4244:signal-handler (1506430601) Received SIGINT scheduling shutdown...
4244:M 26 Sep 08:56:41.939 # User requested shutdown...
4244:M 26 Sep 08:56:41.939 Saving the final RDB snapshot before exiting.
4244:M 26 Sep 08:56:41.977 DB saved on disk
4244:M 26 Sep 08:56:41.977 # Redis is now ready to exit, bye bye...
Run redis as a background daemon
To access the script move into the utils directory:
heykel@heykel-pc:~/redis-stable/utils$ sudo ./install_server.sh
[sudo] password for heykel:
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Adding system startup for /etc/init.d/redis_6379 ...
/etc/rc0.d/K20redis_6379 -> ../init.d/redis_6379
/etc/rc1.d/K20redis_6379 -> ../init.d/redis_6379
/etc/rc6.d/K20redis_6379 -> ../init.d/redis_6379
/etc/rc2.d/S20redis_6379 -> ../init.d/redis_6379
/etc/rc3.d/S20redis_6379 -> ../init.d/redis_6379
/etc/rc4.d/S20redis_6379 -> ../init.d/redis_6379
/etc/rc5.d/S20redis_6379 -> ../init.d/redis_6379
Success!
Starting Redis server...
Installation successful!
REDIS INSTALLATION PROCESS
(django-snapdots) heykel@heykel-pc:~$ tar -xzvf redis-stable.tar.gz
(django-snapdots) heykel@heykel-pc:~$ cd redis-stable/
(django-snapdots) heykel@heykel-pc:~/redis-stable$ make
(django-snapdots) heykel@heykel-pc:~/redis-stable$ make test
The End
Runing the redis server
(django-snapdots) heykel@heykel-pc:~/redis-stable$ redis-server
^C closing Redis
Verifying if redis server works
heykel@heykel-pc:~/SCRIPTS$ sudo redis-server
^C
Run redis as a background daemon
REFERENCES