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