data-structures - Redis Zset 定位记录
问题描述
为什么redis可以通过分数和键在log(n)时间内定位zset中的记录?redis 实际上是否为 zset 存储了两个索引?
我想如果我们有一个通过其键确定记录的跳过列表,我们只能按此键进行索引。
SkipNode
key
k1 #value
k2 #score
|------------------------------> |
|-... |
|------------->|-------...---------|
skipNode1 -> skipNode2 -> ... skipNodeN
我们只能通过键定位记录,在最左边,(k1,k2),顺序,我们如何只通过k2索引记录?
解决方案
为什么redis可以同时通过score和key在log(n)时间内定位zset中的一条记录?
key 搜索的时间复杂度是 O(1),score 是 O(log(n))。
redis 实际上是否为 zset 存储了两个索引?
是的,它有两个索引。键的哈希索引和分数的跳过列表索引。
推荐阅读
- javascript - 如何在 JavaScript 中使用反射调用方法
- python - 如何使用硒(python)刷新页面直到警报不可见
- c# - 缺少 NuGet 包源
- android - Google Play Billing 4.0 launchBillingFlow() 永远不会返回,并且购买永远不会被确认
- python - mean_pressure_weighted 函数的计算
- debugging - 如何使用 .NET Core 在 GraphQL 中传递多个字段进行查询
- java - 出现登录错误。com.firebase.ui.auth.data.model.PhoneNumberVerificationRequiredException:电话号码需要验证
- c# - C# 上的 Mysql 未打开“System.InvalidOperationException:'连接必须有效且打开。'”
- postman - 我可以从 Postman 中的集合生成开放 api 吗?
- sql - SQL添加字符串结束值