redis localhost:6379> sadd userlist 1 (integer) 1 redis localhost:6379> sadd userlist 2 (integer) 1 redis localhost:6379> sadd userlist 3 (integer) 1 redis localhost:6379> sadd userlist 4 (integer) 1 redis localhost:6379> sadd userlist 5 (integer) 1 redis localhost:6379> set score:user:1 20 OK redis localhost:6379> set score:user:2 15 OK redis localhost:6379> set score:user:3 11 OK redis localhost:6379> set score:user:4 24 OK redis localhost:6379> set score:user:5 15 OK redis localhost:6379> set age:user:1 29 OK redis localhost:6379> set age:user:2 35 OK redis localhost:6379> set age:user:3 25 OK redis localhost:6379> set age:user:4 31 OK redis localhost:6379> set age:user:5 27 OK
如上redis结构,如何实现sort的时候根据score倒排序,如果score相等(上面user2和user5的score相等),那么按照age正排序?
期望最后得到的userid排序结果为:
4 1 5 2 3
请问各位:这样的命令该如何写,或者有没有比较好的解决方案
Anda boleh menganggap set diisih hanyalah koleksi dan set itu sendiri tidak diisih, manakala set diisih menyokong pengisihan, mengikut skor
isih senarai pengguna mengikut skor:pengguna:* desc
Kekalkan dua zset
Isih mengikut umur: zadd sort_user_age nama pengguna umur
Isih mengikut skor: zadd sort_user_score markah nama pengguna
Kemudian simpan maklumat pengguna dalam format rentetan, susun mengikut cara tertentu dan kemudian pergi ke mget.
Jika anda ingin mengisih, anda mesti menggunakan zadd, tetapi apa yang anda katakan lebih rumit. Anda perlu memikirkannya