溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Redis基礎(chǔ)類型及常用操作、命令有哪些

發(fā)布時(shí)間:2021-11-29 11:30:29 來(lái)源:億速云 閱讀:142 作者:柒染 欄目:數(shù)據(jù)庫(kù)

Redis基礎(chǔ)類型及常用操作、命令有哪些,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

概念:Redis是用C語(yǔ)言開(kāi)發(fā)的一個(gè)開(kāi)源的高性能鍵值對(duì)數(shù)據(jù)庫(kù)。

特征:

  • 數(shù)據(jù)間沒(méi)有必然的聯(lián)系

  • 內(nèi)部采用單線程機(jī)制進(jìn)行工作

  • 高性能

  • 多數(shù)據(jù)類型支持字符串類型 String列表類型 List散列類型 Map集合類型 Set有序集合類型 SortedSet

  • 持久化支持

應(yīng)用場(chǎng)景

  • 為熱點(diǎn)數(shù)據(jù)加速查詢;如:熱點(diǎn)商品、熱點(diǎn)新聞、熱點(diǎn)資訊等高訪問(wèn)量信息。

  • 任務(wù)隊(duì)列;如:秒殺、搶購(gòu)、購(gòu)票等。

  • 即時(shí)信息查詢;如:排行榜等。

  • 時(shí)效性信息控制;如:驗(yàn)證碼、投票控制等。

  • 分布式數(shù)據(jù)共享;如:分布式架構(gòu)中的session等。

  • 消息隊(duì)列

  • 分布式鎖

基礎(chǔ)數(shù)據(jù)類型之: String

單個(gè)string類型的存儲(chǔ)空間為512MB

string基本操作

  • 添加或修改數(shù)據(jù)

set key value
  • 獲取數(shù)據(jù)

get key
  • 刪除數(shù)據(jù)

del key
  • 設(shè)置過(guò)期時(shí)間(默認(rèn)單位為秒)

expire key second
  • 追加信息到初始value后邊

append key value
  • 添加/修改多個(gè)數(shù)據(jù)

mset key1 value1 key2 value2...
  • 獲取多個(gè)數(shù)據(jù)

mget key1 key2 ...
  • 獲取字符串長(zhǎng)度

strlen key
  • 設(shè)置key的生命周期 控制生命周期

setex key seconds value (秒) psetex key millisexxonds value (毫秒)
  • key的設(shè)置約定與數(shù)據(jù)庫(kù)中的表-主鍵-字段一一對(duì)應(yīng)表名主鍵名主鍵值字段名eg1orderid443523454nameeg2equireid435432543typeeg3newsid45435454title

基礎(chǔ)數(shù)據(jù)類型之:Hash

  • 存儲(chǔ)需求: 對(duì)一系列存儲(chǔ)的數(shù)據(jù)進(jìn)行編排,方便管理,典型應(yīng)用存儲(chǔ)對(duì)象信息

  • 存儲(chǔ)結(jié)構(gòu):一個(gè)存儲(chǔ)空間存儲(chǔ)多個(gè)鍵值對(duì)數(shù)據(jù)

  • hash類型:底層使用哈希表結(jié)構(gòu)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)

Redis基礎(chǔ)類型及常用操作、命令有哪些

hash存儲(chǔ)結(jié)構(gòu)優(yōu)化

  • 如果field數(shù)量較少,存儲(chǔ)結(jié)構(gòu)優(yōu)化為類數(shù)組結(jié)構(gòu)

  • 如果field數(shù)量較多,存儲(chǔ)結(jié)構(gòu)使用HashMap結(jié)構(gòu)

hash類型基本操作

  • 添加/修改數(shù)據(jù)

hset key field value
  • 獲取數(shù)據(jù)

hget key field hgetall key
  • 刪除數(shù)據(jù)

hdel key field [field2 ...]
  • 添加或刪除多個(gè)數(shù)據(jù)

hmset key field1 value1 field2 value2 ...
  • 獲取多個(gè)數(shù)據(jù)

hmget key field1 field2 ...
  • 獲取hash表中的字段的數(shù)量

hlen key
  • 獲取hash表中是否存在指定的字段

hexists key field
  • 獲取哈希表中所用的字段名或字段值

hkeys keyhvalues key
  • 設(shè)置指定字段的數(shù)值數(shù)據(jù)增加指定范圍的值

hincrby key field increment hincrbyfloat key field increment
  • 如果key值下的field存在則不做操作 不存在則添加進(jìn)去

hsetnx key field value

hash類型數(shù)據(jù)操作的注意事項(xiàng)

  • hash類型下的value只能存儲(chǔ)字符串,不允許存儲(chǔ)其他數(shù)據(jù)類型,不存在嵌套現(xiàn)象,如果數(shù)據(jù)未獲取到,對(duì)應(yīng)的值為(nil)

  • 每個(gè)hash存儲(chǔ)的鍵值對(duì)上限為$$2^{32}-1$$個(gè)鍵值對(duì)

  • hash類型十分貼近對(duì)象的存儲(chǔ)形式,并且可以靈活刪除對(duì)象屬性。但hash設(shè)計(jì)初衷并不是為了存儲(chǔ)大量對(duì)象而設(shè)計(jì)的,切記不可濫用,更不可將hash作為對(duì)象列表使用

  • hgetall操作可以獲取全部屬性,如果內(nèi)部field過(guò)多,遍歷整體數(shù)據(jù)效率會(huì)很低,有可能會(huì)成為數(shù)據(jù)訪問(wèn)瓶頸

應(yīng)用場(chǎng)景

  • 電商網(wǎng)站購(gòu)物車設(shè)計(jì)實(shí)現(xiàn)

基礎(chǔ)數(shù)據(jù)類型之:list

  • 數(shù)據(jù)存儲(chǔ)需求:存儲(chǔ)多個(gè)數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)入存儲(chǔ)Jon關(guān)鍵的順序進(jìn)行區(qū)分

  • 需要的存儲(chǔ)結(jié)構(gòu):一個(gè)存儲(chǔ)空間存儲(chǔ)多個(gè)數(shù)據(jù),并且數(shù)據(jù)可以體現(xiàn)進(jìn)入順序

  • list類型:保存多個(gè)數(shù)據(jù),底層使用雙向鏈表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)

Redis基礎(chǔ)類型及常用操作、命令有哪些

list類型是雙向鏈表存儲(chǔ)的

list基本操作

  • 添加/修改數(shù)據(jù)

lpush key value1 value2 [value3] ... //從list鏈表左側(cè)添加 rpush key value1 value2 [value3] ... //從list右側(cè)添加
  • 獲取數(shù)據(jù)

lrange key start stop //指定鏈表起始結(jié)束位置中的value //在獲取未知長(zhǎng)的的list類型的時(shí)候,想查看所有的value可以使用 -1表示倒數(shù)第一個(gè) lrange key start -1 lindex key index //獲取鏈表中指定位置的值 llen key //獲取鏈表的長(zhǎng)度
  • 獲取并移除數(shù)據(jù)

lpop key rpop key
  • 規(guī)定時(shí)間內(nèi)獲取并移除數(shù)據(jù)(阻塞式數(shù)據(jù)獲取)

blpop key1 [key2] timeout //指定時(shí)間內(nèi)取出并移除key值對(duì)應(yīng)的value,若timeout超時(shí)仍未取出則返回空值(nil) 若本來(lái)沒(méi)有 其他客戶端在等待的時(shí)候添加了這個(gè)key的value則做操作 任務(wù)隊(duì)列 brpop key1 [key2] timeout
  • 移除指定數(shù)據(jù)

lrem key count value

list類型數(shù)據(jù)操作注意事項(xiàng)

  • list中保存的數(shù)據(jù)都是string類型的,數(shù)據(jù)總?cè)萘坑邢拮疃?2^32-1個(gè)元素

  • list具有索引概念,但操作數(shù)據(jù)時(shí)通常以隊(duì)列的形式進(jìn)行入隊(duì)出隊(duì)操作,或以棧的形式進(jìn)行入棧出棧操作

  • 獲取全部操作結(jié)束數(shù)據(jù)的索引設(shè)置為-1

  • list可以對(duì)數(shù)據(jù)進(jìn)行分頁(yè)操作,通常第一頁(yè)的信息來(lái)自list,第二頁(yè)及更多的數(shù)據(jù)信息通過(guò)數(shù)據(jù)庫(kù)進(jìn)行查詢加載

