unstable merge conflicts resolved
This commit is contained in:
@@ -291,32 +291,6 @@ appendfsync everysec
|
||||
# "no" that is the safest pick from the point of view of durability.
|
||||
no-appendfsync-on-rewrite no
|
||||
|
||||
#################################### DISK STORE ###############################
|
||||
|
||||
# When disk store is active Redis works as an on-disk database, where memory
|
||||
# is only used as a object cache.
|
||||
#
|
||||
# This mode is good for datasets that are bigger than memory, and in general
|
||||
# when you want to trade speed for:
|
||||
#
|
||||
# - less memory used
|
||||
# - immediate server restart
|
||||
# - per key durability, without need for backgrond savig
|
||||
#
|
||||
# On the other hand, with disk store enabled MULTI/EXEC are no longer
|
||||
# transactional from the point of view of the persistence on disk, that is,
|
||||
# Redis transactions will still guarantee that commands are either processed
|
||||
# all or nothing, but there is no guarantee that all the keys are flushed
|
||||
# on disk in an atomic way.
|
||||
#
|
||||
# Of course with disk store enabled Redis is not as fast as it is when
|
||||
# working with just the memory back end.
|
||||
|
||||
diskstore-enabled no
|
||||
diskstore-path redis.ds
|
||||
cache-max-memory 0
|
||||
cache-flush-delay 0
|
||||
|
||||
############################### ADVANCED CONFIG ###############################
|
||||
|
||||
# Hashes are encoded in a special way (much more memory efficient) when they
|
||||
|
||||
@@ -6,6 +6,24 @@ start_server {tags {"repl"}} {
|
||||
s -1 role
|
||||
} {slave}
|
||||
|
||||
test {BRPOPLPUSH replication, when blocking against empty list} {
|
||||
set rd [redis_deferring_client]
|
||||
$rd brpoplpush a b 5
|
||||
r lpush a foo
|
||||
after 1000
|
||||
assert_equal [r debug digest] [r -1 debug digest]
|
||||
}
|
||||
|
||||
test {BRPOPLPUSH replication, list exists} {
|
||||
set rd [redis_deferring_client]
|
||||
r lpush c 1
|
||||
r lpush c 2
|
||||
r lpush c 3
|
||||
$rd brpoplpush c d 5
|
||||
after 1000
|
||||
assert_equal [r debug digest] [r -1 debug digest]
|
||||
}
|
||||
|
||||
test {MASTER and SLAVE dataset should be identical after complex ops} {
|
||||
createComplexDataset r 10000
|
||||
after 500
|
||||
|
||||
+38
-11
@@ -138,21 +138,48 @@ start_server {tags {"basic"}} {
|
||||
r decrby novar 17179869185
|
||||
} {-1}
|
||||
|
||||
test {SETNX target key missing} {
|
||||
r setnx novar2 foobared
|
||||
r get novar2
|
||||
} {foobared}
|
||||
test "SETNX target key missing" {
|
||||
r del novar
|
||||
assert_equal 1 [r setnx novar foobared]
|
||||
assert_equal "foobared" [r get novar]
|
||||
}
|
||||
|
||||
test {SETNX target key exists} {
|
||||
r setnx novar2 blabla
|
||||
r get novar2
|
||||
} {foobared}
|
||||
test "SETNX target key exists" {
|
||||
r set novar foobared
|
||||
assert_equal 0 [r setnx novar blabla]
|
||||
assert_equal "foobared" [r get novar]
|
||||
}
|
||||
|
||||
test {SETNX against volatile key} {
|
||||
test "SETNX against not-expired volatile key" {
|
||||
r set x 10
|
||||
r expire x 10000
|
||||
list [r setnx x 20] [r get x]
|
||||
} {0 10}
|
||||
assert_equal 0 [r setnx x 20]
|
||||
assert_equal 10 [r get x]
|
||||
}
|
||||
|
||||
test "SETNX against expired volatile key" {
|
||||
# Make it very unlikely for the key this test uses to be expired by the
|
||||
# active expiry cycle. This is tightly coupled to the implementation of
|
||||
# active expiry and dbAdd() but currently the only way to test that
|
||||
# SETNX expires a key when it should have been.
|
||||
for {set x 0} {$x < 9999} {incr x} {
|
||||
r setex key-$x 3600 value
|
||||
}
|
||||
|
||||
# This will be one of 10000 expiring keys. A cycle is executed every
|
||||
# 100ms, sampling 10 keys for being expired or not. This key will be
|
||||
# expired for at most 1s when we wait 2s, resulting in a total sample
|
||||
# of 100 keys. The probability of the success of this test being a
|
||||
# false positive is therefore approx. 1%.
|
||||
r set x 10
|
||||
r expire x 1
|
||||
|
||||
# Wait for the key to expire
|
||||
after 2000
|
||||
|
||||
assert_equal 1 [r setnx x 20]
|
||||
assert_equal 20 [r get x]
|
||||
}
|
||||
|
||||
test {EXISTS} {
|
||||
set res {}
|
||||
|
||||
@@ -278,6 +278,14 @@ start_server {
|
||||
r exec
|
||||
} {foo bar {} {} {bar foo}}
|
||||
|
||||
test {BRPOPLPUSH timeout} {
|
||||
set rd [redis_deferring_client]
|
||||
|
||||
$rd brpoplpush foo_list bar_list 1
|
||||
after 2000
|
||||
$rd read
|
||||
} {}
|
||||
|
||||
foreach {pop} {BLPOP BRPOP} {
|
||||
test "$pop: with single empty list argument" {
|
||||
set rd [redis_deferring_client]
|
||||
|
||||
Reference in New Issue
Block a user