sortedset相关内容

Redis 数据结构空间需求

redis 中有序集合和列表的空间有什么区别?我的猜测是排序集是某种平衡的二叉树,而列表是一个链表.这意味着在我为它们中的每一个编码的三个值之上,键、分数、值,尽管我会将链表的分数和值放在一起,但开销是链表需要跟踪一个另一个节点,二叉树需要跟踪两个,所以使用一个有序集合的空间开销是 O(N). 如果我的value和score都是longs,并且指向其他节点的指针也是longs,那么在64位计 ..
发布时间:2022-01-01 18:50:22 其他开发

Redis:当插入的元素在开头或结尾时,ZADD 是否比 O(logN) 更好?

ZADD 的 redis 文档 声明操作是 O(log N). 但是,当插入的元素位于排序顺序的开头或结尾时,有人知道 ZADD 是否比 O(log N) 更好? 例如对于某些实现,这可能是 O(1). 具体来说,redis 教程 指出: 排序集是通过双端口数据结构实现的,其中包含一个跳过列表和一个哈希表,所以每次我们添加一个元素Redis 执行 O(log(N)) 操作. ..
发布时间:2021-12-28 09:45:31 其他开发

Redis 排序集和存储 uid 的最佳方式

我有由 user_ids 和这些用户 id 的标签组成的数据.user_id 出现多次并且具有预先指定的标签数量 (500),但是这可能会在功能中发生变化.必须存储的是 user_id、它们的标签和它们的计数.我想稍后轻松找到得分最高的标签......等等.每次出现标签时它都会增加 我在 redis 中的实现是使用排序集完成的 每个 user_id 都是一个有序集合 key 是 ..
发布时间:2021-12-28 09:20:35 其他开发

在对象更改值时保持 TreeSet 排序

我有一个使用 Comparable 定义“自然排序顺序"的对象.这些都存储在 TreeSet 中. 除了删除和重新添加对象之外,当用于定义排序顺序的成员更新时,还有其他方法可以更新排序吗? 解决方案 正如其他人所指出的,没有内置的方法.但是您始终可以使用您选择的构造函数对 TreeSet 进行子类化,并添加所需的功能: public class UpdateableTreeSet扩 ..
发布时间:2021-12-27 18:08:20 Java开发

如何在TreeSet中找到元素的索引?

我正在使用 TreeSet 并且我只想在集合中找到一个数字的索引.有没有一种很好的方法来做到这一点,它实际上利用了二叉树的 O(log(n)) 复杂度? (如果没有,我应该怎么做,有谁知道为什么不呢?我很好奇为什么 Java 中会包含这样一个类,而没有搜索功能之类的功能.) 解决方案 正如@Yrlec 指出的那样 set.headSet(element).size 将返回 0,尽管集 ..
发布时间:2021-12-22 08:19:31 Java开发

有限排序集

我正在寻找具有有限数量元素的 SortedSet 实现.因此,如果添加了更多元素,则比较器会决定是否添加指定的最大值并从 Set 中删除最后一个. SortedSett1 = new LimitedSet(3);t1.add(5);t1.add(3);t1.add(1);//[1,3,5]t1.add(2);//[1,2,3]t1.add(9);//[1,2,3]t1.add(0);//[0,1 ..
发布时间:2021-11-15 00:51:52 Java开发

ZRANGESTORE Redis 6.2.0 之前的版本

基本上我想将排序集中的前 5 个存储在不同的集合中.在 redis 6.2 中,我可以使用 ZRANGESTORE 和 REV 选项来做到这一点.低版本的替代品是什么? 解决方案 看起来这满足了我的需求: eval "redis.call('DEL','final')local set=redis.call('ZREVRANGE','out',0,4,'withscores')对于 i ..
发布时间:2021-07-05 20:17:40 其他开发

为什么Redis SortedSet使用“跳过列表"而不是“平衡树"?

