国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

這篇具有很好參考價值的文章主要介紹了Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、String數(shù)據(jù)類型

1、SET/GET/APPEND/STRLEN

(1)?APPEND

(2)?SET/STRLEN

2、?INCR/ DECR/INCRBY/DECRBY

(1)INCR/ DECR

(2)?INCRBY/DECRBY

INCRBY key increment:key值增加指定的整數(shù)DECRBY key decrement:key值減少指定的整數(shù)

?3、GETSET

4、?SETEX

?5、SETNX

6、MSET/MGET/MSETNX

?二、List數(shù)據(jù)類型

1、LPUSH/LPUSHX/LRANGE

?2、LPOP/LLEN

3、??LREM/ LSET/LINDEX/LTRIM

4 、?LINSERT

5、?RPUSH/RPUSHX/RPOP/RPOPLPUSH

?三、Hash數(shù)據(jù)類型(散列類型)

1、?HSET/HGET/HDEL/HEXISTS/HLEN/HSETNX

2、HINCRBY

3、?HGETALL/ HKEYS/HVALS/ HMGET/ HMSET?

四、set數(shù)據(jù)類型(無序集合)

1、?SADD/SMEMBERS/SCARD/ SISMEMBER

2、?SPOP/SREM/SRANDMEMBER/SMOVE

?五、Sorted Set數(shù) 據(jù)類型(zset、 有序集合)

1、ZADD/ZCARD/ZCOUNT/ZREM/ZINCRBY/ZSCORE/ZRANGE/ZRANK

2、ZRANGEBYSCORE/ZREMRANGEBYRANK/ZREMRANGEBYSCORE

3、?ZREVRANGE/ ZREVRANGEBYSCORE/ ZREVRANK


一、String數(shù)據(jù)類型

概述:String 是redis最基本的類型,最大能存儲512MB的數(shù)據(jù),String類型是二進(jìn)制安全的,即可以存儲任何數(shù)據(jù)、比如數(shù)字、圖片、序列化對象等

1、SET/GET/APPEND/STRLEN

(1)?APPEND

APPEND key value:追加鍵值,并返回追加后的長度(若鍵不存在,則相當(dāng)于創(chuàng)建)

redis 127.0.0.1:6379> exists xyw             #判斷該鍵是否存在,存在返回1,否則返回0。
(integer) 0
redis 127.0.0.1:6379> append xyw "hello"     #該鍵并不存在,因此append命令返回當(dāng)前Value的長度。
(integer) 5
redis 127.0.0.1:6379> append xyw " world"    #該鍵已經(jīng)存在,因此返回追加后Value的長度。
(integer) 11
redis 127 .0.0.1:6379> get xyw               #通過get命令獲取該鍵,以判斷append的結(jié)果。
"hello world"

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

(2)?SET/STRLEN

SET key value [expiration EX seconds|PX milliseconds] [NX|XX]:設(shè)置鍵-值對
STRLEN key:統(tǒng)計指定key的字符長度

redis 127 .0.0.1:6379> set xyw "this is a test"    #通過set命令為鍵設(shè)置新值,并覆蓋原有值。
OK
redis 127 .0.0.1:6379> get xyw
"this is a test"
redis 127 .0.0.1:6379> strlen xyw           #獲取指定Key的字符長度。
(integer) 14

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

2、?INCR/ DECR/INCRBY/DECRBY

(1)INCR/ DECR

INCR key:key值遞增加1(key值必須為整數(shù))
DECR key:key值遞增減1(key值必須為整數(shù))

127.0.0.1:6379> set xyw 20	#設(shè)置Key的值為20
OK
127.0.0.1:6379> get xyw
"20"
127.0.0.1:6379> incr xyw	#該Key的值遞增1
(integer) 21
127.0.0.1:6379> decr xyw	#該Key的值遞減1
(integer) 20
127.0.0.1:6379> del xyw		#刪除已有鍵。
(integer) 1
127.0.0.1:6379> get xyw
(nil)
127.0.0.1:6379> decr xyw	#對空值執(zhí)行遞減操作,其原值被設(shè)定為0,遞減后的值為-1
(integer) -1
redis 127.0.0.1:6379> del xyw
(integer) 1
redis 127.0.0.1:6379> incr xyw    #對空值執(zhí)行遞增操作,其原值被設(shè)定為0,遞增后的值為1
(integer) 1
127.0.0.1:6379> set xyw sweetsensetion	#將該鍵的Value設(shè)置為不能轉(zhuǎn)換為整型的普通字符串。
OK
127.0.0.1:6379> get xyw
"sweetsensetion"
127.0.0.1:6379> incr xyw	 
(error) ERR value is not an integer or out of range
127.0.0.1:6379> decr xyw
(error) ERR value is not an integer or out of range

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

(2)?INCRBY/DECRBY

INCRBY key increment:key值增加指定的整數(shù)
DECRBY key decrement:key值減少指定的整數(shù)

127.0.0.1:6379> set xyw 10
OK
127.0.0.1:6379> get xyw
"10"
127.0.0.1:6379> decrby xyw 5 	 #減少指定的整數(shù)
(integer) 5
127.0.0.1:6379> 
127.0.0.1:6379> incrby xyw 3	 #增加指定的整數(shù)
(integer) 8

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

?3、GETSET

GETSET key value:獲取key值并返回,同時給key設(shè)置新值

127.0.0.1:6379> incr mycounter	#將計數(shù)器的值原子性的遞增1
(integer) 1
127.0.0.1:6379> get mycounter
"1"
127.0.0.1:6379> getset mycounter "sweet sensetion"	#在獲取計數(shù)器原有值的同時,并將其設(shè)置為新值,這兩個操作原子性的同時完成。
"1"											#get的原鍵值
127.0.0.1:6379> get mycounter	#查看設(shè)置后的結(jié)果。
"sweet sensetion"

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

4、?SETEX

setex key seconds value:設(shè)置指定key的過期時間為seconds
#seconds:過期時間

redis 127.0.0.1:6379> setex mykey 10 "hello"		#設(shè)置指定Key的過期時間為10秒。
OK
redis 127.0.0.1:6379> ttl mykey 	#通過ttl命令查看一下指定Key的剩余存活時間(秒數(shù)),-2表示已經(jīng)過期,-1表示永不過期。
(integer) 4							#表示還有4秒過期
redis 127.0.0.1:6379> get mykey		#在該鍵的存活期內(nèi)我們?nèi)匀豢梢垣@取到它的Value。
"hello"
redis 127.0.0.1:6379> ttl mykey  			#該ttl命令的返回值顯示,該Key已經(jīng)過期。
(integer) -2
redis 127.0.0.1:6379> get mykey 	#獲取已過期的Key將返回nil。
(nil)
127.0.0.1:6379> set mykey "hello"
OK
127.0.0.1:6379> ttl mykey
(integer) -1        #-1永不過期

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

?5、SETNX

SETNX key value:不存在鍵的話執(zhí)行set操作,存在的話不執(zhí)行
#若鍵不存在即會創(chuàng)建新鍵,若鍵已存在則不執(zhí)行

redis 127.0.0.1:6379> del mykey		#刪除該鍵,以便于下面的測試驗證。
(integer) 1
redis 127.0.0.1:6379> setnx mykey "hello"	#該鍵并不存在,因此setnx命令執(zhí)行成功。
(integer) 1
redis 127.0.0.1:6379> setnx mykey "world"	#該鍵己經(jīng)存在,因此本次設(shè)置沒有產(chǎn)生任何效果。
(integer) 0
redis 127.0.0.1:6379> get mykey		#從結(jié)果可以看出,返回的值仍為第一次設(shè)置的值。
"hello"

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

6、MSET/MGET/MSETNX

?MSET key value [key value ...]:批量設(shè)置鍵-值對
MGET key [key ...]:批量獲取鍵值對
MSETNX key value [key value ...]:批量設(shè)置鍵-值對,都不存在就執(zhí)行并返回1;只要有一個存在就不執(zhí)行并返回0

redis 127.0.0.1:6379> mset key1 "hello" key2 "world"	#批量設(shè)置了key1和key2兩個鍵。
OK
redis 127.0.0.1:6379> mget key1 key2	#批量獲取了key1和key2兩個鍵的值。
1) "hello"
2) "world"
redis 127.0.0.1:6379> msetnx key3 "zhang" key4 "san"	#批量設(shè)置了key3和key4兩個鍵,因為之前他們并不存在,所以msetnx命令執(zhí)行成功并返回1。
(integer) 1
redis 127 .0.0.1:6379> mget key3 key4
1) "zhang"
2) "san"
redis 127.0.0.1:6379> msetnx key3 "hello" key5 "world"		#批量設(shè)置了key3和key5兩個鍵,但是key3E已經(jīng)存在,所以msetnx命令執(zhí)行失敗并返回0。
(integer) 0
redis 127.0.0.1:6379> mget key3 key5	#批量獲取key3和key5,由于key5沒有設(shè)置成功,所以返回nil。
1) "zhang"
2) (nil)
127.0.0.1:6379> setnx mykey "hello"
(integer) 1
127.0.0.1:6379> setnx mykey "world"
(integer) 0
127.0.0.1:6379> get mykey 
"hello"
127.0.0.1:6379> MSET 1 hello 2 world
OK
127.0.0.1:6379> MGET 1 2
1) "hello"
2) "world"
127.0.0.1:6379> MSETNX 3 sweet 4 sensetion
(integer) 1
127.0.0.1:6379> MGET 3 4
1) "sweet"
2) "sensetion"
127.0.0.1:6379> MSETNX 3 close 5 cute
(integer) 0
127.0.0.1:6379> MGET 3 5
1) "sweet"
2) (nil)

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

?二、List數(shù)據(jù)類型

概述:列表的元素類型為string,按照插入順序排序,在列表的頭部或尾部添加元素

1、LPUSH/LPUSHX/LRANGE

LPUSH key value [value ...]在頭部(左側(cè))依次插入列表元素
LPUSHX key value:鍵必須存在才能執(zhí)行,在頭部插入元素值并返回并返回列表元素數(shù)量
LRANGE key start stop:取從位置索引start到位置索引stop的所有元素(所以以0開始)

redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> lpush mykey a b c d	#mykey鍵并不存在,該命令會創(chuàng)建該鍵及與其關(guān)聯(lián)的List,之后在將參數(shù)中的values在左側(cè)依次插入。
(integer) 4
redis 127.0.0.1:6379> lrange mykey 0 2		#取從位置0開始到位置2結(jié)束的3個元素。
2) "c"
3) "b"
redis 127.0.0.1:6379> lrange mykey 0 -1		#取鏈表中的全部元素,其中0表示第一個元素,-1表示最后一個元素。
1) "d"
3) "b"
redis 127.0.0.1:6379> lpushx mykey2 e		#mykey2鍵此時并不存在,因此lpushx命令將不會進(jìn)行任何操作,其返回值為0。
(integer) 0
redis 127.0.0.1:6379> lrange mykey2 0 -1 	#可以看到mykey2沒有關(guān)聯(lián)任何List Value。
(empty list or set)
redis 127 .0.0.1:6379> lpushx mykey e		#mykey鍵此時已經(jīng)存在,所以lpushx命令插入成功,并返回鏈表中當(dāng)前元素的數(shù)量。
(integer) 5
redis 127 .0.0.1:6379> lrange mykey 0 0		#獲取該鍵的List Value的頭部元素。
1) "e"
127.0.0.1:6379> lpushx mykey f g			#可以批量插入
(integer) 7
127.0.0.1:6379> lrange mykey 0 -1
1) "g"
2) "f"
3) "e"
4) "d"
5) "c"
6) "b"
7) "a"

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

