日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis系列五:redis键管理和redis数据库管理

發布時間:2025/5/22 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis系列五:redis键管理和redis数据库管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、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: 清空所有庫的鍵值對 (這兩個指令慎用!!!!)

轉載于:https://www.cnblogs.com/leeSmall/p/8367745.html

總結

以上是生活随笔為你收集整理的Redis系列五:redis键管理和redis数据库管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。