{"id":25430476,"url":"https://github.com/mvalitov/elixir-redis-unique-queue","last_synced_at":"2025-10-31T20:30:37.260Z","repository":{"id":57542369,"uuid":"90647909","full_name":"mvalitov/elixir-redis-unique-queue","owner":"mvalitov","description":"A unique FIFO queue with atomic operations built on top of Redis","archived":false,"fork":false,"pushed_at":"2018-09-08T20:42:09.000Z","size":13,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-17T14:07:40.581Z","etag":null,"topics":["elixir","queue","redis"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mvalitov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-08T16:10:42.000Z","updated_at":"2020-12-11T07:37:52.000Z","dependencies_parsed_at":"2022-09-26T18:31:12.198Z","dependency_job_id":null,"html_url":"https://github.com/mvalitov/elixir-redis-unique-queue","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvalitov%2Felixir-redis-unique-queue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvalitov%2Felixir-redis-unique-queue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvalitov%2Felixir-redis-unique-queue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvalitov%2Felixir-redis-unique-queue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mvalitov","download_url":"https://codeload.github.com/mvalitov/elixir-redis-unique-queue/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239225766,"owners_count":19603162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","queue","redis"],"created_at":"2025-02-17T03:39:07.096Z","updated_at":"2025-10-31T20:30:37.230Z","avatar_url":"https://github.com/mvalitov.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RedisUniqueQueue\n\nIs the elixir-implementation of ruby-gem [ruby-redis-unique-queue](https://github.com/MishaConway/ruby-redis-unique-queue)\n\n## Installation\n\nAdd `redis_unique_queue` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [{:redis_unique_queue, \"~\u003e 0.1.5\"}]\nend\n```\n\nDocumentation [https://hexdocs.pm/redis_unique_queue](https://hexdocs.pm/redis_unique_queue).\n\n## Usage\n\n\nQueue creation:\n  * with options(redis host and port)\n\n        {:ok, queue} = RedisUniqueQueue.create(\"test_queue\", %{host: \"0.0.0.0\", port: 6379})\n\n  * with Redix connection\n\n        {:ok, conn} = Redix.start_link(host: \"0.0.0.0\", port: 6379)\n        {:ok, queue} = RedisUniqueQueue.create(\"test_queue\", conn)\n\nPush data to the queue\n\n    RedisUniqueQueue.push(queue, \"test\")\n\nPush multiple items onto the queue\n\n    RedisUniqueQueue.push_multi(queue, [\"test2\", \"test3\"])\n\nPop data from the queue\n\n    RedisUniqueQueue.pop(queue)\n\nAtomically pop multiple items from the queue\n\n    RedisUniqueQueue.pop_multi(queue, 2)\n\nPop all items in the queue\n\n    RedisUniqueQueue.pop_all(queue)\n\nGet the size of the queue\n\n    RedisUniqueQueue.size(queue)\n\nRead the first item in the queue\n\n    RedisUniqueQueue.front(queue)\n\nRead the last item in the queue\n\n    RedisUniqueQueue.back(queue)\n\nSee if an item exists in the queue\n\n    RedisUniqueQueue.include?(queue, \"test\")\n\nRemove an arbitrary item from the queue\n\n    RedisUniqueQueue.remove(queue, \"test2\")\n\nRemove an arbitrary item from the queue by index\n\n    RedisUniqueQueue.remove_item_by_index(queue, 2)\n\nGet all items in the queue\n\n    RedisUniqueQueue.all(queue)\n\nPeek into arbitrary ranges in the queue\n\n    RedisUniqueQueue.peek(queue)\n\nThe queue can be cleared of all items\n\n    RedisUniqueQueue.clear(queue)\n\nOptionally, the queue can also be set to expire (in seconds).\n\n    RedisUniqueQueue.expire(queue, 60)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmvalitov%2Felixir-redis-unique-queue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmvalitov%2Felixir-redis-unique-queue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmvalitov%2Felixir-redis-unique-queue/lists"}