最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis五大基本數(shù)據(jù)類型及對(duì)應(yīng)使用場(chǎng)景總結(jié)

 更新時(shí)間:2023年08月24日 09:51:17   作者:我有一顆五葉草  
Redis有五種基本數(shù)據(jù)類型,分別是字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted?Set),這些基本數(shù)據(jù)類型使得Redis具備了豐富的數(shù)據(jù)結(jié)構(gòu)和功能,適用于各種不同的應(yīng)用場(chǎng)景,本文就給大家詳細(xì)的介紹一下這五大類型

一 什么是NoSQL?

Nosql = not only sql(不僅僅是SQL)

關(guān)系型數(shù)據(jù)庫(kù):列+行,同一個(gè)表下數(shù)據(jù)的結(jié)構(gòu)是一樣的。

非關(guān)系型數(shù)據(jù)庫(kù):數(shù)據(jù)存儲(chǔ)沒有固定的格式,并且可以進(jìn)行橫向擴(kuò)展。

NoSQL泛指非關(guān)系型數(shù)據(jù)庫(kù),隨著web2.0互聯(lián)網(wǎng)的誕生,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)很難對(duì)付web2.0大數(shù)據(jù)時(shí)代!尤其是超大規(guī)模的高并發(fā)的社區(qū),暴露出來(lái)很多難以克服的問題,NoSQL在當(dāng)今大數(shù)據(jù)環(huán)境下發(fā)展的十分迅速,Redis是發(fā)展最快的。

傳統(tǒng)RDBMS和NoSQL

RDBMS

  • 組織化結(jié)構(gòu)
  • 固定SQL
  • 數(shù)據(jù)和關(guān)系都存在單獨(dú)的表中(行列)
  • DML(數(shù)據(jù)操作語(yǔ)言)、DDL(數(shù)據(jù)定義語(yǔ)言)等
  • 嚴(yán)格的一致性(ACID): 原子性、一致性、隔離性、持久性
  • 基礎(chǔ)的事務(wù)

NoSQL

  • 不僅僅是數(shù)據(jù)
  • 沒有固定查詢語(yǔ)言
  • 鍵值對(duì)存儲(chǔ)(redis)、列存儲(chǔ)(HBase)、文檔存儲(chǔ)(MongoDB)、圖形數(shù)據(jù)庫(kù)(不是存圖形,放的是關(guān)系)(Neo4j)
  • 最終一致性(BASE):基本可用、軟狀態(tài)/柔性事務(wù)、最終一致性

二 redis是什么?

Redis = Remote Dictionary Server,即遠(yuǎn)程字典服務(wù)。

是一個(gè)開源的使用ANSI C語(yǔ)言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API。

與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。

三 redis五大基本類型

Redis是一個(gè)開源,內(nèi)存存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)服務(wù)器,可用作數(shù)據(jù)庫(kù),高速緩存和消息隊(duì)列代理。它支持字符串、哈希表、列表、集合、有序集合,位圖,hyperloglogs等數(shù)據(jù)類型。內(nèi)置復(fù)制、Lua腳本、LRU收回、事務(wù)以及不同級(jí)別磁盤持久化功能,同時(shí)通過(guò)Redis Sentinel提供高可用,通過(guò)Redis Cluster提供自動(dòng)分區(qū)。

由于redis類型大家很熟悉,且網(wǎng)上命令使用介紹很多,下面重點(diǎn)介紹五大基本類型的底層數(shù)據(jù)結(jié)構(gòu)與應(yīng)用場(chǎng)景,以便當(dāng)開發(fā)時(shí),可以熟練使用redis。

1 String(字符串)

1.String類型是redis的最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),也是最經(jīng)常使用到的類型。 而且其他的四種類型多多少少都是在字符串類型的基礎(chǔ)上構(gòu)建的,所以String類型是redis的基礎(chǔ)。

2.String 類型的值最大能存儲(chǔ) 512MB,這里的String類型可以是簡(jiǎn)單字符串、 復(fù)雜的xml/json的字符串、二進(jìn)制圖像或者音頻的字符串、以及可以是數(shù)字的字符串

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

