1. 程式人生 > 實用技巧 >四、五大資料型別

四、五大資料型別

文章轉自:https://blog.csdn.net/DDDDeng_/article/details/108118544

4.1、Redis-key

  • exists key:判斷鍵是否存在

  • del key:刪除鍵值對

  • move key db:將鍵值對移動到指定資料庫

  • expire key second:設定鍵值對的過期時間

  • type key:檢視value的資料型別

127.0.0.1:6379> set name chao #set key
OK
127.0.0.1:6379> keys *
1) "foo"
2) "name"
3) "var"
127.0.0.1:6379> exists name #判斷當前的key是否存在
(integer) 
1 127.0.0.1:6379> exists name2 (integer) 0 127.0.0.1:6379> move name (error) ERR wrong number of arguments for 'move' command 127.0.0.1:6379> move name (error) ERR wrong number of arguments for 'move' command 127.0.0.1:6379> move name 1 # 移除當前的key (integer) 1 127.0.0.1:6379> expire name #設定當前key的過期時間,單位是秒 (integer)
1 127.0.0.1:6379> ttl name #檢視當前key的剩餘時間 (integer) 7 127.0.0.1:6379> type foo # 檢視當前key的型別 string 127.0.0.1:6379> type var list

4.2、 String(字串)

命令 描述 示例
APPEND key value 向指定的key的value後追加字串 127.0.0.1:6379> set msg hello OK 127.0.0.1:6379> append msg " world" (integer) 11 127.0.0.1:6379> get msg “hello world”
DECR/INCR key 將指定key的value數值進行+1/-1(僅對於數字) 127.0.0.1:6379> set age 20 OK 127.0.0.1:6379> incr age (integer) 21 127.0.0.1:6379> decr age (integer) 20
INCRBY/DECRBY key n 按指定的步長對數值進行加減 127.0.0.1:6379> INCRBY age 5 (integer) 25 127.0.0.1:6379> DECRBY age 10 (integer) 15
INCRBYFLOAT key n 為數值加上浮點型數值 127.0.0.1:6379> INCRBYFLOAT age 5.2 “20.2”
STRLEN key 獲取key儲存值的字串長度 127.0.0.1:6379> get msg “hello world” 127.0.0.1:6379> STRLEN msg (integer) 11
GETRANGE key start end 按起止位置獲取字串(閉區間,起止位置都取) 127.0.0.1:6379> get msg “hello world” 127.0.0.1:6379> GETRANGE msg 3 9 “lo worl”
SETRANGE key offset value 用指定的value 替換key中 offset開始的值 127.0.0.1:6379> SETRANGE msg 2 hello (integer) 7 127.0.0.1:6379> get msg “tehello”
GETSET key value 將給定 key 的值設為 value ,並返回 key 的舊值(old value)。 127.0.0.1:6379> GETSET msg test “hello world”
SETNX key value 僅當key不存在時進行set 127.0.0.1:6379> SETNX msg test (integer) 0 127.0.0.1:6379> SETNX name sakura (integer) 1
SETEX key seconds value set 鍵值對並設定過期時間 127.0.0.1:6379> setex name 10 root OK 127.0.0.1:6379> get name (nil)
MSET key1 value1 [key2 value2..] 批量set鍵值對 127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3 OK
MSETNX key1 value1 [key2 value2..] 批量設定鍵值對,僅當引數中所有的key都不存在時執行 127.0.0.1:6379> MSETNX k1 v1 k4 v4 (integer) 0
MGET key1 [key2..] 批量獲取多個key儲存的值 127.0.0.1:6379> MGET k1 k2 k3 1) “v1” 2) “v2” 3) “v3”
PSETEX key milliseconds value 和 SETEX 命令相似,但它以毫秒為單位設定 key 的生存時間,
getset key value 如果不存在值,則返回nil,如果存在值,獲取原來的值,並設定新的值

