<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>KeyValueStore.com</title>
    <link>https://keyvaluestore.com/</link>
    <description>Recent content on KeyValueStore.com</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 05 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://keyvaluestore.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Consistent Hashing Playground: Modulo Hashing Moves 83% of Keys When a Server Joins, Jump Hash 17%</title>
      <link>https://keyvaluestore.com/consistent-hashing-playground-modulo-hashing-moves-83-of-keys-when-a-server-joins-jump-hash-17/</link>
      <pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/consistent-hashing-playground-modulo-hashing-moves-83-of-keys-when-a-server-joins-jump-hash-17/</guid>
      <description>&lt;p&gt;Five cache servers share 100,000 keys. Traffic grows, and you add a sixth. With the obvious rule, hash the key and divide by the number of servers, 83% of the keys now belong somewhere else. Most of them move between servers that never changed. For a cache that&amp;rsquo;s a wave of misses landing on the database at once. For a store it&amp;rsquo;s a mountain of data copied across the network for no reason.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hash Slot Calculator Shows the Redis or Valkey Cluster Slot for Any Key and Catches CROSSSLOT Errors</title>
      <link>https://keyvaluestore.com/hash-slot-calculator-shows-the-redis-or-valkey-cluster-slot-for-any-key-and-catches-crossslot-errors/</link>
      <pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/hash-slot-calculator-shows-the-redis-or-valkey-cluster-slot-for-any-key-and-catches-crossslot-errors/</guid>
      <description>&lt;p&gt;Code that ran fine against a single Redis or Valkey server often breaks the day it moves to a cluster. An &lt;code&gt;MGET&lt;/code&gt;, a &lt;code&gt;MULTI&lt;/code&gt; block or a Lua script that touched three keys now gets &lt;code&gt;CROSSSLOT Keys in request don&#39;t hash to the same slot&lt;/code&gt;, because in a cluster those keys live on different servers.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://keyvaluestore.com/tools/slots/&#34;&gt;Hash Slot Calculator&lt;/a&gt; shows where keys land before that happens. Type a key and you get its slot and the primary that holds it, with the hashed part of the key marked. Paste a command and it tells you whether a cluster would run it. Paste a whole key list and it shows how the keys spread across your primaries, the busiest slots and the hash tags in use.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keyspace Map Shows What a Redis or Valkey Keyspace Holds, From a Plain SCAN Key List</title>
      <link>https://keyvaluestore.com/keyspace-map-shows-what-a-redis-or-valkey-keyspace-holds-from-a-plain-scan-key-list/</link>
      <pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/keyspace-map-shows-what-a-redis-or-valkey-keyspace-holds-from-a-plain-scan-key-list/</guid>
      <description>&lt;p&gt;A key-value store has no tables and no schema to read. Everything sits in one flat list of keys, and the only structure is whatever people built into the names. After a few years and a few teams, the honest answer to &amp;ldquo;what&amp;rsquo;s in our Redis?&amp;rdquo; is often a shrug.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://keyvaluestore.com/tools/keyspace/&#34;&gt;Keyspace Map&lt;/a&gt; reads that structure back out of the names. Paste the output of &lt;code&gt;redis-cli --scan&lt;/code&gt; or &lt;code&gt;valkey-cli --scan&lt;/code&gt;, and a long key list becomes a short list of patterns with counts. In one test, 9,161 keys came down to 13 lines, led by &lt;code&gt;user:&amp;lt;id&amp;gt;:profile&lt;/code&gt; with 3,000 keys, &lt;code&gt;user:&amp;lt;id&amp;gt;:settings&lt;/code&gt; with 2,000 and &lt;code&gt;session:&amp;lt;hex&amp;gt;&lt;/code&gt; with 1,500. The same keys show as a tree of prefixes you can open level by level, with how many bytes the key names take.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mass Insert Builder Turns CSV and JSON Into a Bulk-Load File for Redis and Valkey</title>
      <link>https://keyvaluestore.com/mass-insert-builder-turns-csv-and-json-into-a-bulk-load-file-for-redis-and-valkey/</link>
      <pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/mass-insert-builder-turns-csv-and-json-into-a-bulk-load-file-for-redis-and-valkey/</guid>
      <description>&lt;p&gt;The slow way to load a million keys into Redis or Valkey is a loop that sends a command, waits for the answer, and sends the next. Most of the time goes on the waiting. At half a millisecond per round trip, a million commands take more than eight minutes before the server has done anything hard.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;redis-cli --pipe&lt;/code&gt; and &lt;code&gt;valkey-cli --pipe&lt;/code&gt; skip the wait. They stream commands as fast as the connection takes them, read the replies as they arrive, and end with a count: &lt;code&gt;errors: 0, replies: 1000000&lt;/code&gt;. The catch is that they want their input already in the Redis protocol, where every value is preceded by its length in bytes. The &lt;a href=&#34;https://keyvaluestore.com/tools/pipe/&#34;&gt;Mass Insert Builder&lt;/a&gt; writes that file for you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Snapshot Viewer Opens Redis and Valkey RDB Snapshots in the Browser, From Redis 2.8 to Valkey 9.1</title>
      <link>https://keyvaluestore.com/snapshot-viewer-opens-redis-and-valkey-rdb-snapshots-in-the-browser-from-redis-2.8-to-valkey-9.1/</link>
      <pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/snapshot-viewer-opens-redis-and-valkey-rdb-snapshots-in-the-browser-from-redis-2.8-to-valkey-9.1/</guid>
      <description>&lt;p&gt;A Redis server is using 40 GB and nobody is sure what&amp;rsquo;s in it. The usual tools all ask the server itself. &lt;code&gt;--bigkeys&lt;/code&gt; scans every key, &lt;code&gt;MEMORY USAGE&lt;/code&gt; asks about one key at a time, and a script over &lt;code&gt;SCAN&lt;/code&gt; adds its own load to a machine that&amp;rsquo;s already the busiest in the building.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s a copy of the same data that answers those questions for free: the snapshot. The &lt;a href=&#34;https://keyvaluestore.com/tools/snapshot/&#34;&gt;Snapshot Viewer&lt;/a&gt; opens a &lt;code&gt;dump.rdb&lt;/code&gt; in your browser and shows the keys by type and database, the biggest keys, the prefixes that take the most space, how long expiring keys have left, and the value of any key you pick.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Typed JSON Converter Turns DynamoDB JSON Into Plain JSON and Back Without Losing a Digit</title>
      <link>https://keyvaluestore.com/typed-json-converter-turns-dynamodb-json-into-plain-json-and-back-without-losing-a-digit/</link>
      <pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/typed-json-converter-turns-dynamodb-json-into-plain-json-and-back-without-losing-a-digit/</guid>
      <description>&lt;p&gt;Ask DynamoDB for an item and you get every value wrapped in its type: &lt;code&gt;{&amp;quot;name&amp;quot;: {&amp;quot;S&amp;quot;: &amp;quot;Ana&amp;quot;}, &amp;quot;visits&amp;quot;: {&amp;quot;N&amp;quot;: &amp;quot;17&amp;quot;}}&lt;/code&gt;. It&amp;rsquo;s exact, and it&amp;rsquo;s a pain to read, to diff, or to hand to anything that expects normal JSON. Going the other way is worse, because writing typed JSON by hand for a test item or a quick fix is slow and easy to get wrong.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://keyvaluestore.com/tools/typed-json/&#34;&gt;Typed JSON Converter&lt;/a&gt; does both directions. Paste the output of &lt;code&gt;aws dynamodb scan&lt;/code&gt; and get a clean list of items. Paste plain JSON and get typed JSON ready for &lt;code&gt;put-item&lt;/code&gt;, or a set of &lt;code&gt;batch-write-item&lt;/code&gt; requests, 25 items each. It works out the direction on its own, and it reads the shapes the AWS tools print: Scan and Query output, GetItem and BatchGetItem results, exports to S3 in DynamoDB JSON, and DynamoDB Streams records as a Lambda function receives them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What Is a Key-Value Store? Redis, Valkey, DynamoDB and etcd Explained</title>
      <link>https://keyvaluestore.com/what-is-a-key-value-store-redis-valkey-dynamodb-and-etcd-explained/</link>
      <pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/what-is-a-key-value-store-redis-valkey-dynamodb-and-etcd-explained/</guid>
      <description>&lt;p&gt;A key-value store files every value under a key. You hand it a key and a value to keep, and later you hand it the key and get the value back. That&amp;rsquo;s the whole contract. Think of a coat check: you get a ticket, and the ticket is all anyone needs to find your coat. Nobody goes through the coats looking for a blue one.&lt;/p&gt;&#xA;&lt;p&gt;That simple contract is why key-value stores are fast. Finding a value by its key is a direct jump, through a hash table or a sorted tree, with no query to plan and no tables to join. It&amp;rsquo;s also why they spread so well over many machines: if every request names its key, the key alone says which machine to ask.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://keyvaluestore.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/about/</guid>
      <description>&lt;p&gt;KeyValueStore.com publishes free tools for the people who run key-value stores: Redis and Valkey clusters, DynamoDB tables, and the caches and stores built on the same ideas. Each tool does one job you&amp;rsquo;d otherwise do by hand, with an old script, or by pasting your data into someone else&amp;rsquo;s website.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-the-tools-are-for&#34;&gt;What the Tools Are For&lt;/h2&gt;&#xA;&lt;p&gt;Key-value stores are simple on the surface: every value is filed under a key, and you get it back by asking for that key. The work comes around the edges. Which cluster node holds this key? Why did that command fail with CROSSSLOT? How do I load two million rows tonight? What&amp;rsquo;s actually in this keyspace? What happens when we add a server? The &lt;a href=&#34;https://keyvaluestore.com/tools/&#34;&gt;tools&lt;/a&gt; answer questions like those, and the &lt;a href=&#34;https://keyvaluestore.com/what-is-a-key-value-store-redis-valkey-dynamodb-and-etcd-explained/&#34;&gt;guide to key-value stores&lt;/a&gt; covers the ground underneath them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Consistent Hashing Playground</title>
      <link>https://keyvaluestore.com/tools/ring/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/tools/ring/</guid>
      <description>&lt;p&gt;Spread keys over a few servers four ways, then add a server or take one away and count what moves. The playground compares modulo hashing, a hash ring with virtual nodes, rendezvous hashing and jump consistent hash, side by side, in your browser.&lt;/p&gt;&#xA;&lt;iframe id=&#34;kvs-tool&#34; src=&#34;https://keyvaluestore.com/tools/ring/app/&#34; title=&#34;Consistent Hashing Playground&#34; style=&#34;display:block;width:100%;height:1150px;border:0;margin:1.5rem 0&#34;&gt;&lt;/iframe&gt;&#xA;&lt;script&gt;&#xA;(function () {&#xA;  var f = document.getElementById(&#39;kvs-tool&#39;);&#xA;  if (!f) return;&#xA;  function fit() {&#xA;    try {&#xA;      var b = f.contentDocument &amp;&amp; f.contentDocument.body;&#xA;      if (b) f.style.height = Math.ceil(b.getBoundingClientRect().height) + &#39;px&#39;;&#xA;    } catch (e) {}&#xA;  }&#xA;  f.addEventListener(&#39;load&#39;, function () {&#xA;    fit();&#xA;    try { new ResizeObserver(fit).observe(f.contentDocument.body); }&#xA;    catch (e) { setInterval(fit, 1000); }&#xA;  });&#xA;  window.addEventListener(&#39;resize&#39;, fit);&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;p&gt;On a wide screen you can &lt;a href=&#34;https://keyvaluestore.com/tools/ring/app/&#34;&gt;open it full screen&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://keyvaluestore.com/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/contact/</guid>
      <description>&lt;p&gt;KeyValueStore.com would like to hear from:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone with a tool idea.&lt;/strong&gt; A chore around Redis, Valkey, DynamoDB, etcd or another key-value store that a small tool could save you.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone who found a mistake.&lt;/strong&gt; A wrong answer, a page that doesn&amp;rsquo;t work in your browser, or a version that behaves differently.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone with a question&lt;/strong&gt; about the tools or the &lt;a href=&#34;https://keyvaluestore.com/what-is-a-key-value-store-redis-valkey-dynamodb-and-etcd-explained/&#34;&gt;guide to key-value stores&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Write to &lt;strong&gt;&lt;a href=&#34;mailto:info@keyvaluestore.com&#34;&gt;info@keyvaluestore.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re reporting a wrong answer, it helps to say which tool, which browser, and a small example input that shows the problem. Please don&amp;rsquo;t send real customer data: a few made-up keys or rows that show the same thing are enough.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Free Tools for Key-Value Stores</title>
      <link>https://keyvaluestore.com/tools/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/tools/</guid>
      <description>&lt;p&gt;Free tools for the jobs that come with running a key-value store: working out cluster slots, looking inside a snapshot, converting DynamoDB JSON, bulk-loading data, making sense of a keyspace and planning how keys spread over servers. Each one runs in your browser. There&amp;rsquo;s no sign-up and nothing to install.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Nothing you paste leaves your browser.&lt;/strong&gt; The tools don&amp;rsquo;t send anything anywhere, and each tool page&amp;rsquo;s security policy stops it from fetching or loading anything from another site. Your keys, data and cluster layout stay on your machine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hash Slot Calculator for Redis and Valkey Clusters</title>
      <link>https://keyvaluestore.com/tools/slots/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/tools/slots/</guid>
      <description>&lt;p&gt;Find which slot of a Redis or Valkey cluster a key lands in, and which primary holds it. Check a multi-key command for CROSSSLOT errors before your code sends it, and see how a whole list of keys spreads across the cluster. It all runs in your browser.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Nothing you paste leaves this page.&lt;/strong&gt; The tool doesn&amp;rsquo;t send anything anywhere, and the page&amp;rsquo;s security policy stops it from fetching or loading anything from another site, so your keys and cluster layout stay on your machine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Keyspace Map for Redis and Valkey</title>
      <link>https://keyvaluestore.com/tools/keyspace/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/tools/keyspace/</guid>
      <description>&lt;p&gt;Paste a list of keys and see what a keyspace holds: the prefixes as a tree with counts, the naming patterns behind the keys with IDs and hashes folded together, how many bytes the key names take, and naming slips worth a look. It runs in your browser.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Nothing you paste leaves this page.&lt;/strong&gt; The tool doesn&amp;rsquo;t send anything anywhere, and the page&amp;rsquo;s security policy stops it from fetching or loading anything from another site, so your key names stay on your machine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mass Insert Builder for redis-cli and valkey-cli --pipe</title>
      <link>https://keyvaluestore.com/tools/pipe/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/tools/pipe/</guid>
      <description>&lt;p&gt;Turn CSV, JSON or plain commands into a file in the Redis protocol, ready for &lt;code&gt;redis-cli --pipe&lt;/code&gt; or &lt;code&gt;valkey-cli --pipe&lt;/code&gt;, the fast way to load a lot of data into Redis or Valkey. It also reads protocol bytes back as commands and replies. It runs in your browser.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Nothing you paste leaves this page.&lt;/strong&gt; The tool doesn&amp;rsquo;t send anything anywhere, and the page&amp;rsquo;s security policy stops it from fetching or loading anything from another site, so your data stays on your machine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Snapshot Viewer for Redis and Valkey RDB Files</title>
      <link>https://keyvaluestore.com/tools/snapshot/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/tools/snapshot/</guid>
      <description>&lt;p&gt;Open a Redis or Valkey snapshot, the &lt;code&gt;dump.rdb&lt;/code&gt; file, and see what&amp;rsquo;s in it: keys by type and database, the biggest keys, the prefixes that take the most space, how long expiring keys have left, and every value. It also reads the payloads of the &lt;code&gt;DUMP&lt;/code&gt; command. It all runs in your browser.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Nothing you load leaves this page.&lt;/strong&gt; The tool doesn&amp;rsquo;t send anything anywhere, and the page&amp;rsquo;s security policy stops it from fetching or loading anything from another site, so your data stays on your machine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Typed JSON Converter for DynamoDB</title>
      <link>https://keyvaluestore.com/tools/typed-json/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://keyvaluestore.com/tools/typed-json/</guid>
      <description>&lt;p&gt;Turn DynamoDB&amp;rsquo;s typed JSON into plain JSON, and plain JSON into typed JSON you can send to DynamoDB. Paste the output of &lt;code&gt;aws dynamodb scan&lt;/code&gt;, an export to S3 or a stream record, and get clean data back with every digit of every number kept. It runs in your browser.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Nothing you paste leaves this page.&lt;/strong&gt; The tool doesn&amp;rsquo;t send anything anywhere, and the page&amp;rsquo;s security policy stops it from fetching or loading anything from another site, so your table data stays on your machine.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
