• A
    Added the SRANDMEMBER key <count> variant. · dd947715
    antirez 提交于
    SRANDMEMBER called with just the key argument can just return a single
    random element from a Redis Set. However many users need to return
    multiple unique elements from a Set, this is not a trivial problem to
    handle in the client side, and for truly good performance a C
    implementation was required.
    
    After many requests for this feature it was finally implemented.
    
    The problem implementing this command is the strategy to follow when
    the number of elements the user asks for is near to the number of
    elements that are already inside the set. In this case asking random
    elements to the dictionary API, and trying to add it to a temporary set,
    may result into an extremely poor performance, as most add operations
    will be wasted on duplicated elements.
    
    For this reason this implementation uses a different strategy in this
    case: the Set is copied, and random elements are returned to reach the
    specified count.
    
    The code actually uses 4 different algorithms optimized for the
    different cases.
    
    If the count is negative, the command changes behavior and allows for
    duplicated elements in the returned subset.
    dd947715
redis.c 96.2 KB