一文讓你入門Redis,你學(xué)會了嗎?
Redis(Remote Dictionary Server)是一個開源的內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲系統(tǒng),常被用作數(shù)據(jù)庫、緩存和消息隊列等。它支持多種數(shù)據(jù)結(jié)構(gòu),包括字符串、哈希表、列表、集合和有序集合。以下是 Redis 的一些常見操作:
連接 Redis
可以使用 redis-cli 命令連接到 Redis 服務(wù)器。例如:
其中 host 是 Redis 服務(wù)器的主機名,port 是 Redis 服務(wù)器的端口號,password 是連接密碼(如果有)。
操作String(字符串)類型
1、設(shè)置鍵值
要設(shè)置一個鍵值對,請使用SET命令。例如,要將鍵“name”設(shè)置為值“ctt”,可以執(zhí)行以下操作:
2、 獲取鍵值
要獲取鍵值,請使用GET命令。例如,要獲取鍵“name”的值,可以執(zhí)行以下操作:
這將返回鍵“name”的值,“ctt”。
3、設(shè)置過期時間
要為一個鍵設(shè)置過期時間,請使用EXPIRE命令。例如,要將鍵“name”的過期時間設(shè)置為60秒,可以執(zhí)行以下操作:
查看過期指定key的過期時間,可以用TTL命令。
返回的結(jié)果便是剩余時間(到期key會自動刪除[目前先這么認(rèn)為,不同版本的不同角色處理有差異]),如果返回-1,則表示無過期時間。
4、判斷鍵是否存在
要檢查一個鍵是否存在,請使用EXISTS命令。例如,要檢查鍵“name”是否存在,可以執(zhí)行以下操作:
如果鍵存在,則返回1;如果鍵不存在,則返回0。
也可以使用TYPE命令:
返回對應(yīng)的類型(如,string)則說明key存在,返回“none”說明key不存在。
還可以用TTL命令判斷。
返回對應(yīng)的時間(>=0的數(shù)字),則說明key存在,對應(yīng)的數(shù)字為剩余過期時間。
返回-1,則說明key存在,且key無過期時間。
返回-2,則說明key不存在。
5、刪除鍵
要刪除一個鍵,請使用DEL命令。例如,要刪除鍵“name”,可以執(zhí)行以下操作:
6、自增/自減操作
要對一個鍵進(jìn)行自增操作,請使用INCR命令。例如,要將鍵“cnt”自增1,可以執(zhí)行以下操作:
類似地,要對一個鍵進(jìn)行自減操作,請使用DECR命令。
操作哈希表(Hash類型)
Redis中的Hash類型是一個鍵值對的集合,其中每個鍵都映射到一個值。下面是Redis中Hash類型的常見操作:
1、設(shè)置Hash值
要設(shè)置一個Hash值,請使用HSET命令。例如,要將“user”哈希中的“name”字段設(shè)置為“ctt”,"age "字段設(shè)置為 “29” 可以執(zhí)行以下操作:
2、獲取Hash值
要獲取一個Hash值,請使用HGET命令。例如,要獲取“user”哈希中的“name”字段的值,可以執(zhí)行以下操作:
這將返回“ctt”。
3、獲取所有Hash值
要獲取所有的Hash值,請使用HGETALL命令。例如,要獲取“user”哈希中所有的鍵值對,可以執(zhí)行以下操作:
這將返回一個包含所有鍵值對的列表。
4、刪除Hash值
要刪除一個Hash值,請使用HDEL命令。例如,要刪除“user”哈希中的age字段,可以執(zhí)行以下操作:
5、檢查Hash值是否存在
要檢查一個Hash值是否存在,請使用HEXISTS命令。例如,要檢查“user”哈希中是否存在“name”字段,可以執(zhí)行以下操作:
如果存在,將返回1;否則返回0。
6、獲取Hash中所有的鍵
要獲取一個Hash中所有的鍵,請使用HKEYS命令。例如,要獲取“user”哈希中的所有鍵,可以執(zhí)行以下操作:
這將返回一個包含所有鍵的列表。
7、獲取Hash中所有的值
要獲取一個Hash中所有的值,請使用HVALS命令。例如,要獲取“user”哈希中的所有值,可以執(zhí)行以下操作:
這將返回一個包含所有值的列表。
操作列表(list類型)
Redis中的List類型是一個鏈表結(jié)構(gòu),其中每個節(jié)點都包含一個字符串值。下面是Redis中List類型的常見操作:
1、在列表的頭部插入元素
要在列表的頭部插入元素,請使用LPUSH命令。例如,要在名為“mylist”的列表的頭部插入值為“ctt”的元素,可以執(zhí)行以下操作:
2、在列表的尾部插入元素
要在列表的尾部插入元素,請使用RPUSH命令。例如,要在名為“mylist”的列表的尾部插入值為“ccc”的元素,可以執(zhí)行以下操作:
3、獲取列表長度
要獲取列表的長度,請使用LLEN命令。例如,要獲取名為“mylist”的列表的長度,可以執(zhí)行以下操作:
這將返回列表的長度。
4、獲取列表中的元素
要獲取列表中的元素,請使用LINDEX命令。例如,要獲取名為“mylist”的列表中的第一個元素,可以執(zhí)行以下操作:
5、獲取列表的范圍
要獲取列表的一部分,請使用LRANGE命令。例如,要獲取名為“mylist”的列表中從第二個到第四個元素之間的元素,可以執(zhí)行以下操作:
這將返回一個包含第二個到第四個元素之間的所有元素的列表。
6、刪除列表中的元素
要刪除列表中的元素,請使用LREM命令。例如,要刪除名為“mylist”的列表中的所有值為“ccc”的元素,可以執(zhí)行以下操作:
7、彈出列表中的元素
要從列表的頭部或尾部彈出元素,請使用LPOP或RPOP命令。例如,要從名為“mylist”的列表的頭部彈出一個元素,可以執(zhí)行以下操作:
這將彈出并返回列表的第一個元素。
彈出最后一個元素,使用RPOP。
8、獲取所有元素
取出一個列表里的所有元素,可以執(zhí)行以下操作:
無序集合(set類型)操作
Redis中的Set類型是一個無序的、不重復(fù)的字符串集合。下面是Redis中Set類型的常見操作:
1、向集合中添加元素
要向集合中添加元素,請使用SADD命令。例如,要將值為“ctt”的元素添加到名為“myset”的集合中,可以執(zhí)行以下操作:
2、獲取集合中的元素數(shù)量
要獲取集合中的元素數(shù)量,請使用SCARD命令。例如,要獲取名為“myset”的集合中的元素數(shù)量,可以執(zhí)行以下操作:
3、獲取集合中的所有元素
要獲取集合中的所有元素,請使用SMEMBERS命令。例如,要獲取名為“myset”的集合中的所有元素,可以執(zhí)行以下操作:
這將返回一個包含所有元素的列表。
4、判斷元素是否在集合中存在
要判斷一個元素是否在集合中存在,請使用SISMEMBER命令。例如,要判斷值為“ctt”的元素是否存在于名為“myset”的集合中,可以執(zhí)行以下操作:
如果元素存在于集合中,則返回1;否則返回0。
5、從集合中刪除元素
要從集合中刪除元素,請使用SREM命令。例如,要刪除名為“myset”的集合中值為“ctt2”的元素,可以執(zhí)行以下操作:
6、求多個集合的交集、并集或差集
要求多個集合的交集,請使用SINTER命令;要求并集,請使用SUNION命令;要求差集,請使用SDIFF命令。例如,假設(shè)有三個集合“set1”、“set2”和“set3”,要求它們的交集,可以執(zhí)行以下操作:
這將返回一個包含所有集合的交集&并集元素的列表。
這些是Redis中Set類型的一些常見操作。Set類型是一個非常有用的數(shù)據(jù)結(jié)構(gòu),可用于存儲和處理多個相關(guān)但不重復(fù)的元素。
有序集合(ZSET類型)操作
Redis中的有序集合(Sorted Set,簡稱ZSet)是一個非常有用的數(shù)據(jù)結(jié)構(gòu),它類似于Set類型,但是每個元素都會關(guān)聯(lián)一個分?jǐn)?shù)(score),且元素按照分?jǐn)?shù)從小到大進(jìn)行排序。下面是Redis中ZSet類型的常見操作:
1、向有序集合中添加元素
要向有序集合中添加元素,請使用ZADD命令。例如,要將值為“ctt”的元素添加到名為“myzset”的有序集合中,且它的分?jǐn)?shù)為100,可以執(zhí)行以下操作:
2、獲取有序集合中的元素數(shù)量
要獲取有序集合中的元素數(shù)量,請使用ZCARD命令。例如,要獲取名為“myzset”的有序集合中的元素數(shù)量,可以執(zhí)行以下操作:
3、獲取有序集合中指定范圍內(nèi)的元素
要獲取有序集合中指定范圍內(nèi)的元素,請使用ZRANGE命令。例如,要獲取名為“myzset”的有序集合中排名在1到3之間的元素,可以執(zhí)行以下操作:
這將返回一個包含指定元素的列表。
4、獲取有序集合中指定分?jǐn)?shù)范圍內(nèi)的元素
要獲取有序集合中指定分?jǐn)?shù)范圍內(nèi)的元素,請使用ZRANGEBYSCORE命令。例如,要獲取名為“myzset”的有序集合中分?jǐn)?shù)在0到20之間的元素,可以執(zhí)行以下操作:
5、獲取有序集合中指定元素的排名
要獲取有序集合中指定元素的排名,請使用ZRANK命令。例如,要獲取名為“myzset”的有序集合中元素“ttc”的排名,可以執(zhí)行以下操作:
6、獲取有序集合中指定元素的分?jǐn)?shù)
要獲取有序集合中指定元素的分?jǐn)?shù),請使用ZSCORE命令。例如,要獲取名為“myzset”的有序集合中元素“ctt”的分?jǐn)?shù),可以執(zhí)行以下操作:
7、從有序集合中刪除元素
要從有序集合中刪除元素,請使用ZREM命令。例如,要刪除名為“myzset”的有序集合中元素“a”,可以執(zhí)行以下操作:
8、查看有序集合中所有元素
使用ZRANGE命令查看有序集合中的所有元素。
常見的管理命令
1、info命令
Redis的INFO命令用于獲取有關(guān)Redis服務(wù)器的各種統(tǒng)計信息和診斷信息。執(zhí)行INFO命令將返回一個包含大量鍵值對的文本字符串,其中每個鍵值對代表一個指標(biāo)。
以下是一些常見的INFO命令用法和示例:
- 獲取Redis服務(wù)器的統(tǒng)計信息
要獲取Redis服務(wù)器的統(tǒng)計信息,可以執(zhí)行以下命令:
此命令將返回一個包含各種指標(biāo)的文本字符串,例如內(nèi)存使用情況、客戶端連接數(shù)、鍵數(shù)量、命中率等等。
- 獲取指定信息分類下的統(tǒng)計信息
可以通過傳遞參數(shù)來指定要檢索哪個信息分類的統(tǒng)計信息。例如,要獲取Redis服務(wù)器的內(nèi)存使用情況,可以執(zhí)行以下命令:
此命令將返回一個包含有關(guān)Redis服務(wù)器內(nèi)存使用情況的各種指標(biāo)的文本字符串。
- 獲取Redis服務(wù)器的命令統(tǒng)計信息
要獲取Redis服務(wù)器的命令統(tǒng)計信息,可以執(zhí)行以下命令:
此命令將返回一個包含各種Redis服務(wù)器命令的統(tǒng)計信息的文本字符串,例如命令名稱、執(zhí)行次數(shù)、執(zhí)行時間、平均執(zhí)行時間等等。
- 獲取Redis服務(wù)器的主從復(fù)制信息
要獲取Redis服務(wù)器的主從復(fù)制信息,可以執(zhí)行以下命令:
此命令將返回一個包含有關(guān)Redis服務(wù)器主從復(fù)制狀態(tài)的各種指標(biāo)的文本字符串,例如主從節(jié)點數(shù)量、主節(jié)點狀態(tài)、從節(jié)點狀態(tài)、復(fù)制偏移量等等。
- 獲取Redis key分布情況
要獲取Redis key的分布情況,可以執(zhí)行以下命令:
此命令將返回一個每個庫的key的數(shù)量、含有過期時間的key的數(shù)據(jù)以及平均過期時間。
2、查看所有已連接的客戶端信息
此命令將返回當(dāng)前正在連接的redi實例中的所有客戶端的信息
3、監(jiān)控所有操作命令monitor
例如,在一個客戶端執(zhí)行如下操作
另一個客戶端執(zhí)行monitor命令,則可以看到所有的操作命令
以上為Redis基本操作命令。