-
Notifications
You must be signed in to change notification settings - Fork 153
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove namespace when not passed #48
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this, good stuff.
Do you mind also adding a test to check that by default the keyv
namespace is used?
On second thoughts, I'm not sure this alone will add any benefit. The primary key will still be defined as We could solve this by adjusting the table schema to use What are your thoughts on this? I appreciate you taking the time to put this together but personally I think Keyv's focus should be on providing a consistent key-value interface over raw performance. I think for most cases |
I'm not planning to change the
I can do that if you want to keep the PR :) |
Ah, fair enough. Yeah if you could add that extra test I'm happy to merge 👍 |
Hello, Sorry to bring this up. I was wondering what is currently preventing this PR of being merged? I do understand keeping the consistency about how key/value are being names through keyv however this lack of flexibility with the namespace does not help. |
@mjesun - wanted to check in on the changes that were asked above. Thoughts? |
going to close this out. Let me know if you still want to work on this and we can reopen it. |
* Initial commit * docs(readme): add Greenkeeper badge * Setup entry schema * Use key as primary key * Ensure keys are unique and indexable * Disable timestamps * Add get/set/delete methods * Add clear method * Wait for connection before running queries * Return Boolean for delete method * clear method always resolves to undefined * get method returns undefined on nonexistent keys * Disable logging by default * 0.1.0 * Make invalid connection string more clear * Explicitly use memory for tests * KeyvSQLite => KeyvSqlite * Respect table name * Don't run tests in memory * Accept connection string as contructor argument * Make sure clear only clears current namespace * 0.2.0 * Remove Greenkeeper badge * Test options have expected defaults * Extract sequelize logic into subclass * Remove old test * Update keywords * Remove redundant type casting * 0.3.0 * Logging and table are set by default in keyv-sequelize * fix(package): update keyv-sequelize to version 0.1.0 (#3) * Use keyv-sql instead of keyv-sequelize (#5) * 1.0.0 * Pass busyTimeout option to SQLite * Use large busyTimeout with tests Stops 'SQLITE_BUSY: database is locked' errors from creating loads of connections * fix(package): update keyv-sql to version 0.2.0 (#6) * Pin dependency versions * Only accept opts object * 1.1.0 * fix(package): update keyv-sql to version 0.2.3 (#8) Closes #7 * Update to requirable * 1.2.0 * fix(package): update keyv-sql to version 0.2.4 (#9) * 1.2.1 * Finish docs * Also mention table option * fix(package): update keyv-sql to version 1.0.2 (#11) Closes #10 * 1.2.2 * fix(package): update sqlite3 to version 3.1.9 (#13) * 1.2.3 * Update keyv-sql to the latest version 🚀 (#14) * 1.2.4 * Scope to @keyv * 1.2.5 * Use scoped sql package * 1.2.6 * Update ava to the latest version 🚀 (#17) * fix(package): update @keyv/sql to version 1.0.6 (#18) * fix(package): update @keyv/sql to version 1.1.1 (#22) Closes #20 * 1.2.7 * Update @keyv/sql to the latest version 🚀 (#23) * 1.2.8 * Update sqlite3 to the latest version 🚀 (#24) * 1.2.9 * Update sqlite3 to the latest version 🚀 (#25) * 1.2.10 * Update sqlite3 to the latest version 🚀 (#26) * 1.2.11 * Update sqlite3 to the latest version 🚀 (#28) * 1.2.12 * Update coveralls to the latest version 🚀 (#27) * Update ava to the latest version 🚀 (#30) * Update ava to the latest version 🚀 (#31) * Update ava to the latest version 🚀 (#32) * fix(package): update sqlite3 to version 4.0.2 (#40) Closes #34 * Stop testing Node.js v4 and start testing v10 * 2.0.0 * Update sqlite3 to version 4.0.8 (#44) * Update ava to version 1.4.1 (#46) * Update nyc to version 14.1.1 (#48) Closes #36 * 2.0.1 * Update sqlite3 and don't pin version * 2.0.2 * upgrading travisci to node version 12,14, and 16 * adding github build tests * updating to just run tests * updating build name * removing travisci * adding github status badge for build to readme * upgrading pify to version 5.0.0 * upgrading sqlite3 to version 5.0.2 Thanks to @jdesboeufs for this work. * upgrading ava to 3.15.0 * upgrading nyc to version 15.1.0 * upgrading to xo version 0.45.0 * xo clean up opts renamed to options err renamed to error tabs and spaces * moving the busy timeout to 3 seconds * maintenance release and version bump to v.2.0.3 * moving to standard test suite * adding in nvm for support on 16 * updating licensing to include authors * Delete yarn.lock * no longer needed in mono repo * import into mono repo * adding in code coverage for sqlite * removing this as a storage adapter in keyv Co-authored-by: Luke Childs <lukechilds123@gmail.com> Co-authored-by: greenkeeper[bot] <greenkeeper[bot]@users.noreply.github.com> Co-authored-by: Aditya Patadia <adityapatadia@users.noreply.github.com>
* Initial commit * Adapt Redis API * Run redis on Travis * Fix typo in description * Add npm keywords * Pass TTL functionality over to Redis * Create promisified redis methods on init * Create redis methods in loop * Make sure .get resolves to undefined if key doesn't exist * Update keyv * Use keyv-api-tests * 0.1.0 * Add usage example to readme * Add API docs to readme * Add support for .clear() * 0.2.0 * Don't expost Redis client * 1.0.0 * keyv => Keyv * 1.0.1 * Expose Redis client so events can be listened to * Show error handling in usage example * 1.1.0 * Add secondary description to readme * 1.1.1 * Make sure opts.uri from Keyv gets passed through to redis * Expose connect/error events directly on storage adapter * Only expose error event * Emit errors on keyv ee * Make sure opts is always defined * Update overview wording * Use JSONB to allow Buffers in JSON * Don't send undefined values to Redis Redis will save them as null. If we don't save them at all we'll retrun undefined on .get so everything works as expected. * No need for JSONB, it's used by default in Keyv now * 1.2.0 * Improve readability of get method * Migrate to keyv-test-suite * Run official keyv storage adapter tests * Add support for namespaces * Don't grab namespace from keyv * Use new store instace for each test * getter fn for namespace * Emit error events * 1.3.0 * Update dependencies to enable Greenkeeper 🌴 (#1) * chore(package): update dependencies * docs(readme): add Greenkeeper badge * Remove Greenkeeper badge * Use "this" * Update to requirable * Pin dependency versions * 1.3.1 * Fix requirable version number * Update docs * Add Keyv logo to header * Tweak wording * 1.3.2 * Formatting * 1.3.3 * Update redis to the latest version 🚀 (#3) * 1.3.4 * Scope to @keyv * 1.3.5 * Use scoped dependencies * Fix package.json links * Import scoped test suite * 1.3.6 * Update ava to the latest version 🚀 (#6) * Support same constructor args as Keyv * Document creating storage adapter instance * 1.3.7 * Add .npmignore * 1.3.8 * Update coveralls to the latest version 🚀 (#8) * Update ava to the latest version 🚀 (#9) * Update ava to the latest version 🚀 (#10) * Update ava to the latest version 🚀 (#11) * chore(package): update xo to version 0.20.1 (#14) Closes #13 * Allow testing on non-localhost Redis, add docker config (#27) * Travis: Update Travis to current active LTS and higher (#28) * build: removed `ttlSupport` flag (#29) not longer necessary * Use ioredis client (#26) * 2.0.0 * build: Allow passing in an existing Redis instance (#30) * build: update dependencies (#31) * build: update dependencies * build: force * build: force * 2.1.0 * Update ioredis to ~4.16.0 (#34) * 2.1.1 * update ioredis (#38) * 2.1.2 * adding coverage for undefined going via set (#46) * upgrade nyc to 15.1.0 (#47) * adding yarn lock file (#48) adding yarn lock file * upgrading delay to version 5.0.0 (#49) upgrading delay to version 5.0.0 for maintenance * upgrading ioredis to version 4.27.9 (#50) maintenance update * upgrading ava to 3.15.0 (#51) maintenance update * Revert "upgrading ava to 3.15.0 (#51)" (#52) This reverts commit 2db6e7b2fa24c51abc215c0185e3df440c4ff290. * Update .travis.yml to support node 14 and 15 Update .travis.yml to support node 14 and 15 * upgrading ava to 3.15.0 (#53) upgrading ava to 3.15.0 for maintenance update * adding in support for node version 12 (#55) * upgrading xo to version 0.45.0 (#56) * upgrading xo to version 0.45.0 * moving to supporting 12,14,16 * upgrading ioredis to version 4.27.10 (#57) * keyv-redis package updated to 2.1.3 (#58) * initial check in of github actions (#59) * initial check in of github actions * updating to use redis * update readme with latest status badge * remove travis * Fix test suite import (#60) * Update to use latest npm with license and nvmrc plus license update of authors (#61) * adding nvmrc for node 16 * updating licensing with dates and authors * Delete yarn.lock * update for authors * Moving to docker compose for testing and build (#62) * moving to docker compose for testing and build * moving to docker compose for testing and build * rename yaml file * update to remove yarn.lock * adding in code coverage * updating logo and build badge * Update package.json (#63) * upgrading xo to version 0.46.4 (#64) * upgrading ioredis to version 4.28.0 (#65) * Add support for Redis clusters. (#37) * version bump to v2.2.0 * adding in ttlSupport (#66) * upgrading to @keyv/test-suite version 1.6.12 (#67) * rename to redis * no longer need build * Delete redis-compose.yaml * Delete .gitignore * no longer needed for mongo * no longer needed in mongo * updating for packaging Co-authored-by: Luke Childs <lukechilds123@gmail.com> Co-authored-by: greenkeeper[bot] <greenkeeper[bot]@users.noreply.github.com> Co-authored-by: Casey Webb <notcaseywebb@gmail.com> Co-authored-by: Kiko Beats <josefrancisco.verdu@gmail.com> Co-authored-by: Will Harney <41450688+wjharney@users.noreply.github.com>
Hi! I'd like to propose a small change related to how cache key computation works: if the namespace is overridden with an empty string, remove it. The goal for that is to allow numerical keys to be used in conjunction with a SQL backed interface, which can significantly speed up things.