Nic*_*las 4 key time-complexity redis
默认情况下,Redis配置有16个数据库,编号为0-15.这只是名称间距的一种形式,还是存在按数据库隔离的性能影响?
例如,如果我使用默认数据库(0),并且我有1000万个密钥,最佳实践建议使用keys命令通过通配符模式查找密钥将是低效的.但是如果我存储我的主要密钥,也许是8个分段密钥的前4个分段,导致在单独的数据库(比如数据库3)中产生更小的密钥子集.Redis会将这些视为一组较小的密钥,还是所有数据库中的所有密钥都显示为一个巨大的密钥索引?
更明确地说,就时间复杂性而言,如果我的数据库看起来像这样:
密钥调用数据库3 的时间复杂度是O(10m)还是O(10k)?
谢谢你的时间.
Redis为每个数据库都有一个单独的字典.从您的示例中,对数据库3的键调用将为O(10K)
也就是说,使用keys是违反最佳做法的.此外,对同一应用程序使用多个数据库也是最佳做法.如果要迭代密钥,则应以特定于应用程序的方式对其进行索引.SortedSet是构建索引的好方法.
参考文献:
redisServer有一个数组redisDB.请参阅redis.h中的redisServerredisDB都有自己的字典对象.请参阅redis.h中的redisDBkeys 命令在当前数据库的字典上运行| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |