如何限制redis python中smembers返回的结果?

xghobddn  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(335)

我有一个redis数据库,它包含一组集合,每个集合包含大小约200kb的对象。每一组的基数是不同的,并将永远增加。
问题是当我执行smembers命令时,我一次得到set的所有成员,这消耗了所有可用内存。所以这里我想限制或限制返回的成员数,以避免进程内存耗尽。
我使用的是python的redis包。而且我在文档中找不到任何有用的信息。
有人能提出切实可行的解决办法吗?
下面是我用来从redis获取数据的python代码: result = redisclient.smembers(key)

ergxz8rk

ergxz8rk1#

最好的办法是扫描集合,或者在理想的n值处打破它,或者指定 COUNT 在通话中。
https://redis.io/commands/sscan
redis py中的sscan:https://redis-py.readthedocs.io/en/stable/#redis.redis.sscan
或sscan iter迭代器调用:https://redis-py.readthedocs.io/en/stable/#redis.redis.sscan_iter
编辑:在重读了你关于布景大小的评论之后,我会提醒你不要太高 COUNT 因为它可能有一些性能限制。

相关问题