04 Redis數(shù)據(jù)類型與應(yīng)用場景

更多命令可以查看這個Redis 命令參考文檔:http://doc.redisfans.com

Redis支持五種數(shù)據(jù)類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)等。

String類型


簡介

  • string類型是Redis最基本的數(shù)據(jù)類型,一個鍵最大能存儲512MB。
  • string數(shù)據(jù)結(jié)構(gòu)是簡單的key-value類型,value不僅是string,也可以是數(shù)字,包含很多種類型的特殊類型,
  • string類型是二進(jìn)制安全的。意思是redis的string可以包含任何數(shù)據(jù)。比如序列化的對象進(jìn)行存儲,比如一張圖片進(jìn)行二進(jìn)制存儲,比如一個簡單的字符串,數(shù)值等等。

常用命令

賦值語法:

命令 說明
set key_name value set命令用于設(shè)置給定key的值,如果已經(jīng)存儲值,就覆蓋,且無視類型
setnx key value 如果key不存在,則賦值并返回1,如果不存在不賦值,返回0
setex key 10 xxx 設(shè)置key的值為xxx,過期時間為10秒,10秒后key清除
setrange key range value 用 value 參數(shù)覆寫給定 key 所儲存的字符串值,從偏移量range開始

取值語法:

命令 說明
get key 獲取指定key的值,如果不存在返回 nil,如果key存儲不是字符串類型返回一個錯誤
getrange key start end 獲取存儲在指定key中字符串的子字符串,截取范圍由start和end兩個偏移量決定 (包含start和end)
getbit key offset 對key所存儲的字符串值,獲取指定偏移量上的為(bit)
getset key value 用于設(shè)置指定key的值,并返回key的舊值,當(dāng)key不存在時返回 nil

刪值語法:

命令 說明
del key1 key2 刪除指定的key,返回被刪除key的數(shù)量
mset k1 v1 k2 v2 一次性寫入多個key
gset k1 v1 k2 v2 一次性讀取多個key的值

自增/自減:

命令 說明
incr key 將key中存儲的數(shù)值加1,如果key不存在,key的值被初始化為0并執(zhí)行incr操作
incrby key increment key 所儲存的值加上增量 increment
decr key 將key中存儲的數(shù)值減1
decrby key decrement key 所儲存的值減去減量 decrement

其他:

命令 說明
append key value 用于為指定的key追加value至末尾,如果不存在,為key賦值
strlen key 返回key所存儲的字符串值的長度

應(yīng)用場景

  • String通常用于保存單個字符串或JSON字符串?dāng)?shù)據(jù)
  • 因String是二進(jìn)制安全的,所以你完全可以把一個圖片文件的內(nèi)容作為字符串來存儲
  • 計數(shù)器(常規(guī)key-value緩存應(yīng)用。常規(guī)計數(shù): 微博數(shù), 粉絲數(shù))

INCR等指令本身就具有原子操作的特性,所以我們完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令來實(shí)現(xiàn)原子計數(shù)的效果。

假如,在某種場景下有3個客戶端同時讀取了num的值(值為2),然后對其同時進(jìn)行了加1的操作,那么,最后num的值一定是5。 不少網(wǎng)站都利用redis的這個特性來實(shí)現(xiàn)業(yè)務(wù)上的統(tǒng)計計數(shù)需求。

Hash類型


簡介

  • Hash類型是String類型的field和value的映射表,或者說是一個String集合。

  • hash特別適合用于存儲對象,相比較而言,將一個對象類型存儲在Hash類型要存儲在String類型里占用更少的內(nèi)存空間,并方便對整個對象的存取。

  • 可以看成具有KEY和VALUE的MAP容器,該類型非常適合于存儲值對象的信息, 如:username, age等。

  • 該類型的數(shù)據(jù)僅占用很少的磁盤空間(相比于JSON)。Redis 中每個 hash 可以存儲 2的32次方 - 1 鍵值對(40多億)。

常用命令

賦值語法

序號 說明
hset key field value 將哈希表 key 中的域field 的值設(shè)為 value
hmset key field value [field value ...] 同時將多個field-value (域-值)對設(shè)置到哈希表 key 中,此命令會覆蓋哈希表中已存在的域,如果 key 不存在一個空哈希表被創(chuàng)建并執(zhí)行hmset操作

取值和刪值語法:

命令 說明
hget key field 返回哈希表 key 中給定域 field 的值。
hmget key field [field....] 返回哈希表 key 中,一個或多個給定域的值。如果給定的域不存在于哈希表,那么返回一個 nil 值。因?yàn)椴淮嬖诘膋ey 被當(dāng)作一個空哈希表來處理,所以對一個不存在的key進(jìn)行hmget操作將返回一個只帶有 nil 值的表
hgetall key 返回哈希表key 中,所有的域和值
hdel key field [field....] 刪除哈希表key 中的一個或多個指定域,不存在的域?qū)⒈缓雎浴?/td>

其他語法:

命令 說明
hsetnx key field value 將哈希表 key 中的域 field 的值設(shè)置為 value ,當(dāng)且僅當(dāng) field 不存在
hincyby key field increment 為哈希表 key 中的域 field 的值加上增量 increment,增量可為負(fù)數(shù)
hincybyfloat key field increment 為哈希表 key 中的域 field 加上浮點(diǎn)數(shù)增量 increment
hexists key field 查看哈希表 key 中,給定域 field 是否存在
hkeys key 返回哈希表 key 中的所有域
hlen key 返回哈希表 key 中域的數(shù)量

應(yīng)用場景

存儲部分變更數(shù)據(jù),如用戶信息等

持續(xù)更新中。。。。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容