?2、LPOP/LLEN

LPOP key:移除并返回頭部的一個元素
LLEN key :統(tǒng)計列表內(nèi)元素數(shù)量

redis 127.0.0.1:6379> del mykey 
(integer) 1
redis 127.0.0.1:6379> lpush mykey a b c d
(integer) 4
redis 127 .0.0.1:6379> lpop mykey
#移除并返回mykey鍵的第一個元素, 從左取
"d"
redis 127 .0.0.1:6379> lpop mykey
redis 127 .0.0.1:6379> llen mykey
#在執(zhí)行l(wèi)pop命令兩次后,鏈表頭部的兩個元素已經(jīng)被彈出,此時鏈表中元素的數(shù)量是2(統(tǒng)計列表長度)
(integer) 2

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

3、??LREM/ LSET/LINDEX/LTRIM

LREM key count value:從頭部開始刪除count個值為value的元素,并返回實際刪除數(shù)量
LSET key index value:將位置索引為index的元素設(shè)置新值為value
LINDEX key index:獲取索引為index的元素
LTRIM key start stop:僅保留從位置索引start到索引stop的元素

redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> lpush mykey a b c d a c    #為后面的示例準(zhǔn)備測試數(shù)據(jù)。
(integer) 6
redis 127.0.0.1:6379> lrem mykey 2 a
(integer) 2
#從頭部(left)向尾部(right)變量鏈表,刪除2個值等于a的元素,返回值為實際刪除的數(shù)量。
#刪除指定元素,也可以指定數(shù)量,從左往右算。
redis 127.0.0.1:6379> lrange mykey 0 -1
#看出刪除后鏈表中的全部元素。
1) "c"
2) "d"
3) "c"
4) "b"
redis 127.0.0.1:6379> lindex mykey 1
#獲取索引值為1 (頭部的第二個元素)的元素值。
"d"
redis 127.0.0.1:6379> lset mykey 1 e
#將索引值為1(頭部的第二個元素)的元素值設(shè)置為新值e。
0K
redis 127.0.0.1:6379> lindex mykey 1
#查看是否設(shè)置成功。
"e"
redis 127.0.0.1:6379> lindex mykey 6
#索引值6超過了鏈表中元素的數(shù)量,該命令返回nil。
(nil)
redis 127.0.0.1:6379> lset mykey 6 h
#設(shè)置的索引值6超過了鏈表中元素的數(shù)量,設(shè)置失敗,該命令返回錯誤信息。
(error) ERR index out of range
redis 127.0.0.1:6379> ltrim mykey 0 2
#僅保留索引值0到2之間的3個元素,注意第0個和第2個元素均被保留。
OK
redis 127.0.0.1:6379> lrange mykey 0 -1
#查看trim后的結(jié)果。
1) "c"
2) "e "
3) "c"

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

4 、?LINSERT

LINSERT key BEFORE|AFTER pivot value:在元素pivot的前面(做左)或后面(右)插入新元素value?

redis 127.0.0.1:6379> del mykey		#刪除該鍵便于后面的測試。
(integer) 1
redis 127.0.0.1:6379> lpush mykey a b c d e		#為后面的示例準(zhǔn)備測試數(shù)據(jù)。
(integer) 5
redis 127.0.0.1:6379> linsert mykey before a a1		#在a的前面插入新元素a1。
(integer) 6            		#插入后元素總數(shù)
redis 127.0.0.1:6379> lrange mykey 0 -1		#查看是否插入成功,從結(jié)果看已經(jīng)插入
1) "e"
2) "d"
3) "c"
4) "b"
5) "a1"
6) "a"
redis 127.0.0.1:6379> linsert mykey after e e2		#在e的后面插入新元素e2,從返回結(jié)果看已經(jīng)插入成功。
(integer) 7
redis 127.0.0.1:6379> lindex mykey 1		#再次查看是否插入成功。
"e2" 
redis 127 .0.0.1:6379> linsert mykey after k a		#在不存在的元素之前或之后插入新元素,linsert命令操作失敗,并返回-1。
(integer) -1
redis 127 .0.0.1:6379> linsert mykey1 after a a2		#為不存在的Key插入新元素,linsert命令操作失敗,返回0。
(integer) 0

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

5、?RPUSH/RPUSHX/RPOP/RPOPLPUSH

RPUSH key value [value ...]在列表的尾部依次插入value
RPUSHX key value:key必須存在才可執(zhí)行,將value從尾部插入,并返回所有元素數(shù)量
RPOP key:在尾部彈出(移除)一個元素,并返回該元素
RPOPLPUSH source destination:在key1的尾部彈出一個元素并返回,將它插入key2的頭部

redis 127.0.0.1:6379> del mykey
#刪除該鍵,以便于后面的測試。
(integer) 1
redis 127.0.0.1:6379> rpush mykey a b c d
#從鏈表的尾部插入?yún)?shù)中給出的values,插入順序是從右到左依次插入。
(integer) 4
redis 127.0.0.1:6379> lrange mykey 0 -1
#通過lrange命令可以獲悉rpush在插入多值時的插入順序。
1) "a"
2) "b"
3) "c"
4) "d"
redis 127.0.0.1:6379> rpushx mykey e
#該鍵已經(jīng)存在并且包含4個元素,rpushx命令將執(zhí)行成功,并將元素e插入到鏈表的尾部。
(integer) 5
redis 127.0.0.1:6379> lindex mykey 4
#通過lindex命令可以看出之前的rpushx命令確實執(zhí)行成功,因為索引值為4的元素已經(jīng)是新元素了。
redis 127.0.0.1:6379> rpushx mykey2 e
#由于mykey2鍵并不存在,因此rpushx命 令不會插入數(shù)據(jù),其返回值為0。
(integer) 0
redis 127.0.0.1:6379> lrange mykey 0 -1
#在執(zhí)行rpoplpush命令前,先看一下mykey中鏈 表的元素有哪些,注意他們的位置關(guān)系。
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> RPOP mykey
#移除并返回mykey鍵的第一個元素,從右取
"e"
127.0.0.1:6379> LRANGE mykey 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
redis 127.0.0.1:6379> rpoplpush mykey mykey2
#將mykey的尾部元素e彈出,同時再插入到mykey2的頭部(原子性的完成這兩步操作)。
"d"
redis 127.0.0.1:6379> lrange mykey 0 -1
#通過lrange命令查看mykey在彈出尾部元素后的結(jié)果。
1) "a"
2) "b"
3) "c"
redis 127.0.0.1:6379> lrange mykey2 0 -1
#通過lrange命令查看mykey2在插入元素后的結(jié)果。
1) "d"
redis 127.0.0.1:6379> rpoplpush mykey mykey
#將source和destination設(shè)為同一鍵, 將mykey中 的尾部元素移到其頭部。
redis 127.0.0.1:6379> lrange mykey 0 -1
#查看移動結(jié)果。
1) "c"
2) "a"
3) "b"

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

?Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

?三、Hash數(shù)據(jù)類型(散列類型)

概述:hash用 于存儲對象。
可以采用這樣的命名方式:對象類別和ID構(gòu)成鍵名,使用字段表示對象的屬性,而字段值則存儲屬性值。如:存儲ID為2的汽車對象。
如果Hash中包含很少的字段,那么該類型的數(shù)據(jù)也將僅占用很少的磁盤空間。每一個Hash 可以存儲4294967295個鍵值對。
?

1、?HSET/HGET/HDEL/HEXISTS/HLEN/HSETNX

HSET key field value:給key設(shè)置字段為field,值為value
HGET key field:獲取key的字段為field的值
HDEL key field [field ...]:刪除key中字段名為field的字段,刪除成功返回1
HEXISTS key field:判斷key中是否存在字段名為field的字段,由于存在,返回值為1
HLEN key:命令獲取key的字段數(shù)量
HSETNX key field value:field必須不存在才可執(zhí)行,添加字段field及其對應(yīng)的值。存在即不執(zhí)行.成功返回1

redis 127.0.0.1:6379> hset myhash field1 "zhang"
#給鍵值為myhash的鍵設(shè)置字段為field1,值為zhang。
(integer) 1
redis 127.0.0.1:6379> hget myhash field1
#獲取鍵值為myhash,字段為field1的值。
"zhang"
redis 127.0.0.1:6379> hget myhash field2
#myhash鍵中不存在field2字段,因此返回nil。
(nil)
redis 127.0.0.1:6379> hset myhash field2 "san"
#給myhash添加一個 新的字段field2,其值為san。
(integer) 1
redis 127.0.0.1:6379> hlen myhash
#hlen命令獲取myhash鍵的字段數(shù)量。
(integer) 2
redis 127.0.0.1:6379> hexists myhash field1
#判斷myhash鍵中是否存在字段名為field1的字段,由于存在,返回值為1。
(integer) 1
redis 127.0.0.1:6379> hdel myhash field1
#刪除myhash鍵中字段名為field1的字段,刪除成功返回1。
(integer)1
redis 127.0.0.1:6379> hdel myhash field1
#再次刪除myhash鍵中字段名為field1的字段,由于上一條命令已經(jīng)將其刪除,因為沒有刪除,返回0。
(integer) 0
redis 127.0.0.1:6379> hlen myhash
#hlen命令獲取myhash鍵的字段數(shù)量。
(integer) 2
redis 127.0.0.1:6379> hexists myhash field1
#判斷myhash鍵中是否存在字段名為field1的字段,由于存在,返回值為1。
(integer) 1
redis 127.0.0.1:6379> hdel myhash field1
#刪除myhash鍵中字段名為field1的字段,刪除成功返回1。
(integer) 1
redis 127.0.0.1:6379> hdel myhash field1
redis 127.0.0.1:6379> hdel myhash field1
#刪除myhash鍵中字段名為field1的字段,刪除成功返回1。
(integer) 1
redis 127.0.0.1:6379> hdel myhash field1
#再次刪除myhash鍵中字段名為field1的字段,由于.上- -條命令已經(jīng)將其刪除,因為沒有刪除,返回0。
(integer) 0
redis 127 .0.0.1:6379> hexists myhash field1
#判斷myhash鍵中是否存在field1字段,由于上一-條命令已經(jīng)將其刪除,因為返回0。
(integer) 0
redis 127.0.0.1:6379> hsetnx myhash field1 zhang
#通過hsetnx命令給myhash添加新字段field1,其值為zhang,因為該字段已經(jīng)被刪除,所以該命令添加成功并返回1。
(integer) 1
redis 127.0.0.1:6379> hsetnx myhash field1 zhang
#由于myhash的field1字段已經(jīng)通過上一條命令添加成功,因為本條命令不做任何操作后返回0。
(integer) 0

2、HINCRBY

HINCRBY key field increment:給key的字段field的值增加increment