############################################################################################
127.0.0.1:6379> APPEND str hello # 給當前字串追加內容,如果當前key不存在相當於set一個key
(integer) 7
127.0.0.1:6379> STRLEN str # 獲取當前字串的長度
(integer) 7
############################################################################################
127.0.0.1:6379> incr index # 當前key++
(integer) 3
127.0.0.1:6379> decr index # 當前key--
(integer) 2
127.0.0.1:6379> INCRBY index 5 # 當前key+=5
(integer) 7
127.0.0.1:6379> DECRBY index 3 # 當前key-=3
(integer) 4
############################################################################################
127.0.0.1:6379> set name helloWord
OK
127.0.0.1:6379> get name
"helloWord"
127.0.0.1:6379> GETRANGE name 0 3 # 擷取字串0-3
"hell"
127.0.0.1:6379> GETRANGE name 0 4
"hello"
127.0.0.1:6379> GETRANGE name 2 3
"ll"
127.0.0.1:6379> GETRANGE name 0 -1 # 獲取全部的字串
"helloWord"
############################################################################################
127.0.0.1:6379> SETRANGE name 0 aa # 替換當前字串的值
(integer) 9
127.0.0.1:6379> get name
"aalloWord"
127.0.0.1:6379> SETRANGE name 1 bb
(integer) 9
127.0.0.1:6379> get name
"abbloWord"
###############################
#############################################################
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> setnx name lisi # 不存在則設定
(integer) 0
127.0.0.1:6379> setnx age 12
(integer) 1
############################################################################################
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 # 同時設定多個值
OK
127.0.0.1:6379> mget k1 k2 k3 # 同時獲取多個值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> get k1
"v1"
############################################################################################
127.0.0.1:6379> GETSET k1 12 # 先獲取再設定
"v1"
127.0.0.1:6379> get k1
"12"
############################################################################################

4.3、List(列表)

命令描述
LPUSH/RPUSH key value1[value2..] 從左邊/右邊向列表中PUSH值(一個或者多個)。
LRANGE key start end 獲取list 起止元素==(索引從左往右 遞增)==
LPUSHX/RPUSHX key value 向已存在的列名中push值(一個或者多個)
LINSERT key BEFORE|AFTER pivot value 在指定列表元素的前/後 插入value
LLEN key 檢視列表長度
LINDEX key index 通過索引獲取列表元素
LSET key index value 通過索引為元素設值
LPOP/RPOP key 從最左邊/最右邊移除值 並返回
RPOPLPUSH source destination 將列表的尾部(右)最後一個值彈出,並返回,然後加到另一個列表的頭部
LTRIM key start end 通過下標擷取指定範圍內的列表
LREM key count value List中是允許value重複的 count > 0:從頭部開始搜尋 然後刪除指定的value 至多刪除count個 count < 0:從尾部開始搜尋… count = 0:刪除列表中所有的指定value。
BLPOP/BRPOP key1[key2] timout 移出並獲取列表的第一個/最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
BRPOPLPUSH source destination timeout RPOPLPUSH功能相同,如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
############################################################################################
127.0.0.1:6379> LPUSH list one # 將一個或多個值插入到列表的頭部
(integer) 1
127.0.0.1:6379> LPUSH list two three
(integer) 3
127.0.0.1:6379> get list
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> LRANGE list 0 -1 # 獲取list中的值
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> LRANGE list 0 1
1) "three"
2) "two"
127.0.0.1:6379> LRANGE list 0 2
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> RPUSH list zero # 將一個或多個值插入到列表的尾部
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "one"
4) "zero"
############################################################################################
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "one"
4) "zero"
127.0.0.1:6379> LPOP list # 移除列表中的第一個元素
"three"
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "one"
3) "zero"
127.0.0.1:6379> RPOP list # 移除列表中的最後一個元素
"zero"
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "one"
############################################################################################
127.0.0.1:6379> LINDEX list 1 # 通過下標獲取值
"one"
127.0.0.1:6379> LINDEX list 0
"two"
############################################################################################
127.0.0.1:6379> LLEN list # 獲取當前列表的長度
(integer) 2
############################################################################################
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> LREM list 1 one # 移除列表中指定數量的值
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
############################################################################################
127.0.0.1:6379> LRANGE list 0 -1
1) "four"
2) "three"
3) "two"
4) "one"
5) "two"
127.0.0.1:6379> LTRIM list 1 2 # 從下標處擷取指定的長度,改變list
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
############################################################################################
#rpoplpush:移除列表的最後一個元素,將他移動到新的列表中
127.0.0.1:6379> LRANGE list 0 -1
1) "v6"
2) "v5"
3) "v4"
4) "v3"
5) "v2"
6) "v1"
127.0.0.1:6379> RPOPLPUSH list list2 #rpoplpush:移除列表的最後一個元素,將他移動到新的列表中
"v1"
127.0.0.1:6379> LRANGE list2
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> LRANGE list2 0 -1
1) "v1"
127.0.0.1:6379> LRANGE list 0 -1
1) "v6"
2) "v5"
3) "v4"
4) "v3"
5) "v2"
############################################################################################
# lset:設定當前下標的值,如果當前列表或者下標不存在則報錯
127.0.0.1:6379> LSET list 0 v0
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "v0"
2) "v5"
3) "v4"
4) "v3"
5) "v2"
############################################################################################
# linsert:在指定元素的前面或者後面插入值
127.0.0.1:6379> LINSERT list after v4 after
(integer) 6
127.0.0.1:6379> LRANGE list 0 -1
1) "v0"
2) "v5"
3) "v4"
4) "after"
5) "v3"
6) "v2"
127.0.0.1:6379> LINSERT list before v4 before
(integer) 7
127.0.0.1:6379> LRANGE list 0 -1
1) "v0"
2) "v5"
3) "before"
4) "v4"
5) "after"
6) "v3"
7) "v2"
############################################################################################