1、緩存功能:String字符串是最常用的數(shù)據(jù)類型,不僅僅是redis,各個(gè)語(yǔ)言都是最基本類型,因此,利用redis作為緩存,配合其它數(shù)據(jù)庫(kù)作為存儲(chǔ)層,利用redis支持高并發(fā)的特點(diǎn),可以大大加快系統(tǒng)的讀寫速度、以及降低后端數(shù)據(jù)庫(kù)的壓力。

2、計(jì)數(shù)器:許多系統(tǒng)都會(huì)使用redis作為系統(tǒng)的實(shí)時(shí)計(jì)數(shù)器,可以快速實(shí)現(xiàn)計(jì)數(shù)和查詢的功能。而且最終的數(shù)據(jù)結(jié)果可以按照特定的時(shí)間落地到數(shù)據(jù)庫(kù)或者其它存儲(chǔ)介質(zhì)當(dāng)中進(jìn)行永久保存。

3、統(tǒng)計(jì)多單位的數(shù)量:eg,uid:gongming count:0 根據(jù)不同的uid更新count數(shù)量。

4、共享用戶session:用戶重新刷新一次界面,可能需要訪問一下數(shù)據(jù)進(jìn)行重新登錄,或者訪問頁(yè)面緩存cookie,這兩種方式做有一定弊端,1)每次都重新登錄效率低下 2)cookie保存在客戶端,有安全隱患。這時(shí)可以利用redis將用戶的session集中管理,在這種模式只需要保證redis的高可用,每次用戶session的更新和獲取都可以快速完成。大大提高效率。

2 List(列表)

1.list類型是用來(lái)存儲(chǔ)多個(gè)有序的字符串的,列表當(dāng)中的每一個(gè)字符看做一個(gè)元素
2.一個(gè)列表當(dāng)中可以存儲(chǔ)有一個(gè)或者多個(gè)元素,redis的list支持存儲(chǔ)2^32次方-1個(gè)元素。
3.redis可以從列表的兩端進(jìn)行插入(pubsh)和彈出(pop)元素,支持讀取指定范圍的元素集, 或者讀取指定下標(biāo)的元素等操作。redis列表是一種比較靈活的鏈表數(shù)據(jù)結(jié)構(gòu),它可以充當(dāng)隊(duì)列或者棧的角色。
4.redis列表是鏈表型的數(shù)據(jù)結(jié)構(gòu),所以它的元素是有序的,而且列表內(nèi)的元素是可以重復(fù)的。 意味著它可以根據(jù)鏈表的下標(biāo)獲取指定的元素和某個(gè)范圍內(nèi)的元素集。

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

1、消息隊(duì)列:reids的鏈表結(jié)構(gòu),可以輕松實(shí)現(xiàn)阻塞隊(duì)列,可以使用左進(jìn)右出的命令組成來(lái)完成隊(duì)列的設(shè)計(jì)。比如:數(shù)據(jù)的生產(chǎn)者可以通過(guò)Lpush命令從左邊插入數(shù)據(jù),多個(gè)數(shù)據(jù)消費(fèi)者,可以使用BRpop命令阻塞的“搶”列表尾部的數(shù)據(jù)。

2、文章列表或者數(shù)據(jù)分頁(yè)展示的應(yīng)用。比如,我們常用的博客網(wǎng)站的文章列表,當(dāng)用戶量越來(lái)越多時(shí),而且每一個(gè)用戶都有自己的文章列表,而且當(dāng)文章多時(shí),都需要分頁(yè)展示,這時(shí)可以考慮使用redis的列表,列表不但有序同時(shí)還支持按照范圍內(nèi)獲取元素,可以完美解決分頁(yè)查詢功能。大大提高查詢效率。

3 Set(集合)

