PostgreSQL関連情報

pgmemcachedとは

pgmemcachedはPostgreSQLからmemcachedを使うための関数群で、pgmemcacheを基にlibmemcached対応したものです。

pgmemcacheはバージョン2.0でlibmemcachedに対応します。それに伴い、pgmemcachedの一部のソースをpatchとして提供しました。

pgmemcachedとpgmemcacheの違いは"ERRORハンドリング"です。pgmemcachedはGlobal変数に直近の関数の実行結果を保存します。これはUnixのシステムコールにおける"errno"を意識した実装です。私は、C言語ライクなPL/pgSQLにとっては良い実装だと考えています。

インストールと設定

ダウンロード

pgmemcached_0.2.tar.gzをダウンロードしてください。

インストール

環境変数PATHには、pg_configコマンドがあるディレクトリを設定してください。

% gmake
% sudo gmake install

設定

はじめに、設定ファイルpostgresql.confを編集します。

  1. Append "pgmemcached" to preload_shared_libraries
  2. Append "pgmemcached" to custom_variable_classes
  3. Set the "pgmemcached.default_servers" custom GUC variable to a
       comma-separated list of 'host:port' pairs (the port is optional).
  4. Set the "pgmemcached.default_behavior" custom GUC variable to a
       comma-separated list of 'flag:data' pairs (the port is optional).

次に、pgmemcahed.sqlを実行してください。pgmemcachedはPostgreSQLを インストールしたディレクトリのサブディレクトリshare/contribに置かれます。

% psql [mydbname] [pguser]
[mydbname]=# BEGIN;
[mydbname]=# \i /usr/local/pgsql/share/contrib/pgmemcached.sql
[mydbname]=# COMMIT;

API

Storage comamnds

Not supported neither memcached_cas() nor memcached_cas_by_key().

pgmemcached_set(/* key */ TEXT, /* value */ TEXT, /* expire */INTERVAL) => BOOL
pgmemcached_set(/* key */ TEXT, /* value */ TEXT)  => BOOL

pgmemcached_set_by_key(/* master key */ TEXT, /* key */ TEXT, /* value */ TEXT, /* expire */ INTERVAL) => BOOL
pgmemcached_set_by_key(/* master key */ TEXT, /* key */ TEXT, /* value */ TEXT) => BOOL


pgmemcached_add(/* key */ TEXT, /* value */ TEXT, /* expire */INTERVAL) => BOOL
pgmemcached_add(/* key */ TEXT, /* value */ TEXT) => BOOL

pgmemcached_add_by_key(/* master key */ TEXT, /* key */ TEXT, /* value */ TEXT, /* expire */INTERVAL) => BOOL
pgmemcached_add_by_key(/* master key */ TEXT, /* key */ TEXT, /* value */ TEXT) => BOOL

pgmemcached_append(/* key */ TEXT, /* value */ TEXT, /* expire */ INTERVAL) => BOOL
pgmemcached_append(/* key */ TEXT, /* value */ TEXT) => BOOL


pgmemcached_append_by_key(/* master key */ TEXT, /* key */ TEXT, /* value */ TEXT, /* expire */ INTERVAL) => BOOL
pgmemcached_append_by_key(/* master key */ TEXT, /* key */ TEXT, /* value */ TEXT) => BOOL

pgmemcached_prepend(/* key */ TEXT, /* value */ TEXT, /* expire */ INTERVAL) => BOOL
pgmemcached_prepend(/* key */ TEXT, /* value */ TEXT) => BOOL


pgmemcached_prepend_by_key(/* master key */ TEXT, /* key */ TEXT, /* value */ TEXT, /* expire */ INTERVAL) => BOOL
pgmemcached_prepend_by_key(/* master key */ TEXT, /* key */ TEXT, /* value */ TEXT) => BOOL


pgmemcached_replace(/* key */ TEXT, /* value */ TEXT, /* expire */ INTERVAL) => BOOL
pgmemcached_replace(/* key */ TEXT, /* value */ TEXT) => BOOL


pgmemcached_replace_by_key(/* master key */ TEXT, /* key */ TEXT, /* value */ TEXT, /* expire */ INTERVAL) => BOOL
pgmemcached_replace_by_key(/* master key */ TEXT, /* key */ TEXT, /* value */ TEXT) => BOOL

Increment/Decrement

pgmemcached_decr(/* key */ TEXT, /* decrement */ INT4) => INT4
pgmemcached_decr(/* key */ TEXT) => INT4

pgmemcached_incr(/* key */ TEXT, /* increment */ INT4) => INT4
pgmemcached_incr(/* key */ TEXT) => INT4

Retrieval commands

Not supported neither memcached_mget() nor memcached_mget_by_key().

pgmemcached_get(/* key */ TEXT) => TEXT
pgmemcached_get_by_key(/* master key */ TEXT, /* key */TEXT) => TEXT

Deletion

pgmemcached_delete(/* key */ TEXT, /* hold timer */ INTERVAL) => BOOL
pgmemcached_delete(/* key */ TEXT) => BOOL


pgmemcached_delete_by_key(/* master key */ TEXT, /* key */ TEXT, /* hold timer */ INTERVAL) => BOOL
pgmemcached_delete_by_key(/* master key */ TEXT, /* key */ TEXT) => BOOL


pgmemcached_flush(/* hold timer */ INTERVAL) => BOOL
pgmemcached_flush() => BOOL

Statistics

Not supported neither memcached_stats_servername() nor memcached_stats_get_keys().

pgmemcached_stat() => TEXT
pgmemcached_stat_get_value(/* stat name */ TEXT) => TEXT

Utils

pgmemcached_return() => INT4
Return error code of the function last executed.

pgmemcached_strerror() => TEXT
Return error string of the function last executed.

pgmemcached_strerror(/* memcached_return */ INT4) => TEXT

Other commands

pgmemcached_quit() => BOOL

pgmemcached_behavior_get(/* flag */ TEXT) => INT4
pgmemcached_behavior_set(/* flag */ TEXT, /* data */ TEXT) => BOOL
pgmemcached_behavior_set(/* flag */ TEXT, /* data */ INT4) => BOOL

サンプルコード

Coming Soon.

ライセンス

pgmemcached is released under an MIT-style license (BSD without advertising clause). For the exact license terms, see the file "COPYING".

連絡

Bug reports and patches are very welcome, sent via email to "hironobu NO@SPAM interdb.jp".


Last-modified: 2008-08-14