EMQXデータストレージRedisには、主にいくつかの外部ライブラリファイルが含まれます。
1、eredis:パフォーマンスと堅牢性に重点を置いたノンブロッキングRedisクライアント https://github.com/wooga/eredis.git
2、eredis_cluster:eredis_clusterは、redisのクラスターモードをサポートするためのeredisのラッパーです https://github.com/adrienmo/eredis_cluster.git
3、ecpool: サーバーまたはデータベースへの接続/クライアントをプールするように設計されているという点でworker-poolライブラリとは異なります https://github.com/emqx/ecpool.git
最初のファイルemqx_backend_redis_app.erlを分析してみましょう。
最初のステップは、emqx_backend_redisアプリケーションを起動することです。
2番目のステップは、アプリケーションの最初のリスナーemqx_backend_redis_supを開始することです。
3番目のステップ、Redis統計を登録する
4番目のステップは、emqx_backend_redisモジュールをロードすることです
-module(emqx_backend_redis_app).
-include("../include/emqx_backend_redis.hrl").
-behaviour(application).
-emqx_plugin(backend).
-export([start/2, stop/1]).
start(_Type, _Args) ->
%% 获取配置信息
Pools = application:get_env(emqx_backend_redis, pools, []),
%% 启动应用监听者
{ok, Sup} = emqx_backend_redis_sup:start_link(Pools),
%% 注册redis统计
emqx_backend_redis:register_metrics(),
%% 载入redis模块
emqx_backend_redis:load(),
{ok, Sup}.
%% 停止应用,卸载安装的模块
stop(_State) ->
lists:foreach(
fun ({Pool, Env}) ->
case proplists:get_value(type, Env) of
cluster ->
eredis_cluster:stop_pool(emqx_backend_redis:pool_name(Pool));
_ -> ok
end
end,
application:get_env(emqx_backend_redis, pools, [])),
emqx_backend_redis:unload(),
ok.