Redis文档如下: ZSET是使用两个数据结构来保存相同元素的有序集合为了使O(log(N))INSERT和REMOVE操作成一个排序数据结构. 将元素添加到哈希表,该哈希表将Redis对象映射到分数.同时将元素添加到跳过列表将分数映射到Redis对象(因此,对象按分数排序此“视图"). 我不太了解.有人可以给我详细的解释吗? 解决方案 Antirez说,请参见http ..
发布时间:2021-04-29 18:50:07 其他开发

在Redis中从一系列排序集中创建一个新集合

我有很多排序集,这些排序集被用作系统上的二级索引,用户查询可能会击中其中一些. ZADD scoreSet 1 "fred" ZADD scoreSet 5 "bob" ZADD scoreSet 2 "spodrick" ZADD ageSet 25 "fred" ZADD ageSet 29 "bob" ZADD ageSet 38 "spodrick" 要使用这些索引来使所有30 ..
发布时间:2020-07-08 18:35:51 其他开发

SortedSet-存储类对象时的自定义顺序

我正在考虑用SortedSet替换HashSet,因为它更适合我存储的数据. 但是,到目前为止,我所看到的所有示例都与存储简单对象(整数,字符串等)有关. 我想为具有许多属性的自定义类实现此功能,但是该类还包含一个我想用作“索引器"的日期. 问题是我该如何声明要使用的集合的自定义索引器,它将覆盖默认行为? 先谢谢了. 解决方案 实施IComparer并将其传递给So ..
发布时间:2020-07-08 18:34:44 C#/.NET

如何从python中将无穷大传递给redis?

我正在使用redis-py,并希望将-inf和inf与ZRANGEBYSCORE一起使用.我尝试使用inf的字符串和浮点数来执行此操作,但是这些返回空集.我该怎么办? 编辑 我尝试执行以下命令: redis.StrictRedis.ZRANGEBYSCORE("SORTEDSET", "-inf", "inf") 或 redis.StrictRedis.ZRANGE ..
发布时间:2020-07-08 18:34:40 Python

java TreeSet:比较和相等

我想用属性"sort_1"对对象列表进行排序.但是,当我想要删除时,我希望它使用属性"id".以下代码代表了问题. package javaapplication1; import java.util.TreeSet; public class MyObj implements Comparable { public long sort_1; public ..
发布时间:2020-07-08 18:34:39 Java开发

如何在Redis中存储排序的对象集?

我想知道如何在Redis中存储对象列表.那是我有这样的钥匙. users:pro { name: "Bruce", age: "20", score: 100, name: "Ed", age: "22", score: 80 } 我要在其中存储哈希列表作为特定键的值的位置.我想使用score字段作为排序集中的得分字段.我该怎么办? 我见过为键编写一个散列,但是如果我要多个散列并 ..
发布时间:2020-07-08 18:34:33 其他开发

Redis数据结构空间要求

redis中排序后的集合和列表之间的空间差异是什么?我的猜测是排序集是某种平衡的二叉树,而列表是链接列表.这意味着,在我为它们分别编码的三个值(键,分数,值)之上,尽管我将为链表的分数和值一起拼凑,但开销是链表需要跟踪一个其他节点,而二叉树需要跟踪两个,因此使用排序集的空间开销为O(N). 如果我的值和得分都为long,而指向其他节点的指针也为long,则看起来在64位计算机上,单个节点的空 ..
发布时间:2020-07-08 18:34:29 其他开发

添加到SortedSet< T>及其复杂性

MSDN声明以下 SortedSet(T).添加方法: 如果Count小于内部数组的容量,则此方法为O(1)操作. 有人可以解释“如何"吗?我的意思是,当添加新值时,我们需要找到一个正确的位置来添加一个值(将它与另一个值进行比较),并且内部实现看起来像是插入复杂度为O(log N)的“红黑树". 解决方案 注释完全是错误的.是的,它是一棵红黑树,用于插入的O(log(n)).看 ..
发布时间:2020-07-08 18:34:27 C#/.NET

SortedSet<> .Contains()如何实现自己的比较?

我想检查SortedSet中是否存在具有给定值的对象,但是我不了解自定义比较的工作原理.在List.Exists()中,我只能使用lambda,但是我不能在那里使用lambda,并且在msdn说我需要重写int返回函数时,我没有得到整个接口. public class Node { public int X, Y; public int rand; publ ..
发布时间:2020-07-08 18:34:22 C#/.NET