{"id":19621370,"url":"https://github.com/commenthol/sider-mem","last_synced_at":"2026-02-20T16:01:29.827Z","repository":{"id":57359193,"uuid":"420901219","full_name":"commenthol/sider-mem","owner":"commenthol","description":"An in-memory datastore in node for Redis™ compatible clients","archived":false,"fork":false,"pushed_at":"2023-12-23T08:54:34.000Z","size":218,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-21T18:36:08.333Z","etag":null,"topics":["datastore","redis-database","redis-server"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/commenthol.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-25T06:19:40.000Z","updated_at":"2022-11-17T07:09:12.000Z","dependencies_parsed_at":"2023-12-23T09:37:48.778Z","dependency_job_id":"bf7e2405-d637-4427-90bf-6038e259e296","html_url":"https://github.com/commenthol/sider-mem","commit_stats":{"total_commits":29,"total_committers":1,"mean_commits":29.0,"dds":0.0,"last_synced_commit":"acbd714d307e27af705bc1bcdc31a6bb74cfb703"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/commenthol/sider-mem","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commenthol%2Fsider-mem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commenthol%2Fsider-mem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commenthol%2Fsider-mem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commenthol%2Fsider-mem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/commenthol","download_url":"https://codeload.github.com/commenthol/sider-mem/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commenthol%2Fsider-mem/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29656589,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T09:27:29.698Z","status":"ssl_error","status_checked_at":"2026-02-20T09:26:12.373Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["datastore","redis-database","redis-server"],"created_at":"2024-11-11T11:22:42.007Z","updated_at":"2026-02-20T16:01:29.808Z","avatar_url":"https://github.com/commenthol.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sider-mem\n\n\u003e An in-memory datastore in node for [Redis™][redis][^redis] compatible clients\n\nSupports:\n- [auth][]entication\n- expiry ([expire][], [ttl][], [pexpire][], [pttl][], ...)\n- strings ([set][], [mset][], [get][], [mget][], ...)\n- hashes ([hset][], [hmset][], [hget][], [hgetall][], ...)\n- list ([lindex][], [llen][], [lpop][], [lpush] [], ...)\n- publish/ subscribe ([publish][], [subscribe][], [psubscribe][], ...)\n- persistence\n\nDoes not (yet) support:\n- transactions (rollback on error)\n- sets\n- streams\n- partitioning\n- replication\n\n## installation\n\n    npm i sider-mem\n\nstart the server\n\n    npx sider-mem --port 6379 --user alice --password somepassword\n\n\n## usage\n\n```js\nconst { Server } = require('sider-mem')\n\n// start the server\nconst server = new Server({username: 'alice', password: 'somepassword'})\nawait server.listen({ port: 6379 })\n\n// ...\n\n// disconnect\nawait server.close()\n```\n\nconnect with client\n\n```js\nconst redis = require('redis')\n\nconst client = redis.createClient({user: 'alice', password: 'somepassword'})\n\nclient.ping((err, data) =\u003e console.log(data)) // PONG\n```\n\nSee [example](./examples) for use with a clustered app.\nStart with `npm run example` and browse to http://localhost:3000\n\n\n## API\n\n### new Server()\n\n| Option              | default       | Description                                                  |\n| ------------------- | ------------- | ------------------------------------------------------------ |\n| username            | \"default\"     | Enables authentication                                       |\n| password            | -             |                                                              |\n| log                 | _debug-level_ | Changes logger; e.g. to use console logging `() =\u003e console` |\n| gracefulTimeout     | 100           | (ms) Server timeout on shutdown                              |\n| nextHouseKeepingSec | 30            | (s) Housekeeping interval for cleanup of expired keys        |\n| dbDir               | -             | Persistence: database directory for append only files        |\n| HashMap             | [Map][Map]    | Use a different hash-map implementation than [ES6 Map][Map]. See `src/HampMap.js` and `src/MegaMap.js` for possible implementations |\n\n### server.listen()\n\n| Option   | default   | Description |\n| -------- | --------- | ----------- |\n| port     | 6379      | Listening Port |\n| host     | 127.0.0.1 | Set to `0.0.0.0` to accept incoming connections from any host |\n\n\n## commands\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cb\u003eSupported commands ⏬\u003c/b\u003e\n  \u003c/summary\u003e\n\n- [append][]\n- [auth][]\n- [client][]\n- [command][]\n- [decr][]\n- [decrby][]\n- [del][]\n- [echo][]\n- [exec][]\n- [exists][]\n- [expire][]\n- [expireat][]\n- [expiretime][]\n- [flushall][]\n- [flushdb][]\n- [get][]\n- [getdel][]\n- [getex][]\n- [getrange][]\n- [getset][]\n- [hdel][]\n- [hello][]\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- [lindex][]\n- [llen][]\n- [lpop][]\n- [lpos][]\n- [lpush][]\n- [lpushx][]\n- [lrange][]\n- [lrem][]\n- [lset][]\n- [ltrim][]\n- [mget][]\n- [mset][]\n- [msetnx][]\n- [multi][]\n- [persist][]\n- [pexpire][]\n- [pexpireat][]\n- [pexpiretime][]\n- [ping][]\n- [psetex][]\n- [psubscribe][]\n- [pttl][]\n- [publish][]\n- [pubsub][]\n- [punsubscribe][]\n- [quit][]\n- [rpop][]\n- [rpush][]\n- [rpushx][]\n- [scan][]\n- [select][]\n- [set][]\n- [setex][]\n- [setnx][]\n- [setrange][]\n- [shutdown][]\n- [strlen][]\n- [subscribe][]\n- [substr][]\n- [ttl][]\n- [type][]\n- [unsubscribe][]\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n# license\n\n[MIT][]\n\n\u003c!-- references --\u003e\n\n[^redis]: Redis is a trademark of Redis Ltd. Any rights therein are reserved to Redis Ltd. Any use by this documentation is for referential purposes only and does not indicate any sponsorship, endorsement or affiliation between Redis and the author(s).\n\n[MIT]: ./LICENSE\n\n[Map]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\n\n[redis]: https://redis.io\n\n[append]: https://redis.io/commands/append\n[auth]: https://redis.io/commands/auth\n[client]: https://redis.io/commands/client\n[command]: https://redis.io/commands/command\n[decr]: https://redis.io/commands/decr\n[decrby]: https://redis.io/commands/decrby\n[del]: https://redis.io/commands/del\n[echo]: https://redis.io/commands/echo\n[exec]: https://redis.io/commands/exec\n[exists]: https://redis.io/commands/exists\n[expire]: https://redis.io/commands/expire\n[expireat]: https://redis.io/commands/expireat\n[expiretime]: https://redis.io/commands/expiretime\n[flushall]: https://redis.io/commands/flushall\n[flushdb]: https://redis.io/commands/flushdb\n[get]: https://redis.io/commands/get\n[getdel]: https://redis.io/commands/getdel\n[getex]: https://redis.io/commands/getex\n[getrange]: https://redis.io/commands/getrange\n[getset]: https://redis.io/commands/getset\n[hdel]: https://redis.io/commands/hdel\n[hello]: https://redis.io/commands/hello\n[hexists]: https://redis.io/commands/hexists\n[hget]: https://redis.io/commands/hget\n[hgetall]: https://redis.io/commands/hgetall\n[hincrby]: https://redis.io/commands/hincrby\n[hincrbyfloat]: https://redis.io/commands/hincrbyfloat\n[hkeys]: https://redis.io/commands/hkeys\n[hlen]: https://redis.io/commands/hlen\n[hmget]: https://redis.io/commands/hmget\n[hmset]: https://redis.io/commands/hmset\n[hscan]: https://redis.io/commands/hscan\n[hset]: https://redis.io/commands/hset\n[hsetnx]: https://redis.io/commands/hsetnx\n[hstrlen]: https://redis.io/commands/hstrlen\n[hvals]: https://redis.io/commands/hvals\n[incr]: https://redis.io/commands/incr\n[incrby]: https://redis.io/commands/incrby\n[incrbyfloat]: https://redis.io/commands/incrbyfloat\n[info]: https://redis.io/commands/info\n[lindex]: https://redis.io/commands/lindex\n[llen]: https://redis.io/commands/llen\n[lpop]: https://redis.io/commands/lpop\n[lpos]: https://redis.io/commands/lpos\n[lpush]: https://redis.io/commands/lpush\n[lpushx]: https://redis.io/commands/lpushx\n[lrange]: https://redis.io/commands/lrange\n[lrem]: https://redis.io/commands/lrem\n[lset]: https://redis.io/commands/lset\n[ltrim]: https://redis.io/commands/ltrim\n[mget]: https://redis.io/commands/mget\n[mset]: https://redis.io/commands/mset\n[msetnx]: https://redis.io/commands/msetnx\n[multi]: https://redis.io/commands/multi\n[persist]: https://redis.io/commands/persist\n[pexpire]: https://redis.io/commands/pexpire\n[pexpireat]: https://redis.io/commands/pexpireat\n[pexpiretime]: https://redis.io/commands/pexpiretime\n[ping]: https://redis.io/commands/ping\n[psetex]: https://redis.io/commands/psetex\n[psubscribe]: https://redis.io/commands/psubscribe\n[pttl]: https://redis.io/commands/pttl\n[publish]: https://redis.io/commands/publish\n[pubsub]: https://redis.io/commands/pubsub\n[punsubscribe]: https://redis.io/commands/punsubscribe\n[quit]: https://redis.io/commands/quit\n[rpop]: https://redis.io/commands/rpop\n[rpush]: https://redis.io/commands/rpush\n[rpushx]: https://redis.io/commands/rpushx\n[scan]: https://redis.io/commands/scan\n[select]: https://redis.io/commands/select\n[set]: https://redis.io/commands/set\n[setex]: https://redis.io/commands/setex\n[setnx]: https://redis.io/commands/setnx\n[setrange]: https://redis.io/commands/setrange\n[shutdown]: https://redis.io/commands/shutdown\n[strlen]: https://redis.io/commands/strlen\n[subscribe]: https://redis.io/commands/subscribe\n[substr]: https://redis.io/commands/substr\n[ttl]: https://redis.io/commands/ttl\n[type]: https://redis.io/commands/type\n[unsubscribe]: https://redis.io/commands/unsubscribe\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommenthol%2Fsider-mem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcommenthol%2Fsider-mem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommenthol%2Fsider-mem/lists"}