自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

后端開(kāi)發(fā)都應(yīng)該掌握的Redis基礎(chǔ)

存儲(chǔ) 存儲(chǔ)軟件 Redis
Redis支持多種不同的數(shù)據(jù)結(jié)構(gòu),包括5種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和幾種比較復(fù)雜的數(shù)據(jù),這些數(shù)據(jù)結(jié)構(gòu)可以滿(mǎn)足不同的應(yīng)用場(chǎng)景。

Redis的數(shù)據(jù)結(jié)構(gòu)

Redis支持多種不同的數(shù)據(jù)結(jié)構(gòu),包括5種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和幾種比較復(fù)雜的數(shù)據(jù),這些數(shù)據(jù)結(jié)構(gòu)可以滿(mǎn)足不同的應(yīng)用場(chǎng)景。

[[274377]]

五種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)

  • String:字符串,是構(gòu)建其他數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)
  • Hash:哈希列表
  • List:列表
  • Set:集合,在哈希列表的基礎(chǔ)上實(shí)現(xiàn)
  • Sort Set:有序集合

復(fù)雜的數(shù)據(jù)結(jié)構(gòu)

  • Bitmaps:位圖,在string的基礎(chǔ)上進(jìn)行位操作,可以實(shí)現(xiàn)節(jié)省空間的數(shù)據(jù)結(jié)構(gòu)。
  • Hyperloglog:用于估計(jì)一個(gè) set 中元素?cái)?shù)量的概率性的數(shù)據(jù)結(jié)構(gòu)。
  • Geo:geospatial,地理空間索引半徑查詢(xún)。
  • BloomFilter:布隆過(guò)濾器。

不同數(shù)據(jù)結(jié)構(gòu)的相同之處

從上面的介紹,我們看到支持的數(shù)據(jù)結(jié)構(gòu)的不同,但其實(shí),Redis的每一種數(shù)據(jù)結(jié)構(gòu)都由一個(gè)key和value組成,可以抽象為:

后端開(kāi)發(fā)都應(yīng)該掌握的Redis基礎(chǔ)

而所有數(shù)據(jù)結(jié)構(gòu)的key的值都是任意合法的字符串,不同的數(shù)據(jù)結(jié)構(gòu)的區(qū)別就在于value存儲(chǔ)的值的不同而不同。

比如,最簡(jiǎn)單的String數(shù)據(jù)結(jié)構(gòu),其value為String,所以String可以表示為:

后端開(kāi)發(fā)都應(yīng)該掌握的Redis基礎(chǔ)

而Hash數(shù)據(jù)結(jié)構(gòu),其value為一個(gè)哈希列表,所以Hash可以表示為:

后端開(kāi)發(fā)都應(yīng)該掌握的Redis基礎(chǔ)

這里就列出String和Hash來(lái)講解說(shuō)明,關(guān)于更多數(shù)據(jù)結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)及詳細(xì)操作,我們?cè)谥蟮奈恼略谠僬務(wù)劙伞?/p>

Redis的通用命令

Redis官網(wǎng)將Redis的命令按照功能劃分為15個(gè)主題分組,其中,Kyes主題的命令對(duì)所有的數(shù)據(jù)結(jié)構(gòu)都通用,因此,有必要在了解其他數(shù)據(jù)結(jié)構(gòu)命令前好好學(xué)習(xí)一下。

keys

keys命令的作用是列出Redis所有的key,該命令的時(shí)間復(fù)雜度為O(N),N隨著Redis中key的數(shù)量增加而增加,因此Redis有大量的key,keys命令會(huì)執(zhí)行很長(zhǎng)時(shí)間,而由于Redis是單線程,某個(gè)命令耗費(fèi)過(guò)長(zhǎng)時(shí)間,則會(huì)導(dǎo)致后面的的所有請(qǐng)求無(wú)法得到響應(yīng),因此,千萬(wàn)不要在生產(chǎn)服務(wù)器上使用keys命令。

  1. key命令,時(shí)間復(fù)雜度為O(n) 
  2. keys pattern #pattern可為一個(gè)包含匹配模式的字符串,可以包含*,+,?,[a-z]等模式。 

示例

后端開(kāi)發(fā)都應(yīng)該掌握的Redis基礎(chǔ)

exists

exists命令用于判斷一個(gè)或多個(gè)key是否存在,判斷多個(gè)key時(shí),key之間用空格分隔,exists的返回值為整數(shù),表示當(dāng)前判斷有多少個(gè)key是存在的。

  1. # exists命令,時(shí)間復(fù)雜度O(1) 
  2. exists key [key ...] 

示例

  1. set test1 t1 
  2. > exists test1 test2  
  3. (integer) 1 #只有一個(gè)key存在 
  4. > exists test3 test3 
  5. (integer) 0 #key都不存在 

del

del命令用于刪除一個(gè)或多個(gè)key,多個(gè)key之間用空格分隔,其返回值為整數(shù),表示成功刪除了多少個(gè)存在的key,因此,如果只刪除一個(gè)key,則可以從返回值中判斷是否成功,如果刪除多個(gè)key,則只能得到刪除成功的數(shù)量。

  1. # del命令,時(shí)間復(fù)雜度O(n) 
  2. del key [key ...] 

示例

  1. set test t 
  2. > del test 
  3. (integer) 1 
  4. > mset test1 2 test2 1 
  5. > del test1 test2 test3 
  6. (integer) 2 # 返回2,表示成功刪除兩個(gè) 
  7. #再次刪除,返回0,因?yàn)閯h除成功個(gè)數(shù)為0 
  8. > del test1 test2 test3 
  9. (integer) 0 

expire,pexpire

