Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
c56668c8
Commit
c56668c8
authored
Apr 07, 2017
by
antirez
Browse files
Rax library updated.
parent
c4716d33
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
src/db.c
View file @
c56668c8
...
...
@@ -1315,9 +1315,9 @@ void slotToKeyUpdateKey(robj *key, int add) {
indexed
[
1
]
=
hashslot
&
0xff
;
memcpy
(
indexed
+
2
,
key
->
ptr
,
keylen
);
if
(
add
)
{
raxInsert
(
server
.
cluster
->
slots_to_keys
,
indexed
,
keylen
+
2
,
NULL
);
raxInsert
(
server
.
cluster
->
slots_to_keys
,
indexed
,
keylen
+
2
,
NULL
,
NULL
);
}
else
{
raxRemove
(
server
.
cluster
->
slots_to_keys
,
indexed
,
keylen
+
2
);
raxRemove
(
server
.
cluster
->
slots_to_keys
,
indexed
,
keylen
+
2
,
NULL
);
}
if
(
indexed
!=
buf
)
zfree
(
indexed
);
}
...
...
@@ -1348,8 +1348,8 @@ unsigned int getKeysInSlot(unsigned int hashslot, robj **keys, unsigned int coun
indexed
[
0
]
=
(
hashslot
>>
8
)
&
0xff
;
indexed
[
1
]
=
hashslot
&
0xff
;
raxStart
(
&
iter
,
server
.
cluster
->
slots_to_keys
);
raxSeek
(
&
iter
,
indexed
,
2
,
">="
);
while
(
count
--
&&
raxNext
(
&
iter
,
NULL
,
0
,
NULL
))
{
raxSeek
(
&
iter
,
">="
,
indexed
,
2
);
while
(
count
--
&&
raxNext
(
&
iter
))
{
if
(
iter
.
key
[
0
]
!=
indexed
[
0
]
||
iter
.
key
[
1
]
!=
indexed
[
1
])
break
;
keys
[
j
++
]
=
createStringObject
((
char
*
)
iter
.
key
+
2
,
iter
.
key_len
-
2
);
}
...
...
@@ -1368,8 +1368,8 @@ unsigned int delKeysInSlot(unsigned int hashslot) {
indexed
[
1
]
=
hashslot
&
0xff
;
raxStart
(
&
iter
,
server
.
cluster
->
slots_to_keys
);
while
(
server
.
cluster
->
slots_keys_count
[
hashslot
])
{
raxSeek
(
&
iter
,
indexed
,
2
,
">="
);
raxNext
(
&
iter
,
NULL
,
0
,
NULL
);
raxSeek
(
&
iter
,
">="
,
indexed
,
2
);
raxNext
(
&
iter
);
robj
*
key
=
createStringObject
((
char
*
)
iter
.
key
+
2
,
iter
.
key_len
-
2
);
dbDelete
(
&
server
.
db
[
0
],
key
);
...
...
src/rax.c
View file @
c56668c8
This diff is collapsed.
Click to expand it.
src/rax.h
View file @
c56668c8
...
...
@@ -144,14 +144,16 @@ extern void *raxNotFound;
/* Exported API. */
rax
*
raxNew
(
void
);
int
raxInsert
(
rax
*
rax
,
unsigned
char
*
s
,
size_t
len
,
void
*
data
);
int
raxRemove
(
rax
*
rax
,
unsigned
char
*
s
,
size_t
len
);
int
raxInsert
(
rax
*
rax
,
unsigned
char
*
s
,
size_t
len
,
void
*
data
,
void
**
old
);
int
raxRemove
(
rax
*
rax
,
unsigned
char
*
s
,
size_t
len
,
void
**
old
);
void
*
raxFind
(
rax
*
rax
,
unsigned
char
*
s
,
size_t
len
);
void
raxFree
(
rax
*
rax
);
void
raxStart
(
raxIterator
*
it
,
rax
*
rt
);
int
raxSeek
(
raxIterator
*
it
,
unsigned
char
*
ele
,
size_t
len
,
const
char
*
op
);
int
raxNext
(
raxIterator
*
it
,
unsigned
char
*
stop
,
size_t
stoplen
,
char
*
op
);
int
raxPrev
(
raxIterator
*
it
,
unsigned
char
*
stop
,
size_t
stoplen
,
char
*
op
);
int
raxSeek
(
raxIterator
*
it
,
const
char
*
op
,
unsigned
char
*
ele
,
size_t
len
);
int
raxNext
(
raxIterator
*
it
);
int
raxPrev
(
raxIterator
*
it
);
int
raxRandomWalk
(
raxIterator
*
it
,
size_t
steps
);
int
raxCompare
(
raxIterator
*
iter
,
const
char
*
op
,
unsigned
char
*
key
,
size_t
key_len
);
void
raxStop
(
raxIterator
*
it
);
void
raxShow
(
rax
*
rax
);
...
...
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