亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

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

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

                string

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

                常見的操作如下

                命令名稱

                示例

                描述

                set

                set key value

                設(shè)置鍵值對

                get

                get key

                獲取值

                incr

                incr key

                遞增值

                decr

                decr key

                遞減值

                strlen

                strlen key

                獲取字符串長度

                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不存在時賦值

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

                使用場景

                ①計數(shù)器

                ②共享session

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

                list

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

                list的元素個數(shù)最多為2^32-1個(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

                獲取列表中元素個數(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時, lrem會從列表左邊開始刪除;當(dāng)count<0時,

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

                為value的元素

                lset

                lset key index

                value

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

                ltrim

                ltrim key start

                end

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

                rpoplpush

                rpoplpush

                key1 key2

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

                brpoplpush

                brpoplpush

                key1 key2

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

                list底層有多種數(shù)據(jù)類型,數(shù)據(jù)量少的時候是ziplist壓縮列表,內(nèi)存是連續(xù)分配的,當(dāng)元素個數(shù)超過某個值時轉(zhuǎn)為linkedlist雙向鏈表,redis3.2之后數(shù)據(jù)量較多時改為quicklist。因為普通的鏈表需要附加指針空間,會浪費空間,加重內(nèi)存碎片化。redis將鏈表和ziplist結(jié)合組成quicklist。

                使用場景:

                ①用戶列表,商品列表,評論列表等

                ②消息隊列

                ③棧

                set

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

                命令名稱

                示例

                描述

                sadd

                sadd key v1 v2…

                為集合添加新成員

                srem

                srem key v1 v2 …

                刪除集合指定成員

                smembers

                smembers key

                獲取集合中所有元素

                spop

                spop key

                返回集合中一個隨機元素,并將該元素刪除

                srandmember

                srandmember key

                返回集合中一個隨機元素,不會刪除該元素

                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ù)且個數(shù)不超過512個則使用inset數(shù)組,否則使用hashtable

                使用場景:

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

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

                sortedset

                有序集合,可以通過設(shè)置分?jǐn)?shù)來對元素進(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)的元素數(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ù)的壓縮鏈表,按照分值從小到大排序,在滿足一定條件下會轉(zhuǎn)換成skiplist,即跳表。

                使用場景:

                ①排行榜

                hash

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

                命令名稱

                示例

                描述

                hset

                hset key field value

                賦值

                hmset

                hmset key field1 value1 field2 value2…

                批量賦值

                hsetnx

                hsetnx key field value

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

                hget

                hget key field

                獲取一個字段

                hmget

                hmset key field1 field2

                獲取多個字段值

                hgetall

                hgetall key

                獲取所有值

                hdel

                hdel key field

                刪除指定字段

                hincrby

                hincrby key field increment

                指定字段自增increment

                hlen

                hlen key

                獲取字段數(shù)量

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

                使用場景

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

                BitMap

                BitMap 就是通過一個 bit 位來表示某個元素對應(yīng)的值或者狀態(tài), 其中的 key 就是對應(yīng)元素本身,實際上底層也是通過對字符串的操作來實現(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的個數(shù)

                bitpos

                bitpos key value

                獲取第一個值為value的bit的位置

                bitop

                bitop and[or/xor/not] destkey key

                [key …]

                對多個key 進(jìn)行邏輯運算后存入destkey

                使用場景:

                ①布隆過濾器

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

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

                相關(guān)推薦

                聯(lián)系我們

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