EMQXメッセージストレージRedisソースコード分析(1)

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.

 

おすすめ

転載: blog.csdn.net/qq513036862/article/details/112937553