Как я могу заставить Webmachine и eredis работать вместе?
Я размышлял над вопросом об использовании Redis в моем приложении Webmachine в течение недели. И я еще не просветил.
Я собираюсь использовать Eredis, и вот пример использования:
{ok, Con} = eredis:start_link().
{ok, <<"OK">>} = eredis:q(Con, ["SET", "foo", "bar"]).
{ok, <<"bar">>} = eredis:q(Con, ["GET", "foo"]).
Насколько я понимаю eredis:start_link()
нужно позвонить куда-то только один раз. Но тогда как я могу получить Con
переменная в моих ресурсах?
1 ответ
Есть несколько решений:
- зарегистрировать соединение redis локально или глобально
- используйте регистр процесса, такой как gproc
- сохранить pid соединения в контексте ресурса webmachine
- используйте пул соединений, такой как пул или пулбой
- если вы не хотите ставить запросы в очередь в пул, может подходить
Изменить: неправильно понял вопрос, первый ответ ниже:
Webmachine и eredis - это приложения Erlang, которые следуют принципам OTP. Если ваше приложение соответствует OTP, вы можете добавить eredis в applications
в вашем .app
файл, как показано ниже:
{application, awesome_app, [
{description, "My awesome app."},
{vsn, "0.0.1"},
{modules, []},
{registered, []},
{applications, [kernel, stdlib,
eredis,
webmachine]}
]}.
Приложения, соответствующие требованиям OTP, используют релизы. После того, как вы создадите релиз и запустите свое приложение, приложения в applications
будет запущен до вашего приложения.
Rebar ваш друг для создания и создания релизов ( более подробную информацию здесь). Альтернативой арматуре является синан, который описан в этой статье.