Checking if a value exists in a list already Redis

后端 未结 5 1713
深忆病人
深忆病人 2021-02-01 13:14

I\'m wondering if there\'s a way to check if a key already exists in a redis list?

I can\'t use a set because I don\'t want to enforce uniqueness, but I do want to be ab

5条回答
  •  孤街浪徒
    2021-02-01 13:37

    Lists allow duplicates but do not provide a simple way to check for existence and as @Fritzy advised, you either need to:

    • Make multiple operations (remove then add again if found during removal) for simple checks = Cost in time
    • Maintain a separate set = Cost in memory

    I am surprised no one advised you to use either a Hash Table or a Sorted Set which combine advantages of allowing duplicity (by storing the number of elements as value - Hash Table, or score - Sorted Set) and indexing members by nature of a hash table/set.


    Hash Table

    To check for a key existence, use HEXISTS for a specific field which returns 0 if the specified member does not exist. You could also use the HGETcommand. It returns a nil answer if the specified member does not exist.

    To add a new member, simply use HINCRBY which will either update the value (ie the number of elements with the member name) or create a new member if it does not exist.


    Sorted Set

    To check for a key existence, use either one of the three following commands:

    • ZSCORE
    • ZRANK
    • ZREVRANK

    They return a nil answer if the specified member does not exist.

    To add a new member, simply use ZINCRBY which will either update the score (ie the number of elements with the member name) or create a new member if it does not exist.


    To sum up: Sorted Sets or Hash Tables allow you to make all the operations with your requirements with a single command.

提交回复
热议问题