cmake . -DWITH_INNODB_MEMCACHED=ON make && make install scripts/mysql_install_db --user=mysql bin/mysqld_safe --user=mysql &
SOURCE /usr/local/mysql/share/innodb_memcached_config.sql; INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so';
修改配置後需重裝插件:UNINSTALL PLUGIN ...; INSTALL PLUGIN ...;
| 表 | 用途 |
|---|---|
cache_policies | 策略:innodb_only / cache_only / caching |
config_options | 分隔符:separator(預設 |)、table_map_delimiter(預設 .) |
containers | 映射表:名稱、庫、表、鍵列、值列、flags、cas、expire、唯一索引 |
INSERT INTO containers
(name, db_schema, db_table, key_columns, value_columns, flags, cas_column, expire_time_column, unique_idx_name_on_key)
VALUES
('aaa', 'test', 'demo_test', 'c1', 'c2', 'c3', 'c4', 'c5', 'PRIMARY');
# 獲取 echo "get @@aaa.AA" | nc localhost 11211 # 設定預設容器後直接用鍵 echo -e "get @@aaa\nget AA" | nc localhost 11211
flags、cas_column、expire_time_column 三列(類型固定:INT、BIGINT、INT)key_columns 必須 CHAR/VARCHAR ≤ 250 字符value_columns 支援多列,用 separator 連接(預設 |,可改)config_options.separator 並重裝插件CREATE TABLE users (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(15) NOT NULL UNIQUE,
password VARCHAR(32) NOT NULL,
email TEXT NOT NULL,
flags INT UNSIGNED DEFAULT 0,
cas_column BIGINT UNSIGNED DEFAULT 0,
expire_time_column INT UNSIGNED DEFAULT 0
) ENGINE=InnoDB;
INSERT INTO containers
(name, db_schema, db_table, key_columns, value_columns, flags, cas_column, expire_time_column, unique_idx_name_on_key)
VALUES
('default', 'test', 'users', 'username', 'password|email', 'flags', 'cas_column', 'expire_time_column', 'username');
echo "get foo bar" | nc localhost 11211 # 輸出:password|email 格式