Redis系列五:redis鍵管理和redis資料庫管理

來源:互聯網
上載者:User

標籤:width   tor   sele   5.5   開始   功能   img   clu   成功   

一、redis鍵管理1 鍵重新命名

rename oldKey newkey //格式
rename oldKey newKey //若oldKey之前存在則被覆蓋
set name james ;set name1 mike //資料初始化
renamenx name name1 //重新命名失敗,只有當name1不存在才能改名

2 返回隨機鍵

randomkey //返回隨機鍵

3 鍵到期

expire name:03 20 //鍵name:03 在10秒後到期
ttl name:03 //查看到期按秒到計時,當返回-2說明已刪除
pttl name:03 //查看到期按毫秒到時計
set name:05 james //初始化資料
pexpire name:05 20000 //20000毫秒(20S)後到期
expire name:06 -2 //直接到期,和del一樣


設定鍵在某個時間點到期 使用的是時間戳記
expireat name:04 1516971599 //設定在2018/01/27 20:59:59到期
時間轉時間戳記:網址http://tool.chinaz.com/Tools/unixtime.aspx

hset user:01 name james //初始化資料
expire user:01 60 //設定60S後到期
ttl user:01 //查看到期剩餘時間
persist user:01 //去掉到期
ttl user:1 //返回-1 可以永久查詢不失效

注意:對於字串重設值後,expire無效,
set name james
expire name 50
ttl name
set name james1 //此時expire取消
ttl name //返回-1, 長期有效

4. 鍵的遷移

把部分資料移轉到另一台redis伺服器

1, move key db  //reids有16個庫, 編號為0-15

 set name james1;  move name 5 //遷移到第6個庫

 select 5 ;//資料庫切換到第6個庫, get name  可以取到james1

 這種模式不建議在生產環境使用,在同一個reids裡可以玩

2, dump key; 

 restore key ttl value//實現不同redis執行個體的鍵遷移,ttl=0代表沒有到期時間

例子:在A伺服器上 192.168.1.111

set name james;

dump name; //  得到"\x00\x05james\b\x001\x82;f\"DhJ"

在B伺服器上:192.168.1.118

restore name 0 "\x00\x05james\b\x001\x82;f\"DhJ" 

get name  //返回james

3,migrate指令遷移到其它執行個體redis,在1.111伺服器上將test移到118

migrate

192.168.1.118

6379  

test

0

1000

copy

replace

keys

指令

要遷移的目標IP

連接埠

遷移索引值

目標庫

逾時時間

遷移後不刪除原鍵

不管目標庫是不存在test鍵都遷移成功

遷移多個鍵

5. 鍵的遍曆

redis提供了兩個命令來遍曆所有的鍵

1,鍵全量遍曆:

mset country china city bj name james  //設定3個字串索引值對 

keys  * //返回所有的鍵, *匹配任一字元多個字元

keys *y //以結尾的鍵, 

keys n*e //以n開頭以e結尾,返回name

keys n?me  //  ?問號代表只匹配一個字元  返回name,全域匹配 

keys n?m*   //返回name

keys [j,l]*  //返回以j l開頭的所有鍵  keys [j]ames 全量匹配james

考慮到是單線程, 在生產環境不建議使用,如果鍵多可能會阻塞,如果鍵少,可以

2,漸進式遍曆

mset  a a b b c c d d e e f f g g h h i i j j k k l l m m n n o o p p q q r r s s t t u u v v w w x x y y z z    //初始化26個字母索引值對

字串類型: 

scan 0 match n* count 20 //匹配以n開頭的鍵,取20條,第一次scan 0開始

第二次從遊標10開始取20個以n開頭的鍵,相當於一頁一頁的取,當最後返回0時,鍵被取完

 

註:漸進式遍曆可有效地解決keys命令可能產生的阻塞問題
除scan字串外:還有以下
SCAN 命令用於迭代當前資料庫中的資料庫鍵。
SSCAN 命令用於迭代集合鍵中的元素。
HSCAN 命令用於迭代雜湊鍵中的索引值對。
ZSCAN 命令用於迭代有序集合中的元素(包括元素成員和元素分值)。
用法和scan一樣

二、redis資料庫管理

select 0 //共16個庫, 0 --15, select切換資料庫
set name james
select 1
get name //隔離了,取不到,和mysql不同庫一樣

其中redis3.0以後的版本慢慢弱化了這個功能,如在redis cluster中只允許0資料庫
原因:
1,redis單線程,如果用多個庫,這些庫使用同一個CPU,彼此會有影響
2,多資料庫,調試與營運麻煩,若有一個慢查詢,會影響其它庫查詢速度
3,來回切換,容易混亂

flushdb: 只清空當前資料庫的索引值對 dbsiz 0
flushall: 清空所有庫的索引值對 (這兩個指令慎用!!!!)

Redis系列五:redis鍵管理和redis資料庫管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.