当前位置: 首页 > 知识库问答 >
问题:

Redis中使用唯一元素实现队列

韩彦君
2023-03-14

我需要用唯一的元素在Redis中实现队列。目前,我正在使用Redis List实现队列(LPUSH,RPOP),并使用Redis SortedSet/Set实现唯一性。

`  
def push(key):
    if redis_cache.zadd('UNIQUE', key, 1):
        redis_cache.lpush('QUEUE', key)
    else:
       print "Key Exist"
`
`
def pop():
    key = redis_cache.rpop('QUEUE')
    redis_cache.zrem('UNIQUE', key)
    return key
`

由于密钥的高负载/请求,Redis缓存服务器使用了更多的CPU。此外,上面的方法占用了更多的内存大小(相同的密钥在列表和Sortedset中都被删除),还有没有其他方法来实现具有密钥唯一性的Redis队列呢?

共有1个答案

曹昊焱
2023-03-14

实际上,我会考虑使用单个排序集,将分数设置为时间戳,并使用zadd的“nx”标志。这将同时提供有序性和唯一性。

 类似资料:
  • 问题内容: 我正在寻找java.util.Queue或Google集合中某些行为类似于Queue的实现,但还要确保队列中的每个元素都是唯一的。(所有进一步插入均无效) 有这种可能,还是我必须手工完成? 现在,我正在使用带有LinkedList实现的Queue,并在插入之前检查其唯一性。(我使用侧面地图进行此操作,在排队之前/之后在侧面地图中添加/删除元素)。我不太喜欢 欢迎任何输入。如果它不在ja

  • 问题内容: 在最近的一次采访中有人问我这个问题。 您将获得一个包含一百万个元素的数组。除了一个元素外,所有元素都是重复的。我的任务是找到独特的元素。 我的做法是要经过在整个数组循环,然后创建一个索引作为数组中和的数组中出现的次数。然后再次遍历我们的地图,并返回值为1的索引。 我说我的方法会花费时间。面试官告诉我要以低于复杂度的方式对其进行优化。我说过,我们不能,因为我们必须遍历具有一百万个元素的整

  • 所以现在我有一个 Arraylist包含以下值 我想找到独特的疫苗类型的数量以及它的频率。因此,例如,这个arraylist应该返回如下内容 理想的情况是它自己独立的数据结构(数组)。我尝试使用哈希列表,但不支持arraylist的格式化方式。 我得到错误“the hashlist Conly be Resolve to Type”。

  • 问题内容: 所以我有一个元组 我想从“ a”中删除所有具有共同的第二个元素的元组,但其中一个(其中任何一个)除外。 对于上面的示例,我想要新的输出 换句话说,我想消除在元组第二位置被视为重复元素的元组。 我想知道实现这一目标的最有效方法,也想知道我是否可以对列表而不是对元组做同样的事情? 问题答案: 您可以从元素中创建一个 字典 ,并使用任何您希望唯一的键作为键,然后提取值。这适用于“唯一”子元素

  • 我的应用程序需要两个缓存用例: Redis作为缓存。我计划使用内存策略按id缓存项(JSON Blob)。平均JSON项目将采取 我是否可以在不影响性能的情况下将Redis的单个实例用于两个目的?为了更好的性能,把它们拆分是不是更好?谢谢你。

  • 本文向大家介绍使用js实现一个循环队列相关面试题,主要包含被问及使用js实现一个循环队列时的应答技巧和注意事项,需要的朋友参考一下