FreeSwitch与redis相关的模块有两个,mod_redis和mod_hiredis。其中mod_redis实现一种后端呼叫限制的机制;而mod_hiredis则实现了配置和运行redis的一套接口。所以,后者完全能够实现前者的功能。
进入FreeSWITCH源码所在的目录modules.conf文件,确保mod_redis已经启用,然后执行以下命令编译:
make mod_redis-install
把redis.conf.xml 拷贝到conf/autoload_configs/ 然后加载模块:
reloadxml
load mod_redis
为了在FS启动时自动加载,可以在 conf/autoload_configs/modules.conf.xml 里添加一行:mod_redis 。
注意:必须先下载安装redis软件包
<action application="limit" data="redis realm id 10 limit_exceeded" />
在 conf/autoload_configs/modules.conf.xml 里添加一行:
<
load
module
=
"mod_hiredis"
/>
2.2 配置
编辑
autoload_configs/hiredis.conf.xml,设置redis参数:
<configuration name="hiredis.conf" description="mod_hiredis">
<profiles>
<profile name="default">
<connections>
<connection name="primary">
<param name="hostname" value="172.18.101.101"/>
<param name="password" value="redis"/>
<param name="port" value="6379"/>
<param name="timeout_ms" value="500"/>
</connection>
<connection name="secondary">
<param name="hostname" value="localhost"/>
<param name="password" value="redis"/>
<param name="port" value="6380"/>
<param name="timeout_ms" value="500"/>
</connection>
</connections>
<params>
<param name="ignore-connect-fail" value="true"/>
</params>
</profile>
</profiles>
</configuration>
参数说明:
Connection :
hostname
: Redis服务器的DNS 主机名或IP地址o (缺省为: localhost
)
port
: Redis服务器的TCP 端口(缺省为: 6379
)
password
: 如果设置了,会向SERVER发AUTH 命令鉴权(缺省: no authentication)timeout_ms
:连接超时时间,单位为毫秒(缺省: 500
)
max-connections
: 模块建立了一个连接池,这个参数限定池子的最大连接数(缺省: 3
)Profile :
ignore-connect-fail
: 如果设为 true
, 那么将会忽略socket 连接错误继续处理呼叫,否则,按呼叫出错处理(缺省: false
)ignore_error
: 如果设置为 true, 将忽略Redis 命令执行错误,继续处理呼叫;否则,按呼叫出错处理(缺省: false
)<action application="limit" data="hiredis realm id 10 limit_exceeded" />
<action application="hiredis_raw" data="default LPUSH Callers ${effective_caller_id_number}" />
执行hiredis_raw之后,返回的结果会存储在通道变量hiredis_raw_response
里。