HI Daniel<br><br><div class="gmail_quote">On Fri, Feb 17, 2012 at 1:44 PM, Daniel-Constantin Mierla <span dir="ltr">&lt;<a href="mailto:miconda@gmail.com">miconda@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Hello,<div class="im"><br>
    <br>
    On 2/17/12 1:04 PM, Javier Gallart wrote:
    <blockquote type="cite">Hi Daniel,
      <div><br>
      </div>
      <div>no, in order to find the best match we do a manual trick
        using the s.prefixes transformation (I think you suggested
        that). </div>
    </blockquote>
    <br></div>
    could be, at least is the way I do prefix matching with mysql.
    Postgres, on the other hand, afaik, has an index plugin to match the
    longest prefix, might not be in default distro, but can be found on
    the net for sure.<div class="im"><br>
    <br>
    <blockquote type="cite">
      <div>We start with the full $rU and stop when we find a non-null
        value. This kamailio is serving many thousands of calls per
        hour, and the response time is pretty much the same as when we
        used the mtree module. For us , using redis has the advantage of
        being able to load the tree data faster than when we used
        postgres without the need to perform a mtree reload. <br>
      </div>
    </blockquote>
    <br></div>
    Loading huge amount of records from mysql takes time indeed.<br>
    <br>
    Maybe prefix matching will be added in redis in the future, or
    scripted server side in lua, as I understood it has such feature.
    Another option would be to add a custom command in kamailio like
    redis_cmd_pmatch() to do internally these prefix-based commands
    until a match, could simplify the config if it becomes something
    very popular.<br></div></blockquote><div><br></div><div>Yes, redis suppors LUA scripting through the EVAL command. Another possible approach would be to use pipelining. Instead of executing a query per prefix, redis offers has the feature of queing multiple commands and send them only once to the server. For example:</div>
<div><div>redis <a href="http://127.0.0.1:6379">127.0.0.1:6379</a>&gt; multi</div><div>OK</div><div>redis <a href="http://127.0.0.1:6379">127.0.0.1:6379</a>&gt; &quot;HGET&quot; &quot;tree:1000:routes&quot; &quot;3466157&quot;</div>
<div>QUEUED</div><div>redis <a href="http://127.0.0.1:6379">127.0.0.1:6379</a>&gt; &quot;HGET&quot; &quot;tree:1000:routes&quot; &quot;346615&quot;</div><div>QUEUED</div><div>redis <a href="http://127.0.0.1:6379">127.0.0.1:6379</a>&gt; &quot;HGET&quot; &quot;tree:1000:routes&quot; &quot;34661&quot;</div>
<div>QUEUED</div><div>redis <a href="http://127.0.0.1:6379">127.0.0.1:6379</a>&gt; exec</div><div>1) (nil)</div><div>2) (nil)</div><div>3) &quot;c=2000;q=100&quot;</div></div><div><br></div><div>That way  the iteration could take place in the result having issued a single command. For that, the redis module should support both multivalue responses.</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
    <br>
    Also, I forgot about the other solution in kamailio - pdb module
    written by 1&amp;1 for number portability:<br>
      * <a href="http://kamailio.org/docs/modules/stable/modules/pdb.html" target="_blank">http://kamailio.org/docs/modules/stable/modules/pdb.html</a></div></blockquote><div><br></div><div>I hadn&#39;t  thought of using it, thanks for the tip. I will take a look.</div>
<div><br></div><div>Regards</div><div><br></div><div>Javi</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><br>
    <br>
    Just mentioning it here for let it be known, if redis is working
    fine for you, makes no sense to look for other solutions.<br>
    <br>
    Cheers,<br>
    Daniel<div><div class="h5"><br>
    <br>
    <blockquote type="cite">
      <div><br>
      </div>
      <div>Regards</div>
      <div><br>
      </div>
      <div>Javi</div>
      <div><br>
        <br>
        <div class="gmail_quote">On Fri, Feb 17, 2012 at 10:25 AM,
          Daniel-Constantin Mierla <span dir="ltr">&lt;<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor="#FFFFFF" text="#000000"> Hello Javier,<br>
              <br>
              one question about redis, can it do longest prefix
              matching or all prefixes match?<br>
              <br>
              Cheers,<br>
              Daniel
              <div><br>
                <br>
                On 2/16/12 2:51 PM, Javier Gallart wrote: </div>
              <blockquote type="cite">
                <div>
                  <div>Hello Uri
                    <div><br>
                    </div>
                    <div>I had similar needs and I found the ndb_redis
                      module more suited for that type of task. Instead
                      of a tree you have a hash like this: tname tprefix
                      tvalue. If you do a hget nts <span>$avp(DID) and
                        you get a not null value you have found your
                        exact match. It works very  well for me and the
                        time it takes for that &quot;query&quot; is barely
                        noticeable. Of course redis does not address
                        items like persistence, etc the same way a rdbms
                        does.</span></div>
                    <div><span>Hope it helps.</span></div>
                    <div><span><br>
                      </span></div>
                    <div><span>Regards</span></div>
                    <div><span><br>
                      </span></div>
                    <div><span>Javi</span></div>
                    <div><br>
                      <div class="gmail_quote">On Thu, Feb 16, 2012 at
                        12:00 PM, <span dir="ltr">&lt;<a href="mailto:sr-users-request@lists.sip-router.org" target="_blank">sr-users-request@lists.sip-router.org</a>&gt;</span>
                        wrote:<br>
                        <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send sr-users mailing
                          list submissions to<br>
                                 <a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br>
                          <br>
                          To subscribe or unsubscribe via the World Wide
                          Web, visit<br>
                                 <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
                          or, via email, send a message with subject or
                          body &#39;help&#39; to<br>
                                 <a href="mailto:sr-users-request@lists.sip-router.org" target="_blank">sr-users-request@lists.sip-router.org</a><br>
                          <br>
                          You can reach the person managing the list at<br>
                                 <a href="mailto:sr-users-owner@lists.sip-router.org" target="_blank">sr-users-owner@lists.sip-router.org</a><br>
                          <br>
                          When replying, please edit your Subject line
                          so it is more specific<br>
                          than &quot;Re: Contents of sr-users digest...&quot;<br>
                          <br>
                          <br>
                          Today&#39;s Topics:<br>
                          <br>
                            1. how to match exact string value in mtree
                          (Uri Shacked)<br>
                          <br>
                          <br>
