<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Build Redis From Scratch · At Least Once</title><description>Thirteen parts, from an empty Maven project to a server that speaks RESP, persists to disk, and replicates to a second instance, plus a reference of every link they lean on. Java, no libraries.</description><link>https://blog.subashsdhami.com.np/</link><language>en</language><item><title>Part 0: Getting set up</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/00-getting-started/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/00-getting-started/</guid><description>A Maven project that compiles, runs, and is committed to git.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><category>java</category><category>maven</category><category>setup</category></item><item><title>Part 1: TCP before Redis</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/01-tcp-before-redis/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/01-tcp-before-redis/</guid><description>A server that listens on port 6379, accepts clients, and echoes back whatever they send.</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate><category>java</category><category>sockets</category><category>tcp</category></item><item><title>Part 2: One read is not one request</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/02-one-read-is-not-one-request/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/02-one-read-is-not-one-request/</guid><description>Framing that splits a byte stream into requests, then a server that handles many clients at once.</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate><category>java</category><category>tcp</category><category>concurrency</category></item><item><title>Part 3: What redis-cli actually sends</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/03-what-redis-cli-actually-sends/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/03-what-redis-cli-actually-sends/</guid><description>A RESP parser, a RESP writer, and the project&apos;s first tests.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>java</category><category>resp</category><category>protocol</category></item><item><title>Part 4: Bytes become commands</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/04-bytes-become-commands/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/04-bytes-become-commands/</guid><description>A command dispatcher, plus PING and ECHO.</description><pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate><category>java</category><category>protocol</category><category>dispatch</category></item><item><title>Part 5: A database, and time</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/05-a-database-and-time/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/05-a-database-and-time/</guid><description>The key-value store, SET, GET, and key expiry.</description><pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate><category>java</category><category>storage</category><category>expiry</category></item><item><title>Part 6: Atomic or wrong</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/06-atomic-or-wrong/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/06-atomic-or-wrong/</guid><description>EXISTS, DEL, TYPE, KEYS, the INCR family, and lists.</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><category>java</category><category>concurrency</category><category>atomicity</category></item><item><title>Part 7: Waiting and pretending</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/07-waiting-and-pretending/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/07-waiting-and-pretending/</guid><description>BLPOP, MULTI with EXEC and DISCARD, and WATCH.</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate><category>java</category><category>blocking</category><category>transactions</category></item><item><title>Part 8: The server speaks first</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/08-the-server-speaks-first/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/08-the-server-speaks-first/</guid><description>Pub/sub, streams, and a blocking XREAD.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate><category>java</category><category>pubsub</category><category>streams</category></item><item><title>Part 9: Four more types</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/09-four-more-types/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/09-four-more-types/</guid><description>Hashes, sets, sorted sets, and SCAN.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><category>java</category><category>data-structures</category></item><item><title>Part 10: The commands that make it usable</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/10-the-commands-that-make-it-usable/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/10-the-commands-that-make-it-usable/</guid><description>CONFIG GET, INFO, DBSIZE, FLUSHALL, command line options, the TTL family, and the rest of the string API.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate><category>java</category><category>introspection</category></item><item><title>Part 11: Surviving a restart</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/11-surviving-a-restart/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/11-surviving-a-restart/</guid><description>An RDB reader and writer, plus SAVE and BGSAVE.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><category>java</category><category>persistence</category><category>rdb</category></item><item><title>Part 12: Two servers</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/12-two-servers/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/12-two-servers/</guid><description>Replication. A second instance that follows the first.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate><category>java</category><category>replication</category></item><item><title>Part 13: Resources</title><link>https://blog.subashsdhami.com.np/series/build-redis-from-scratch/13-resources/</link><guid isPermaLink="true">https://blog.subashsdhami.com.np/series/build-redis-from-scratch/13-resources/</guid><description>Every link the series leans on, grouped by the part that uses it.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><category>java</category><category>protocol</category><category>resources</category></item></channel></rss>