<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="237464" data-post-id="237464">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ostinelli" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ostinelli/120/25204_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ostinelli
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="sebp" data-post="20" data-topic="44735">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sebp/48/24270_2.png" class="avatar"> sebp:</div>
<blockquote>
<p>It’s not Elixir/Erlang, but these ideas are language agnostic.</p>
</blockquote>
</aside>
<p>Thank you for the suggestion. This is an experiment so I might invest some time to investigate, though I was really looking for something simple. <code>ram</code> currently replicates 100% of its data to all nodes, and requires a 100% replication consensus, so as simple as it gets.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="237464" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ram-an-in-memory-distributed-kv-store/44735/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-237464" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="237464"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="237555" data-post-id="237555">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ostinelli" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ostinelli/120/25204_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ostinelli
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>So, I’ve tried using <a href="https://github.com/rabbitmq/ra" class="inline-onebox" rel="noopener nofollow ugc">GitHub - rabbitmq/ra: A Multi-Raft implementation for Erlang and Elixir that strives to be efficient and make it easier to use multiple Raft clusters in a single system. · GitHub</a></p>
<p>I’ve found some minor quirks (like inconsistencies when using <code>ra:start()</code> vs <code>application:ensure_all_started(ra)</code>, or <code>ra:overview()</code> blowing up if ra is not started), but overall the main issue I can see with my main requirement of simplicity of use is that <code>ra</code> needs specific handing of cluster initialization &amp; changes. Just like mnesia, in some way.</p>
<p>You can’t simply add / remove a node automatically, you need to specifically manage its addition to an existing cluster, and you can only do so one node at a time. You can’t simply “merge” nodes of different clusters for instance, afaik. This requires some level of sys-op tooling. It’s not an issue per se’ of course, it’s just that I’m looking for something simple to use and deploy.</p>
<p>Also, I’ve tried reading about how to manage conflict resolution handling in case of net-splits, but I couldn’t find a specific place where to look at. Admittedly I haven’t spent a lot of time searching for this one in particular, so I may have just missed it.</p>
<p>My little experiment <code>ram</code> handles all of these things btw, but it probably has other issues that are instead perfectly handled by <code>ra</code>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="237555" data-batch-url="/posts/batch_likers">
                        6
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ram-an-in-memory-distributed-kv-store/44735/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-237555" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="237555"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="238222" data-post-id="238222">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ostinelli" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ostinelli/120/25204_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ostinelli
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>A small update on this.</p>
<p>My original (experimental) intent was to have a consistent distributed in-memory database, which would also automatically be able to automatically manage dynamic clusters (addition / removal of nodes) and to recover from net splits.</p>
<p>I have made strongly eventually consistent systems that automatically configure themselves before (like <a href="https://github.com/ostinelli/syn" rel="noopener nofollow ugc">syn</a>), however consistency is of course a whole different beast.</p>
<p><code>ram</code> v0.2.0’s operations used global locks and transactions with a 2-phase commit. However, in case of net-splits I’ve basically reached a point where I can ensure strong consistency… on the split sub-clusters. Which basically means that the system as a whole is only eventually consistent.</p>
<p>This is kind of a simple thing really: if a system is set to auto-configure itself, it doesn’t really know which ones of its node are there to stay and those that are not (i.e. differentiate net-splits from node decommissioning), so it cannot define what consistency <em>means</em>. I’ve tried playing with some algorithms but I wasn’t really going anywhere useful.</p>
<p>So, I’ve followed <a class="mention" href="/u/rudmanusachi" rel="nofollow">@RudManusachi</a> and <a class="mention" href="/u/fabriziosestito" rel="nofollow">@fabriziosestito</a>’s suggestion and used <a href="https://github.com/rabbitmq/ra" rel="noopener nofollow ugc">Ra</a> in the current <code>ram</code> implementation. This means of course that cluster definition (along with node additions and removals) need to be explicitly set with sys-op tooling. So far, I’m happy of the results.</p>
<p>If you wish, you can check the new <code>ram</code> docs:</p><aside class="onebox allowlistedgeneric" data-onebox-src="https://ram.hexdocs.pm/">
  <header class="source">

      <a href="https://ram.hexdocs.pm/" target="_blank" rel="noopener nofollow ugc">ram.hexdocs.pm</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://ram.hexdocs.pm/" target="_blank" rel="noopener nofollow ugc">ram v0.5.0 — Documentation</a></h3>



  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>As usual, feedback and discussion are welcome. Thanks to everyone that took the time to be part of this thread.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="238222" data-batch-url="/posts/batch_likers">
                        12
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ram-an-in-memory-distributed-kv-store/44735/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-238222" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="238222"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="238269" data-post-id="238269">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dom" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dom/120/9313_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dom
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Is it still “in-memory”? My understanding of Ra is that it persists data in a WAL file on disk.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="238269" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ram-an-in-memory-distributed-kv-store/44735/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-238269" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="238269"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="238281" data-post-id="238281">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ostinelli" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ostinelli/120/25204_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ostinelli
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It does persist the machine state, yes. But ATM it still is as I need to finalize a couple of things to fully take advantage of that.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="238281" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ram-an-in-memory-distributed-kv-store/44735/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-238281" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="238281"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="238601" data-post-id="238601">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ostinelli" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ostinelli/120/25204_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ostinelli
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/dom" rel="nofollow">@dom</a> I confirm that now <code>ram</code> is not only in-memory but persisted to disk <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="238601" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ram-an-in-memory-distributed-kv-store/44735/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-238601" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="238601"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="238869" data-post-id="238869">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="groovyda" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/groovyda/120/32114_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  groovyda
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Many thanks <a class="mention" href="/u/ostinelli" rel="nofollow">@ostinelli</a> - this is fantastic!!</p>
<p>I can see the persistence to the disk indeed - but I can’t figure out how to get the persisted data out the next time I start the cluster. I get back :undefined when I try to get the value of a key stored in a previous session.</p>
<p>I tried saving 10000 random key-val pairs as well, as I thought it might be something to do with the release_cursor_count: 1000 setting, but still no luck.</p>
<p>Could you please let me know how to do this?</p>
<p>Thanks again</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="238869" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ram-an-in-memory-distributed-kv-store/44735/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-238869" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="238869"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="238954" data-post-id="238954">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ostinelli" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ostinelli/120/25204_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ostinelli
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/groovyda" rel="nofollow">@groovyda</a> That’s because you couldn’t!</p>
<p>Thanks to your feedback, you now can by calling <a href="https://hexdocs.pm/ram/ram.html#restart_server/0" rel="noopener nofollow ugc"><code>restart_server/0</code></a> on every node that rejoins. Maybe I should also put a <code>restart_cluster/1</code> helper as well?</p>
<p>Hope this helps,<br>
r.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="238954" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ram-an-in-memory-distributed-kv-store/44735/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-238954" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="238954"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="239005" data-post-id="239005">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="beepbeepbopbop" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/beepbeepbopbop/120/21158_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  beepbeepbopbop
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve also tried using Ra to implement a KV store (Elixir however, given I have no real experience with Erlang), and found the same issue. I initially thought it could be something with how this gets thrown into the console logs:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">[debug] wal: recovering 00000009.wal
[debug] wal: recovered 00000009.wal time taken 11ms
[debug] wal: opening new file 00000010.wal open mem tables: #Reference&lt;0.242204176.4200202245.257691&gt;
[debug] ra_log_segment_writer: error sending ra_log_event to: RA_KV1LP2NCHQSD3X. Error: No Pid
</code></pre>
<p>However, once I started to read into the Ra <a href="https://github.com/rabbitmq/ra/blob/main/docs/internals/INTERNALS.md#uid" rel="noopener nofollow ugc">internals</a>, this particular line definitely seemed to resonate:</p>
<blockquote>
<p>When <code>ra:start_server/4</code> or <code>ra:start_cluster/3</code> are invoked, an UID is automatically generated by Ra.</p>
<p>This is used for interactions with the write-ahead log, segment and snapshot writer processes who use the <code>ra_directory</code> module to lookup the current <code>pid()</code> for a given ID.</p>
</blockquote>
<p>This is mentioned again in the <a href="https://github.com/rabbitmq/ra/blob/main/docs/internals/INTERNALS.md#recovery" rel="noopener nofollow ugc">recovery</a> section too. So, I tried to hard code the UID that was generated by updating the <code>:ra.start_cluster</code> and <code>:ra.start_server</code> calls by passing the full configuration map. Once I did, I confirmed that the state of the Ra server was brought up to date. In my excitement, I brought up a follower and logged the state machine <code>apply/3</code> calls and found that everything the leader had was replicated!</p>
<p>I reckon Ram here could do the same, but I don’t know the full extent of hardcoding this. It doesn’t sound great, but WAL replication definitely survive node terminations.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="239005" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ram-an-in-memory-distributed-kv-store/44735/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-239005" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="239005"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="239021" data-post-id="239021">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ostinelli" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ostinelli/120/25204_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ostinelli
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>There also is a method called <a href="https://github.com/rabbitmq/ra/blob/v2.0.3/src/ra.erl#L256" rel="noopener nofollow ugc"><code>start_or_restart_cluster/4</code></a> which, however, fails randomly with a <a href="https://github.com/rabbitmq/ra/blob/d8b3c83be965584d300d616836b70806b2821989/src/ra_server_sup_sup.erl#L202" rel="noopener nofollow ugc"><code>name_not_registered</code></a> error.</p>
<p>I’ve implemented it in a <a href="https://github.com/ostinelli/ram/tree/restart_cluster" rel="noopener nofollow ugc">branch</a> but tests fail randomly.</p>
<p>There are some inconsistencies with docs and specs in this library, but being production ready and used by the rabbitmq team is the main appeal to me.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="239021" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ram-an-in-memory-distributed-kv-store/44735/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-239021" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="239021"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #30"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/44735/load_more?page=4">Load more posts (11 remaining)</a>
</div></template></turbo-stream>