Redis 中五大常見數(shù)據(jù)類型的用法
當(dāng)涉及Redis的數(shù)據(jù)操作時,不同數(shù)據(jù)類型對應(yīng)的不同數(shù)據(jù)結(jié)構(gòu),如下就對5大常用的數(shù)據(jù)類型進行演示。
1.字符串(String)
- SET key value:適用于設(shè)置單個值,比如設(shè)置用戶的姓名或者用戶的年齡等。
SET username "John"
- GET key:適用于獲取單個值,比如獲取用戶的姓名或者用戶的年齡等。
GET username
- DEL key:適用于刪除單個鍵值對,比如刪除用戶的姓名或者用戶的年齡等。
DEL username
2.哈希(Hash)
- HSET key field value:適用于存儲對象的屬性,比如存儲用戶對象的各個屬性。
HSET user:id:1001 name "John"
- HGET key field:適用于獲取對象的指定屬性,比如獲取用戶對象的姓名屬性。
HGET user:id:1001 name
- HDEL key field1 field2 ...:適用于刪除對象的指定屬性,比如刪除用戶對象的姓名屬性。
HDEL user:id:1001 name
3.列表(List)
(1) 創(chuàng)建列表
可以使用LPUSH、RPUSH等命令向列表的頭部或尾部添加元素,從而創(chuàng)建一個新的列表。
LPUSH mylist value1 value2 value3 # 向列表頭部添加元素
RPUSH mylist value4 value5 value6 # 向列表尾部添加元素
(2) 獲取列表元素
通過LRANGE命令可以獲取列表指定范圍內(nèi)的元素,其中0表示列表的第一個元素,-1表示列表的最后一個元素。
LRANGE mylist 0 -1 # 獲取列表中所有元素
LRANGE mylist 0 2 # 獲取列表中前三個元素
(3) 彈出列表元素
通過LPOP和RPOP命令可以從列表頭部或尾部彈出一個元素,并返回彈出的元素。
LPOP mylist # 從列表頭部彈出一個元素
RPOP mylist # 從列表尾部彈出一個元素
(4) 獲取列表長度
通過LLEN命令可以獲取列表的長度,即列表中元素的個數(shù)。
LLEN mylist # 獲取列表的長度
(5) 示例
假設(shè)我們有一個任務(wù)隊列,需要將任務(wù)按順序添加到隊列中,并且按照順序處理。
LPUSH task_queue task1 # 添加任務(wù)1到任務(wù)隊列頭部
LPUSH task_queue task2 # 添加任務(wù)2到任務(wù)隊列頭部
LPUSH task_queue task3 # 添加任務(wù)3到任務(wù)隊列頭部
LRANGE task_queue 0 -1 # 獲取任務(wù)隊列中的所有任務(wù)
RPOP task_queue # 從任務(wù)隊列尾部彈出一個任務(wù),表示任務(wù)被處理
4.集合(Set)
(1) 創(chuàng)建集合
在Redis中,可以使用SADD命令向集合中添加元素,從而創(chuàng)建一個新的集合。
SADD myset member1 member2 member3 # 向集合中添加多個成員
(2) 獲取集合成員
通過SMEMBERS命令可以獲取集合中的所有成員。
SMEMBERS myset # 獲取集合中所有成員
(3) 判斷成員是否存在
通過SISMEMBER命令可以判斷指定成員是否存在于集合中。
SISMEMBER myset member1 # 判斷成員1是否存在于集合中
(4) 移除集合成員
通過SREM命令可以從集合中移除一個或多個成員。
SREM myset member1 member2 # 從集合中移除成員1和成員2
(5) 獲取集合基數(shù)
通過SCARD命令可以獲取集合的基數(shù),即集合中成員的數(shù)量。
SCARD myset # 獲取集合的基數(shù)
(6) 獲取集合交集
通過SINTER命令可以獲取多個集合的交集。
SADD set1 a b c # 集合1包含元素a、b、c
SADD set2 b c d # 集合2包含元素b、c、d
SINTER set1 set2 # 獲取集合1和集合2的交集
(7) 示例
假設(shè)我們有一個社交網(wǎng)絡(luò)應(yīng)用,需要存儲用戶的好友列表,并且要求好友列表中不能有重復(fù)的用戶。
SADD user:1001:friends user:1002 # 用戶1001的好友列表中添加用戶1002
SADD user:1001:friends user:1003 # 用戶1001的好友列表中添加用戶1003
SADD user:1001:friends user:1004 # 用戶1001的好友列表中添加用戶1004
SMEMBERS user:1001:friends # 獲取用戶1001的好友列表中的所有好友
5.有序集合(Sorted Set)
(1) 創(chuàng)建有序集合
可以使用ZADD命令向有序集合中添加成員,同時為每個成員指定一個分?jǐn)?shù),從而創(chuàng)建一個新的有序集合。
ZADD mysortedset 1 member1 # 向有序集合中添加成員1,并設(shè)置其分?jǐn)?shù)為1
ZADD mysortedset 2 member2 # 向有序集合中添加成員2,并設(shè)置其分?jǐn)?shù)為2
ZADD mysortedset 3 member3 # 向有序集合中添加成員3,并設(shè)置其分?jǐn)?shù)為3
(2) 獲取有序集合成員
通過ZRANGE命令可以按照分?jǐn)?shù)從小到大的順序獲取有序集合中指定范圍內(nèi)的成員。
ZRANGE mysortedset 0 -1 WITHSCORES # 獲取有序集合中所有成員及其分?jǐn)?shù)
ZRANGE mysortedset 0 2 WITHSCORES # 獲取有序集合中前三個成員及其分?jǐn)?shù)
(3) 獲取有序集合成員分?jǐn)?shù)
通過ZSCORE命令可以獲取有序集合中指定成員的分?jǐn)?shù)。
ZSCORE mysortedset member1 # 獲取成員1在有序集合中的分?jǐn)?shù)
(4) 移除有序集合成員
通過ZREM命令可以從有序集合中移除一個或多個成員。
ZREM mysortedset member1 member2 # 從有序集合中移除成員1和成員2
(5) 獲取有序集合基數(shù)
通過ZCARD命令可以獲取有序集合的基數(shù),即有序集合中成員的數(shù)量。
ZCARD mysortedset # 獲取有序集合的基數(shù)
(6) 示例
假設(shè)我們有一個學(xué)生成績單,需要存儲學(xué)生的成績,并按照成績從高到低進行排名。
ZADD student_scores 90 alice # 學(xué)生Alice的成績?yōu)?0
ZADD student_scores 85 bob # 學(xué)生Bob的成績?yōu)?5
ZADD student_scores 95 charlie # 學(xué)生Charlie的成績?yōu)?5
ZRANGE student_scores 0 -1 WITHSCORES # 獲取學(xué)生成績單中所有學(xué)生及其成績