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