4.4、Set(集合)

命令描述
SADD key member1[member2..] 向集合中無序增加一個/多個成員
SCARD key 獲取集合的成員數
SMEMBERS key 返回集合中所有的成員
SISMEMBER key member 查詢member元素是否是集合的成員,結果是無序的
SRANDMEMBER key [count] 隨機返回集合中count個成員,count預設值為1
SPOP key [count] 隨機移除並返回集合中count個成員,count預設值為1
SMOVE source destination member 將source集合的成員member移動到destination集合
SREM key member1[member2..] 移除集合中一個/多個成員
SDIFF key1[key2..] 返回所有集合的差集 key1- key2 - …
SDIFFSTORE destination key1[key2..] 在SDIFF的基礎上,將結果儲存到集合中==(覆蓋)==。不能儲存到其他型別key噢!
SINTER key1 [key2..] 返回所有集合的交集
SINTERSTORE destination key1[key2..] 在SINTER的基礎上,儲存結果到集合中。覆蓋
SUNION key1 [key2..] 返回所有集合的並集
SUNIONSTORE destination key1 [key2..] 在SUNION的基礎上,儲存結果到及和張。覆蓋
SSCAN KEY [MATCH pattern] [COUNT count] 在大量資料環境下,使用此命令遍歷集合中元素,每次遍歷部分
---------------SADD--SCARD--SMEMBERS--SISMEMBER--------------------

127.0.0.1:6379> SADD myset m1 m2 m3 m4 # 向myset中增加成員 m1~m4
(integer) 4
127.0.0.1:6379> SCARD myset # 獲取集合的成員數目
(integer) 4
127.0.0.1:6379> smembers myset # 獲取集合中所有成員
1) "m4"
2) "m3"
3) "m2"
4) "m1"
127.0.0.1:6379> SISMEMBER myset m5 # 查詢m5是否是myset的成員
(integer) 0 # 不是,返回0
127.0.0.1:6379> SISMEMBER myset m2
(integer) 1 # 是,返回1
127.0.0.1:6379> SISMEMBER myset m3
(integer) 1

---------------------SRANDMEMBER--SPOP----------------------------------

127.0.0.1:6379> SRANDMEMBER myset 3 # 隨機返回3個成員
1) "m2"
2) "m3"
3) "m4"
127.0.0.1:6379> SRANDMEMBER myset # 隨機返回1個成員
"m3"
127.0.0.1:6379> SPOP myset 2 # 隨機移除並返回2個成員
1) "m1"
2) "m4"
# 將set還原到{m1,m2,m3,m4}

---------------------SMOVE--SREM----------------------------------------

127.0.0.1:6379> SMOVE myset newset m3 # 將myset中m3成員移動到newset集合
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "m4"
2) "m2"
3) "m1"
127.0.0.1:6379> SMEMBERS newset
1) "m3"
127.0.0.1:6379> SREM newset m3 # 從newset中移除m3元素
(integer) 1
127.0.0.1:6379> SMEMBERS newset
(empty list or set)

# 下面開始是多集合操作,多集合操作中若只有一個引數預設和自身進行運算
# setx=>{m1,m2,m4,m6}, sety=>{m2,m5,m6}, setz=>{m1,m3,m6}

-----------------------------SDIFF------------------------------------

127.0.0.1:6379> SDIFF setx sety setz # 等價於setx-sety-setz
1) "m4"
127.0.0.1:6379> SDIFF setx sety # setx - sety
1) "m4"
2) "m1"
127.0.0.1:6379> SDIFF sety setx # sety - setx
1) "m5"


-------------------------SINTER---------------------------------------
# 共同關注(交集)

