Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
3d9704d3
Commit
3d9704d3
authored
Jul 28, 2011
by
antirez
Browse files
Merge remote branch 'origin/unstable' into unstable
parents
243b783f
47cadab4
Changes
5
Hide whitespace changes
Inline
Side-by-side
TODO
View file @
3d9704d3
...
@@ -52,42 +52,18 @@ OPTIMIZATIONS
...
@@ -52,42 +52,18 @@ OPTIMIZATIONS
* Redis big lists as linked lists of small ziplists?
* Redis big lists as linked lists of small ziplists?
Possibly a simple heuristic that join near nodes when some node gets smaller than the low_level, and split it into two if gets bigger than high_level.
Possibly a simple heuristic that join near nodes when some node gets smaller than the low_level, and split it into two if gets bigger than high_level.
REPORTING
=========
* Better INFO output with sections.
RANDOM
RANDOM
======
======
* Server should abort when getcwd() fails if there is some kind of persistence configured. Check this in the cron loop.
* Clients should be closed as far as the output buffer list is bigger than a given number of elements (configurable in redis.conf)
* Clients should be closed as far as the output buffer list is bigger than a given number of elements (configurable in redis.conf)
* Should the redis default configuration, and the default redis.conf, just bind 127.0.0.1?
* Should the redis default configuration, and the default redis.conf, just bind 127.0.0.1?
KNOWN BUGS
KNOWN BUGS
==========
==========
* What happens in the following scenario:
1) We are reading an AOF file.
2) SETEX FOO 5 BAR
3) APPEND FOO ZAP
What happens if between 1 and 2 for some reason (system under huge load
or alike) too many time passes? We should prevent expires while the
AOF is loading.
* #519: Slave may have expired keys that were never read in the master (so a DEL
* #519: Slave may have expired keys that were never read in the master (so a DEL
is not sent in the replication channel) but are already expired since
is not sent in the replication channel) but are already expired since
a lot of time. Maybe after a given delay that is undoubltly greater than
a lot of time. Maybe after a given delay that is undoubltly greater than
the replication link latency we should expire this key on the slave on
the replication link latency we should expire this key on the slave on
access?
access?
DISKSTORE TODO
==============
* Fix FLUSHALL/FLUSHDB: the queue of pending reads/writes should be handled.
* Check that 00/00 and ff/ff exist at startup, otherwise exit with error.
* Implement sync flush option, where data is written synchronously on disk when a command is executed.
* Implement MULTI/EXEC as transaction abstract API to diskstore.c, with transaction_start, transaction_end, and a journal to recover.
* Stop BGSAVE thread on shutdown and any other condition where the child is killed during normal bgsave.
* Fix RANDOMKEY to really do something interesting
* Fix DBSIZE to really do something interesting
* Add a DEBUG command to check if an entry is or not in memory currently
* dscache.c near 236, kobj = createStringObject... we could use static obj.
src/Makefile
View file @
3d9704d3
...
@@ -169,7 +169,7 @@ dependencies:
...
@@ -169,7 +169,7 @@ dependencies:
../deps/jemalloc/lib/libjemalloc.a
:
../deps/jemalloc/lib/libjemalloc.a
:
cd
../deps/jemalloc
&&
./configure
$(JEMALLOC_CFLAGS)
--with-jemalloc-prefix
=
je_
--enable-cc-silence
&&
$(MAKE)
lib/libjemalloc.a
cd
../deps/jemalloc
&&
./configure
$(JEMALLOC_CFLAGS)
--with-jemalloc-prefix
=
je_
--enable-cc-silence
&&
$(MAKE)
lib/libjemalloc.a
redis-server
:
$(OBJ)
redis-server
:
dependencies
$(OBJ)
$(QUIET_LINK)$(CC)
-o
$(PRGNAME)
$(CCOPT)
$(DEBUG)
$(OBJ)
$(CCLINK)
$(ALLOC_LINK)
../deps/lua/src/liblua.a
$(QUIET_LINK)$(CC)
-o
$(PRGNAME)
$(CCOPT)
$(DEBUG)
$(OBJ)
$(CCLINK)
$(ALLOC_LINK)
../deps/lua/src/liblua.a
redis-benchmark
:
dependencies $(BENCHOBJ)
redis-benchmark
:
dependencies $(BENCHOBJ)
...
...
src/config.c
View file @
3d9704d3
...
@@ -508,12 +508,11 @@ void configGetCommand(redisClient *c) {
...
@@ -508,12 +508,11 @@ void configGetCommand(redisClient *c) {
if
(
stringmatch
(
pattern
,
"dir"
,
0
))
{
if
(
stringmatch
(
pattern
,
"dir"
,
0
))
{
char
buf
[
1024
];
char
buf
[
1024
];
addReplyBulkCString
(
c
,
"dir"
);
if
(
getcwd
(
buf
,
sizeof
(
buf
))
==
NULL
)
if
(
getcwd
(
buf
,
sizeof
(
buf
))
==
NULL
)
{
buf
[
0
]
=
'\0'
;
buf
[
0
]
=
'\0'
;
}
else
{
addReplyBulkCString
(
c
,
buf
);
addReplyBulkCString
(
c
,
"dir"
);
}
addReplyBulkCString
(
c
,
buf
);
matches
++
;
matches
++
;
}
}
if
(
stringmatch
(
pattern
,
"dbfilename"
,
0
))
{
if
(
stringmatch
(
pattern
,
"dbfilename"
,
0
))
{
...
...
src/t_hash.c
View file @
3d9704d3
...
@@ -403,8 +403,11 @@ void hdelCommand(redisClient *c) {
...
@@ -403,8 +403,11 @@ void hdelCommand(redisClient *c) {
for
(
j
=
2
;
j
<
c
->
argc
;
j
++
)
{
for
(
j
=
2
;
j
<
c
->
argc
;
j
++
)
{
if
(
hashTypeDelete
(
o
,
c
->
argv
[
j
]))
{
if
(
hashTypeDelete
(
o
,
c
->
argv
[
j
]))
{
if
(
hashTypeLength
(
o
)
==
0
)
dbDelete
(
c
->
db
,
c
->
argv
[
1
]);
deleted
++
;
deleted
++
;
if
(
hashTypeLength
(
o
)
==
0
)
{
dbDelete
(
c
->
db
,
c
->
argv
[
1
]);
break
;
}
}
}
}
}
if
(
deleted
)
{
if
(
deleted
)
{
...
...
tests/unit/type/hash.tcl
View file @
3d9704d3
...
@@ -235,6 +235,13 @@ start_server {tags {"hash"}} {
...
@@ -235,6 +235,13 @@ start_server {tags {"hash"}} {
r hgetall myhash
r hgetall myhash
}
{
b 2
}
}
{
b 2
}
test
{
HDEL - hash becomes empty before deleting all specified fields
}
{
r del myhash
r hmset myhash a 1 b 2 c 3
assert_equal 3
[
r hdel myhash a b c d e
]
assert_equal 0
[
r exists myhash
]
}
test
{
HEXISTS
}
{
test
{
HEXISTS
}
{
set rv
{}
set rv
{}
set k
[
lindex
[
array names smallhash *
]
0
]
set k
[
lindex
[
array names smallhash *
]
0
]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment