SRANDMEMBER [ ] */
| 820 | |
| 821 | /* SRANDMEMBER [<count>] */ |
| 822 | void srandmemberCommand(client *c) { |
| 823 | robj_roptr set; |
| 824 | const char *ele; |
| 825 | int64_t llele = 0; |
| 826 | int encoding; |
| 827 | |
| 828 | if (c->argc == 3) { |
| 829 | srandmemberWithCountCommand(c); |
| 830 | return; |
| 831 | } else if (c->argc > 3) { |
| 832 | addReplyErrorObject(c,shared.syntaxerr); |
| 833 | return; |
| 834 | } |
| 835 | |
| 836 | /* Handle variant without <count> argument. Reply with simple bulk string */ |
| 837 | if ((set = lookupKeyReadOrReply(c,c->argv[1],shared.null[c->resp])) |
| 838 | == nullptr || checkType(c,set,OBJ_SET)) return; |
| 839 | |
| 840 | encoding = setTypeRandomElement(set,&ele,&llele); |
| 841 | if (encoding == OBJ_ENCODING_INTSET) { |
| 842 | addReplyBulkLongLong(c,llele); |
| 843 | } else { |
| 844 | addReplyBulkCBuffer(c,ele,sdslen(ele)); |
| 845 | } |
| 846 | } |
| 847 | |
| 848 | int qsortCompareSetsByCardinality(const void *s1, const void *s2) { |
| 849 | if (setTypeSize(*(robj**)s1) > setTypeSize(*(robj**)s2)) return 1; |
nothing calls this directly
no test coverage detected