127.0.0.1:6379> SINTER setx sety setz # 求 setx、sety、setx的交集
1) "m6"
127.0.0.1:6379> SINTER setx sety # 求setx sety的交集
1) "m2"
2) "m6"

-------------------------SUNION---------------------------------------

127.0.0.1:6379> SUNION setx sety setz # setx sety setz的並集
1) "m4"
2) "m6"
3) "m3"
4) "m2"
5) "m1"
6) "m5"
127.0.0.1:6379> SUNION setx sety # setx sety 並集
1) "m4"
2) "m6"
3) "m2"
4) "m1"
5) "m5"

4.5、Hash(雜湊)

Redis hash 是一個string型別的field和value的對映表,hash特別適合用於儲存物件。

Set就是一種簡化的Hash,只變動key,而value使用預設值填充。可以將一個Hash表作為一個物件進行儲存,表中存放物件的資訊。

命令描述
HSET key field value 將雜湊表 key 中的欄位 field 的值設為 value 。重複設定同一個field會覆蓋,返回0
HMSET key field1 value1 [field2 value2..] 同時將多個 field-value (域-值)對設定到雜湊表 key 中。
HSETNX key field value 只有在欄位 field 不存在時,設定雜湊表字段的值。
HEXISTS key field 檢視雜湊表 key 中,指定的欄位是否存在。
HGET key field value 獲取儲存在雜湊表中指定欄位的值
HMGET key field1 [field2..] 獲取所有給定欄位的值
HGETALL key 獲取在雜湊表key 的所有欄位和值
HKEYS key 獲取雜湊表key中所有的欄位
HLEN key 獲取雜湊表中欄位的數量
HVALS key 獲取雜湊表中所有值
HDEL key field1 [field2..] 刪除雜湊表key中一個/多個field欄位
HINCRBY key field n 為雜湊表 key 中的指定欄位的整數值加上增量n,並返回增量後結果 一樣只適用於整數型欄位
HINCRBYFLOAT key field n 為雜湊表 key 中的指定欄位的浮點數值加上增量 n。
HSCAN key cursor [MATCH pattern] [COUNT count] 迭代雜湊表中的鍵值對。
------------------------HSET--HMSET--HSETNX----------------
127.0.0.1:6379> HSET studentx name sakura # 將studentx雜湊表作為一個物件,設定name為sakura
(integer) 1
127.0.0.1:6379> HSET studentx name gyc # 重複設定field進行覆蓋,並返回0
(integer) 0
127.0.0.1:6379> HSET studentx age 20 # 設定studentx的age為20
(integer) 1
127.0.0.1:6379> HMSET studentx sex 1 tel 15623667886 # 設定sex為1,tel為15623667886
OK
127.0.0.1:6379> HSETNX studentx name gyc # HSETNX 設定已存在的field
(integer) 0 # 失敗
127.0.0.1:6379> HSETNX studentx email 12345@qq.com
(integer) 1 # 成功

----------------------HEXISTS--------------------------------
127.0.0.1:6379> HEXISTS studentx name # name欄位在studentx中是否存在
(integer) 1 # 存在
127.0.0.1:6379> HEXISTS studentx addr
(integer) 0 # 不存在

-------------------HGET--HMGET--HGETALL-----------
127.0.0.1:6379> HGET studentx name # 獲取studentx中name欄位的value
"gyc"
127.0.0.1:6379> HMGET studentx name age tel # 獲取studentx中name、age、tel欄位的value
1) "gyc"
2) "20"
3) "15623667886"
127.0.0.1:6379> HGETALL studentx # 獲取studentx中所有的field及其value
 1) "name"
 2) "gyc"
 3) "age"
 4) "20"
 5) "sex"
 6) "1"
 7) "tel"
 8) "15623667886"
 9) "email"
10) "[email protected]"


--------------------HKEYS--HLEN--HVALS--------------
127.0.0.1:6379> HKEYS studentx # 檢視studentx中所有的field
1) "name"
2) "age"
3) "sex"
4) "tel"
5) "email"
127.0.0.1:6379> HLEN studentx # 檢視studentx中的欄位數量
(integer) 5
127.0.0.1:6379> HVALS studentx # 檢視studentx中所有的value
1) "gyc"
2) "20"
3) "1"
4) "15623667886"
5) "[email protected]"

-------------------------HDEL--------------------------
127.0.0.1:6379> HDEL studentx sex tel # 刪除studentx 中的sex、tel欄位
(integer) 2
127.0.0.1:6379> HKEYS studentx
1) "name"
2) "age"
3) "email"

