Redis(Remote Dictionary Server)是一個開源的內存數據結構存儲系統,常被用作資料庫、緩存和消息隊列等。它支持多種數據結構,包括字符串、哈希表、列表、集合和有序集合。以下是 redis 的一些常見操作:
連接 Redis
可以使用 redis-cli 命令連接到 Redis 伺服器。例如:
redis-cli -h host -p port -a password
其中 host 是 Redis 伺服器的主機名,port 是 Redis 伺服器的埠號,password 是連接密碼(如果有)。
操作String(字符串)類型
- 設置鍵值
要設置一個鍵值對,請使用SET命令。例如,要將鍵「name」設置為值「ctt」,可以執行以下操作:
127.0.0.1:6379> SET name ctt
2. 獲取鍵值
要獲取鍵值,請使用GET命令。例如,要獲取鍵「name」的值,可以執行以下操作:
127.0.0.1:6379> GET name
這將返回鍵「name」的值,「ctt」。
3. 設置過期時間
要為一個鍵設置過期時間,請使用EXPIRE命令。例如,要將鍵「name」的過期時間設置為60秒,可以執行以下操作:
127.0.0.1:6379> EXPIRE name 60
查看過期指定key的過期時間,可以用TTL命令
127.0.0.1:6379> TTL name
返回的結果便是剩餘時間(到期key會自動刪除[目前先這麼認為,不同版本的不同角色處理有差異]),如果返回-1,則表示無過期時間
4. 判斷鍵是否存在
要檢查一個鍵是否存在,請使用EXISTS命令。例如,要檢查鍵「name」是否存在,可以執行以下操作:
127.0.0.1:6379> EXISTS name
如果鍵存在,則返回1;如果鍵不存在,則返回0。
也可以使用TYPE命令
127.0.0.1:6379> TYPE name
返回對應的類型(如,string)則說明key存在,返回「none」說明key不存在。
還可以用TTL命令判斷
127.0.0.1:6379> TTL name
返回對應的時間(>=0的數字),則說明key存在,對應的數字為剩餘過期時間;
返回-1,則說明key存在,且key無過期時間;
返回-2,則說明key不存在。
5. 刪除鍵
要刪除一個鍵,請使用DEL命令。例如,要刪除鍵「name」,可以執行以下操作:
127.0.0.1:6379> DEL aaa
6.自增/自減操作
要對一個鍵進行自增操作,請使用INCR命令。例如,要將鍵「cnt」自增1,可以執行以下操作:
127.0.0.1:6379> INCR cnt
類似地,要對一個鍵進行自減操作,請使用DECR命令。
操作哈希表(Hash類型)
Redis中的Hash類型是一個鍵值對的集合,其中每個鍵都映射到一個值。下面是Redis中Hash類型的常見操作:
- 設置Hash值
要設置一個Hash值,請使用HSET命令。例如,要將「user」哈希中的「name」欄位設置為「ctt」,"age "欄位設置為 「29」 可以執行以下操作:
rubyCopy code127.0.0.1:6379> HSET user name "John Doe"
2. 獲取Hash值
要獲取一個Hash值,請使用HGET命令。例如,要獲取「user」哈希中的「name」欄位的值,可以執行以下操作:
127.0.0.1:6379> HGET user name
這將返回「ctt」。
3. 獲取所有Hash值
要獲取所有的Hash值,請使用HGETALL命令。例如,要獲取「user」哈希中所有的鍵值對,可以執行以下操作:
127.0.0.1:6379> HGETALL user
這將返回一個包含所有鍵值對的列表。
4. 刪除Hash值
要刪除一個Hash值,請使用HDEL命令。例如,要刪除「user」哈希中的age欄位,可以執行以下操作:
127.0.0.1:6379> HDEL user age
5.檢查Hash值是否存在
要檢查一個Hash值是否存在,請使用HEXISTS命令。例如,要檢查「user」哈希中是否存在「name」欄位,可以執行以下操作:
127.0.0.1:6379> HEXISTS user name
如果存在,將返回1;否則返回0。
6.獲取Hash中所有的鍵
要獲取一個Hash中所有的鍵,請使用HKEYS命令。例如,要獲取「user」哈希中的所有鍵,可以執行以下操作:
127.0.0.1:6379> HKEYS user
這將返回一個包含所有鍵的列表。
7. 獲取Hash中所有的值
要獲取一個Hash中所有的值,請使用HVALS命令。例如,要獲取「user」哈希中的所有值,可以執行以下操作:
127.0.0.1:6379> HVALS user
這將返回一個包含所有值的列表。
操作列表(list類型)
Redis中的List類型是一個鍊表結構,其中每個節點都包含一個字符串值。下面是Redis中List類型的常見操作:
- 在列表的頭部插入元素
要在列表的頭部插入元素,請使用LPUSH命令。例如,要在名為「mylist」的列表的頭部插入值為「ctt」的元素,可以執行以下操作:
127.0.0.1:6379> LPUSH mylist ctt
2. 在列表的尾部插入元素
要在列表的尾部插入元素,請使用RPUSH命令。例如,要在名為「mylist」的列表的尾部插入值為「ccc」的元素,可以執行以下操作:
127.0.0.1:6379> RPUSH mylist ccc
3. 獲取列表長度
要獲取列表的長度,請使用LLEN命令。例如,要獲取名為「mylist」的列表的長度,可以執行以下操作:
127.0.0.1:6379> LLEN mylist
這將返回列表的長度。
4. 獲取列表中的元素
要獲取列表中的元素,請使用LINDEX命令。例如,要獲取名為「mylist」的列表中的第一個元素,可以執行以下操作:
127.0.0.1:6379> LINDEX mylist 0
5. 獲取列表的範圍
要獲取列表的一部分,請使用LRANGE命令。例如,要獲取名為「mylist」的列表中從第二個到第四個元素之間的元素,可以執行以下操作:
127.0.0.1:6379> LRANGE mylist 1 3
這將返回一個包含第二個到第四個元素之間的所有元素的列表。
6. 刪除列表中的元素
要刪除列表中的元素,請使用LREM命令。例如,要刪除名為「mylist」的列表中的所有值為「ccc」的元素,可以執行以下操作:
127.0.0.1:6379> LREM mylist 0 ccc
7. 彈出列表中的元素
要從列表的頭部或尾部彈出元素,請使用LPOP或RPOP命令。例如,要從名為「mylist」的列表的頭部彈出一個元素,可以執行以下操作:
127.0.0.1:6379> LPOP mylist
這將彈出並返回列表的第一個元素。
彈出最後一個元素,使用RPOP
取出一個列表里的所有元素,可以執行以下操作:
127.0.0.1:6379> LRANGE mylist 0 -1
無序集合(set類型)操作
Redis中的Set類型是一個無序的、不重複的字符串集合。下面是Redis中Set類型的常見操作:
- 向集合中添加元素
要向集合中添加元素,請使用SADD命令。例如,要將值為「ctt」的元素添加到名為「myset」的集合中,可以執行以下操作:
127.0.0.1:6379> SADD myset ctt
2. 獲取集合中的元素數量
要獲取集合中的元素數量,請使用SCARD命令。例如,要獲取名為「myset」的集合中的元素數量,可以執行以下操作:
127.0.0.1:6379> SCARD myset
3. 獲取集合中的所有元素
要獲取集合中的所有元素,請使用SMEMBERS命令。例如,要獲取名為「myset」的集合中的所有元素,可以執行以下操作:
127.0.0.1:6379> SMEMBERS myset
這將返回一個包含所有元素的列表。
4.判斷元素是否在集合中存在
要判斷一個元素是否在集合中存在,請使用SISMEMBER命令。例如,要判斷值為「ctt」的元素是否存在於名為「myset」的集合中,可以執行以下操作:
127.0.0.1:6379> SISMEMBER myset ctt
如果元素存在於集合中,則返回1;否則返回0。
5. 從集合中刪除元素
要從集合中刪除元素,請使用SREM命令。例如,要刪除名為「myset」的集合中值為「ctt2」的元素,可以執行以下操作:
127.0.0.1:6379> SREM myset ctt2
6.求多個集合的交集、並集或差集
要求多個集合的交集,請使用SINTER命令;要求並集,請使用SUNION命令;要求差集,請使用SDIFF命令。例如,假設有三個集合「set1」、「set2」和「set3」,要求它們的交集,可以執行以下操作:
127.0.0.1:6379> SINTER set1 set2 set3
127.0.0.1:6379> SUNION set1 set2 set3
這將返回一個包含所有集合的交集&並集元素的列表。
這些是Redis中Set類型的一些常見操作。Set類型是一個非常有用的數據結構,可用於存儲和處理多個相關但不重複的元素。
有序集合(ZSET類型)操作
Redis中的有序集合(Sorted Set,簡稱ZSet)是一個非常有用的數據結構,它類似於Set類型,但是每個元素都會關聯一個分數(score),且元素按照分數從小到大進行排序。下面是Redis中ZSet類型的常見操作:
- 向有序集合中添加元素
要向有序集合中添加元素,請使用ZADD命令。例如,要將值為「ctt」的元素添加到名為「myzset」的有序集合中,且它的分數為100,可以執行以下操作:
127.0.0.1:6379> ZADD myzset 100 ctt
2. 獲取有序集合中的元素數量
要獲取有序集合中的元素數量,請使用ZCARD命令。例如,要獲取名為「myzset」的有序集合中的元素數量,可以執行以下操作:
127.0.0.1:6379> ZCARD myzset
3.獲取有序集合中指定範圍內的元素
要獲取有序集合中指定範圍內的元素,請使用ZRANGE命令。例如,要獲取名為「myzset」的有序集合中排名在1到3之間的元素,可以執行以下操作:
127.0.0.1:6379> ZRANGE myzset 0 2
這將返回一個包含指定元素的列表。
4. 獲取有序集合中指定分數範圍內的元素
要獲取有序集合中指定分數範圍內的元素,請使用ZRANGEBYSCORE命令。例如,要獲取名為「myzset」的有序集合中分數在0到20之間的元素,可以執行以下操作:
127.0.0.1:6379> ZRANGEBYSCORE myzset 0 20
5. 獲取有序集合中指定元素的排名
要獲取有序集合中指定元素的排名,請使用ZRANK命令。例如,要獲取名為「myzset」的有序集合中元素「ttc」的排名,可以執行以下操作:
127.0.0.1:6379> ZRANK myzset ttc
6.獲取有序集合中指定元素的分數
要獲取有序集合中指定元素的分數,請使用ZSCORE命令。例如,要獲取名為「myzset」的有序集合中元素「ctt」的分數,可以執行以下操作:
127.0.0.1:6379> ZSCORE myzset ctt
7. 從有序集合中刪除元素
要從有序集合中刪除元素,請使用ZREM命令。例如,要刪除名為「myzset」的有序集合中元素「a」,可以執行以下操作:
127.0.0.1:6379> ZREM myzset a
8. 查看有序集合中所有元素
使用ZRANGE命令查看有序集合中的所有元素
127.0.0.1:6379> ZRANGE myzset 0 -1
常見的管理命令
- info命令
Redis的INFO命令用於獲取有關Redis伺服器的各種統計信息和診斷信息。執行INFO命令將返回一個包含大量鍵值對的文本字符串,其中每個鍵值對代表一個指標。
以下是一些常見的INFO命令用法和示例:
- 獲取Redis伺服器的統計信息
要獲取Redis伺服器的統計信息,可以執行以下命令:
127.0.0.1:6379> INFO [all]
此命令將返回一個包含各種指標的文本字符串,例如內存使用情況、客戶端連接數、鍵數量、命中率等等。
- 獲取指定信息分類下的統計信息
可以通過傳遞參數來指定要檢索哪個信息分類的統計信息。例如,要獲取Redis伺服器的內存使用情況,可以執行以下命令:
127.0.0.1:6379> INFO memory
此命令將返回一個包含有關Redis伺服器內存使用情況的各種指標的文本字符串。
- 獲取Redis伺服器的命令統計信息
要獲取Redis伺服器的命令統計信息,可以執行以下命令:
127.0.0.1:6379> INFO commandstats
此命令將返回一個包含各種Redis伺服器命令的統計信息的文本字符串,例如命令名稱、執行次數、執行時間、平均執行時間等等。
- 獲取Redis伺服器的主從複製信息
要獲取Redis伺服器的主從複製信息,可以執行以下命令:
127.0.0.1:6379> INFO replication
此命令將返回一個包含有關Redis伺服器主從複製狀態的各種指標的文本字符串,例如主從節點數量、主節點狀態、從節點狀態、複製偏移量等等。
- 獲取Redis key分布情況
要獲取Redis key的分布情況,可以執行以下命令:
127.0.0.1:6379> INFO Keyspace
此命令將返回一個每個庫的key的數量、含有過期時間的key的數據以及平均過期時間
2.查看所有已連接的客戶端信息
127.0.0.1:6379> client list
此命令將返回當前正在連接的redi實例中的所有客戶端的信息
3.監控所有操作命令monitor
例如,在一個客戶端執行如下操作
127.0.0.1:6379[2]> select 4
127.0.0.1:6379[4]> set a ctt
127.0.0.1:6379[4]> EXPIRE a 600
127.0.0.1:6379[4]> del bbb
另一個客戶端執行monitor命令,則可以看到所有的操作命令
以上為Redis基本操作命令。