SRANDMEMBER [ ] */
| 809 | |
| 810 | /* SRANDMEMBER [<count>] */ |
| 811 | void srandmemberCommand(client *c) { |
| 812 | robj *set; |
| 813 | sds ele; |
| 814 | int64_t llele; |
| 815 | int encoding; |
| 816 | |
| 817 | if (c->argc == 3) { |
| 818 | srandmemberWithCountCommand(c); |
| 819 | return; |
| 820 | } else if (c->argc > 3) { |
| 821 | addReplyErrorObject(c,shared.syntaxerr); |
| 822 | return; |
| 823 | } |
| 824 | |
| 825 | /* Handle variant without <count> argument. Reply with simple bulk string */ |
| 826 | if ((set = lookupKeyReadOrReply(c,c->argv[1],shared.null[c->resp])) |
| 827 | == NULL || checkType(c,set,OBJ_SET)) return; |
| 828 | |
| 829 | encoding = setTypeRandomElement(set,&ele,&llele); |
| 830 | if (encoding == OBJ_ENCODING_INTSET) { |
| 831 | addReplyBulkLongLong(c,llele); |
| 832 | } else { |
| 833 | addReplyBulkCBuffer(c,ele,sdslen(ele)); |
| 834 | } |
| 835 | } |
| 836 | |
| 837 | int qsortCompareSetsByCardinality(const void *s1, const void *s2) { |
| 838 | if (setTypeSize(*(robj**)s1) > setTypeSize(*(robj**)s2)) return 1; |
nothing calls this directly
no test coverage detected