我有一个来自Redis的排序集。排序集包含对象的ID及其排序分数。接下来,我有一个Django查询集,由其排序ID包含在上述Redis排序集中的对象组成。我需要根据ID在redis排序集中中的位置对这个Django查询集进行排序。最快的方法是什么?我正在尝试以下操作:dictionary=dict(sorted_set)#turningthesortedsetintoadictionaryforpk,scoreindictionary:obj=queryset.get(id=pk)#getobjectwithidequallingpkscore=object#assigntheobje
我有一个包含对象ID及其各自排序分数的Redis排序集。我需要检索这些对象的Django查询集,根据排序集的分数排序。最有效的方法是什么?我的数据库是postgresql。目前,我正在分别检索redis排序集和未排序查询集。接下来,我根据排序集在python中的分数对查询集进行排序。可以在这里有意义地削减步骤吗?以某种方式在检索点对查询集进行排序等?obj_ids_with_scr=get_ids_w_scr()#retrievesredissortedsetwithscoresobj_ids=map(itemgetter(0),obj_ids_with_scr)#filterssor
我有一个包含对象ID及其各自排序分数的Redis排序集。我需要检索这些对象的Django查询集,根据排序集的分数排序。最有效的方法是什么?我的数据库是postgresql。目前,我正在分别检索redis排序集和未排序查询集。接下来,我根据排序集在python中的分数对查询集进行排序。可以在这里有意义地削减步骤吗?以某种方式在检索点对查询集进行排序等?obj_ids_with_scr=get_ids_w_scr()#retrievesredissortedsetwithscoresobj_ids=map(itemgetter(0),obj_ids_with_scr)#filterssor
因此,为了进行设置,我有一家公司,其中有用户和一组用于描述这些用户的标签。每个用户最多可以附加5000个标签。我们有一个引擎允许客户选择特定的标签来制作标签组。该引擎具有AND/Or功能和包含/排除功能。客户可以创建一个标签组,我们的引擎会找到满足标签组中指定的逻辑要求的用户总数。基本上这只是交集、联合和排除,所以redis集是完美的。为了处理这个问题,我按原样存储数据。标记1:[用户1、用户2、用户3]标记2:[用户1、用户5、用户6]等等从这里开始,所有的bool逻辑都是使用脚本完成的。但是,我们的客户群正在迅速扩大。几年之内,我们要么需要几个64GB的Redis服务器,要么需要一
因此,为了进行设置,我有一家公司,其中有用户和一组用于描述这些用户的标签。每个用户最多可以附加5000个标签。我们有一个引擎允许客户选择特定的标签来制作标签组。该引擎具有AND/Or功能和包含/排除功能。客户可以创建一个标签组,我们的引擎会找到满足标签组中指定的逻辑要求的用户总数。基本上这只是交集、联合和排除,所以redis集是完美的。为了处理这个问题,我按原样存储数据。标记1:[用户1、用户2、用户3]标记2:[用户1、用户5、用户6]等等从这里开始,所有的bool逻辑都是使用脚本完成的。但是,我们的客户群正在迅速扩大。几年之内,我们要么需要几个64GB的Redis服务器,要么需要一
给定具有快速变化的分数/权重的大型排序集,维护子集并按主集顺序访问这些子集的最有效方法是什么? 最佳答案 你有几个选择:更新超集中的分数,当您需要读取子集时调用ZINTERSTORE并将子集权重设置为0,以便结果是具有超集中分数的子集。更新分数时,写入子集和超集。最合适的选项将取决于您需要优化的内容-读取、写入、内存或简单性。子集的确定方式以及集合的大小相对于更新次数也可能产生影响。 关于set-在Redis中高效访问主排序集的任意子集,我们在StackOverflow上找到一个类似的问
给定具有快速变化的分数/权重的大型排序集,维护子集并按主集顺序访问这些子集的最有效方法是什么? 最佳答案 你有几个选择:更新超集中的分数,当您需要读取子集时调用ZINTERSTORE并将子集权重设置为0,以便结果是具有超集中分数的子集。更新分数时,写入子集和超集。最合适的选项将取决于您需要优化的内容-读取、写入、内存或简单性。子集的确定方式以及集合的大小相对于更新次数也可能产生影响。 关于set-在Redis中高效访问主排序集的任意子集,我们在StackOverflow上找到一个类似的问
我有一组非常大的键,200M键,具有小值,SELECT。根据我的计算,我似乎要耗尽内存。我想我需要超过4TB的内存来处理这种情况!我有哪些选择?首先,我的计算基于10000个具有100字节值的键占用220MB的RAM(这是我找到的一个表)。所以简单地输入(2*10^8/10^4)*220MB=4.4TB。如果我的计算看起来正确,我有哪些选择?我在不同的帖子上读到RedisVM不再是一个选项。我可以使用Redis集群吗?这似乎仍然需要太多服务器才能实用。我知道我可以切换到另一个数据库,但我希望这是最后的选择。 最佳答案 首先,不推荐使
我有一组非常大的键,200M键,具有小值,SELECT。根据我的计算,我似乎要耗尽内存。我想我需要超过4TB的内存来处理这种情况!我有哪些选择?首先,我的计算基于10000个具有100字节值的键占用220MB的RAM(这是我找到的一个表)。所以简单地输入(2*10^8/10^4)*220MB=4.4TB。如果我的计算看起来正确,我有哪些选择?我在不同的帖子上读到RedisVM不再是一个选项。我可以使用Redis集群吗?这似乎仍然需要太多服务器才能实用。我知道我可以切换到另一个数据库,但我希望这是最后的选择。 最佳答案 首先,不推荐使
我需要redis中2个大集合的交集的长度(SCARD)。所以这实现了我想要的:>SINTERSTOREintermediates:1s:2>SCARDintermediate但是集合很大,所以我不想存储中间值。从概念上讲,我想要:>SCARD(SINTERs:1s:2)有没有一种方法可以在单个命令中实现这一点,也许使用Lua脚本?或者我最好的选择是用我的应用程序语言编写脚本并在完成后删除中间值?例如使用python和redis-py:>>>r=redis.Redis(...)>>>pipe=r.pipeline()>>>res=pipe.sinterstore('intermediat