当前位置: 首页 > 工具软件 > Mod_redis > 使用案例 >

FreeSwitch与redis

贺雪松
2023-12-01

        FreeSwitch与redis相关的模块有两个,mod_redis和mod_hiredis。其中mod_redis实现一种后端呼叫限制的机制;而mod_hiredis则实现了配置和运行redis的一套接口。所以,后者完全能够实现前者的功能。

1. mod_redis

1.1 编译安装

        进入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软件包

1.2 用法

<action application="limit" data="redis realm id 10 limit_exceeded" />

2. mod_hiredis

2.1 模块加载

在 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)

2.3 用法

<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 里。

 类似资料: