ビッグデータ公式京淘6
6633 ワード
ビッグデータ公式京淘6
Redisベースコマンド
set key value【修正値】incr key【自己増加】decr key【自減】incrby key数字【ステップ別成長】decrby key数字【ステップごとに減退】append key value【追加データ】mset key 1 value 1 key 2 value 3【一括設定】--スライスとクラスタ計算ができず、初期のRedisレガシー機能mget key 1 key 2 key 3【バッチ取得】--スライスとクラスタ計算ができず、初期のRedisレガシー機能ttl key【key-valueの表示】生存時間
-1は、永続的なを表します.
-2は、期限切れのを表します.
expire key時間(秒)【key-valueの生存時間の設定】
カウントダウン
pexpire key時間(ミリ秒)【key-valueの生存時間の設定】
秒殺
Redisのデータ構造
key-valueの形式
Hash構造
heset
hset key_all key1 value1
hset key_all key2 value2
hset key_all key3 value3
hset key_all key4 value4
...
hget
hget key_all key1
hget key_all key2
hget key_all key3
hget key_all key4
...
hexist
hdel
hkeys
hvals
List【双方向リスト:左上右下】
lpush
rpush
lrange key start end
rrange key start end
linsert key before key1
linsert key after key1
lset key index value【負数の場合逆数】lrem key index【0の場合はすべて削除】ltrim key start stop【startからstopまで】lpop key【リストの1番目を削除して戻る】rpoplpush key 1 key 2【ヘッド交換位置】lindex key index【index位置を返す値】
データの分散ストレージ
データのスライスストレージを完了するには、少なくとも複数のredisインスタンスが必要です.
2番目と3番目のredisサーバを起動する(異なるプロファイル--コピー)注意ポートの変更
の図面をかく
指定したポートへのログイン
デフォルトredis-cli-p 6379 redis-cli-pエンドスローガン
redis-cli -p 6380
redis-cli -p 6381
データの格納と読み込み方法--コード操作
jedisによりredisを制御するコマンド機能
キャッシュロジック
keyによるキャッシュの取得
取得キャッシュがあるなし:データベースのデータを取得し、キャッシュに追加します.
例
Redisのポートをループする【遅すぎる】
弊害:拡張する時比較的に面倒な例
hashCode取余【まあまあ】
利点:1つのモジュール共通hashのハッシュ特性例
ノード情報【好適】
Jedisプール
作成と閉じる回数を減らす例
hash整合性とhash残高
いずれもハッシュアルゴリズムに属する
hash取余
大規模なデータチルトが発生しやすい【ハッシュは必ずチルト】redisサーバが増加または減少すると、nの値が変化し、データのヒットの変化が非常に大きくなり、データ移行の量も増加する.
hash整合性
データの傾きをある程度解決し、主にデータ移行を解決した.
【ip+ポート】-->ハッシュハッシュ-->整数値======対応====43億整数リングの点【key】-->ハッシュハッシュ-->整数値======対応====43億整数リングの点保存:keyは時計回りにノード(IP+ポート)------密集するほど移動が少なくなる図解
帰属する
ノードI
key3
ノードII
key1
ノードIII
key2
key4
データのバランスを深く解決し続ける
仮想ノードの導入
図解
帰属する
ノードI
【key3】
仮想ノードI_1
【key2】
仮想ノードI_2
【key1】
ノードII
仮想ノードII_1
仮想ノードII_2
ノードIII
仮想ノードIII_1
仮想ノードIII_2
【key4】
結論仮想ノードが多ければ多いほど、バランスが良い
京淘中のキャッシュ
商品分類木【可】商品リスト【可:注意ページングパラメータ】商品新規【可能】商品修正【可】商品削除【不要】商品詳細【可】
Redisベースコマンド
set key value【修正値】incr key【自己増加】decr key【自減】incrby key数字【ステップ別成長】decrby key数字【ステップごとに減退】append key value【追加データ】mset key 1 value 1 key 2 value 3【一括設定】--スライスとクラスタ計算ができず、初期のRedisレガシー機能mget key 1 key 2 key 3【バッチ取得】--スライスとクラスタ計算ができず、初期のRedisレガシー機能ttl key【key-valueの表示】生存時間
-1は、永続的なを表します.
-2は、期限切れのを表します.
expire key時間(秒)【key-valueの生存時間の設定】
カウントダウン
pexpire key時間(ミリ秒)【key-valueの生存時間の設定】
秒殺
Redisのデータ構造
key-valueの形式
Hash構造
heset
hset key_all key1 value1
hset key_all key2 value2
hset key_all key3 value3
hset key_all key4 value4
...
hget
hget key_all key1
hget key_all key2
hget key_all key3
hget key_all key4
...
hexist
hdel
hkeys
hvals
List【双方向リスト:左上右下】
lpush
rpush
lrange key start end
rrange key start end
linsert key before key1
linsert key after key1
lset key index value【負数の場合逆数】lrem key index【0の場合はすべて削除】ltrim key start stop【startからstopまで】lpop key【リストの1番目を削除して戻る】rpoplpush key 1 key 2【ヘッド交換位置】lindex key index【index位置を返す値】
データの分散ストレージ
データのスライスストレージを完了するには、少なくとも複数のredisインスタンスが必要です.
2番目と3番目のredisサーバを起動する(異なるプロファイル--コピー)注意ポートの変更
の図面をかく
指定したポートへのログイン
デフォルトredis-cli-p 6379 redis-cli-pエンドスローガン
redis-cli -p 6380
redis-cli -p 6381
データの格納と読み込み方法--コード操作
jedisによりredisを制御するコマンド機能
//
@Test
public void jedis() {
//
Jedis jedis = new Jedis("117.50.2.181", 6379);
jedis.set("name", "kungfupeng");
}
キャッシュロジック
keyによるキャッシュの取得
取得キャッシュがあるなし:データベースのデータを取得し、キャッシュに追加します.
例
//
@Test
public void jedis() {
//
Jedis jedis = new Jedis("117.50.2.181", 6379);
String temp = jedis.get("name");
if (StringUtils.isNotEmpty(temp)) {// ,
jedis.set("name", "kungfupeng");
} else {
System.out.println(temp);// ,
}
}
スライスロジックRedisのポートをループする【遅すぎる】
弊害:拡張する時比較的に面倒な例
//
@Test
public void jedis() {
// Jedis
Jedis jedis = null;
//
List keys = new ArrayList();
keys.add("key1");
keys.add("key2");
keys.add("key3");
keys.add("key4");
// 【1-2-3】【6379-6380-6381】
int index = 1;
//
for (String temp : keys) {
if (index == 1) {
jedis = new Jedis("192.168.12.23", 6379);
} else if (index == 2) {
jedis = new Jedis("192.168.12.23", 6380);
} else if (index == 3) {
jedis = new Jedis("192.168.12.23", 6381);
index = 0;
}
index++;
System.out.println(jedis.get(temp));
}
}
hashCode取余【まあまあ】
利点:1つのモジュール共通hashのハッシュ特性例
@Test
public void jedis() {
// Jedis
List list_jedis = new ArrayList();
list_jedis.add(new Jedis("12.12.23.44", 6379));
list_jedis.add(new Jedis("12.12.23.44", 6380));
list_jedis.add(new Jedis("12.12.23.44", 6381));
//
List keys = new ArrayList();
keys.add("key1");
keys.add("key2");
keys.add("key3");
keys.add("key4");
//
for (String temp : keys) {
int num = temp.hashCode() % list_jedis.size();
for (int i = 0; i < list_jedis.size(); i++) {
if (i == num) {
System.out.println(list_jedis.get(i).get("key"));
}
}
}
}
ノード情報【好適】
List infoList=new ArrayList();//
infoList.add(new JedisSharedInfo("104.43.23.4",6380));
...
ShardedJedis jedis=new ShardedJedis(infoList);//
例@Test
public void jedis() {
List jlist = new ArrayList();
//
JedisShardInfo jsi1 = new JedisShardInfo("123.12.13.31", 6379);
JedisShardInfo jsi2 = new JedisShardInfo("123.12.13.31", 6380);
JedisShardInfo jsi3 = new JedisShardInfo("123.12.13.31", 6381);
//
jlist.add(jsi1);
jlist.add(jsi2);
jlist.add(jsi3);
//
ShardedJedis sj = new ShardedJedis(jlist);
//
sj.set("key", "value");// , Jedis
}
Jedisプール
作成と閉じる回数を減らす例
@Test
public void jedis() {
List jlist = new ArrayList();
//
JedisShardInfo jsi1 = new JedisShardInfo("12.123.44.66", 6379);
JedisShardInfo jsi2 = new JedisShardInfo("12.123.44.66", 6380);
JedisShardInfo jsi3 = new JedisShardInfo("12.123.44.66", 6381);
//
jlist.add(jsi1);
jlist.add(jsi2);
jlist.add(jsi3);
//
JedisPoolConfig config = new JedisPoolConfig();
//
config.setMaxTotal(100);
//
ShardedJedisPool sjp = new ShardedJedisPool(config, jlist);
// ShardedJedis
ShardedJedis resource = sjp.getResource();
//
resource.set("naem", "kungfupeng");
//
sjp.returnResource(resource);
}
hash整合性とhash残高
いずれもハッシュアルゴリズムに属する
hash取余
大規模なデータチルトが発生しやすい【ハッシュは必ずチルト】redisサーバが増加または減少すると、nの値が変化し、データのヒットの変化が非常に大きくなり、データ移行の量も増加する.
hash整合性
データの傾きをある程度解決し、主にデータ移行を解決した.
【ip+ポート】-->ハッシュハッシュ-->整数値======対応====43億整数リングの点【key】-->ハッシュハッシュ-->整数値======対応====43億整数リングの点保存:keyは時計回りにノード(IP+ポート)------密集するほど移動が少なくなる図解
帰属する
ノードI
key3
ノードII
key1
ノードIII
key2
key4
データのバランスを深く解決し続ける
仮想ノードの導入
図解
帰属する
ノードI
【key3】
仮想ノードI_1
【key2】
仮想ノードI_2
【key1】
ノードII
仮想ノードII_1
仮想ノードII_2
ノードIII
仮想ノードIII_1
仮想ノードIII_2
【key4】
結論仮想ノードが多ければ多いほど、バランスが良い
京淘中のキャッシュ
商品分類木【可】商品リスト【可:注意ページングパラメータ】商品新規【可能】商品修正【可】商品削除【不要】商品詳細【可】