Skip to content

Commit 0fa4f1b

Browse files
authored
fix: zadd command override rather than ignore the same member in one times (#237)
2 parents c224da6 + d4e90a1 commit 0fa4f1b

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

src/storage/src/redis_zsets.cc

100644100755
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,12 @@ Status Redis::ZPopMin(const Slice& key, const int64_t count, std::vector<ScoreMe
165165
Status Redis::ZAdd(const Slice& key, const std::vector<ScoreMember>& score_members, int32_t* ret) {
166166
*ret = 0;
167167
uint32_t statistic = 0;
168-
std::unordered_set<std::string> unique;
168+
std::unordered_map<std::string, double> ms_map;
169169
std::vector<ScoreMember> filtered_score_members;
170-
for (const auto& sm : score_members) {
171-
if (unique.find(sm.member) == unique.end()) {
172-
unique.insert(sm.member);
173-
filtered_score_members.push_back(sm);
170+
for (auto it = score_members.rbegin(); it != score_members.rend(); ++it) {
171+
auto& sm = *it;
172+
if (ms_map.emplace(sm.member, sm.score).second) {
173+
filtered_score_members.emplace_back(sm.score, sm.member);
174174
}
175175
}
176176

0 commit comments

Comments
 (0)