<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>Riak sets (and data types by extension) are good but not great. The are gonna get better over time but still be saddled with the difficulties of distribution. Redis is able to do what it does because a. It's not distributed and b. It's single threaded. I recommend that if you need the atomic guarantees of redis data types you go ahead and use them. And then periodically flush your redis data to riak for high availability and fault tolerant backup. It's not elegant, it has edge case scenarios but it gets you a best of both worlds solution. </div><div><br></div><div>Best,</div><div>Alexander<br><br><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.226562); -webkit-composition-frame-color: rgba(77, 128, 180, 0.226562);"><br></span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">@siculars</span></div><div><a href="http://siculars.posthaven.com">http://siculars.posthaven.com</a></div><div><br></div>Sent from my iRotary<span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Phone</span></div><div><br>On Jan 31, 2015, at 13:11, Shawn Debnath <<a href="mailto:shawn@debnath.net">shawn@debnath.net</a>> wrote:<br><br></div><blockquote type="cite"><div>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


<div style="font-size: 14px;">Good morning,</div>
<div style="font-size: 14px;"><br>
</div>
<div style="font-size: 14px;">Wondering if there is a better way to do truncation of a set if entries exceed a certain threshold. I am trying to create a canonical timeline for every user in our system, set of UUID strings. We want the number of entries to
 be limited to about 1000 per timeline to keep the size of each KV object in check inside Riak and also not store unnecessary data. From looking around code and docs, there doesn’t seem to be a Redis style <a href="http://redis.io/commands/ltrim">LTRIM</a>
 option available. So is the only way to enforce this is to fetch the set, check count, trim it locally and then update?</div>
<div style="font-size: 14px;"><br>
</div>
<div style="font-size: 14px;">My fear is that by using CRDTs, a set add wins over remove in the case of a conflict. If there were to be 1000 conflicting concurrent updates each trying to trim and add one entry to a set that already contains 1000 entries, I
 imagine the  final count of the set would be 2000. This can be greatly exasperated on a very “friendly” or popular person’s timeline and the code never being able to truncate the set back to 1000.</div>
<div style="font-size: 14px;"><br>
</div>
<div style="font-size: 14px;">Any thoughts or suggestions appreciated.</div>
<div style="font-size: 14px;"><br>
</div>
<div style="font-size: 14px;">Thanks,</div>
<div style="font-size: 14px;"><br>
</div>
<div style="font-size: 14px;">Shawn</div>
<div><span style="font-size: 12px;"><i>freenode (sde)</i></span></div>
<div style="font-size: 14px;">
<div id="MAC_OUTLOOK_SIGNATURE"></div>
</div>


</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>riak-users mailing list</span><br><span><a href="mailto:riak-users@lists.basho.com">riak-users@lists.basho.com</a></span><br><span><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a></span><br></div></blockquote></body></html>