<story><title>The “Build Your Own Redis” Book Is Completed</title><url>https://build-your-own.org/blog/20230127_byor/</url></story><parent_chain><item><author>rcarmo</author><text>I actually build minimal Redis clones in every new language or runtime, or when I want to explore threading models.&lt;p&gt;It all started with &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;rcarmo&amp;#x2F;miniredis&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;rcarmo&amp;#x2F;miniredis&lt;/a&gt; (which I forked to add and experiment with pub&amp;#x2F;sub), and I just found myself doing it again and again because Redis is the quintessential network service:&lt;p&gt;By implementing it, you learn about socket handling, event loop for a specific runtime, threading models, data representation, concurrency (if you want to do a multi-threaded version), etc. None of my &amp;quot;ports&amp;quot; are fully functional, but they all helped me sort out some of the above plus build tools, packaging, dependencies, etc.&lt;p&gt;It&amp;#x27;s &amp;quot;hello world&amp;quot; for core cloud native microservices, if you will (and without having to do REST or JSON stuff).</text></item></parent_chain><comment><author>helge5</author><text>I once built one in Swift 4, in part to see how multithreading via SwiftNIO and using copy-on-write datastructures would compare. It held up well against the C implementation, would be worth trying again against Swift 5.x.
&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;NozeIO&amp;#x2F;redi-s&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;NozeIO&amp;#x2F;redi-s&lt;/a&gt;</text></comment>
<story><title>The “Build Your Own Redis” Book Is Completed</title><url>https://build-your-own.org/blog/20230127_byor/</url></story><parent_chain><item><author>rcarmo</author><text>I actually build minimal Redis clones in every new language or runtime, or when I want to explore threading models.&lt;p&gt;It all started with &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;rcarmo&amp;#x2F;miniredis&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;rcarmo&amp;#x2F;miniredis&lt;/a&gt; (which I forked to add and experiment with pub&amp;#x2F;sub), and I just found myself doing it again and again because Redis is the quintessential network service:&lt;p&gt;By implementing it, you learn about socket handling, event loop for a specific runtime, threading models, data representation, concurrency (if you want to do a multi-threaded version), etc. None of my &amp;quot;ports&amp;quot; are fully functional, but they all helped me sort out some of the above plus build tools, packaging, dependencies, etc.&lt;p&gt;It&amp;#x27;s &amp;quot;hello world&amp;quot; for core cloud native microservices, if you will (and without having to do REST or JSON stuff).</text></item></parent_chain><comment><author>mLuby</author><text>I&amp;#x27;m curious if you re-use the same tests across different languages? And is it actually on a network or are you pretending?</text></comment>