Mysql/MariaDBのRedisにアクセスするための一連のUDF命令を提供する。
- オペレーティングシステム: Linux 64-bit(x64)
- コンパイラ: GCC 4.1.2+
- MariaDB 5.5+
- Redis 1.2+
- 依存キット:
- MariaDB development library 5.5+
- hiredis 0.13.3+
- cJSON 1.6+
依存関係キットをインストールする
CentOS
# ツールをインストールする $ yum install -y make wget gcc git # mariadb development tool をインストールする $ yum install -y mariadb-devel
Debain
# ツールをインストールする $ apt-get install -y make wget gcc git # mariadb development tool をインストールする $ apt-get install -y libmariadb-dev
FreeBSD
# ツールをインストールする $ pkg install -y gmake wget gcc git-lite
プラグインコンポーネントをコンパイルする最も簡単な方法は、プラグインコンポーネント make
と make install
を直接実行することです。あるいは gmake
と gmake install
をFreeBSDにインストールします。
$ make
# プラグインライブラリをインストール先フォルダにインストールする
$ make install
# Mysql/MariaDB サーバーに UDF をインストールする
$ make installdb
注:以前のバージョンの Mysql/MariaDB を使用している場合、または手動コンパイルを使用している場合は、デフォルトのインクルードパスが使用できない場合があります;コンパイル時に
INCLUDE_PATH
変数を指定するにはmake INCLUDE_PATH=`mysql_config --variable=pkgincludedir`
を使用してください。
-
install
指定したMysqlプラグインフォルダにプラグインライブラリをインストールします。
-
installdb
Mysql/MariaDB サーバーにUDFsをインストール/登録します。
-
uninstalldb
UDFsのアンロード/登録解除。
-
clean
コンパイルされたファイルをクリアします。
-
distclean
clean
指示文と同様に、同時に依存関係を取り除きます。
以下は、make
で使用できるコンパイル時の変数です:
-
HIREDIS_MODULE_VER
コンポーネントのコンパイルのために提供される hiredis バージョン。値が空であるか、または指定されていない場合、デフォルトは
0.13.3
です。 -
CJSON_MODULE_VER
コンポーネントのコンパイルのために提供される cJSON バージョン。値が空であるか、または指定されていない場合、デフォルトは
1.6.0
です。 -
INCLUDE_PATH
参照する MariaDB/Mysql C ヘッダを指定します。 値が空白または指定されていない場合、デフォルトは
pkgincludedir
です。この値は次のコマンドで取得できます:$ echo `mysql_config --variable=pkgincludedir`/server
-
PLUGIN_PATH
MariaDB/Mysql プラグインファイルのパスを指定する。この値はMariaDB/Mysqlのなかに,
SHOW VARIABLES LIKE '%plugin_dir%';
コマンドで取得できます。値が空であるか、または指定されていない場合、 デフォルトは Mysqlのplugindir
変數です。この値は次のコマンドで取得できます:$ mysql_config --plugindir
例:
# MariaDB/Mysql を指定するプラグインのファイルパスは /opt/mysql/plugin です。
$ make PLUGIN_PATH=/opt/mysql/plugin
$ make install
make
を使ってUDFをインストールしてください:
$ make installdb
または Mysql/MariaDB で、次のSQL文を手動で実行します:
mysql> CREATE FUNCTION `redis` RETURNS STRING SONAME 'lib_mysqludf_redis.so';
UDF をアンインストール/アン登録するには、make uninstalldb
を使います;または Mysql/MariaDB で、次のSQL文を手動で実行します:
mysql> DROP FUNCTION IF EXISTS `redis`;
Redisコマンドを使用するため,$ connection_string
、 $ command
とコマンドパラメータを指定すること。
- $connection_string - 接続するRedisホストを示します,DSN接続文字列表現を使用する,その内容は次のいずれかでなければなりません:
- redis://:
<password>
@<host>
:<port>
/<database>
/ - redis://:
<password>
@<host>
/<database>
/ - redis://@
<host>
:<port>
/<database>
/ - redis://@
<host>
/<database>
/
- redis://:
- $command, $args... - Redisコマンドとそのパラメータ。Redis公式サイトをご覧ください https://redis.io/commands。
この関数は、操作が成功したか失敗したかを示すJSON文字列を返します。
成功した場合:
{ "out": "OK" }
失敗した場合:
{ "err": "Connection refused" }
次の例では、関数の使用方法と redis-cli
コマンドツールとの比較を示します。
/*
次のステートメントは同じです:
$ redis-cli -h 127.0.0.1 -n 8 PING
PONG
*/
mysql> SELECT `redis`('redis://@127.0.0.1/8/', 'PING')\G
*************************** 1. row ***************************
`redis`('redis://@127.0.0.1/8/', 'PING'): {
"out": "PONG"
}
1 row in set (0.00 sec)
/*
次のステートメントは同じです:
$ redis-cli -h 127.0.0.1 -a foobared -n 8 PING
PONG
*/
mysql> SELECT `redis`('redis://:[email protected]/8/', 'PING')\G
*************************** 1. row ***************************
`redis`('redis://:[email protected]/8/', 'PING'): {
"out": "PONG"
}
1 row in set (0.00 sec)
/*
$ redis-cli -h 127.0.0.1 -p 80 -n 8 PING
Could not connect to Redis at 127.0.0.1:80: Connection refused
*/
mysql> SELECT `redis`('redis://@127.0.0.1:80/8/', 'PING')\G
*************************** 1. row ***************************
`redis`('redis://@127.0.0.1:80/8/', 'PING'): {
"err": "Connection refused"
}
1 row in set (0.00 sec)
/*
$ redis-cli -h 127.0.0.1 -n 8 HMSET myhash field1 Hello field2 World
OK
*/
mysql> SELECT `redis`('redis://@127.0.0.1/8/', 'HMSET', 'myhash', 'field1', 'Hello', 'field2', 'World')\G
*************************** 1. row ***************************
`redis`('redis://@127.0.0.1/8/', 'HMSET', 'myhash', 'field1', 'Hello', 'field2', 'World'): {
"out": "OK"
}
1 row in set (0.00 sec)
/*
$ redis-cli -h 127.0.0.1 -n 8 HGET myhash field1
"Hello"
*/
mysql> SELECT `redis`('redis://@127.0.0.1/8/', 'HGET', 'myhash', 'field1')\G
*************************** 1. row ***************************
`redis`('redis://@127.0.0.1/8/', 'HGET', 'myhash', 'field1'): {
"out": "Hello"
}
1 row in set (0.00 sec)
-- redis-cli -h 127.0.0.1 -n 0 SET foo bar
mysql> SELECT `redis`('redis://@127.0.0.1/0/', 'SET', 'foo', 'bar')
-- redis-cli -h 127.0.0.1 -n 0 SCAN 0 MATCH prefix*
mysql> SELECT `redis`('redis://@127.0.0.1/0/', 'SCAN', '0', 'MATCH', 'prefix*')
- Redis 接続検証機構の実現。
- redis DSN文字列コンストラクタを補足する。
LICENSE を参照してください。