日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

配置PolarDB表到Tair表的映射關(guān)系

在完成添加Tair緩存節(jié)點(diǎn)創(chuàng)建Tair緩存節(jié)點(diǎn)賬號以及創(chuàng)建Tair自定義連接地址操作后,您需要配置表映射關(guān)系,明確PolarDB數(shù)據(jù)庫中的表到Tair緩存節(jié)點(diǎn)的Redis協(xié)議的KV(Key-Value)結(jié)構(gòu)或者KKV(Key-Key-Value)結(jié)構(gòu),從而使Tair緩存節(jié)點(diǎn)按照您的業(yè)務(wù)預(yù)期來提供緩存能力。

前提條件

配置說明

目前映射配置支持String映射Hash映射兩種模式。在此之前,我們來了解一下系統(tǒng)表。

系統(tǒng)表介紹

為了在PolarDB中實(shí)現(xiàn)Tair緩存一體化的能力,PolarDB預(yù)置了如下系統(tǒng)表:

-- system table, create by default, mysql

-- string映射模式的系統(tǒng)表
CREATE TABLE mysql.`tair_string_containers` (
  `name` varchar(50) NOT NULL COMMENT '映射的唯一名,用于唯一確定一個映射',
  `db_schema` varchar(250) NOT NULL COMMENT '映射的表所在的db', 
  `db_table` varchar(250) NOT NULL COMMENT '映射表',
  `key_column` varchar(250) NOT NULL COMMENT '映射的key使用的列',
  `value_column` varchar(250) NOT NULL COMMENT '映射的value使用的列',
  `unique_idx_name_on_key` varchar(250) NOT NULL COMMENT '使用的索引名,因?yàn)閠air不感知所有的索引,也不使用優(yōu)化器,因此需要手動指定索引',
  PRIMARY KEY (`name`)
);

-- hash映射模式的系統(tǒng)表
CREATE TABLE IF NOT EXISTS `tair_hash_containers` (
  `name` varchar(50) NOT NULL COMMENT '映射的唯一名,用于唯一確定一個映射',
  `db_schema` varchar(250) NOT NULL COMMENT '映射的表所在的db', 
  `db_table` varchar(250) NOT NULL COMMENT '映射表',
  `key_column` varchar(250) NOT NULL COMMENT '映射的key使用的列',
  `value_column` varchar(250) NOT NULL COMMENT '映射的value使用的列',
  `unique_idx_name_on_key` varchar(250) NOT NULL COMMENT '使用的索引名,因?yàn)閠air不感知所有的索引,也不使用優(yōu)化器,因此需要手動指定索引',
  PRIMARY KEY (`name`)
);

支持的字段數(shù)據(jù)類型如下:

key

value

TINYINT

支持

支持

SMALLINT

支持

支持

MEDIUMINT

暫未支持

暫未支持

INT或INTEGER

支持

支持

BIGINT

支持

支持

FLOAT

無意義,不支持

支持

DOUBLE

無意義,不支持

支持

DECIMAL

暫未支持

暫未支持

CHAR

支持

支持

VARCHAR

支持

支持

TINYBLOB

支持,不建議

支持

TINYTEXT

支持,不建議

支持

BLOB

支持,不建議

支持

TEXT

支持,不建議

支持

MEDIUMBLOB

支持,不建議

支持

MEDIUMTEXT

支持,不建議

支持

LONGBLOB

暫未支持

暫未支持

LONGTEXT

暫未支持

暫未支持

(推薦)模式一:String映射

說明

為了保證更好的使用體驗(yàn),建議您優(yōu)先選擇String映射模式進(jìn)行配置。

String映射支持在具有讀寫權(quán)限的表中,使用KV結(jié)構(gòu),將一個column作為key,一個column作為value。

說明

為保證key的唯一性,選擇作為key的column,需要事先創(chuàng)建索引unique_idx_name_on_key

以下通過一個示例,帶您了解如何通過SQL配置String映射:

CREATE database test_db;

use test_db

CREATE TABLE `test` (
  `key` varchar(50) NOT NULL,
  `value` varchar(50) DEFAULT NULL,
  `value2` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`key`)
);

insert into mysql.tair_string_containers values ("example", "test_db", "test", "key", "value", "PRIMARY");

insert into test values ("k", "v", "v2");

FLUSH TAIR;

從Tair緩存節(jié)點(diǎn)以Redis協(xié)議讀取數(shù)據(jù)時,需要以設(shè)置的name作為key的前綴,并使用@分隔。例如:

redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get example@k
"v"

模式二:Hash映射

Hash映射符合Redis Hash結(jié)構(gòu)用法,支持在具有讀寫權(quán)限的表中,使用KKV結(jié)構(gòu),將一個column作為key,多個column的字段名作為field,column的數(shù)據(jù)作為子field的value。

說明

為保證key的唯一性,選擇作為key的column,需要事先創(chuàng)建索引unique_idx_name_on_key

以下通過一個示例,帶您了解如何通過SQL配置Hash映射:

CREATE database test_db;

use test_db

CREATE TABLE `test` (
  `key` varchar(50) NOT NULL,
  `value` varchar(50) DEFAULT NULL,
  `value2` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`key`)
);

insert into mysql.tair_hash_containers values ("hexample", "test_db", "test", "key", "value,value2", "PRIMARY");

insert into test values ("k", "v", "v2");

FLUSH TAIR;

從Tair緩存節(jié)點(diǎn)以Redis協(xié)議讀取數(shù)據(jù)時,需要以設(shè)置的name作為key的前綴,并使用@分隔。例如:

redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> hget hexample@k value2
"v2"
127.0.0.1:6379> hget hexample@k value
"v"

多column組成key

當(dāng)前String映射模式和Hash映射模式都支持多column組成key。您只需要在key_column中傳入多個逗號分隔的column名稱即可。

說明

為了保證key的唯一性,選擇作為key的column,需要創(chuàng)建unique_idx_name_on_key索引覆蓋所有的key_column。

以下通過一個示例,帶您了解如何通過SQL配置多column組成key:

CREATE database test_db;

use test_db

CREATE TABLE `test` (
  `user` varchar(50) NOT NULL,
  `phone` varchar(50) NOT NULL,
  `value` varchar(50) DEFAULT NULL,
  `value2` varchar(50) DEFAULT NULL,
);

ALTER TABLE test ADD UNIQUE INDEX idx_user_phone (user, phone);

insert into mysql.tair_hash_containers values ("hexample", "test_db", "test", "user,phone", "value,value2", "idx_user_phone");

insert into test values ("test_user", "13600001234", "v", "v2");

FLUSH TAIR;

從Tair緩存節(jié)點(diǎn)以Redis協(xié)議讀取數(shù)據(jù)時,需要拼接多個key_column,并使用#分隔。例如:

redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> hget hexample@test_user#13600001234 value2
"v2"
127.0.0.1:6379> hget hexample@test_user#13600001234 value
"v"

問題排查

添加映射后,執(zhí)行如下命令以刷新配置:

FLUSH TAIR;

刷新配置后,有些配置可能無法刷新成功,此時可以使用如下命令,查看對應(yīng)的錯誤日志:

show warnings;

后續(xù)操作

在完成表映射關(guān)系配置后,您就可以連接到PolarDB數(shù)據(jù)庫集群,并發(fā)出Redis命令以使用Tair緩存節(jié)點(diǎn)提供的功能。