欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Redis基本數(shù)據(jù)結(jié)構(gòu)是什么

這篇文章給大家分享的是有關(guān)redis基本數(shù)據(jù)結(jié)構(gòu)是什么的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

為通化等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及通化網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、通化網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

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

Redis有5種基本數(shù)據(jù)結(jié)構(gòu):String(字符串)、list(列表)、set(集合)、hash(哈希)、zset(有序集合)

字符串string

字符串類型是Redis的value最簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),類似與Java語(yǔ)言中的ArrayList(數(shù)字列表),不過(guò)在Redis里String是一種動(dòng)態(tài)字符串

Redis里的String采用預(yù)分配冗余空間的方法

[圖片上傳失敗...(image-724c60-1537973556456)]

set & get

>set keyname test
OK

>get keyname
test

//key如果存在就返回0
>setnx keyname test
0

>exists keyname

>del keyname
1

//批量設(shè)置
>mset key1 test1 key2 test2
OK

//批量獲取
>mget key1 key2
1) test1
2) test2

key過(guò)期

//設(shè)置5s后過(guò)期
>expire keyname 5

//setex是expire和set的復(fù)合寫法
>setex keyname 5 test
OK

//5s后查詢
>get keyname
NULL

計(jì)數(shù)
ps:value為數(shù)字的情況,可以使用incr和incrby計(jì)數(shù)

>set num 10
OK

//incr默認(rèn)加1
>incr num
11

//incrby后面要加上數(shù)字
>incrby num
ERR wrong number of arguments for 'incrby' command

//正確計(jì)數(shù)
>incrby num 5
16
列表list

下面介紹一下redis的另外一種數(shù)據(jù)結(jié)構(gòu)list
前面我們說(shuō)redis里的string類似與java語(yǔ)言里面的ArrayList,則redis里的列表就類似與LinkList(鏈表),鏈表一個(gè)特別就是更新和新增特別快,查詢索引慢。

為什么說(shuō)類似與linklist?因?yàn)閞edis的list并非和linklist一樣,它其實(shí)是一種快速列表(quicklist)的形式,列表結(jié)構(gòu)如圖:

[圖片上傳失敗...(image-625c1b-1537973556457)]

這里要介紹一下壓縮列表(ziplist)了,壓縮列表是什么?其實(shí)就是連續(xù)的內(nèi)存空間

從圖可以看出快速列表其實(shí)就是由壓縮列表和雙向的指針組成,不過(guò)我們知道鏈表是兩個(gè)指針的,也就是prev和next執(zhí)行,這就是快速列表和linklist的一個(gè)不同點(diǎn)了。

PS:然后redis設(shè)計(jì)時(shí),為什么改成雙向指針?假如和鏈表一樣,用兩個(gè)指針prev、next,同樣可以實(shí)現(xiàn)遍歷,不過(guò)雙向指針有一個(gè)很明顯的優(yōu)點(diǎn),就是占用的內(nèi)存空間就相對(duì)少了。

隊(duì)列和棧

/* 隊(duì)列:First in first out */

//加兩個(gè)value
>rpush keynames key1 key2
2

//計(jì)算
>llen keynames
2

>lpop keynames
key1

>lpop keynames
key2

//rpush會(huì)自動(dòng)過(guò)期的
>rpop keynames
NULL

/* 棧:First in last out */

//同樣,加兩個(gè)元素
>rpush keynames key1 key2
2

>rpop keynames
key2

>rpop keynames
key1
字典hash

Redis的字典類似與java語(yǔ)言的hashmap,也是無(wú)序的二維結(jié)構(gòu),也即數(shù)組加列表的結(jié)構(gòu)。這是redis字典和hashmap類似的地。

然后也有不同,比如rehash,刷新字典操作,hashmap是全部熱hash,當(dāng)字典足夠多時(shí),性能不是很好的,所以redis進(jìn)行改造,采用漸進(jìn)式的方式,為什么說(shuō)是漸進(jìn)式?因?yàn)閞edis不會(huì)全部reload,而是保存新舊兩個(gè)字典,然后采用定時(shí)任務(wù),將舊hash的數(shù)據(jù)搬到新的hash,搬后在回收hash內(nèi)存空間

