在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    細(xì)說redis數(shù)據(jù)類型

    本文主要講解redis的6種數(shù)據(jù)類型

    string

    redis的string可以存儲(chǔ)3種數(shù)據(jù)類型:string,整數(shù)和浮點(diǎn)數(shù)。

    常見的操作如下

    命令名稱

    示例

    描述

    set

    set key value

    設(shè)置鍵值對(duì)

    get

    get key

    獲取值

    incr

    incr key

    遞增值

    decr

    decr key

    遞減值

    strlen

    strlen key

    獲取字符串長(zhǎng)度

    incrby

    incrby key increment

    增加指定數(shù)字

    decrby

    decrby key decrement

    減少指定數(shù)字

    append

    append key

    value

    向尾部添加值

    getset

    getset

    key

    value

    取值并賦值

    setnx

    setnx

    key

    value

    當(dāng)value不存在時(shí)賦值

    String的數(shù)據(jù)結(jié)構(gòu)為簡(jiǎn)單動(dòng)態(tài)字符串(Simple Dynamic String,縮寫SDS),采用預(yù)分配冗余空間減少內(nèi)存的頻繁分配,當(dāng)value長(zhǎng)度小于1m時(shí),每次擴(kuò)大1倍,當(dāng)大于1m時(shí)每次多分配1m的空間,最大為512m。

    使用場(chǎng)景

    ①計(jì)數(shù)器

    ②共享session

    ③setnx實(shí)現(xiàn)分布式鎖

    list

    list是列表結(jié)構(gòu),可以存儲(chǔ)有序、可重復(fù)的元素,獲取頭部或尾部附近的記錄是極快的

    list的元素個(gè)數(shù)最多為2^32-1個(gè)(40億)

    命令名稱

    示例

    描述

    lpush

    lpush key v1,v2…

    列表左邊插入

    lpop

    lpop key

    列表左邊彈出

    rpush

    rpush key v1,v2…

    列表右邊插入

    rpop

    rpop key

    列表右邊彈出

    lpushx

    lpushx key value

    將數(shù)值插入列表頭部

    rpushx

    rpushx key value

    將值插入列表尾部

    llen

    llen key

    獲取列表中元素個(gè)數(shù)

    lindex

    lindex key index

    獲取列表中的下標(biāo)

    lrange

    lrange key start end

    返回列表中指定區(qū)間的元素,區(qū)間通過start和end指定

    lrem

    lrem key count

    value

    刪除列表中與value相等的元素

    當(dāng)count>0時(shí), lrem會(huì)從列表左邊開始刪除;當(dāng)count<0時(shí),

    lrem會(huì)從列表后邊開始刪除;當(dāng)count=0時(shí), lrem刪除所有值

    為value的元素

    lset

    lset key index

    value

    將列表index位置的元素設(shè)置成value的值

    ltrim

    ltrim key start

    end

    對(duì)列表進(jìn)行修剪,只保留start到end區(qū)間

    rpoplpush

    rpoplpush

    key1 key2

    從key1列表右側(cè)彈出并插入到key2列表左側(cè)

    brpoplpush

    brpoplpush

    key1 key2

    從key1列表右側(cè)彈出并插入到key2列表左側(cè),會(huì)阻塞

    list底層有多種數(shù)據(jù)類型,數(shù)據(jù)量少的時(shí)候是ziplist壓縮列表,內(nèi)存是連續(xù)分配的,當(dāng)元素個(gè)數(shù)超過某個(gè)值時(shí)轉(zhuǎn)為linkedlist雙向鏈表,redis3.2之后數(shù)據(jù)量較多時(shí)改為quicklist。因?yàn)槠胀ǖ逆湵硇枰郊又羔樋臻g,會(huì)浪費(fèi)空間,加重內(nèi)存碎片化。redis將鏈表和ziplist結(jié)合組成quicklist。

    使用場(chǎng)景:

    ①用戶列表,商品列表,評(píng)論列表等

    ②消息隊(duì)列

    ③棧

    set

    無序不重復(fù),集合中最大的成員數(shù)為 2^32 – 1

    命令名稱

    示例

    描述

    sadd

    sadd key v1 v2…

    為集合添加新成員

    srem

    srem key v1 v2 …

    刪除集合指定成員

    smembers

    smembers key

    獲取集合中所有元素

    spop

    spop key

    返回集合中一個(gè)隨機(jī)元素,并將該元素刪除

    srandmember

    srandmember key

    返回集合中一個(gè)隨機(jī)元素,不會(huì)刪除該元素

    scard

    scard key

    獲取集合中的數(shù)量

    sinter

    sinter key1 key2 …

    求多集合的交集

    sdiff

    sdiff key1 key2…

    求多集合的差集

    sunion

    sunion key1 key2…

    求多集合的并集

    set底層有兩種數(shù)據(jù)結(jié)構(gòu),一種是inset數(shù)組,另一種是hashtable,如果保存的所有值都是整數(shù)且個(gè)數(shù)不超過512個(gè)則使用inset數(shù)組,否則使用hashtable

    使用場(chǎng)景:

    ①統(tǒng)計(jì)網(wǎng)站uv

    ②統(tǒng)計(jì)共同好友

    sortedset

    有序集合,可以通過設(shè)置分?jǐn)?shù)來對(duì)元素進(jìn)行排序,元素不能重復(fù),分?jǐn)?shù)可以

    命令名稱

    示例

    描述

    zadd

    zadd key score1 v1 score2 v2…

    為集合添加新成員

    zrem

    srem key v1 v2 …

    刪除集合指定成員

    zcount

    zcount key min max

    返回分?jǐn)?shù)在[min,max]區(qū)間內(nèi)的元素?cái)?shù)量

    zincrby

    zincrby key increment member

    在集合的member分值上加increment

    zrank

    zrank key member

    獲取集合中member的排名(按分值從小到大)

    zrevrank

    zrevrank key member

    和zrank相反

    zrange

    zrange key start end

    獲取集合中指定區(qū)間成員,按分?jǐn)?shù)遞增排序

    zrevrange

    zrevrange key start end

    和zrange相反

    zset底層是采用ziplist和skiplist結(jié)構(gòu),ziplist就是地址連續(xù)的壓縮鏈表,按照分值從小到大排序,在滿足一定條件下會(huì)轉(zhuǎn)換成skiplist,即跳表。

    使用場(chǎng)景:

    ①排行榜

    hash

    String 類型的 field(域)和 value(值)的映射表,每個(gè)hash可以存儲(chǔ)2^32-1個(gè)鍵值對(duì)

    命令名稱

    示例

    描述

    hset

    hset key field value

    賦值

    hmset

    hmset key field1 value1 field2 value2…

    批量賦值

    hsetnx

    hsetnx key field value

    賦值,如果值存在則不操作

    hget

    hget key field

    獲取一個(gè)字段

    hmget

    hmset key field1 field2

    獲取多個(gè)字段值

    hgetall

    hgetall key

    獲取所有值

    hdel

    hdel key field

    刪除指定字段

    hincrby

    hincrby key field increment

    指定字段自增increment

    hlen

    hlen key

    獲取字段數(shù)量

    底層使用hashtable存儲(chǔ)數(shù)據(jù)

    使用場(chǎng)景

    ①存儲(chǔ)對(duì)象,應(yīng)用在頻繁寫操作的場(chǎng)景,string主要用在頻繁讀操作場(chǎng)景

    BitMap

    BitMap 就是通過一個(gè) bit 位來表示某個(gè)元素對(duì)應(yīng)的值或者狀態(tài), 其中的 key 就是對(duì)應(yīng)元素本身,實(shí)際上底層也是通過對(duì)字符串的操作來實(shí)現(xiàn)。

    命令名稱

    示例

    描述

    setbit

    setbit key offset value

    設(shè)置key在offset處的bit值,只能是0或者1

    getbit

    getbit key.offset

    獲取key在offset處的bit值

    bitcount

    bitcount key

    獲取key的bit位為1的個(gè)數(shù)

    bitpos

    bitpos key value

    獲取第一個(gè)值為value的bit的位置

    bitop

    bitop and[or/xor/not] destkey key

    [key …]

    對(duì)多個(gè)key 進(jìn)行邏輯運(yùn)算后存入destkey

    使用場(chǎng)景:

    ①布隆過濾器

    ②統(tǒng)計(jì)用戶每月簽到,用戶id為key,日期作為偏移量

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年8月11日 13:11
    下一篇 2022年8月11日 13:12

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息