innodb_memcache之配置

innodb_memcache在安裝之前,需要導入配置sql,配置sql位於安裝目錄的share目錄下,文件名爲innodb_memcached_config.sql,導入至數據庫即可。

導入完之後,我們發現多了一個數據庫innodb_memcache,該庫下有三個表:

cache_policies:緩存策略表

config_options:配置選項表

containers:memcache元數據容器表

1. cache_policies定義了緩存策略
   三種刷新策略:
   innodb_only:只用InnoDB存儲數據
   cache-only:只用傳統的Memcached引擎作存儲。
   caching:如果在Memcached裏找不到,就查詢InnoDB。
2. config_options定義了配置信息
   separator 多字段組合的間隔符號,默認爲|
   table_map_delimiter 表和鍵之間的間隔符,默認爲.
   若修改,則需要重啓mysql或者是重新安裝memcache插件
3.  containers 定義了所有memcache中表和key的元數據信息
   name:定義的名字
   db_schema:表所在的數據庫
   db_table:需要映射的表名
   key_columns:key所對應的字段名
   value_columns:value所對應的字段名,可以用|來進行拼接
   flags:memcache的標記
   cas_column:字符串長度字段
   expire_time_column:過期時間
   unique_idx_name_on_key:數據庫中的唯一字段索引名字
4. 其他服務器控制參數
   mysql> show variables like '%memcache%';
   +----------------------------------+------------------+
   | Variable_name                    | Value            |
   +----------------------------------+------------------+
   | daemon_memcached_enable_binlog   | OFF              | 
   | daemon_memcached_engine_lib_name | innodb_engine.so |
   | daemon_memcached_engine_lib_path |                  |
   | daemon_memcached_option          | -p               |
   | daemon_memcached_r_batch_size    | 1                |
   | daemon_memcached_w_batch_size    | 1                |
   +----------------------------------+------------------+
   6 rows in set (0.00 sec)
   對應的參數含義如下:
   daemon_memcached_enable_binlog:表示memcache中set是否寫入binlog
   daemon_memcached_option :innodb_memcache默認選項,可以通過"-p 11222"指定端口
   daemon_memcached_r_batch_size、daemon_memcached_w_batch_size:關係到memcache的寫入和讀取性能,
   默認爲1,即表示每次都從innodb文件讀取和寫入!可酌情更改
5. 一個例子
   建表:
   use test;
   CREATE TABLE `users` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(15) NOT NULL,
    `password` VARCHAR(32) NOT NULL,
    `email` VARCHAR(50) NOT NULL,
    `flags` INT(10) UNSIGNED DEFAULT '0',
    `cas_column` BIGINT(20) UNSIGNED DEFAULT '0',
    `expire_time_column` INT(10) UNSIGNED DEFAULT '0',
    PRIMARY KEY (`id`),
    UNIQUE KEY `username` (`username`)
    ) ENGINE=INNODB;
    
    寫入數據:
    INSERT INTO `users` (`username`, `password`, `email`)
    VALUES
    ('test1', 'test1', '[email protected]'),
    ('test2', 'test2', '[email protected]');
    
    寫入memcache元數據表:         
    INSERT INTO innodb_memcache.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'
        );

     get數據:
        [root@www share]# echo 'get @@default.test1'|nc localhost 11222
        VALUE @@default.test1 0 19
        test1|[email protected]
        END
        [root@www share]# echo 'get @@default.test2'|nc localhost 11222
        VALUE @@default.test2 0 19
        test2|[email protected]
        END

         

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章