Lines Matching refs:c

141 robj *lookupKeyReadOrReply(client *c, robj *key, robj *reply) {  in lookupKeyReadOrReply()  argument
142 robj *o = lookupKeyRead(c->db, key); in lookupKeyReadOrReply()
143 if (!o) addReply(c,reply); in lookupKeyReadOrReply()
147 robj *lookupKeyWriteOrReply(client *c, robj *key, robj *reply) { in lookupKeyWriteOrReply() argument
148 robj *o = lookupKeyWrite(c->db, key); in lookupKeyWriteOrReply()
149 if (!o) addReply(c,reply); in lookupKeyWriteOrReply()
289 int selectDb(client *c, int id) { in selectDb() argument
292 c->db = &server.db[id]; in selectDb()
317 void flushdbCommand(client *c) { in flushdbCommand() argument
318 server.dirty += dictSize(c->db->dict); in flushdbCommand()
319 signalFlushedDb(c->db->id); in flushdbCommand()
320 dictEmpty(c->db->dict,NULL); in flushdbCommand()
321 dictEmpty(c->db->expires,NULL); in flushdbCommand()
323 addReply(c,shared.ok); in flushdbCommand()
326 void flushallCommand(client *c) { in flushallCommand() argument
329 addReply(c,shared.ok); in flushallCommand()
344 void delCommand(client *c) { in delCommand() argument
347 for (j = 1; j < c->argc; j++) { in delCommand()
348 expireIfNeeded(c->db,c->argv[j]); in delCommand()
349 if (dbDelete(c->db,c->argv[j])) { in delCommand()
350 signalModifiedKey(c->db,c->argv[j]); in delCommand()
352 "del",c->argv[j],c->db->id); in delCommand()
357 addReplyLongLong(c,deleted); in delCommand()
362 void existsCommand(client *c) { in existsCommand() argument
366 for (j = 1; j < c->argc; j++) { in existsCommand()
367 expireIfNeeded(c->db,c->argv[j]); in existsCommand()
368 if (dbExists(c->db,c->argv[j])) count++; in existsCommand()
370 addReplyLongLong(c,count); in existsCommand()
373 void selectCommand(client *c) { in selectCommand() argument
376 if (getLongFromObjectOrReply(c, c->argv[1], &id, in selectCommand()
381 addReplyError(c,"SELECT is not allowed in cluster mode"); in selectCommand()
384 if (selectDb(c,id) == C_ERR) { in selectCommand()
385 addReplyError(c,"invalid DB index"); in selectCommand()
387 addReply(c,shared.ok); in selectCommand()
391 void randomkeyCommand(client *c) { in randomkeyCommand() argument
394 if ((key = dbRandomKey(c->db)) == NULL) { in randomkeyCommand()
395 addReply(c,shared.nullbulk); in randomkeyCommand()
399 addReplyBulk(c,key); in randomkeyCommand()
403 void keysCommand(client *c) { in keysCommand() argument
406 sds pattern = c->argv[1]->ptr; in keysCommand()
409 void *replylen = addDeferredMultiBulkLength(c); in keysCommand()
411 di = dictGetSafeIterator(c->db->dict); in keysCommand()
419 if (expireIfNeeded(c->db,keyobj) == 0) { in keysCommand()
420 addReplyBulk(c,keyobj); in keysCommand()
427 setDeferredMultiBulkLength(c,replylen,numkeys); in keysCommand()
465 int parseScanCursorOrReply(client *c, robj *o, unsigned long *cursor) { in parseScanCursorOrReply() argument
474 addReplyError(c, "invalid cursor"); in parseScanCursorOrReply()
491 void scanGenericCommand(client *c, robj *o, unsigned long cursor) { in scanGenericCommand() argument
509 while (i < c->argc) { in scanGenericCommand()
510 j = c->argc - i; in scanGenericCommand()
511 if (!strcasecmp(c->argv[i]->ptr, "count") && j >= 2) { in scanGenericCommand()
512 if (getLongFromObjectOrReply(c, c->argv[i+1], &count, NULL) in scanGenericCommand()
519 addReply(c,shared.syntaxerr); in scanGenericCommand()
524 } else if (!strcasecmp(c->argv[i]->ptr, "match") && j >= 2) { in scanGenericCommand()
525 pat = c->argv[i+1]->ptr; in scanGenericCommand()
534 addReply(c,shared.syntaxerr); in scanGenericCommand()
550 ht = c->db->dict; in scanGenericCommand()
628 if (!filter && o == NULL && expireIfNeeded(c->db, kobj)) filter = 1; in scanGenericCommand()
652 addReplyMultiBulkLen(c, 2); in scanGenericCommand()
653 addReplyBulkLongLong(c,cursor); in scanGenericCommand()
655 addReplyMultiBulkLen(c, listLength(keys)); in scanGenericCommand()
658 addReplyBulk(c, kobj); in scanGenericCommand()
669 void scanCommand(client *c) { in scanCommand() argument
671 if (parseScanCursorOrReply(c,c->argv[1],&cursor) == C_ERR) return; in scanCommand()
672 scanGenericCommand(c,NULL,cursor); in scanCommand()
675 void dbsizeCommand(client *c) { in dbsizeCommand() argument
676 addReplyLongLong(c,dictSize(c->db->dict)); in dbsizeCommand()
679 void lastsaveCommand(client *c) { in lastsaveCommand() argument
680 addReplyLongLong(c,server.lastsave); in lastsaveCommand()
683 void typeCommand(client *c) { in typeCommand() argument
687 o = lookupKeyReadWithFlags(c->db,c->argv[1],LOOKUP_NOTOUCH); in typeCommand()
700 addReplyStatus(c,type); in typeCommand()
703 void shutdownCommand(client *c) { in shutdownCommand() argument
706 if (c->argc > 2) { in shutdownCommand()
707 addReply(c,shared.syntaxerr); in shutdownCommand()
709 } else if (c->argc == 2) { in shutdownCommand()
710 if (!strcasecmp(c->argv[1]->ptr,"nosave")) { in shutdownCommand()
712 } else if (!strcasecmp(c->argv[1]->ptr,"save")) { in shutdownCommand()
715 addReply(c,shared.syntaxerr); in shutdownCommand()
728 addReplyError(c,"Errors trying to SHUTDOWN. Check logs."); in shutdownCommand()
731 void renameGenericCommand(client *c, int nx) { in renameGenericCommand() argument
738 if (sdscmp(c->argv[1]->ptr,c->argv[2]->ptr) == 0) samekey = 1; in renameGenericCommand()
740 if ((o = lookupKeyWriteOrReply(c,c->argv[1],shared.nokeyerr)) == NULL) in renameGenericCommand()
744 addReply(c,nx ? shared.czero : shared.ok); in renameGenericCommand()
749 expire = getExpire(c->db,c->argv[1]); in renameGenericCommand()
750 if (lookupKeyWrite(c->db,c->argv[2]) != NULL) { in renameGenericCommand()
753 addReply(c,shared.czero); in renameGenericCommand()
758 dbDelete(c->db,c->argv[2]); in renameGenericCommand()
760 dbAdd(c->db,c->argv[2],o); in renameGenericCommand()
761 if (expire != -1) setExpire(c->db,c->argv[2],expire); in renameGenericCommand()
762 dbDelete(c->db,c->argv[1]); in renameGenericCommand()
763 signalModifiedKey(c->db,c->argv[1]); in renameGenericCommand()
764 signalModifiedKey(c->db,c->argv[2]); in renameGenericCommand()
766 c->argv[1],c->db->id); in renameGenericCommand()
768 c->argv[2],c->db->id); in renameGenericCommand()
770 addReply(c,nx ? shared.cone : shared.ok); in renameGenericCommand()
773 void renameCommand(client *c) { in renameCommand() argument
774 renameGenericCommand(c,0); in renameCommand()
777 void renamenxCommand(client *c) { in renamenxCommand() argument
778 renameGenericCommand(c,1); in renamenxCommand()
781 void moveCommand(client *c) { in moveCommand() argument
788 addReplyError(c,"MOVE is not allowed in cluster mode"); in moveCommand()
793 src = c->db; in moveCommand()
794 srcid = c->db->id; in moveCommand()
796 if (getLongLongFromObject(c->argv[2],&dbid) == C_ERR || in moveCommand()
798 selectDb(c,dbid) == C_ERR) in moveCommand()
800 addReply(c,shared.outofrangeerr); in moveCommand()
803 dst = c->db; in moveCommand()
804 selectDb(c,srcid); /* Back to the source DB */ in moveCommand()
809 addReply(c,shared.sameobjecterr); in moveCommand()
814 o = lookupKeyWrite(c->db,c->argv[1]); in moveCommand()
816 addReply(c,shared.czero); in moveCommand()
819 expire = getExpire(c->db,c->argv[1]); in moveCommand()
822 if (lookupKeyWrite(dst,c->argv[1]) != NULL) { in moveCommand()
823 addReply(c,shared.czero); in moveCommand()
826 dbAdd(dst,c->argv[1],o); in moveCommand()
827 if (expire != -1) setExpire(dst,c->argv[1],expire); in moveCommand()
831 dbDelete(src,c->argv[1]); in moveCommand()
833 addReply(c,shared.cone); in moveCommand()
943 void expireGenericCommand(client *c, long long basetime, int unit) { in expireGenericCommand() argument
944 robj *key = c->argv[1], *param = c->argv[2]; in expireGenericCommand()
947 if (getLongLongFromObjectOrReply(c, param, &when, NULL) != C_OK) in expireGenericCommand()
954 if (lookupKeyWrite(c->db,key) == NULL) { in expireGenericCommand()
955 addReply(c,shared.czero); in expireGenericCommand()
968 serverAssertWithInfo(c,key,dbDelete(c->db,key)); in expireGenericCommand()
973 rewriteClientCommandVector(c,2,aux,key); in expireGenericCommand()
975 signalModifiedKey(c->db,key); in expireGenericCommand()
976 notifyKeyspaceEvent(NOTIFY_GENERIC,"del",key,c->db->id); in expireGenericCommand()
977 addReply(c, shared.cone); in expireGenericCommand()
980 setExpire(c->db,key,when); in expireGenericCommand()
981 addReply(c,shared.cone); in expireGenericCommand()
982 signalModifiedKey(c->db,key); in expireGenericCommand()
983 notifyKeyspaceEvent(NOTIFY_GENERIC,"expire",key,c->db->id); in expireGenericCommand()
989 void expireCommand(client *c) { in expireCommand() argument
990 expireGenericCommand(c,mstime(),UNIT_SECONDS); in expireCommand()
993 void expireatCommand(client *c) { in expireatCommand() argument
994 expireGenericCommand(c,0,UNIT_SECONDS); in expireatCommand()
997 void pexpireCommand(client *c) { in pexpireCommand() argument
998 expireGenericCommand(c,mstime(),UNIT_MILLISECONDS); in pexpireCommand()
1001 void pexpireatCommand(client *c) { in pexpireatCommand() argument
1002 expireGenericCommand(c,0,UNIT_MILLISECONDS); in pexpireatCommand()
1005 void ttlGenericCommand(client *c, int output_ms) { in ttlGenericCommand() argument
1009 if (lookupKeyReadWithFlags(c->db,c->argv[1],LOOKUP_NOTOUCH) == NULL) { in ttlGenericCommand()
1010 addReplyLongLong(c,-2); in ttlGenericCommand()
1015 expire = getExpire(c->db,c->argv[1]); in ttlGenericCommand()
1021 addReplyLongLong(c,-1); in ttlGenericCommand()
1023 addReplyLongLong(c,output_ms ? ttl : ((ttl+500)/1000)); in ttlGenericCommand()
1027 void ttlCommand(client *c) { in ttlCommand() argument
1028 ttlGenericCommand(c, 0); in ttlCommand()
1031 void pttlCommand(client *c) { in pttlCommand() argument
1032 ttlGenericCommand(c, 1); in pttlCommand()
1035 void persistCommand(client *c) { in persistCommand() argument
1038 de = dictFind(c->db->dict,c->argv[1]->ptr); in persistCommand()
1040 addReply(c,shared.czero); in persistCommand()
1042 if (removeExpire(c->db,c->argv[1])) { in persistCommand()
1043 addReply(c,shared.cone); in persistCommand()
1046 addReply(c,shared.czero); in persistCommand()
1052 void touchCommand(client *c) { in touchCommand() argument
1054 for (int j = 1; j < c->argc; j++) in touchCommand()
1055 if (lookupKeyRead(c->db,c->argv[j]) != NULL) touched++; in touchCommand()
1056 addReplyLongLong(c,touched); in touchCommand()