Sorting Redis:特定的排序结果

Sorting Redis:特定的排序结果,sorting,redis,Sorting,Redis,我的用户表(“昵称”字段)中有数据: 我想这样分类: username1 username2 username3 username4 UserName User Name 首先要有文本和数字顺序,然后只有文本。 我该怎么做?谢谢你的帮助 根据文件: 尝试: 嗯,关于解决方案,您必须澄清以下几点: 1) 您将使用的数据结构类型 在处理排序之前,必须将数据存储在某个Redis结构中。对于这种情况,你有很多选择。Redis原生数据结构有:散列、列表、集合、排序集合和简单键/值 您可以为此使用列表,如

我的用户表(“昵称”字段)中有数据:

我想这样分类:

username1
username2
username3
username4
UserName
User Name
首先要有文本和数字顺序,然后只有文本。
我该怎么做?谢谢你的帮助

根据文件:

尝试:


嗯,关于解决方案,您必须澄清以下几点:

1) 您将使用的数据结构类型 在处理排序之前,必须将数据存储在某个Redis结构中。对于这种情况,你有很多选择。Redis原生数据结构有:散列、列表、集合、排序集合和简单键/值

您可以为此使用列表,如:

lpush mylist "User Name" username2 username1 UserName username4 username3
请注意,必须用双引号将空格括在值中

您也可以使用集合,集合和列表之间的主要区别在于集合只存储不同的值(请参见下面的示例,其中重复的值存储一次):

因此,使用集合时,您会像这样:

sadd myset "User Name" username2 username1 UserName username4 username3
2) 按字典顺序排序 您将使用
排序
,现在当您想按字典顺序排序时,必须使用
ALPHA
修饰符:

127.0.0.1:6379> sort mylist alpha
1) "User Name"
2) "UserName"
3) "username1"
4) "username2"
5) "username3"
6) "username4"
myset
元素的排序顺序相同

127.0.0.1:6379> sort myset alpha
1) "User Name"
2) "UserName"
3) "username1"
4) "username2"
5) "username3"
6) "username4"

因此,您可能已经注意到,您所说的您想要的顺序与常见的词典顺序并不完全相同:空格数字大写字母小写字母,按照顺序进行排序。

现在,按“排序*->昵称”进行排序,结果良好,但不是最好的:用户名用户名用户名用户名1用户名2用户名3用户名4这是一些自定义排序规则。我怀疑redis是否支持这一点。为什么不从访问redis db的地方用某种编程语言对它进行排序呢?谢谢你的建议,我会试试的!
sadd myset "User Name" username2 username1 UserName username4 username3
127.0.0.1:6379> sort mylist alpha
1) "User Name"
2) "UserName"
3) "username1"
4) "username2"
5) "username3"
6) "username4"
127.0.0.1:6379> sort myset alpha
1) "User Name"
2) "UserName"
3) "username1"
4) "username2"
5) "username3"
6) "username4"