redis 127.0.0.1:6379> del myhash
#刪除該鍵,便于后面示例的測試。
(integer) 1
redis 127.0.0.1:6379> hset myhash field 5
#準(zhǔn)備測試數(shù)據(jù),該myhash的field字段 設(shè)定值5。
(integer) 1
redis 127.0.0.1:6379> hincrby myhash field 1
#hincrby命令給myhash的field字段的值加1,返回加后的結(jié)果。
(integer) 6
redis 127.0.0.1:6379> hincrby myhash field -1
#hincrby命令給myhash的field字段的值加-1,返回加后的結(jié)果。
(integer) 5
redis 127.0.0.1:6379> hincrby myhash field -10
#hincrby命令給myhash的field字段的值加-10,返回加后的結(jié)果。
(integer) -5

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

3、?HGETALL/ HKEYS/HVALS/ HMGET/ HMSET?

HGETALL key:返回所有字段及其值
HKEYS key:獲取myhash鍵內(nèi)所有的字段
HVALS key:獲取myhash鍵內(nèi)所有字段的值
HMGET key field [field ...]:批量獲取多個字段
HMSET key field value [field value ...]:批量設(shè)置多個字段

redis 127.0.0.1:6379> del myhash
#刪除該鍵,便于后而示例測試。
(integer) 
redis 127.0.0.1:6379> hmset myhash field1 "hello" field2 "world"
#hmset命令為該鍵myhash,一次性設(shè)置多個字段, 分別是field1="hel1o", field2= "world"。
0K
redis 127.0.0.1:6379> hmget myhash field1 field2 field3
#hmget命令獲取myhash鍵的多個字段,其中field3并不存在, 因為在返回結(jié)果中與該字段對應(yīng)的值為nil。
l) "hello"
2) "world"
3) (nil)
redis 127.0.0.1:6379> hgetall myhash
#hgetall命令返回myhash鍵的所有字段及其值,從結(jié)果中可以看出,他們是逐對列出的。
1) "field1"
2) "hello"
3) "field2"
4) "world"
redis 127.0.0.1:6379> hkeys myhash
#hkeys命令僅獲取myhash鍵中所有字段的名字。
1) "field1"
2) "field2"
redis 127.0.0.1:6379> hvals myhash
#hvals命令僅獲取myhash鍵中所有字段的值。
1) "hello"
2) "world" 

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

四、set數(shù)據(jù)類型(無序集合)

?概述:無序集合,元素類型為String類型,元素具有唯一-性,不允許存在重復(fù)的成員。多個集合類型之間可以進(jìn)行并集、交集和差集運算
應(yīng)用范圍:
1、可以使用Redis的Set數(shù)據(jù)類型跟蹤一些唯一性數(shù)據(jù),比如訪問某一博客的唯一IP地址信息。對于此場景,我們僅需在每次訪問該博客時將訪問者的IP存入Redis中,Set數(shù)據(jù)類型會自動保證IP地址的唯一性。
2、充分利用set類型的服務(wù)端聚合操作方便、高效的特性,可以用于維護(hù)數(shù)據(jù)對象之間的關(guān)聯(lián)關(guān)系。比如所有購買某一電子設(shè)備的客戶ID被存儲在一個指定的Set中,而購買另外一種電子產(chǎn)品的客戶ID被存儲在另外–個Set中,如果此時我們想獲取有哪些客戶同時購買了這兩種商品時,Setintersections命 令就可以充分發(fā)揮它的方便和效率的優(yōu)勢了。

1、?SADD/SMEMBERS/SCARD/ SISMEMBER

SADD key member [member ...]:向myset鍵內(nèi)插入不存在的成員,存在時只該成員不插入
SMEMBERS key:查看myset鍵的所有成員(無序)
SCARD key:統(tǒng)計myset集合中所有成員的數(shù)量
SISMEMBER key member:判斷成員是否存在,存在返回1,不存在返回0

redis 127.0.0.1:6379> sadd myset a b c
#插入測試數(shù)據(jù),由于該鍵myset之前并不存在,因此參數(shù)中的三個成員都被正常插入。
(integer) 3
redis 127.0.0.1:6379> sadd myset a d e
#由于參數(shù)中的a在myset中已經(jīng)存在,因此本次操作僅僅插入了d和e兩個新成員。
(integer) 2
redis 127.0.0.1:6379> sismember myset a
#判斷a是否已經(jīng)存在,返回值為1表示存在。
(integer) 1
redis 127.0.0.1:6379> sismember myset f
#判斷f是否已經(jīng)存在,返回值為0表示不存在。
(integer)
redis 127.0.0.1: 6379> smembers myset
#通過smembers命令查看插入的結(jié)果,從結(jié)果可以看出,輸出的順序和插入順序無關(guān)。
1) "c"
2) "d"
3) "a"
4) "b"
5) "e"
redis 127.0.0.1:6379> scard myset
#獲取Set集合中元素的數(shù)量。
(integer) 5

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

2、?SPOP/SREM/SRANDMEMBER/SMOVE

SPOP key [count]:隨機(jī)移除set鍵內(nèi)一成員,并返回其值
SREM key member [member ...]:移除指定的集合中的成員,若不存在則只移除存在的
SRANDMEMBER key [count]:隨機(jī)返回集合中某一成員
SMOVE source destination member:將指定成員member從鍵source移動到鍵destination

?

