当我们使用sadd
在集合中插入成员时,是否有确定的方式来插入数据?
例如,
127.0.0.1:6380> smembers test
1) "hello world"
2) "hello"
3) "hello world 1234212"
4) "hello world 123"
127.0.0.1:6380> sadd test "aman"
(integer) 1
127.0.0.1:6380> smembers test
1) "hello world"
2) "hello"
3) "hello world 1234212"
4) "hello world 123"
5) "aman"
127.0.0.1:6380> sadd test "stack overflow"
(integer) 1
127.0.0.1:6380> smembers test
1) "hello world 1234212"
2) "hello world 123"
3) "hello world"
4) "aman"
5) "stack overflow"
6) "hello"
可以看出,当我插入“堆栈溢出”时,“hello”显示在最后一个索引而不是索引2中,就像之前的查询一样。这种行为有解释吗?
答案 0 :(得分:2)
使用哈希表实现集合并且是确定性的。但是,这并不意味着您从SMEMBERS获得的订单是您所期望的。
如果您需要词典排序,请使用排序集,其中所有成员具有相同的分数(例如零)。
答案 1 :(得分:0)