作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
当我们使用 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"
看起来,当我插入“stack overflow”时,“hello”显示在最后一个索引中,而不是前面查询中的索引 2。对这种行为有解释吗?
最佳答案
集合是使用哈希表实现的,并且是确定性的。然而,这并不意味着您从 SMEMBERS 获得的订单就是您所期望的。
如果您需要字典顺序,请使用所有成员都具有相同分数(例如零)的有序集合。
关于redis - 成员 : How is insertion order decided?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36933633/
我是一名优秀的程序员,十分优秀!