首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL InnoDB Memcached 插件完整部署指南:從源碼編譯到生產實戰

     編輯:MySQL 資料庫相關知識

編譯安裝(以 5.6.13 為例)

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 ...;

核心配置表結構(innodb_memcache庫)

表用途
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');

Memcached 協議訪問

# 獲取
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 格式
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved