42 lines
1.3 KiB
Erlang
Executable File
42 lines
1.3 KiB
Erlang
Executable File
%%%-------------------------------------------------------------------
|
|
%%% @author aresei
|
|
%%% @copyright (C) 2017, <COMPANY>
|
|
%%% @doc
|
|
%%%
|
|
%%% @end
|
|
%%% Created : 21. 四月 2017 13:33
|
|
%%%-------------------------------------------------------------------
|
|
-module(redis_client).
|
|
-author("aresei").
|
|
|
|
%% API
|
|
-export([hget/2, hgetall/1]).
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% HashTable处理
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
-spec hget(Key :: binary(), Field :: binary()) -> {ok, Val :: any()} | {error, Reason :: binary()}.
|
|
hget(Key, Field) when is_binary(Key), is_binary(Field) ->
|
|
poolboy:transaction(redis_pool, fun(Conn) -> eredis:q(Conn, ["HGET", Key, Field]) end).
|
|
|
|
-spec hgetall(Key :: binary()) -> {ok, Fields :: map()} | {error, Reason :: binary()}.
|
|
hgetall(Key) when is_binary(Key) ->
|
|
poolboy:transaction(redis_pool, fun(Conn) ->
|
|
case eredis:q(Conn, ["HGETALL", Key]) of
|
|
{ok, Items} ->
|
|
{ok, to_map(Items)};
|
|
Error ->
|
|
Error
|
|
end
|
|
end).
|
|
|
|
to_map(Items) when is_list(Items), length(Items) rem 2 == 0 ->
|
|
to_map(Items, #{}).
|
|
to_map([], Target) ->
|
|
Target;
|
|
to_map([K, V|Tail], Target) ->
|
|
to_map(Tail, Target#{K => V}).
|
|
|
|
|