mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
3.8 KiB
151 lines
3.8 KiB
NDB_REDIS Module
|
|
|
|
Daniel-Constantin Mierla
|
|
|
|
<miconda@gmail.com>
|
|
|
|
Edited by
|
|
|
|
Daniel-Constantin Mierla
|
|
|
|
<miconda@gmail.com>
|
|
|
|
Copyright © 2011 asipto.com
|
|
__________________________________________________________________
|
|
|
|
Table of Contents
|
|
|
|
1. Admin Guide
|
|
|
|
1. Overview
|
|
2. Dependencies
|
|
|
|
2.1. Kamailio Modules
|
|
2.2. External Libraries or Applications
|
|
|
|
3. Parameters
|
|
|
|
3.1. server (str)
|
|
|
|
4. Functions
|
|
|
|
4.1. redis_cmd(srvname, command, replyid)
|
|
|
|
List of Examples
|
|
|
|
1.1. Set server parameter
|
|
1.2. redis_cmd usage
|
|
|
|
Chapter 1. Admin Guide
|
|
|
|
Table of Contents
|
|
|
|
1. Overview
|
|
2. Dependencies
|
|
|
|
2.1. Kamailio Modules
|
|
2.2. External Libraries or Applications
|
|
|
|
3. Parameters
|
|
|
|
3.1. server (str)
|
|
|
|
4. Functions
|
|
|
|
4.1. redis_cmd(srvname, command, replyid)
|
|
|
|
1. Overview
|
|
|
|
This module provides a connector to interact with REDIS NoSQL Database
|
|
from configuration file. You can read more about REDIS at
|
|
http://redis.io.
|
|
|
|
It can connect to many REDIS servers and store the results in different
|
|
containers.
|
|
|
|
2. Dependencies
|
|
|
|
2.1. Kamailio Modules
|
|
2.2. External Libraries or Applications
|
|
|
|
2.1. Kamailio Modules
|
|
|
|
The following modules must be loaded before this module:
|
|
* none.
|
|
|
|
2.2. External Libraries or Applications
|
|
|
|
The following libraries or applications must be installed before
|
|
running Kamailio with this module loaded:
|
|
* hiredis - available at https://github.com/antirez/hiredis .
|
|
|
|
3. Parameters
|
|
|
|
3.1. server (str)
|
|
|
|
3.1. server (str)
|
|
|
|
Specify the details to connect to REDIS server. It takes a list of
|
|
attribute=value separated by semicolon, the attributes can be name,
|
|
addr, port and db. Name is a generic identifier to be used with module
|
|
functions. addr and port are the IP address and the port to connect to
|
|
REDIS server. db is the DB number to use (defaults to 0 if not
|
|
specified).
|
|
|
|
You can set this parameter many times, in case you want to connect to
|
|
many REDIS servers, just give different attributes and use the specific
|
|
server name when querying the REDIS instance.
|
|
|
|
Default value is NULL.
|
|
|
|
Example 1.1. Set server parameter
|
|
...
|
|
modparam("ndb_redis", "server", "name=srvN;addr=127.0.0.1;port=6379;db=1")
|
|
modparam("ndb_redis", "server", "name=srvX;addr=127.0.0.2;port=6379;db=4")
|
|
...
|
|
|
|
4. Functions
|
|
|
|
4.1. redis_cmd(srvname, command, replyid)
|
|
|
|
4.1. redis_cmd(srvname, command, replyid)
|
|
|
|
Send a command to REDIS server identified by srvname. The reply will be
|
|
stored in a local continer identified by replyid. All the parameters
|
|
can be strings with pseudo-variables that are evaluated at runtime.
|
|
|
|
The reply can be accessed via pseudo-variable $redis(key). The key can
|
|
be: type - type of the reply (as in hiredis.h); value - the value
|
|
returned by REDIS server; info - in case of error from REDIS, it will
|
|
contain an info message.
|
|
|
|
If reply type is an array (as in hiredis.h), there are other keys
|
|
available:
|
|
* size - returns number of elements in the array.
|
|
* type[n] - returns the type of the nth element in the array. type -
|
|
returns array type.
|
|
* value[n] - returns value of the nth element. value - returns null
|
|
for an array. You need to get each element by index.
|
|
|
|
Example 1.2. redis_cmd usage
|
|
...
|
|
if(redis_cmd("srvN", "INCR cnt", "r")) {
|
|
# success - the incremented value is in $redis(r=>value)
|
|
xlog("===== $redis(r=>type) * $redis(r=>value)\n");
|
|
}
|
|
|
|
# set a value
|
|
redis_cmd("srvN", "SET foo bar", "r");
|
|
|
|
redis_cmd("srvN", "SET ruri $ru", "r");
|
|
|
|
# get a value
|
|
redis_cmd("srvN", "GET foo", "r");
|
|
|
|
# array example
|
|
if(redis_cmd("srvN", "HMGET foo_key field1 field3", "r")) {
|
|
xlog("array size: $redis(r=>size)\n");
|
|
xlog("first values: $redis(r=>value[0]) , $redis(r=>value[1])\n");
|
|
}
|
|
...
|