Skip to content

Latest commit

 

History

History
285 lines (208 loc) · 10.2 KB

README.jp.md

File metadata and controls

285 lines (208 loc) · 10.2 KB

lib_mysqludf_redis

Mysql/MariaDBのRedisにアクセスするための一連のUDF命令を提供する。

English | 繁體中文 | 日本語

ディレクトリ

はじめに

Alt text

ディレクトリへ

システム要件

  • オペレーティングシステム: 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

プラグインコンポーネントをコンパイルする最も簡単な方法は、プラグインコンポーネント makemake 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

ディレクトリへ

UDF インストールとアンインストール

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, [$args...])

Redisコマンドを使用するため,$ connection_string $ commandとコマンドパラメータを指定すること。

  • $connection_string - 接続するRedisホストを示します,DSN接続文字列表現を使用する,その内容は次のいずれかでなければなりません:
    • redis://:<password>@<host>:<port>/<database>/
    • redis://:<password>@<host>/<database>/
    • redis://@<host>:<port>/<database>/
    • redis://@<host>/<database>/
  • $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 を参照してください。

ディレクトリへ

関連リンク

ディレクトリへ