Redis zrange 将值排序为整数

标签 redis

由于 zrange “字典顺序用于具有相同分数的元素”,我该如何解决这个问题?

例如:

zadd s 0 1
zadd s 0 2
zadd s 0 10
zadd s 0 3

zrange s 0 4
1) 1
2) 10
3) 2
4) 3

我如何让它像这样排序(同时尊重分数):

1) 1
2) 2
3) 3
4) 10

最佳答案

您不能更改字典顺序。

但是,您可以存储一个值,其字典顺序与数字顺序相匹配。例如而不是存储:

1
2
12
15
122
321

你可以存储:

A1
A2
B12
B15
C122
C321

第一个字母只是一个代码,表示数值的位数(A=1,B=2,等等...),所以数字和字典序是一样的。客户端应用程序可以在存储/检索时轻松添加/删除此前缀。

 zadd s 0 A1
 zadd s 0 A2
 zadd s 0 B10
 zadd s 0 A3

 zrange s 0 4
 1) "A1"
 2) "A2"
 3) "A3"
 4) "B10"

关于Redis zrange 将值排序为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13808658/

相关文章:

python - 从 redis 队列到 azure 容器实例的超时错误

redis - 当您在特定数据库上运行 `KEYS` 命令时,Redis 会锁定所有可用数据库吗?

azure - 如何为 CacheManager 选择 Azure 中的 Redis databaseId?

java - 将 Spring boot 从 1.5.3 升级到 2.1.6 时出现 NoSuchMethodError : org. springframework.data.redis.core.RedisTemplate.delete(Ljava/lang/Object;)V

node.js - 使用redis缓存关系数据

node.js - redis-store如何将房间数据存储到redis中?

scheduling - 使用 Redis 延迟执行/调度?

memcached - 软件缓存基准

redis - 将 key 存储在 redis 集中

redis - 如何在不将其安装到开发PC的情况下使用远程redis服务器