1.redis集合(set)類型和list列表類型類似,都可以用來(lái)存儲(chǔ)多個(gè)字符串元素的集合。
2.但是和list不同的是set集合當(dāng)中不允許重復(fù)的元素。而且set集合當(dāng)中元素是沒有順序的,不存在元素下標(biāo)。
3.redis的set類型是使用哈希表構(gòu)造的,因此復(fù)雜度是O(1),它支持集合內(nèi)的增刪改查, 并且支持多個(gè)集合間的交集、并集、差集操作??梢岳眠@些集合操作,解決程序開發(fā)過(guò)程當(dāng)中很多數(shù)據(jù)集合間的問題。

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

1、標(biāo)簽:比如我們博客網(wǎng)站常常使用到的興趣標(biāo)簽,把一個(gè)個(gè)有著相同愛好,關(guān)注類似內(nèi)容的用戶利用一個(gè)標(biāo)簽把他們進(jìn)行歸并。

2、共同好友功能,共同喜好,或者可以引申到二度好友之類的擴(kuò)展應(yīng)用。

3、統(tǒng)計(jì)網(wǎng)站的獨(dú)立IP。利用set集合當(dāng)中元素不唯一性,可以快速實(shí)時(shí)統(tǒng)計(jì)訪問網(wǎng)站的獨(dú)立IP。

數(shù)據(jù)結(jié)構(gòu)

set的底層結(jié)構(gòu)相對(duì)復(fù)雜寫,使用了intset和hashtable兩種數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),intset可以理解為數(shù)組。

4 sorted set(有序集合)

redis有序集合也是集合類型的一部分,所以它保留了集合中元素不能重復(fù)的特性,但是不同的是,有序集合給每個(gè)元素多設(shè)置了一個(gè)分?jǐn)?shù)。

redis有序集合也是集合類型的一部分,所以它保留了集合中元素不能重復(fù)的特性,但是不同的是,有序集合給每個(gè)元素多設(shè)置了一個(gè)分?jǐn)?shù),利用該分?jǐn)?shù)作為排序的依據(jù)。

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

1、 排行榜:有序集合經(jīng)典使用場(chǎng)景。例如視頻網(wǎng)站需要對(duì)用戶上傳的視頻做排行榜,榜單維護(hù)可能是多方面:按照時(shí)間、按照播放量、按照獲得的贊數(shù)等。

2、用Sorted Sets來(lái)做帶權(quán)重的隊(duì)列,比如普通消息的score為1,重要消息的score為2,然后工作線程可以選擇按score的倒序來(lái)獲取工作任務(wù)。讓重要的任務(wù)優(yōu)先執(zhí)行。

5 hash(哈希)

Redis hash數(shù)據(jù)結(jié)構(gòu) 是一個(gè)鍵值對(duì)(key-value)集合,它是一個(gè) string 類型的 field 和 value 的映射表,redis本身就是一個(gè)key-value型數(shù)據(jù)庫(kù),因此hash數(shù)據(jù)結(jié)構(gòu)相當(dāng)于在value中又套了一層key-value型數(shù)據(jù)。所以redis中hash數(shù)據(jù)結(jié)構(gòu)特別適合存儲(chǔ)關(guān)系型對(duì)象

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

1、由于hash數(shù)據(jù)類型的key-value的特性,用來(lái)存儲(chǔ)關(guān)系型數(shù)據(jù)庫(kù)中表記錄,是redis中哈希類型最常用的場(chǎng)景。一條記錄作為一個(gè)key-value,把每列屬性值對(duì)應(yīng)成field-value存儲(chǔ)在哈希表當(dāng)中,然后通過(guò)key值來(lái)區(qū)分表當(dāng)中的主鍵。

2、經(jīng)常被用來(lái)存儲(chǔ)用戶相關(guān)信息。優(yōu)化用戶信息的獲取,不需要重復(fù)從數(shù)據(jù)庫(kù)當(dāng)中讀取,提高系統(tǒng)性能。

