summaryrefslogtreecommitdiffstats
path: root/redis.php
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2019-10-18 15:00:46 +0200
committerRemi Collet <remi@remirepo.net>2019-10-18 15:00:46 +0200
commit68bb93d4659f1665719af2a284b672d0d80adf01 (patch)
tree7048aec872dda8be875aa74f4fb0de519e281053 /redis.php
initial work
Diffstat (limited to 'redis.php')
-rw-r--r--redis.php69
1 files changed, 69 insertions, 0 deletions
diff --git a/redis.php b/redis.php
new file mode 100644
index 0000000..aacc581
--- /dev/null
+++ b/redis.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Redis connector using FFI and libhiredis
+ * PoC, only for documentation purpose
+ *
+ * Copyright (c) 2019 Remi Collet
+ * License: CC-BY-SA
+ * http://creativecommons.org/licenses/by-sa/4.0/
+ */
+namespace Remi;
+
+if (PHP_VERSION_ID < 70400 || !extension_loaded("ffi")) {
+ die("PHP 7.4 with ffi extension required\n");
+}
+printf("PHP version %s\n", PHP_VERSION);
+if (PHP_SAPI == "cli" && !class_exists("\\Remi\\Redis")) {
+ printf("Fallback on manual load\n\n");
+ require_once __DIR__ . '/preload-redis.inc';
+} else {
+ printf("Use preloaded class\n\n");
+}
+
+// ---------------- TESTS ------------------------
+$r = new Redis("localhost", 6379, true);
+try {
+ var_dump($r->grrr());
+} catch(\Exception $e) {
+ printf("** Catched %s: %s **\n", get_class($e), $e->getMessage());
+}
+
+// del / set / get
+var_dump($r->del('foo'));
+var_dump($r->get('foo'));
+var_dump($r->set('foo', date("Y/m/d H:i:s")));
+var_dump($r->get('foo'));
+unset($r);
+
+// incr
+$r = new Redis("localhost", 6379, true);
+var_dump($r->set('foo', 41));
+var_dump($r->get('foo'));
+var_dump($r->incr('foo'));
+var_dump($r->get('foo'));
+
+// list
+var_dump($r->rpush('mylist', 'one'));
+var_dump($r->rpush('mylist', 'too'));
+var_dump($r->lset('mylist', 1, 'two'));
+try {
+ var_dump($r->lset('mylist', 9, 'nine'));
+} catch(\Exception $e) {
+ printf("** Catched %s: %s **\n", get_class($e), $e->getMessage());
+}
+var_dump($r->llen('mylist'));
+var_dump($r->lrange('mylist', 0, 100));
+while($r->llen('mylist')) {
+ var_dump($r->lpop('mylist'));
+}
+var_dump($r->llen('mylist'));
+
+unset($r);
+
+// Exception in connection
+try {
+ $r = new Redis("localhost", 1234, true);
+} catch(\Exception $e) {
+ printf("** Catched %s: %s **\n", get_class($e), $e->getMessage());
+}
+