Skip to main content

ZMSCORE

Introduction

In Dragonfly, as well as in Redis and Valkey, the ZMSCORE command is used to retrieve the scores associated with the given members in a sorted set stored at a specified key. It is useful when you need to quickly fetch the ranking or priority values of multiple elements from a given sorted set.

Syntax

ZMSCORE key member [member ...]
  • Time complexity: O(N) where N is the number of members being requested.
  • ACL categories: @read, @sortedset, @fast

Parameter Explanations

  • key: The key name of the sorted set stored in the database.
  • member: One or more members for which the associated score is requested.

Return Values

The command returns an array of scores corresponding to the list of member inputs. If a member is not part of the sorted set, nil is returned for that specific member.

Code Examples

Basic Example

Retrieve scores for multiple members in a sorted set:

dragonfly$> ZADD myzset 1 "Alice" 2 "Bob" 3 "Charlie"
(integer) 3
dragonfly$> ZMSCORE myzset "Alice" "Charlie" "Eve"
1) "1"
2) "3"
3) (nil)

In this example, "Alice" has a score of 1, "Charlie" has a score of 3, but "Eve" is not a member of the sorted set, so her score is returned as nil.

Example with Mixed Member Existence

Query the sorted set for both existing and non-existing members:

dragonfly$> ZADD myzset 5 "Dan" 8 "Erika"
(integer) 2
dragonfly$> ZMSCORE myzset "Erika" "Alice" "Unknown"
1) "8"
2) "1"
3) (nil)

"Dan" and "Erika" are found with their respective scores, but "Unknown" does not exist.

Example Using with Numeric Sorting Logic

Check how the scores are fetched for members with different numeric values:

dragonfly$> ZADD rankset 100 "UserA" 150 "UserB" 200 "UserC"
(integer) 3
dragonfly$> ZMSCORE rankset "UserA" "UserC" "UserD"
1) "100"
2) "200"
3) (nil)

Here UserA has a score of 100, UserC a score of 200, and UserD is not present, so nil is returned for UserD.

Best Practices

  • Use ZMSCORE when you need to retrieve multiple scores in a single command to save round-trip time to the server.
  • Make sure no duplicate members are included in your input to avoid redundant evaluations.
  • If the set contains many elements, ensure that the queried members are part of the current application logic to avoid unnecessary nil values.

Common Mistakes

  • Requesting members not part of the sorted set and assuming the command will give 0—instead, it returns nil.
  • Forgetting that ZMSCORE returns string representations of the scores, not integers or floats.

FAQs

What happens if the key does not exist?

If the key does not exist, the command returns nil for each member.

How does ZMSCORE handle multiple members?

It returns an array where each element corresponds to the score of a requested member. Non-existing members return nil in the respective position within the array.

Is ZMSCORE atomic?

Yes, like most Redis commands, ZMSCORE is atomic.