expire設(shè)置key在多少秒之后過(guò)期,pexpire設(shè)置key在多少毫秒之后過(guò)期,成功返回1,失敗返回0。

  1. # expire命令,時(shí)間復(fù)雜度為O(1) 
  2. expire key seconds 
  3. # pexpire命令,時(shí)間復(fù)雜度為O(1) 
  4. pexpire key milliseconds 

示例

  1. > mset test test_value test1 test1_value 
  2. > expire test 10 #設(shè)置10秒后過(guò)期 
  3. (integer) 1 
  4. > pexpire test1_value 10000 #設(shè)置10000毫秒(10s)后過(guò)期 
  5. (integer) 1 
  6. > expire ttt 100 
  7. (integer) 0 # 不存在的key,設(shè)置失敗,返回0  

ttl,pttl

ttl和pttl命令用于獲取key的過(guò)期時(shí)間,其返回值為整型,代表的意義分為幾種情況:

  • 當(dāng)key不存在或過(guò)期時(shí)間,返回-2。
  • 當(dāng)key存在且永久有效時(shí),返回-1。
  • 當(dāng)key有設(shè)置過(guò)期時(shí)間時(shí),返回為剩下的秒數(shù)(pttl為毫秒數(shù))
  1. # ttl命令,時(shí)間復(fù)雜度O(1) 
  2. ttl key 
  3. # pttl命令,時(shí)間復(fù)雜度O(1) 
  4. pttl key 

示例(ttl的演示,pttl類(lèi)似)

  1. set test test 
  2. > expire test 100 
  3. > ttl test 
  4. (integer) 98#返回剩下的秒數(shù) 
  5. set test1 #永久有效 
  6. > ttl test1 
  7. (integer) -1 
  8. > ttl test2 
  9. (integer) -2#不存在或過(guò)期 
  10. #100秒后 
  11. > ttl test # test已過(guò)期 
  12. (integer) -2 

expireat,pexpireat

設(shè)置key在某個(gè)時(shí)間戳過(guò)期,expreat參數(shù)時(shí)間戳用秒表示,而pexpireat則用毫秒表示,與expire和pexpire功能類(lèi)似,返回1表示成功,0表示失敗。

  1. #expireat命令,時(shí)間復(fù)雜度為O(1) 
  2. expireat key timestamp 
  3. #pexpireat命令,時(shí)間復(fù)雜度為O(1) 
  4. pexpireat key milliseconds-timestamp 

示例

  1. set test test 
  2. > expireat test 1560873600 # 2019-06-19 00:00:00 
  3. (integer) 1 
  4. set test1 test1 
  5. > pexpireat test1 156087360000 # 2019-06-19 00:00:00的毫秒表示 
  6. (integer) 1 

persist

移除key的過(guò)期時(shí)間,將key設(shè)置為永久有效,當(dāng)key設(shè)置了過(guò)期時(shí)間,使用persist命令移除后返回1,如果key不存在或本身就是永久有效的,則返回0。

  1. # persist命令,時(shí)間復(fù)雜度O(1) 
  2. persist key 

示例

  1. set test test 
  2. > ttl test 
  3. (integer) -1 # 表示永久有效 
  4. > persist test 
  5. (integer) 0 # 對(duì)永久有效或不存在的key使用persist命令,返回 
  6. > expire test 10 
  7. (integer) 1 
  8. > persist test 
  9. (integer) 1 

type

判斷key是什么類(lèi)型的數(shù)據(jù)結(jié)構(gòu),返回值為string,list,set,hash,zset,分別表示我們前面介紹的Redis的5種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。

geo,hyperloglog,bitmaps等復(fù)雜的數(shù)據(jù)結(jié)構(gòu),都是在這五種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)上實(shí)現(xiàn),比如geo是zset類(lèi)型,hyperloglog和bitmaps都為string。

  1. # type命令,時(shí)間復(fù)雜度O(1) 
  2. type key 

示例

  1. set test test 
  2. > type test 
  3. string 
  4. > hset htest test test 
  5. > type htest 
  6. hash 

小結(jié)

上面介紹的是Redis中最常用的通用命令,雖然簡(jiǎn)單,但還是非常有必要掌握其用法和使用方面要注意的事項(xiàng),其實(shí),對(duì)于普通開(kāi)發(fā)人員來(lái)說(shuō),很多時(shí)候,也只是使用這些基礎(chǔ)通用的命令來(lái)操作Redis而已。

 

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2020-10-13 18:20:55

TCPHTTP網(wǎng)絡(luò)協(xié)議

2022-10-24 00:44:32

IO遠(yuǎn)程操作數(shù)據(jù)庫(kù)

2017-06-28 14:54:17

大數(shù)據(jù)數(shù)據(jù)分析

2018-10-16 11:03:19

API開(kāi)發(fā)者AR

2023-10-13 18:15:06

2023-05-29 16:05:01

2020-01-27 16:28:57

開(kāi)發(fā)命令遠(yuǎn)程服務(wù)器

2022-10-31 08:02:07

Python函數(shù)式編程

2022-05-26 07:31:42

索引SQL后端

2017-12-05 09:32:00

數(shù)據(jù)分析對(duì)比分析常規(guī)分析

2013-06-26 09:42:52

Web開(kāi)發(fā)URL編碼URL

2019-11-23 23:38:51

開(kāi)發(fā)者微服務(wù)安全

2023-11-17 14:18:48

開(kāi)發(fā)編程

2023-04-17 19:23:10

字符串Bash

2023-11-27 15:49:55

軟件開(kāi)發(fā)系統(tǒng)設(shè)計(jì)

2022-12-16 08:14:00

2023-10-26 16:56:24

2012-02-28 10:52:13

2018-03-07 12:57:53

2023-04-10 14:45:43

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)