Arduino-Redis
A Redis library for Arduino.
|
Go to the documentation of this file.
8 int passwordLength = strlen(password);
9 if (passwordLength > 0)
12 return cmdRet->type() == RedisObject::Type::SimpleString && (String)*cmdRet ==
"OK"
23 #define TRCMD(t, c, ...) return RedisCommand(c, ArgList{__VA_ARGS__}).issue_typed<t>(conn)
25 #define TRCMD_EXPECTOK(c, ...) (bool)(((String)*RedisCommand(c, ArgList{__VA_ARGS__}).issue(conn)).indexOf("OK") != -1)
34 TRCMD(String,
"GET", key);
39 TRCMD(
bool,
"DEL", key);
44 TRCMD(
int,
"APPEND", key, value);
49 TRCMD(
int,
"PUBLISH", channel, message);
54 TRCMD(
bool,
"EXISTS", key);
57 bool Redis::_expire_(
const char *key,
int arg,
const char *cmd_var)
59 TRCMD(
bool, cmd_var, key, String(arg));
64 TRCMD(
bool,
"PERSIST", key);
67 int Redis::_ttl_(
const char *key,
const char *cmd_var)
69 TRCMD(
int, cmd_var, key);
72 bool Redis::_hset_(
const char *key,
const char *field,
const char *value,
const char *cmd_var)
74 TRCMD(
int, cmd_var, key, field, value);
79 TRCMD(String,
"HGET", key, field);
84 TRCMD(
bool,
"HDEL", key, field);
89 TRCMD(
int,
"HLEN", key);
94 TRCMD(
int,
"HSTRLEN", key, field);
99 TRCMD(
bool,
"HEXISTS", key, field);
105 return rv->type() == RedisObject::Type::Array
106 ? (std::vector<String>)*((
RedisArray *)rv.get())
107 : std::vector<String>();
112 TRCMD(String,
"LINDEX", key, String(index));
117 TRCMD(
int,
"LLEN", key);
122 TRCMD(String,
"LPOP", key);
127 TRCMD(
int,
"LPOS", key, element);
132 TRCMD(
int, (exclusive ?
"LPUSHX" :
"LPUSH"), key, value);
137 TRCMD(
int,
"LREM", key, String(count), element);
152 TRCMD(String,
"INFO", (section ? section :
""));
157 TRCMD(String,
"RPOP", key);
162 TRCMD(
int, (exclusive ?
"RPUSHX" :
"RPUSH"), key, value);
165 bool Redis::_subscribe(SubscribeSpec spec)
169 subSpec.push_back(spec);
173 const char *cmdName = spec.pattern ?
"PSUBSCRIBE" :
"SUBSCRIBE";
175 return rv->type() == RedisObject::Type::Array;
182 if (rv->type() == RedisObject::Type::Array)
184 auto vec = (std::vector<String>)*((
RedisArray *)rv.get());
185 return vec.size() == 3 && vec[1] == String(channelOrPattern);
193 if (!messageCallback)
199 subscriberMode =
true;
202 for (
auto spec : subSpec)
204 success = _subscribe(spec) && success;
216 errCallback(
this, errCode);
225 if (msg->type() == RedisObject::Type::InternalError)
237 if (msg->type() != RedisObject::Type::Array)
243 auto msgVec = (std::vector<String>)*((
RedisArray *)msg.get());
245 if (msgVec.size() < 3)
251 if (msgVec[0] !=
"message" && msgVec[0] !=
"pmessage")
258 auto pMsgAdd = msgVec[0] ==
"pmessage" ? 1 : 0;
259 messageCallback(
this, msgVec[1 + pMsgAdd], msgVec[2 + pMsgAdd]);
bool lset(const char *key, int index, const char *element)
String hget(const char *key, const char *field)
@ RedisMessageBadResponseType
The underlying Redis type detected in the message is not of the type expected.
bool del(const char *key)
@ RedisAuthFailure
The authentication credentials used are not valid.
int lpush(const char *key, const char *value, bool exclusive=false)
String get(const char *key)
@ RedisMessageUnknownType
An unknown error occurred.
RedisSubscribeResult startSubscribing(RedisMsgCallback messageCallback, RedisMsgErrorCallback errorCallback=nullptr)
bool unsubscribe(const char *channelOrPattern)
@ RedisSubscribeSetupFailure
Setting up for subscription mode failed.
int publish(const char *channel, const char *message)
@ RedisMessageTruncatedResponse
The message response was truncated early.
bool persist(const char *key)
std::vector< String > lrange(const char *key, int start, int stop)
int rpush(const char *key, const char *value, bool exclusive=false)
RedisReturnValue authenticate(const char *password)
String lpop(const char *key)
static std::shared_ptr< RedisObject > parseType(Client &)
int lpos(const char *key, const char *element)
std::vector< String > ArgList
#define TRCMD_EXPECTOK(c,...)
@ RedisSubscribeOtherError
An unknown error occurred.
@ RedisSubscribeBadCallback
One of the callback parameters given is invalid.
bool exists(const char *key)
@ RedisNotConnectedFailure
Authenticate attempted before the connection has been established.
String lindex(const char *key, int index)
int hstrlen(const char *key, const char *field)
bool hdel(const char *key, const char *field)
@ RedisSubscribeServerDisconnected
The remote end disconnected, retry may be available.
int llen(const char *key)
bool hexists(const char *key, const char *field)
int append(const char *key, const char *value)
bool set(const char *key, const char *value)
String rpop(const char *key)
int lrem(const char *key, int count, const char *element)
String info(const char *section)
int hlen(const char *key)
bool ltrim(const char *key, int start, int stop)