字典(hash)的數(shù)組加鏈接結(jié)構(gòu):
[圖片上傳失敗...(image-f5660f-1537973556457)]

>hset keynames key1 "test1"
1

>hset keynames key2 "test2"
1

//批量set
>hmset keynames key1 "test1" key2 "test2"
OK

//獲取key1的值
>hget keynames key1
test1

//獲取hash為keynames的長(zhǎng)度
>hlen keynames
2

//獲取全部
>hgetall keynames
1) key1
2) test1
3) key2
4) test2
集合set

redis的set和java語(yǔ)言中的hashset類型,是一種無(wú)序唯一的。

>sadd keynames key1
1

//key1已經(jīng)加過(guò)了,所以返回1
>sadd keynames key1 key2
1

>smembers keynames
1) key2
2) key1

//查詢某個(gè)key是否存在,相當(dāng)與contains
>sismember keynames key1
1

//相當(dāng)于count
>scard keynames
2

//隨意彈出key1
>spop keynames
key1
有序集合zSet

有序集合是redis里比較有特色的,它類似于SortedSet和HashMap的組合。其內(nèi)部實(shí)現(xiàn)是一種被稱作跳躍列表的數(shù)據(jù)結(jié)構(gòu)。有序集合一方面它就是一個(gè)set,所以每個(gè)元素都是唯一的,然后它可以給每個(gè)value賦值一個(gè)score,再根據(jù)這個(gè)score進(jìn)行排序,score就相當(dāng)于一個(gè)權(quán)限排序的標(biāo)識(shí)。

ps:因?yàn)檫@個(gè)原因,有序集合可以被用來(lái)存儲(chǔ)粉絲信息,value值是粉絲id,score是關(guān)注時(shí)間

//9.0是score也就是權(quán)重
>zadd keyname 9.0 math
1

>zadd keyname 9.2 history
1

//順序
>zrange keyname 0 -1
1) history
2) math

//逆序
>zrevrange keyname 0 -1
1) math
2) history

//相當(dāng)于count()
>zcard keyname
2

獲取指定key的score
>zscore keyname math
9

跳躍列表 TODO

感謝各位的閱讀!關(guān)于Redis基本數(shù)據(jù)結(jié)構(gòu)是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)頁(yè)題目:Redis基本數(shù)據(jù)結(jié)構(gòu)是什么
URL分享:http://aaarwkj.com/article16/gjgdgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)品牌網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站建設(shè)微信小程序、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
综合久久久精品国产亚洲av| 人妻少妇中文字幕久久| 欧美日韩亚洲精品一区二区三区| 亚洲欧美日韩高清一区二区| 色婷婷国产精品久久包臀| 日韩版色视频在线观看| 国产九色av在线一区尤物| 日韩欧美一区二区三区在线| 亚洲人成伊人久久成| 搡老熟女老女人一区二区| 国产三级精品大乳人妇| 午夜伦理视频免费观看| 亚洲黄色片一区二区三区| 亚洲中文字幕一区乱码| 日韩美女后入式在线视频| 国产亚洲欧美日韩网站| 在线成人免费日韩视频| 日韩精品一区二区三区四区在线视频 | 中文字幕人妻久久一区| 日韩一区二区三区无吗电影| 日韩精品高清不卡一区二区三区| 欧美日韩在线精品1区2区| 色哟哟视频免费在线观看| 国产精品偷伦一区二区| 欧美激情三级一区二区| 免费黄片视频大全在线播放| 亚洲欧美日韩精品区| 激情影院在线观看福利| 久久九特黄的免费大片| 亚洲伦理一区二区三区中文| 日本啪啪啪一区二区三区| 中国的性生活黄片免费观看| 精品国产免费第一区二区三| 亚洲欧美另类重口国产| 欧美激情性国产精品潮| 青青草原高清在线观看| 97在线公开免费视频| 久久精品人妻中文av| 哪里可以看日韩免费毛片| 一本色道久久亚洲综合精品蜜桃| 亚洲一区二区视频在线播放|