基礎(chǔ)數(shù)據(jù)類型之:set

  • 存儲(chǔ)需求:存儲(chǔ)大量的數(shù)據(jù),在查詢方面提供更高的效率

  • 存儲(chǔ)結(jié)構(gòu):能夠保存大量的數(shù)據(jù),高效的內(nèi)部存儲(chǔ)機(jī)制,便于查詢

  • set類型:與hash存儲(chǔ)結(jié)構(gòu)完全相同,僅存儲(chǔ)鍵,不存儲(chǔ)值(nil),并且值不允許為空

Redis基礎(chǔ)類型及常用操作、命令有哪些

set存儲(chǔ)結(jié)構(gòu)是string類型的無(wú)序集合,內(nèi)部存儲(chǔ)時(shí)hash存儲(chǔ)結(jié)構(gòu),因此添加、查找、刪除的復(fù)雜度都是O(1)

set基本操作

  • 添加不重復(fù)的數(shù)據(jù)

sadd key value
  • 獲取存儲(chǔ)的所有數(shù)據(jù)

smembers key
  • 刪除數(shù)據(jù)

strem key member1 [member2]
  • 獲取集合數(shù)據(jù)總量

scard key
  • 判斷集合中是否包含指定數(shù)據(jù)

sismember key member
  • 隨機(jī)獲取集合中指定數(shù)量的數(shù)據(jù)

srandmember key [count]
  • 隨機(jī)獲取集合中某個(gè)數(shù)據(jù)并將該數(shù)據(jù)移出集合

apop key
  • 兩個(gè)集合的交、并、差集

sinter key1 [key2] sunion key1 [key2] adiff key1 [key2]
  • 求兩個(gè)集合的交、并、差集并存儲(chǔ)到指定集合中

sinterstore destination key1 [key2] sunionstore destination key1 [key2] sdiffstore destination key1 [key2]
  • 將指定數(shù)據(jù)從原始集合中移動(dòng)到目標(biāo)集合中

smove source destination member

注意事項(xiàng)

  • set類型不允許有重復(fù)數(shù)據(jù),如果添加的數(shù)據(jù)在set中已存在,將只保留一份

  • set雖然與hash存儲(chǔ)結(jié)構(gòu)相同,但無(wú)法啟用hash中存儲(chǔ)值的空間

Redis基礎(chǔ)類型及常用操作、命令有哪些

基礎(chǔ)數(shù)據(jù)類型:sortedSet

  • 存儲(chǔ)需求:數(shù)據(jù)排序有利于數(shù)據(jù)的展示效果,需要提供一種可以根據(jù)自身特征進(jìn)行排序的方式

  • 存儲(chǔ)結(jié)構(gòu):可以保存排序的數(shù)據(jù)

  • 存儲(chǔ)類型:在set的存儲(chǔ)結(jié)構(gòu)上添加可排序字段

Redis基礎(chǔ)類型及常用操作、命令有哪些

基本操作

  • 添加數(shù)據(jù)

zadd key scorel member [score2 member2]
  • 獲取全部數(shù)據(jù)

zrange key start stop [witchscores]zrevrange key star stop [witchscores]
  • 刪除數(shù)據(jù)

zrem key member [member ...]
  • 按條件查詢數(shù)據(jù)

zrangebyscore key min max [withscores] [limit] zrevrangebyscore key max min [withscores]
  • 條件刪除數(shù)據(jù)

zremrangebyrank key start stop //start stop 表示索引的開(kāi)始結(jié)束位置 zremrangebyscore key min max //min max表示排序的最小到最大位置
  • 獲取集合數(shù)據(jù)數(shù)量

zcard key zcount key min max
  • 集合交、并操作

zinterstore destination numkeys key [key ...] zunionstore destination key [key ...]

看完上述內(nèi)容,你們掌握Redis基礎(chǔ)類型及常用操作、命令有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI