{"id":15065493,"url":"https://github.com/willin/rxdis","last_synced_at":"2026-02-09T08:36:04.515Z","repository":{"id":53197712,"uuid":"352539355","full_name":"willin/rxdis","owner":"willin","description":"RxJS wrapper for Redis","archived":false,"fork":false,"pushed_at":"2021-04-01T09:38:30.000Z","size":12,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-20T06:38:12.844Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/willin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-29T06:30:42.000Z","updated_at":"2021-04-01T09:38:05.000Z","dependencies_parsed_at":"2022-09-05T18:50:16.681Z","dependency_job_id":null,"html_url":"https://github.com/willin/rxdis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/willin/rxdis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willin%2Frxdis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willin%2Frxdis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willin%2Frxdis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willin%2Frxdis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/willin","download_url":"https://codeload.github.com/willin/rxdis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willin%2Frxdis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272289177,"owners_count":24907797,"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","status":"online","status_checked_at":"2025-08-27T02:00:09.397Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-09-25T00:39:16.663Z","updated_at":"2026-02-09T08:35:59.498Z","avatar_url":"https://github.com/willin.png","language":"TypeScript","readme":"# Rxdis\n\nRxJS wrapper for Redis\n\n[![npm](https://img.shields.io/npm/v/rxdis.svg?style=plastic)](https://npmjs.org/package/rxdis) [![npm](https://img.shields.io/npm/dm/rxdis.svg?style=plastic)](https://npmjs.org/package/rxdis)\n[![npm](https://img.shields.io/npm/dt/rxdis.svg?style=plastic)](https://npmjs.org/package/rxdis)\n\nMinimum, Flexible, Scalable.\n\n## Install\n\n```bash\nnpm install --save rxdis\n# or\nyarn add rxdis\n```\n\n## IORedis Adapter\n\n```ts\nimport { Rxdis } from 'rxdis';\nimport IORedis from 'ioredis';\n\nconst client = new IORedis();\n// options\nconst rxdis = Rxdis(client);\n\nrxdis\n  .set('test', 'hello')\n  // Output: OK\n  .subscribe(console.log);\n```\n\n### Pipeline\n\n```ts\nimport { Rxdis, Pipeline } from 'rxdis';\nimport IORedis from 'ioredis';\n\nconst redis = new IORedis();\nconst rxdis = Rxdis(redis);\n\nconst source$ = rxdis\n  .pipeline()\n  .set('test1', 'hello')\n  .set('test2', 'world')\n  // Nesscessary type transform\n  .get('test1') as Pipeline;\n\nsource$.exec().subscribe({\n  next: console.log,\n  complete() {\n    rxdis.disconnect();\n  },\n  error: console.error\n});\n```\n\n### Multi\n\n```ts\nimport { Rxdis, Pipeline } from 'rxdis';\nimport IORedis from 'ioredis';\n\nconst redis = new IORedis();\nconst rxdis = Rxdis(redis);\n\nconst source$ = rxdis\n  .multi()\n  .set('test1', 'hello')\n  .set('test2', 'world')\n  // Nesscessary type transform\n  .get('test1') as Pipeline; // Same with pipeline()\n\nsource$.exec().subscribe({\n  next: console.log,\n  complete() {\n    rxdis.disconnect();\n  },\n  error: console.error\n});\n```\n\n## Node-Redis Adapter\n\n```ts\nimport { Rxdis } from 'rxdis';\nimport Redis from 'redis';\n\nconst client = Redis\n  .createClient\n  // options\n  ();\nconst rxdis = Rxdis(client);\n\nrxdis\n  .set('test', 'hello')\n  // Output: OK\n  .subscribe(console.log);\n```\n\n## Typescript Defination\n\n\u003e p.s. If you are not using Typescript, you can use all methods that the version (IORedis or Redis) you installed supplied.\n\nCurrently, you can use these:\n\n(Submit a issue/PR to add a new one)\n\n- append\n- auth\n- auth\n- bgrewriteaof\n- bgsave\n- bitcount\n- bitcount\n- blpop\n- brpop\n- brpoplpush\n- bzpopmax\n- bzpopmin\n- cluster\n- config\n- dbsize\n- debug\n- decr\n- decrby\n- del\n- discard\n- dump\n- echo\n- eval\n- evalsha\n- exec\n- exists\n- expire\n- expireat\n- flushall\n- flushdb\n- geoadd\n- geodist\n- geohash\n- geopos\n- georadius\n- georadiusbymember\n- get\n- getbit\n- getrange\n- getset\n- hdel\n- hexists\n- hget\n- hgetall\n- hincrby\n- hincrbyfloat\n- hkeys\n- hlen\n- hmget\n- hmset\n- hscan\n- hset\n- hsetnx\n- hstrlen\n- hvals\n- incr\n- incrby\n- incrbyfloat\n- info\n- keys\n- lastsave\n- lindex\n- linsert\n- llen\n- lpop\n- lpos\n- lpush\n- lpushx\n- lrange\n- lrem\n- lset\n- ltrim\n- memory\n- mget\n- migrate\n- monitor\n- move\n- mset\n- msetnx\n- multi\n- multi\n- object\n- persist\n- pexpire\n- pexpireat\n- pfadd\n- pfcount\n- pfmerge\n- ping\n- psetex\n- psubscribe\n- pttl\n- publish\n- punsubscribe\n- randomkey\n- rename\n- renamenx\n- restore\n- rpop\n- rpoplpush\n- rpush\n- rpushx\n- sadd\n- save\n- scan\n- scard\n- script\n- sdiff\n- sdiffstore\n- select\n- set\n- setbit\n- setex\n- setnx\n- setrange\n- shutdown\n- sinter\n- sinterstore\n- sismember\n- slaveof\n- smembers\n- smove\n- sort\n- spop\n- srandmember\n- srem\n- sscan\n- strlen\n- subscribe\n- substr\n- sunion\n- sunionstore\n- sync\n- time\n- ttl\n- type\n- unlink\n- unsubscribe\n- unwatch\n- watch\n- xack\n- xadd\n- xclaim\n- xdel\n- xgroup\n- xinfo\n- xlen\n- xpending\n- xrange\n- xread\n- xreadgroup\n- xrevrange\n- xtrim\n- zadd\n- zcard\n- zcount\n- zinterstore\n- zpopmax\n- zpopmin\n- zrange\n- zrangebylex\n- zrangebyscore\n- zrank\n- zrem\n- zremrangebylex\n- zremrangebyrank\n- zremrangebyscore\n- zrevrangebylex\n- zrevrange\n- zrevrangebyscore\n- zrevrank\n- zscan\n- zscore\n- zunionstore\n\n## Roadmap\n\n- [x] Add IORedis `pipeline` and `multi` support\n- [ ] Add Redis `multi` support\n\n## License\n\nApache-2.0\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillin%2Frxdis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillin%2Frxdis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillin%2Frxdis/lists"}