-------------HINCRBY--HINCRBYFLOAT------------------------
127.0.0.1:6379> HINCRBY studentx age 1 # studentx的age欄位數值+1
(integer) 21
127.0.0.1:6379> HINCRBY studentx name 1 # 非整數字型欄位不可用
(error) ERR hash value is not an integer
127.0.0.1:6379> HINCRBYFLOAT studentx weight 0.6 # weight欄位增加0.6
"90.8"

4.6、Zset(有序集合)

不同的是每個元素都會關聯一個double型別的分數(score)。redis正是通過分數來為集合中的成員進行從小到大的排序。

score相同:按字典順序排序

有序集合的成員是唯一的,但分數(score)卻可以重複。

命令描述
ZADD key score member1 [score2 member2] 向有序集合新增一個或多個成員,或者更新已存在成員的分數
ZCARD key 獲取有序集合的成員數
ZCOUNT key min max 計算在有序集合中指定區間score的成員數
ZINCRBY key n member 有序集合中對指定成員的分數加上增量 n
ZSCORE key member 返回有序集中,成員的分數值
ZRANK key member 返回有序集合中指定成員的索引
ZRANGE key start end 通過索引區間返回有序集合成指定區間內的成員
ZRANGEBYLEX key min max 通過字典區間返回有序集合的成員
ZRANGEBYSCORE key min max 通過分數返回有序集合指定區間內的成員==-inf 和 +inf分別表示最小最大值,只支援開區間()==
ZLEXCOUNT key min max 在有序集合中計算指定字典區間內成員數量
ZREM key member1 [member2..] 移除有序集合中一個/多個成員
ZREMRANGEBYLEX key min max 移除有序集合中給定的字典區間的所有成員
ZREMRANGEBYRANK key start stop 移除有序集合中給定的排名區間的所有成員
ZREMRANGEBYSCORE key min max 移除有序集合中給定的分數區間的所有成員
ZREVRANGE key start end 返回有序集中指定區間內的成員,通過索引,分數從高到底
ZREVRANGEBYSCORRE key max min 返回有序集中指定分數區間內的成員,分數從高到低排序
ZREVRANGEBYLEX key max min 返回有序集中指定字典區間內的成員,按字典順序倒序
ZREVRANK key member 返回有序集合中指定成員的排名,有序整合員按分數值遞減(從大到小)排序
ZINTERSTORE destination numkeys key1 [key2 ..] 計算給定的一個或多個有序集的交集並將結果集儲存在新的有序集合 key 中,numkeys:表示參與運算的集合數,將score相加作為結果的score
ZUNIONSTORE destination numkeys key1 [key2..] 計算給定的一個或多個有序集的交集並將結果集儲存在新的有序集合 key 中
ZSCAN key cursor [MATCH pattern\] [COUNT count] 迭代有序集合中的元素(包括元素成員和元素分值)
-------------------ZADD--ZCARD--ZCOUNT--------------
127.0.0.1:6379> ZADD myzset 1 m1 2 m2 3 m3 # 向有序集合myzset中新增成員m1 score=1 以及成員m2 score=2..
(integer) 2
127.0.0.1:6379> ZCARD myzset # 獲取有序集合的成員數
(integer) 2
127.0.0.1:6379> ZCOUNT myzset 0 1 # 獲取score在 [0,1]區間的成員數量
(integer) 1
127.0.0.1:6379> ZCOUNT myzset 0 2
(integer) 2

----------------ZINCRBY--ZSCORE--------------------------
127.0.0.1:6379> ZINCRBY myzset 5 m2 # 將成員m2的score +5
"7"
127.0.0.1:6379> ZSCORE myzset m1 # 獲取成員m1的score
"1"
127.0.0.1:6379> ZSCORE myzset m2
"7"

--------------ZRANK--ZRANGE-----------------------------------
127.0.0.1:6379> ZRANK myzset m1 # 獲取成員m1的索引,索引按照score排序,score相同索引值按字典順序順序增加
(integer) 0
127.0.0.1:6379> ZRANK myzset m2
(integer) 2
127.0.0.1:6379> ZRANGE myzset 0 1 # 獲取索引在 0~1的成員
1) "m1"
2) "m3"
127.0.0.1:6379> ZRANGE myzset 0 -1 # 獲取全部成員
1) "m1"
2) "m3"
3) "m2"