以上就是Redis五大基本數(shù)據(jù)類型及對(duì)應(yīng)使用場(chǎng)景總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Redis五大基本數(shù)據(jù)類型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Redis分布式鎖的正確實(shí)現(xiàn)方法總結(jié)

    Redis分布式鎖的正確實(shí)現(xiàn)方法總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于Redis分布式鎖的正確實(shí)現(xiàn)方式介紹,有興趣的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • Redis的Bitmap(位圖)詳解和命令演示

    Redis的Bitmap(位圖)詳解和命令演示

    Redis的位圖是由多個(gè)二進(jìn)制位組成的數(shù)組,數(shù)組中的每個(gè)二進(jìn)制位都有與之對(duì)應(yīng)的偏移量,用戶通過(guò)這些偏移量可以對(duì)位圖中指定的一個(gè)或多個(gè)二進(jìn)制位進(jìn)行操作,這篇文章主要給大家介紹了關(guān)于Redis的Bitmap(位圖)詳解和命令演示的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • Redis Cluster原理及配置詳解

    Redis Cluster原理及配置詳解

    這篇文章主要為大家介紹了Redis Cluster原理及配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Window下Redis的安裝和部署詳細(xì)圖文教程

    Window下Redis的安裝和部署詳細(xì)圖文教程

    Windows?版本的?Redis?是?Microsoft?的開源部門提供的?Redis.?這個(gè)版本的?Redis?適合開發(fā)人員學(xué)習(xí)使用,生產(chǎn)環(huán)境中使用?Linux?系統(tǒng)上的?Redis,?這里講解了這兩種的安裝和下載,按照你們需要的liunx?或window步驟來(lái)?就可以了
    2024-05-05
  • Redis持久化機(jī)制之RDB與AOF的使用

    Redis持久化機(jī)制之RDB與AOF的使用

    這篇文章主要介紹了Redis持久化機(jī)制之RDB與AOF的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Redis結(jié)合Lua腳本實(shí)現(xiàn)分布式鎖詳解

    Redis結(jié)合Lua腳本實(shí)現(xiàn)分布式鎖詳解

    Lua?是一種輕量小巧的腳本語(yǔ)言,用標(biāo)準(zhǔn)C語(yǔ)言編寫并以源代碼形式開放,?本文主要為大家介紹了Redis如何結(jié)合Lua腳本實(shí)現(xiàn)分布式鎖,需要的可以參考下
    2024-02-02
  • Redis Cluster集群動(dòng)態(tài)擴(kuò)容的實(shí)現(xiàn)

    Redis Cluster集群動(dòng)態(tài)擴(kuò)容的實(shí)現(xiàn)

    本文主要介紹了Redis Cluster集群動(dòng)態(tài)擴(kuò)容的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • redis持久化的介紹

    redis持久化的介紹

    今天小編就為大家分享一篇關(guān)于redis持久化的介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • 如何在centos中安裝redis插件bloom-filter

    如何在centos中安裝redis插件bloom-filter

    布隆過(guò)濾器在第一次add的時(shí)候自動(dòng)創(chuàng)建基于默認(rèn)參數(shù)的過(guò)濾器,Redis還提供了自定義參數(shù)的布隆過(guò)濾器,下面這篇文章主要給大家介紹了關(guān)于如何在centos中安裝redis插件bloom-filter的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Redis基本數(shù)據(jù)類型哈希Hash常用操作命令

    Redis基本數(shù)據(jù)類型哈希Hash常用操作命令

    這篇文章主要為大家介紹了Redis基本數(shù)據(jù)類型哈希Hash常用操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05

最新評(píng)論

哈密市| 保康县| 花垣县| 西乌| 名山县| 土默特左旗| 金溪县| 镇平县| 耒阳市| 邵东县| 岗巴县| 南郑县| 信宜市| 鄢陵县| 泰和县| 绥芬河市| 达尔| 北京市| 惠州市| 苗栗市| 砚山县| 阳信县| 宜兴市| 宜良县| 海林市| 涟水县| 永德县| 清水河县| 青神县| 桂东县| 凭祥市| 永和县| 阳原县| 东宁县| 阜新| 四子王旗| 抚松县| 香港 | 江津市| 上饶市| 祁门县|