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
5b9d3ac6
Commit
5b9d3ac6
authored
Dec 18, 2019
by
antirez
Browse files
Avoid changing setKey() API after #6679 fix.
parent
9d1baa07
Changes
7
Hide whitespace changes
Inline
Side-by-side
src/bitops.c
View file @
5b9d3ac6
...
...
@@ -754,7 +754,7 @@ void bitopCommand(client *c) {
/* Store the computed value into the target key */
if
(
maxlen
)
{
o
=
createObject
(
OBJ_STRING
,
res
);
setKey
(
c
->
db
,
targetkey
,
o
,
0
);
setKey
(
c
->
db
,
targetkey
,
o
);
notifyKeyspaceEvent
(
NOTIFY_STRING
,
"set"
,
targetkey
,
c
->
db
->
id
);
decrRefCount
(
o
);
}
else
if
(
dbDelete
(
c
->
db
,
targetkey
))
{
...
...
src/db.c
View file @
5b9d3ac6
...
...
@@ -216,10 +216,11 @@ void dbOverwrite(redisDb *db, robj *key, robj *val) {
*
* 1) The ref count of the value object is incremented.
* 2) clients WATCHing for the destination key notified.
* 3) The expire time of the key is reset (the key is made persistent).
* 3) The expire time of the key is reset (the key is made persistent),
* unless 'keepttl' is true.
*
* All the new keys in the database should be created via this interface. */
void
s
etKey
(
redisDb
*
db
,
robj
*
key
,
robj
*
val
,
int
keepttl
)
{
void
genericS
etKey
(
redisDb
*
db
,
robj
*
key
,
robj
*
val
,
int
keepttl
)
{
if
(
lookupKeyWrite
(
db
,
key
)
==
NULL
)
{
dbAdd
(
db
,
key
,
val
);
}
else
{
...
...
@@ -230,6 +231,13 @@ void setKey(redisDb *db, robj *key, robj *val, int keepttl) {
signalModifiedKey
(
db
,
key
);
}
/* Common case for genericSetKey() where the TTL is not retained. */
void
setKey
(
redisDb
*
db
,
robj
*
key
,
robj
*
val
)
{
genericSetKey
(
db
,
key
,
val
,
0
);
}
/* Return true if the specified key exists in the specified database.
* LRU/LFU info is not updated in any way. */
int
dbExists
(
redisDb
*
db
,
robj
*
key
)
{
return
dictFind
(
db
->
dict
,
key
->
ptr
)
!=
NULL
;
}
...
...
src/geo.c
View file @
5b9d3ac6
...
...
@@ -657,7 +657,7 @@ void georadiusGeneric(client *c, int flags) {
if
(
returned_items
)
{
zsetConvertToZiplistIfNeeded
(
zobj
,
maxelelen
);
setKey
(
c
->
db
,
storekey
,
zobj
,
0
);
setKey
(
c
->
db
,
storekey
,
zobj
);
decrRefCount
(
zobj
);
notifyKeyspaceEvent
(
NOTIFY_ZSET
,
"georadiusstore"
,
storekey
,
c
->
db
->
id
);
...
...
src/module.c
View file @
5b9d3ac6
...
...
@@ -2107,7 +2107,7 @@ RedisModuleString *RM_RandomKey(RedisModuleCtx *ctx) {
int
RM_StringSet
(
RedisModuleKey
*
key
,
RedisModuleString
*
str
)
{
if
(
!
(
key
->
mode
&
REDISMODULE_WRITE
)
||
key
->
iter
)
return
REDISMODULE_ERR
;
RM_DeleteKey
(
key
);
setKey
(
key
->
db
,
key
->
key
,
str
,
0
);
setKey
(
key
->
db
,
key
->
key
,
str
);
key
->
value
=
str
;
return
REDISMODULE_OK
;
}
...
...
@@ -2187,7 +2187,7 @@ int RM_StringTruncate(RedisModuleKey *key, size_t newlen) {
if
(
key
->
value
==
NULL
)
{
/* Empty key: create it with the new size. */
robj
*
o
=
createObject
(
OBJ_STRING
,
sdsnewlen
(
NULL
,
newlen
));
setKey
(
key
->
db
,
key
->
key
,
o
,
0
);
setKey
(
key
->
db
,
key
->
key
,
o
);
key
->
value
=
o
;
decrRefCount
(
o
);
}
else
{
...
...
@@ -3571,7 +3571,7 @@ int RM_ModuleTypeSetValue(RedisModuleKey *key, moduleType *mt, void *value) {
if
(
!
(
key
->
mode
&
REDISMODULE_WRITE
)
||
key
->
iter
)
return
REDISMODULE_ERR
;
RM_DeleteKey
(
key
);
robj
*
o
=
createModuleObject
(
mt
,
value
);
setKey
(
key
->
db
,
key
->
key
,
o
,
0
);
setKey
(
key
->
db
,
key
->
key
,
o
);
decrRefCount
(
o
);
key
->
value
=
o
;
return
REDISMODULE_OK
;
...
...
src/server.h
View file @
5b9d3ac6
...
...
@@ -2025,7 +2025,8 @@ int objectSetLRUOrLFU(robj *val, long long lfu_freq, long long lru_idle,
#define LOOKUP_NOTOUCH (1<<0)
void
dbAdd
(
redisDb
*
db
,
robj
*
key
,
robj
*
val
);
void
dbOverwrite
(
redisDb
*
db
,
robj
*
key
,
robj
*
val
);
void
setKey
(
redisDb
*
db
,
robj
*
key
,
robj
*
val
,
int
keepttl
);
void
genericSetKey
(
redisDb
*
db
,
robj
*
key
,
robj
*
val
,
int
keepttl
);
void
setKey
(
redisDb
*
db
,
robj
*
key
,
robj
*
val
);
int
dbExists
(
redisDb
*
db
,
robj
*
key
);
robj
*
dbRandomKey
(
redisDb
*
db
);
int
dbSyncDelete
(
redisDb
*
db
,
robj
*
key
);
...
...
src/sort.c
View file @
5b9d3ac6
...
...
@@ -570,7 +570,7 @@ void sortCommand(client *c) {
}
}
if
(
outputlen
)
{
setKey
(
c
->
db
,
storekey
,
sobj
,
0
);
setKey
(
c
->
db
,
storekey
,
sobj
);
notifyKeyspaceEvent
(
NOTIFY_LIST
,
"sortstore"
,
storekey
,
c
->
db
->
id
);
server
.
dirty
+=
outputlen
;
...
...
src/t_string.c
View file @
5b9d3ac6
...
...
@@ -84,7 +84,7 @@ void setGenericCommand(client *c, int flags, robj *key, robj *val, robj *expire,
addReply
(
c
,
abort_reply
?
abort_reply
:
shared
.
null
[
c
->
resp
]);
return
;
}
s
etKey
(
c
->
db
,
key
,
val
,
flags
&
OBJ_SET_KEEPTTL
);
genericS
etKey
(
c
->
db
,
key
,
val
,
flags
&
OBJ_SET_KEEPTTL
);
server
.
dirty
++
;
if
(
expire
)
setExpire
(
c
,
c
->
db
,
key
,
mstime
()
+
milliseconds
);
notifyKeyspaceEvent
(
NOTIFY_STRING
,
"set"
,
key
,
c
->
db
->
id
);
...
...
@@ -183,7 +183,7 @@ void getCommand(client *c) {
void
getsetCommand
(
client
*
c
)
{
if
(
getGenericCommand
(
c
)
==
C_ERR
)
return
;
c
->
argv
[
2
]
=
tryObjectEncoding
(
c
->
argv
[
2
]);
setKey
(
c
->
db
,
c
->
argv
[
1
],
c
->
argv
[
2
]
,
0
);
setKey
(
c
->
db
,
c
->
argv
[
1
],
c
->
argv
[
2
]);
notifyKeyspaceEvent
(
NOTIFY_STRING
,
"set"
,
c
->
argv
[
1
],
c
->
db
->
id
);
server
.
dirty
++
;
}
...
...
@@ -328,7 +328,7 @@ void msetGenericCommand(client *c, int nx) {
for
(
j
=
1
;
j
<
c
->
argc
;
j
+=
2
)
{
c
->
argv
[
j
+
1
]
=
tryObjectEncoding
(
c
->
argv
[
j
+
1
]);
setKey
(
c
->
db
,
c
->
argv
[
j
],
c
->
argv
[
j
+
1
]
,
0
);
setKey
(
c
->
db
,
c
->
argv
[
j
],
c
->
argv
[
j
+
1
]);
notifyKeyspaceEvent
(
NOTIFY_STRING
,
"set"
,
c
->
argv
[
j
],
c
->
db
->
id
);
}
server
.
dirty
+=
(
c
->
argc
-
1
)
/
2
;
...
...
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