28 RedisNotConnectedFailure = 1,
47 Redis(Client& client) : conn(client) {}
69 bool set(
const char* key,
const char* value);
76 String
get(
const char* key);
83 bool del(
const char* key);
90 bool exists(
const char* key);
98 int append(
const char* key,
const char* value);
106 int publish(
const char* channel,
const char* message);
114 bool expire(
const char* key,
int seconds) {
return _expire_(key, seconds,
"EXPIRE"); }
123 bool expire_at(
const char* key,
int timestamp) {
return _expire_(key, timestamp,
"EXPIREAT"); }
131 bool pexpire(
const char* key,
int ms) {
return _expire_(key, ms,
"PEXPIRE"); }
140 bool pexpire_at(
const char* key,
int timestamp) {
return _expire_(key, timestamp,
"PEXPIREAT"); }
155 int ttl(
const char* key) {
return _ttl_(key,
"TTL"); }
163 int pttl(
const char* key) {
return _ttl_(key,
"PTTL"); }
172 bool hset(
const char* key,
const char* field,
const char* value) {
return _hset_(key, field, value,
"HSET"); }
181 bool hsetnx(
const char* key,
const char* field,
const char* value) {
return _hset_(key, field, value,
"HSETNX"); }
189 String
hget(
const char* key,
const char* field);
196 bool hdel(
const char* key,
const char* field);
203 int hlen(
const char* key);
211 int hstrlen(
const char* key,
const char* field);
219 bool hexists(
const char* key,
const char* field);
221 #if ARDUINO_REDIS_TEST 227 TestResults runTests(
bool logToSerial =
false,
228 String prefix =
"__com.arduino-redis.test",
229 bool retainData =
false);
230 #endif // ARDUINO_REDIS_TEST 235 bool _expire_(
const char*,
int,
const char*);
236 int _ttl_(
const char*,
const char*);
237 bool _hset_(
const char*,
const char*,
const char*,
const char*);
240 #if ARDUINO_REDIS_TEST 244 Redis::TestResults Redis::runTests(
bool logToSerial, String prefix,
bool retainData)
247 std::map<String, std::function<bool(const char*)>> g_Tests
249 {
"set", [
this](
const char* k) {
return set(k,
"!"); } },
250 {
"setget", [
this](
const char* k) {
return set(k,
"!") == 1 &&
get(k) ==
"!"; } },
251 {
"expire", [
this](
const char* k) {
252 return set(k,
"E") &&
expire(k, 5) &&
ttl(k) > 4;
254 {
"pexpire", [
this](
const char* k) {
255 return set(k,
"PE") &&
pexpire(k, 5000) &&
pttl(k) > 4500;
257 {
"dlyexp", [
this](
const char* k) {
258 auto sr =
set(k,
"DE");
262 return sr && t > 5 && t < 7;
264 {
"hset", [
this](
const char* k) {
return hset(k,
"TF",
"H!") &&
hexists(k,
"TF"); } },
265 {
"hsetget", [
this](
const char* k) {
266 return hset(k,
"TF",
"HH") &&
hget(k,
"TF") ==
"HH";
268 {
"hlen", [
this](
const char* k) {
269 for (
int i = 0; i < 10; i++) {
271 hset(k, String(
"field-" + fv).c_str(), fv.c_str());
273 return hlen(k) == 10;
275 {
"hstrlen", [
this](
const char* k) {
276 return hset(k,
"hsr", k) &&
hstrlen(k,
"hsr") == strlen(k);
278 {
"append", [
this](
const char* k) {
return append(k,
"foo") == 3; } },
279 {
"exists", [
this](
const char* k) {
return set(k, k) &&
exists(k); } }
283 Serial.begin(115200);
284 Serial.printf(
"Redis::run_tests(\"%s\") starting...\n", prefix.c_str());
287 auto pFunc = [&prefix](
const String& n) {
return String(prefix +
"." + n); };
289 int total = 0, pass = 0;
290 for (
auto& kv : g_Tests)
292 auto tName = kv.first;
293 auto tFunc = kv.second;
294 auto pName = pFunc(tName);
295 auto tRes = tFunc(pName.c_str());
297 Serial.printf(
"\tTest \"%s\":\t%s\n", tName.c_str(), tRes ?
"pass" :
"FAIL");
299 pass += tRes ? 1 : 0;
303 Serial.printf(
"Result: %d passed / %d total\n", pass, total);
306 for (
auto& kv : g_Tests)
307 (void)
del(pFunc(kv.first).c_str());
309 return { .total = total, .passed = pass };
String hget(const char *key, const char *field)
bool del(const char *key)
bool pexpire_at(const char *key, int timestamp)
int hlen(const char *key)
bool expire_at(const char *key, int timestamp)
int publish(const char *channel, const char *message)
int pttl(const char *key)
bool persist(const char *key)
RedisReturnValue authenticate(const char *password)
bool pexpire(const char *key, int ms)
int hstrlen(const char *key, const char *field)
bool hsetnx(const char *key, const char *field, const char *value)
bool exists(const char *key)
bool expire(const char *key, int seconds)
int append(const char *key, const char *value)
bool hdel(const char *key, const char *field)
bool hset(const char *key, const char *field, const char *value)
bool hexists(const char *key, const char *field)