redis 127.0.0.1:6379> del myset
#刪除該鍵,便于后面的測試。
(integer) 1
redis 127.0.0.1:6379> sadd myset a b c d
#為后面的示例準(zhǔn)備測試數(shù)據(jù)。
(integer) 4
redis 127.0.0.1:6379> smembers myset
#查看set中成員的位置。
1) "c"
2) "b"
3) "d"
4) "a"
redis 127 .0.0.1: 6379> srandmember myset
#從結(jié)果可以看出,該命令確實是隨機(jī)的返回了某一成員。
"c"
redis 127 .0.0.1:6379> spop myset
#隨機(jī)的移除并返回Set中的某一成員。
"b"
redis 127.0.0.1: 6379> smembers myset
#查看移出后set的成員信息。
1) "c"
2) "d"
3) "a"
redis 127.0.0.1:6379> srem myset a d f #從Set中移出a、 d和f三個成員,其中f并不存在,因此只有a和d兩個成員被移出,返回為2。.
(integer) 2
redis 127.0.0.1:6379> smembers myset
#查看移出后的輸出結(jié)果。
1) "c" 
redis 127.0.0.1:6379> sadd myset a b
#為后面的smove命令準(zhǔn)備數(shù)據(jù)。
(integer) 2
redis 127 .0.0.1:6379> sadd myset2 c d
(integer) 2
redis 127.0.0.1:6379> smove myset myset2 a
#將a從myset移到myset2,從結(jié)果可以看出移動成功。
(integer) 1
redis 127.0.0.1:6379> smove myset myset2 a 
#再次將a從myset移到myset2,由于此時a已經(jīng)不是myset的成員了,因此移動失敗并返回0。
(integer) 0
redis 127 .0.0.1: 6379> smembers myset
#分別查看myset和myset2的成員,確認(rèn)移動是否真的成功。
1) "b"
redis 127.0.0.1:6379> smembers myset2
1) "c"
2) "d"
3) "a"

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

?五、Sorted Set數(shù) 據(jù)類型(zset、 有序集合)

概述:
a、有序集合,元素類型為Sting,元素具有唯一性, 不能重復(fù)。
b、每個元素都會關(guān)聯(lián)一-個double類型的分?jǐn)?shù)score (表示權(quán)重),可以通過權(quán)重的大小排序,元素的score可以相同。
應(yīng)用范圍:
1)可以用于一個大型在線游戲的積分排行榜。每當(dāng)玩家的分?jǐn)?shù)發(fā)生變化時,可以執(zhí)行ZADD命令更新玩家的分?jǐn)?shù),此后再通過ZRANGE命令獲
取積分T0P10的用戶信息。當(dāng)然我們也可以利用ZRANK命令通過username來獲取玩家的排行信息。最后我們將組合使用ZRANGE和ZRANK命令快
速的獲取和某個玩家積分相近的其他用戶的信息。
2) Sorted- Set類型還可用于構(gòu)建索引數(shù)據(jù)。

1、ZADD/ZCARD/ZCOUNT/ZREM/ZINCRBY/ZSCORE/ZRANGE/ZRANK

ZADD key [NX|XX] [CH] [INCR] score member [score member ...]:添加一個分?jǐn)?shù)為1的成員ong
ZCARD key:統(tǒng)計Sorted Set鍵中成員的數(shù)量
ZCOUNT key min max:獲取Sorted Set鍵內(nèi)分?jǐn)?shù)在min<=score<=max范圍的的成員數(shù)量
ZREM key member [member ...]:刪除指定成員并返回刪除數(shù)量
ZINCRBY key increment member:將指定成員的分?jǐn)?shù)增加指定的分值。若成員不存在,則在0的基礎(chǔ)上增加
ZSCORE key member:獲取成員member的分?jǐn)?shù)并返回
ZRANGE key start stop [WITHSCORES]:查看從索引start到索引stop鍵的所有成員及其分?jǐn)?shù)
ZRANK key member:獲取myzset鍵內(nèi)成員member位置索引值

redis 127.0.0.1:6379> zadd myzset 1 "one"
#添加一個分?jǐn)?shù)為1的成員。
(integer) 1
redis 127.0.0.1:6379> zadd myzset 2 "two" 3 "three"
#添加兩個分?jǐn)?shù)分別是2和3的兩個成員。
(integer) 2
redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES
#0表示第一個成員,-1表示最后一個成員。WITHSCORES選項表示返回的結(jié)果中包含每個成員及其分?jǐn)?shù),否則只返回成員。
1) "one"
2)"1"
3) "two"
4) "2"
5) "three"
6) "3"
redis 127 .0.0.1:6379> zrank myzset one
#獲取成員one在Sorted-Set中的位置索引值。0表示第一個位置。
(integer) 0
redis 127.0.0.1:6379> zrank myzset four
#成員four并不存在,因此返回nil。
(nil)
redis 127.0.0.1:6379> zcard myzset
#獲取myzset鍵中成員的數(shù)量。
(integer) 3
redis 127.0.0. 1:6379> zcount myzset 1 2
#zcount key min max,分?jǐn)?shù)滿足表達(dá)式1 <= score <= 2的成員的數(shù)量。
(integer) 2
redis 127.0.0.1:6379> zrem myzset one two
#刪除成員one和two,返回實際刪除成員的數(shù)量。
(integer) 2
redis 127.0.0.1:6379> zcard myzset
#查看是否刪除成功。
(integer)
redis 127.0.0.1:6379> zscore myzset three
#獲取成員three的分?jǐn)?shù)。返回值是字符串形式。
"3"
redis 127.0.0.1:6379> zscore myzset two
#由于成員twoE已經(jīng)被刪除,所以該命令返回nil。
(nil)
redis 127.0.0.1:6379> zincrby myzset 2 one
#成員one不存在,zincrby命令將添加該成員并假設(shè)其初始分?jǐn)?shù)為0,將成員one的分?jǐn)?shù)增加2,并返回該成員更新后的分?jǐn)?shù)。
"2"
redis 127.0.0.1:6379> zincrby myzset -1 one
#將成員one的分?jǐn)?shù)增加-1,并返回該成員更新后的分?jǐn)?shù)。
"1"
redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES
#查看在更新了成員的分?jǐn)?shù)后是否正確。
1) "one"
2) "1"
3) "three"
4) "3"

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))
?