#testset=>{abc,add,amaze,apple,back,java,redis} score均為0
------------------ZRANGEBYLEX---------------------------------
127.0.0.1:6379> ZRANGEBYLEX testset - + # 返回所有成員
1) "abc"
2) "add"
3) "amaze"
4) "apple"
5) "back"
6) "java"
7) "redis"
127.0.0.1:6379> ZRANGEBYLEX testset - + LIMIT 0 3 # 分頁 按索引顯示查詢結果的 0,1,2條記錄
1) "abc"
2) "add"
3) "amaze"
127.0.0.1:6379> ZRANGEBYLEX testset - + LIMIT 3 3 # 顯示 3,4,5條記錄
1) "apple"
2) "back"
3) "java"
127.0.0.1:6379> ZRANGEBYLEX testset (- [apple # 顯示 (-,apple] 區間內的成員
1) "abc"
2) "add"
3) "amaze"
4) "apple"
127.0.0.1:6379> ZRANGEBYLEX testset [apple [java # 顯示 [apple,java]字典區間的成員
1) "apple"
2) "back"
3) "java"

-----------------------ZRANGEBYSCORE---------------------
127.0.0.1:6379> ZRANGEBYSCORE myzset 1 10 # 返回score在 [1,10]之間的的成員
1) "m1"
2) "m3"
3) "m2"
127.0.0.1:6379> ZRANGEBYSCORE myzset 1 5
1) "m1"
2) "m3"

--------------------ZLEXCOUNT-----------------------------
127.0.0.1:6379> ZLEXCOUNT testset - +
(integer) 7
127.0.0.1:6379> ZLEXCOUNT testset [apple [java
(integer) 3

------------------ZREM--ZREMRANGEBYLEX--ZREMRANGBYRANK--ZREMRANGEBYSCORE--------------------------------
127.0.0.1:6379> ZREM testset abc # 移除成員abc
(integer) 1
127.0.0.1:6379> ZREMRANGEBYLEX testset [apple [java # 移除字典區間[apple,java]中的所有成員
(integer) 3
127.0.0.1:6379> ZREMRANGEBYRANK testset 0 1 # 移除排名0~1的所有成員
(integer) 2
127.0.0.1:6379> ZREMRANGEBYSCORE myzset 0 3 # 移除score在 [0,3]的成員
(integer) 2


# testset=> {abc,add,apple,amaze,back,java,redis} score均為0
# myzset=> {(m1,1),(m2,2),(m3,3),(m4,4),(m7,7),(m9,9)}
----------------ZREVRANGE--ZREVRANGEBYSCORE--ZREVRANGEBYLEX-----------
127.0.0.1:6379> ZREVRANGE myzset 0 3 # 按score遞減排序,然後按索引,返回結果的 0~3
1) "m9"
2) "m7"
3) "m4"
4) "m3"
127.0.0.1:6379> ZREVRANGE myzset 2 4 # 返回排序結果的 索引的2~4
1) "m4"
2) "m3"
3) "m2"
127.0.0.1:6379> ZREVRANGEBYSCORE myzset 6 2 # 按score遞減順序 返回集合中分數在[2,6]之間的成員
1) "m4"
2) "m3"
3) "m2"
127.0.0.1:6379> ZREVRANGEBYLEX testset [java (add # 按字典倒序 返回集合中(add,java]字典區間的成員
1) "java"
2) "back"
3) "apple"
4) "amaze"

-------------------------ZREVRANK------------------------------
127.0.0.1:6379> ZREVRANK myzset m7 # 按score遞減順序,返回成員m7索引
(integer) 1
127.0.0.1:6379> ZREVRANK myzset m2
(integer) 4


# mathscore=>{(xm,90),(xh,95),(xg,87)} 小明、小紅、小剛的數學成績
# enscore=>{(xm,70),(xh,93),(xg,90)} 小明、小紅、小剛的英語成績
-------------------ZINTERSTORE--ZUNIONSTORE-----------------------------------
127.0.0.1:6379> ZINTERSTORE sumscore 2 mathscore enscore # 將mathscore enscore進行合併 結果存放到sumscore
(integer) 3
127.0.0.1:6379> ZRANGE sumscore 0 -1 withscores # 合併後的score是之前集合中所有score的和
1) "xm"
2) "160"
3) "xg"
4) "177"
5) "xh"
6) "188"

127.0.0.1:6379> ZUNIONSTORE lowestscore 2 mathscore enscore AGGREGATE MIN # 取兩個集合的成員score最小值作為結果的
(integer) 3
127.0.0.1:6379> ZRANGE lowestscore 0 -1 withscores
1) "xm"
2) "70"
3) "xg"
4) "87"
5) "xh"
6) "93"