【erlang 使用】eredis 介绍

本文介绍了Erlang中用于操作Redis的eredis模块,包括其github源码地址、目录结构和常用函数。重点讲解了启动客户端、设置和查询KV、hash、list、transaction以及pipeline操作。此外,还提到了eredis.erl模块的主要函数,如start_link/6、stop/1、q系列和qp系列函数等。

github 地址

wooga redis下载地址

目录结构

  • include/
    • eredis_sub.hrl
    • eredis.hrl
  • src/
    • eredis.app.src
    • eredis.erl
    • eredis_client.erl
    • eredis_parser.erl
    • eredis_sub.erl
    • eredis_sub_client.erl
    • basho_bench_driver_eredis.erl
    • basho_bench_driver_erldis.erl

常用函数

启动客户端:
{ok, ClientPid} = eredis:start().
设置KV:
单个设置:
{ok, <<"OK">>} = eredis:q(ClientPid, ["SET", Key, Value]).
多个设置:
KeyValuePairs = ["key1", "value1", "key2", "value2", "key3", "value3"],
{ok, <<"OK">>} = eredis:q(ClientPid, ["MSET" | KeyValuePairs]).
查询KV:
单个查询:
{ok, BinValue} = eredis:q(ClientPid, ["GET", Key]).
多个查询:
KeyValuePairs = ["key1", "key2", "key3"],
{ok, Values} = eredis:q(ClientPid, ["MGET" | KeyValuePairs]).
hash 操作:
HashObj = ["id", "objectId", "message", "message", "receiver", "receiver", "status", "read"].
eredis:q(C, ["HMSET", "key" | HashObj]).
{ok, Values} = eredis:q(C, ["HGETALL", "key"]).
list 操作:
eredis:q(C, ["LPUSH", "keylist", "value"]).
eredis:q(C, ["RPUSH", "keylist", "value"]).
eredis:q(C, ["LRANGE", "keylist",0,-1]).
transaction 操作:
{ok, <<"OK">>} = eredis:q(C, ["MULTI"]).
{ok, <<"QUEUED">>} = eredis:q(C, ["SET", "foo", "bar"]).
{ok, <<"QUEUED">>} = eredis:q(C, ["SET", "bar", "baz"]).
{ok, [<<"OK">>, <<"OK">>]} = eredis:q(C, ["EXEC"]).
pipeline 操作:
P1 = [["SET", a, "1"],["LPUSH", b, "3"],["LPUSH", b, "2"]].
[{ok, <<"OK">>}, {ok, <<"1">>}, {ok, <<"2">>}] = eredis:qp(C, P1).   

类型定义:

-type client() :: pid() |
                  atom() |
                  {atom(),atom()} |
                  {global,term()} |
                  {via,atom(),term()}.

eredis.erl 模块:

  • start_link/0,1,2,3,4,5,6 函数:
start_link() -> {ok, Pid::pid()} | {error, Reason::term()}.
start_link(Host, Port) ->
start_link(Host, Port, Database) ->
start_link(Host, Port, Database, Password) ->
start_link(Host, Port, Database, Password, ReconnectSleep) ->
start_link(Host, Port, Database, Password, ReconnectSleep, ConnectTimeout) ->

作用:启动 eredis_client 进程
默认配置:
- Host:”127.0.0.1”
- Port:6379
- Database:0
- Password:””
- ReconnectSleep:100
- ConnectTimeout:5000

  • stop/1 函数:
stop( Client::client() ) 

作用:关闭 eredis_client ‘

  • q/2,3 函数:
q( Client::client(), Command::list() ) -> {ok, return_value()} | {error, Reason::binary() | no_connection}.
q( Client::client(), Command::list(), Timeout ) ->

作用:同步执行 redis 命令’

  • qp/2,3 函数:
qp( Client::client(), Pipeline::list() ) -> {ok, return_value()} | {error, Reason::binary() | no_connection}.
qp( Client::client(), Pipeline::list(), Timeout ) -> 

作用:同步执行多条 redis 命令;

  • q_noreply/2 函数:
q_noreply( Client::client(), Command::list() ) -> ok.

作用:异步执行 redis 命令,不等待响应且忽略错误;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值