2、ZRANGEBYSCORE/ZREMRANGEBYRANK/ZREMRANGEBYSCORE

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]:獲取分?jǐn)?shù)在min<=score<=max的成員
ZREMRANGEBYRANK key start stop:刪除滿足位置索引號在start<=rank<=stop范圍的成員,并返回刪除數(shù)量
ZREMRANGEBYSCORE key min max:刪除滿足分?jǐn)?shù)在min<=score<=max范圍的成員,并返回刪除數(shù)量

?

redis 127.0.0.1:6379> del myzset
(integer) 1
redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
(integer) 4
redis 127.0.0.1:6379> zrangebyscore myzset 1 2
#zrangebyscore key min max,獲取分?jǐn)?shù)滿足表達(dá)式1 <= score <= 2的成員。
1) "one"
2) "two"
redis 127.0.0.1: 6379> zrangebyscore myzset (1 2
#獲取分?jǐn)?shù)滿足表達(dá)式1 < score <= 2的成員。
1) "two"
redis 127.0.0.1:6379> zrangebyscore myzset -inf +inf limit 3
#-inf表示第一個成員(位置索引值最低的,即0),+inf表示最后一個成員(位置索引值最高的),limit后而的參數(shù)用于限制返回成員的值,2表示從位置索引等于2的成員開始,取后而3個成員。
1) "three"
2) "four"
redis 127 .0.0.1:6379> zrangebyscore myzset 0 4 limit 2 3
redis 127.0.0.1:6379> zremrangebyscore myzset 1 2
#刪除分?jǐn)?shù)滿足表達(dá)式1<=score<=2的成員,并返回實際刪除的數(shù)量
(integer) 2
redis 127.0.0.1:6379> zrange myzset 0 -1
#看一下上面的刪除是否成功。
1) "three"
2) "four"
redis 127.0.0.1:6379> zremrangebyrank myzset 0 1
刪除位置索引滿足表達(dá)式0 <= rank <= 1的成員。
(integer) 2
redis 127.0.0.1:6379> zcard myzset
#查看上一條命令是否刪除成功。
(integer) 0

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

3、?ZREVRANGE/ ZREVRANGEBYSCORE/ ZREVRANK

ZREVRANGE key start stop [WITHSCORES]:以位置索引從高到低的方式獲取并返回此區(qū)間內(nèi)的成員。
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]:獲取分?jǐn)?shù)滿足表達(dá)式3 >= score >= 0的成員,并以從高到底的順序輸出
REVRANK key member:按從高到低的排序返回指定成員的位置

?

redis 127 .0.0.1:6379> del myzset		#為后而的示例準(zhǔn)備測試數(shù)據(jù)。
(integer) 0
redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
(integer) 4
redis 127.0.0.1:6379> zrevrange myzset 0 -1 WITHSCORES		#以位置索引從高到低的方式獲取并返回此區(qū)間內(nèi)的成員。
1) "four"
2) "4"
3) "three"
5) "two"
7) "one"
redis 127.0.0.1:6379> zrevrange myzset 1 3		#由于是從高到低的排序,所以位置等于0的是four, 1是three,并以此類推。
1) "three"
2) "two"
3) "one"
redis 127.0.0.1:6379> zrevrank myzset one		#由于是從高到低的排序,所以one的位置是3。
(integer) 3
redis 127.0.0.1:6379> zrevrank myzset four		#由于是從高到低的排序,所以four的位置是0。
(integer) 0
redis 127.0.0.1: 6379> zrevrangebyscore myzset 3 0		#zrevrangebyscore key max min,獲取分?jǐn)?shù)滿足表達(dá)式3 >= score >= 0的成員,并以從高到底的順序輸出。
1) "three"
2) "two" .
3) "one"
redis 127.0.0.1: 6379> zrevrangebyscore myzset 4 0 limit 1 2 	#zrevrangebyscore命令支持1imit選項,其含義等同于zrangebyscore中的該選項,只是在計算位置時按照相反的順序計算和獲取。
1) "three"
2) "two”
192. 168.80.10:6379> zrevrangebyscore myzset +inf -inf limit 1 3
1) "three"
2) "two"
3) "one"

Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))

?文章來源地址http://www.zghlxwxcb.cn/news/detail-514853.html

