Hello
for us Redis was a great solution for this problem: we run a kamailio based routing server that needs to handle millions of entries. mtree module worked great but it had a problem: after every change in the DB you need to perform a reload in order for the data to be in memory. For several million entires the reload took more than 3 minutes. That means that we needed to batch many changes and do a reload every few minutes (it made no sense to do a full reload for a single change). We moved to redis an soon as the ndb_redis module was released. With redis we have these advantages:
-No reload needed, any change is instanly available (no batch either)
-We can access the same redis instance from several servers
-Using redis pipelining and unix sockets (Vicente provided a patch for using them in ndb_redis module), the performance is really astonishing.
The disadvantage is that you no longer have a mt_match funcion, you have to build it yourself. The same logic can be applied to other modules that rely on a db backend but need to be loaded into memory for speed. For small size data the reload is very fast, but when it starts growing it may take a while.
Regards
Javi
Date: Fri, 15 Jun 2012 14:26:48 +0200
From: Vicente Hernando <vhernando@systemonenoc.com>
Subject: Re: [sr-dev] [SR-Users] New developer - Vicente Hernando
To: "Olle E. Johansson" <oej@edvina.net>
Cc: Development mailing list of the sip-router project
<sr-dev@lists.sip-router.org>
Message-ID: <4FDB2A08.4090902@systemonenoc.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
On 06/15/2012 02:12 PM, Olle E. Johansson wrote:
> 15 jun 2012 kl. 13:45 skrev Vicente Hernando:
>
>> Hello Olle,
>>
>> http://redis.io
>> http://en.wikipedia.org/wiki/Redis
>> #redis in irc.freenode.org
>>
>> Redis is a non-SQL opensource network data store. It uses a key-value structure like a dictionary. Stores strings, and complex data tipes like sets, lists, etc.
>>
>> It is written in C. Using hiredis library we can connect from kamailio to a running redis server. Kamailio module dealing with redis is named ndb_redis.
>>
>> Redis data is stored in RAM, and its goal is being very fast.
>>
>>
> Ok. Thanks. But are there things you can do in Redis that can't be done in other databases?
>
> /O
Actually, Redis is simpler than other databases. Its goal is speed. It
tries to achieve high write and read speed.
http://redis.io/topics/faq
http://redis.io/documentation
Regards,
Vicente.
>> Regards,
>> Vicente.
>>
>>
>>
>> On 06/15/2012 12:34 PM, Olle E. Johansson wrote:
>>> Vicente,
>>> Maybe you can take a moment or two and tell us old people about REDIS. What is it good for, how can it change how we use Kamailio?
>>>
>>> I'm curious.
>>>
>>> Thanks!
>>>
>>> /O
> ---
> * Olle E Johansson - oej@edvina.net
> * Cell phone +46 70 593 68 51, Office +46 8 96 40 20, Sweden
>
>
>
>