----------------------------------------------------------------------<br>
                          <br>
                          Message: 1<br>
                          Date: Thu, 16 Feb 2012 12:54:50 +0200<br>
                          From: Uri Shacked &lt;<a href="mailto:ushacked@gmail.com" target="_blank">ushacked@gmail.com</a>&gt;<br>
                          Subject: [SR-Users] how to match exact string
                          value in mtree<br>
                          To: &quot;SIP Router - Kamailio (OpenSER) and SIP
                          Express Router (SER) -<br>
                                 Users   Mailing List&quot; &lt;<a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a>&gt;<br>
                          Message-ID:<br>
                                 &lt;CAMMbDhTFNXAE-K88=<a href="mailto:AeMjO7AnA_QJV3Ajj3AH-AxemXN3ze6HQ@mail.gmail.com" target="_blank">AeMjO7AnA_QJV3Ajj3AH-AxemXN3ze6HQ@mail.gmail.com</a>&gt;<br>
                          Content-Type: text/plain; charset=&quot;iso-8859-1&quot;<br>
                          <br>
                          Hi,<br>
                          <br>
                          I am using Mtree to match prefix numbers, some
                          of them starts with 0 or<br>
                          characters like D for example.<br>
                          so, the mtree param is like this:<br>
                          <br>
                          modparam(&quot;mtree&quot;, &quot;db_url&quot;, CFGDB)<br>
                          modparam(&quot;mtree&quot;, &quot;mtree&quot;,
                          &quot;name=nts;dbtable=service_numbers_view;type=0;&quot;)<br>
                          modpmodparam(&quot;mtree&quot;, &quot;char_list&quot;,
                          &quot;0123456789*+#YMDabcdefgh&quot;)<br>
                          modparam(&quot;mtree&quot;, &quot;pv_value&quot;, &quot;$avp(mtval)&quot;)<br>
                          modparam(&quot;mtree&quot;, &quot;pv_values&quot;, &quot;$avp(mtvals)&quot;)<br>
                          <br>
                          The thing is, that i tried all:<br>
                          <br>
                          if(!mt_match(&quot;nts&quot;, &quot;$avp(DID)&quot;,&quot;1&quot;))<br>
                          if(!mt_match(&quot;nts&quot;, &quot;$avp(DID)&quot;,&quot;2&quot;))<br>
                          if(!mt_match(&quot;nts&quot;, &quot;$avp(DID)&quot;,&quot;0&quot;))<br>
                          <br>
                          and lets say i have the both prefix in the nts
                          mtree:<br>
                          09555<br>
                          09555333<br>
                          <br>
                          And the prefix i search for is
                           $avp(DID)=09555444<br>
                          <br>
                          I allwasy get the 09555 because it is the
                          longest match.<br>
                          I need exact match.....<br>
                          <br>
                          how do i do that?<br>
                          -------------- next part --------------<br>
                          An HTML attachment was scrubbed...<br>
                          URL: &lt;<a href="http://lists.sip-router.org/pipermail/sr-users/attachments/20120216/9d2eb778/attachment.html" target="_blank">http://lists.sip-router.org/pipermail/sr-users/attachments/20120216/9d2eb778/attachment.html</a>&gt;<br>

                          <br>
                          ------------------------------<br>
                          <br>
_______________________________________________<br>
                          sr-users mailing list<br>
                          <a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a><br>
                          <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
                          <br>
                          <br>
                          End of sr-users Digest, Vol 81, Issue 40<br>
                          ****************************************<br>
                        </blockquote>
                      </div>
                      <br>
                    </div>
                    <br>
                    <fieldset></fieldset>
                    <br>
                  </div>
                </div>
                <pre>_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a href="mailto:sr-users@lists.sip-router.org" target="_blank">sr-users@lists.sip-router.org</a>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
              </blockquote>
              <br>
              <div>
                <pre cols="72">-- 
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a href="http://linkedin.com/in/miconda" target="_blank">http://linkedin.com/in/miconda</a> -- <a href="http://twitter.com/miconda" target="_blank">http://twitter.com/miconda</a></pre>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
    <pre cols="72">-- 
Daniel-Constantin Mierla -- <a href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a href="http://linkedin.com/in/miconda" target="_blank">http://linkedin.com/in/miconda</a> -- <a href="http://twitter.com/miconda" target="_blank">http://twitter.com/miconda</a></pre>
  </div></div></div>

</blockquote></div><br>