到了這里,關(guān)于Redis之?dāng)?shù)據(jù)類型String、List、Hash、Set、Sorted Set(詳細(xì))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Redis Redis的數(shù)據(jù)結(jié)構(gòu) - 通用命令 - String類型命令 - Hash類型命令

    Redis Redis的數(shù)據(jù)結(jié)構(gòu) - 通用命令 - String類型命令 - Hash類型命令

    目錄 Redis的數(shù)據(jù)結(jié)構(gòu): Redis命令: 通用命令:(通用指令是部分?jǐn)?shù)據(jù)類型的,都可以使用的指令) KEYS查詢命令: DEL刪除命令: EXISTS判斷命令: EXPIPE有效期設(shè)置命令: TTL查看剩余期限命令: String類型: String的3種類型: String類型的常見命令: SET插入數(shù)據(jù)命令: MSET多重插

    2024年02月09日
    瀏覽(51)
  • Redis數(shù)據(jù)類型(list\set\zset)

    Redis數(shù)據(jù)類型(list\set\zset)

    \\\"maybe it\\\'s why\\\"? ????????列表類型是?來存儲多個 有序 的字符串,列表中的每個字符串稱為元素(element),?個列表最多可以存儲個2^32 - 1個元素。在Redis中,可以對列表兩端插?(push)和彈出(pop),還可以獲取指定范圍的元素列表、獲取指定索引下標(biāo)的元素等。列表是

    2024年02月11日
    瀏覽(18)
  • Redis List類型命令 - Set類型命令 - SortedSet類型命令

    Redis List類型命令 - Set類型命令 - SortedSet類型命令

    目錄 List類型 什么是雙向鏈表呢? List類型的特征: List的常用命令 LPUSH和RPUSH的區(qū)別: LPOP和RPOP的區(qū)別: LPUSH和RPUSH的使用 LPOP和RPOP的使用 LRANGE key star?end:返回一段距離范圍內(nèi)所有的元素 BLPOP和BRPOP:它在沒有該元素的時候會等待一段時間,而不是直接返回nil 問題1:如何利

    2024年02月09日
    瀏覽(23)
  • Redis數(shù)據(jù)類型-Hash哈希存儲類型

    Redis數(shù)據(jù)類型-Hash哈希存儲類型

    小白:偉哥,java中的Map集合類型在Redis中有對應(yīng)的存儲嗎? 偉哥:有的,我?guī)銛]一波。 Redis的hash哈希存儲類型,類似于是java中的map存儲結(jié)構(gòu),適合用來存儲對象,每個哈希最多可以存儲4294967295(2^32-1)個字段值對,具體數(shù)量實際上也受Redis部署的虛擬機(jī)上的總內(nèi)存的限制

    2024年02月12日
    瀏覽(22)
  • ②【Hash】Redis常用數(shù)據(jù)類型:Hash [使用手冊]

    ②【Hash】Redis常用數(shù)據(jù)類型:Hash [使用手冊]

    個人簡介:Java領(lǐng)域新星創(chuàng)作者;阿里云技術(shù)博主、星級博主、專家博主;正在Java學(xué)習(xí)的路上摸爬滾打,記錄學(xué)習(xí)的過程~ 個人主頁:.29.的博客 學(xué)習(xí)社區(qū):進(jìn)去逛一逛~ redis hash 是一個String類型的field(字段)和value(值)的映射表。 redis中每個hash可以存儲2^32-1個鍵值對(40多億

    2024年02月04日
    瀏覽(46)
  • Redis數(shù)據(jù)結(jié)構(gòu):Hash類型全面解析

    Redis,作為一個開源的、內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲系統(tǒng),以其出色的性能和靈活的數(shù)據(jù)類型,廣泛應(yīng)用于緩存、消息隊列、發(fā)布訂閱系統(tǒng)等多種場景。在 Redis 的五種基本數(shù)據(jù)類型中,Hash 類型是一種非常重要的數(shù)據(jù)類型。它可以存儲鍵值對的集合,且能夠用小于1毫秒的時間復(fù)雜

    2024年02月10日
    瀏覽(22)
  • Redis 中如何設(shè)置 Hash 數(shù)據(jù)類型的過期時間?

    在 Redis 中可以通過 setex 或 expire 方式來設(shè)置 key 的過期時間。但是對于 Hash 數(shù)據(jù)類型 Redis 是不支持的,所以我們需要使用“曲線救國”的方式去實現(xiàn) Hash 數(shù)據(jù)類型的過期時間。 即,先對 Hash 數(shù)據(jù)類型賦值,然后再對 Hash 數(shù)據(jù)類型的 key 設(shè)置一個過期時間,這樣就間接的實現(xiàn)了

    2024年02月12日
    瀏覽(14)
  • Redis關(guān)于Hash類型數(shù)據(jù)的操作,使用redisTemplate

    因為在redis的Hash數(shù)據(jù)類型里,有內(nèi)層外層兩個key,而且有內(nèi)層外層兩個map集合,所以暫時先稱外層key為大key,內(nèi)層key為小key,外層map為大map,內(nèi)層map為小map,內(nèi)層value值為value。 1.根據(jù)大key和小key還有value的值,設(shè)置一個value: 2.根據(jù)大key和小key獲取到value值: 3.根據(jù)大key獲取小

    2024年02月11日
    瀏覽(24)
  • Redis實戰(zhàn) | 使用Redis 的有序集合(Sorted Set)實現(xiàn)排行榜功能,和Spring Boot集成

    Redis實戰(zhàn) | 使用Redis 的有序集合(Sorted Set)實現(xiàn)排行榜功能,和Spring Boot集成

    專欄集錦,大佬們可以收藏以備不時之需 Spring Cloud實戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9270827.html Python 實戰(zhàn)專欄:https://blog.csdn.net/superdangbo/category_9271194.html Logback 詳解專欄:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow專欄:https://blog.csdn.net/superdangbo/category_869

    2024年02月05日
    瀏覽(35)
  • 【Redis從頭學(xué)-6】Redis中的Hash數(shù)據(jù)類型實戰(zhàn)場景之購物車

    【Redis從頭學(xué)-6】Redis中的Hash數(shù)據(jù)類型實戰(zhàn)場景之購物車

    ?????作者名稱:DaenCode ??作者簡介:啥技術(shù)都喜歡搗鼓搗鼓,喜歡分享技術(shù)、經(jīng)驗、生活。 ??人生感悟:嘗盡人生百味,方知世間冷暖。 ??所屬專欄:Redis從頭學(xué) 之前的篇章對Redis的String、List數(shù)據(jù)類型已經(jīng)做出了具體分析,并舉例說明了其具體的實戰(zhàn)場景。本文就結(jié)合

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包