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

Redis六大數(shù)據(jù)類型使用方法詳解

 更新時間:2020年12月04日 15:20:27   作者:YSOcean  
這篇文章主要介紹了Redis六大數(shù)據(jù)類型使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

  我們說 Redis 相對于Memcache 等其他的緩存產(chǎn)品,有一個比較明顯的優(yōu)勢就是 Redis 不僅僅支持簡單的key-value類型的數(shù)據(jù),同時還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲。本篇博客我們就將介紹這些數(shù)據(jù)類型的詳細(xì)使用以及順帶介紹Redis系統(tǒng)的相關(guān)命令用法。

  注意:Redis的命令不區(qū)分大小寫,但是key 嚴(yán)格區(qū)分大小寫!??!

0、寫在前面

  下面介紹的Redis命令有很多,如果你想通過死記硬背來記住這些命令幾乎不可能,但是如果理解了Redis的一些機(jī)制,這些命令其實(shí)是由很強(qiáng)的通用性的,通過理解來記憶是最好的。 另外,每種數(shù)據(jù)類型都有其適合的使用場景,我也會在文中給與說明,如果濫用,反而會適得其反。

1、string 數(shù)據(jù)類型

  string 是Redis的最基本的數(shù)據(jù)類型,可以理解為與 Memcached 一模一樣的類型,一個key 對應(yīng)一個 value。string 類型是二進(jìn)制安全的,意思是 Redis 的 string 可以包含任何數(shù)據(jù),比如圖片或者序列化的對象,一個 redis 中字符串 value 最多可以是 512M。

①、相關(guān)命令介紹

  string 數(shù)據(jù)類型在 Redis 中的相關(guān)命令:

  

  PS:

  ①、上面的 ttl 命令是返回 key 的剩余過期時間,單位為秒。

  ②、mset和mget這種批量處理命令,能夠極大的提高操作效率。因?yàn)橐淮蚊顖?zhí)行所需要的時間=1次網(wǎng)絡(luò)傳輸時間+1次命令執(zhí)行時間,n個命令耗時=n次網(wǎng)絡(luò)傳輸時間+n次命令執(zhí)行時間,而批量處理命令會將n次網(wǎng)絡(luò)時間縮減為1次網(wǎng)絡(luò)時間,也就是1次網(wǎng)絡(luò)傳輸時間+n次命令處理時間。

  但是需要注意的是,Redis是單線程的,如果一次批量處理命令過多,會造成Redis阻塞或網(wǎng)絡(luò)擁塞(傳輸數(shù)據(jù)量大)。

 ?、?、setnx可以用于實(shí)現(xiàn)分布式鎖,具體實(shí)現(xiàn)方式后面會介紹。

  上面是 string 類型的基本命令,下面介紹幾個自增自減操作,這在實(shí)際工作中還是特別有用的(分布式環(huán)境中統(tǒng)計(jì)系統(tǒng)的在線人數(shù),利用Redis的高性能讀寫,在Redis中完成秒殺,而不是直接操作數(shù)據(jù)庫。)。

  

②、典型使用場景

  一、計(jì)數(shù)

  由于Redis單線程的特點(diǎn),我們不用考慮并發(fā)造成計(jì)數(shù)不準(zhǔn)的問題,通過 incrby 命令,我們可以正確的得到我們想要的結(jié)果。

  二、限制次數(shù)

  比如登錄次數(shù)校驗(yàn),錯誤超過三次5分鐘內(nèi)就不讓登錄了,每次登錄設(shè)置key自增一次,并設(shè)置該key的過期時間為5分鐘后,每次登錄檢查一下該key的值來進(jìn)行限制登錄。

2、hash 數(shù)據(jù)類型

  hash 是一個鍵值對集合,是一個 string 類型的 key和 value 的映射表,key 還是key,但是value是一個鍵值對(key-value)。類比于 Java里面的 Map<String,Map<String,Object>> 集合。

①、相關(guān)命令介紹

  演示如下:

②、典型使用場景

  查詢的時間復(fù)雜度是O(1),用于緩存一些信息。

3、list 數(shù)據(jù)類型

  list 列表,它是簡單的字符串列表,按照插入順序排序,你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊),它的底層實(shí)際上是個鏈表。

  列表有兩個特點(diǎn):

  一、有序

  二、可以重復(fù)

  這兩個特點(diǎn)要注意和后面介紹的集合和有序集合相對比。

①、相關(guān)命令介紹

  

  

②、典型使用場景

  一、棧

  通過命令 lpush+lpop

  二、隊(duì)列

  命令 lpush+rpop

  三、有限集合

  命令 lpush+ltrim

  四、消息隊(duì)列

  命令 lpush+brpop

4、set 數(shù)據(jù)類型

  Redis 的 set 是 string 類型的無序集合。

  相對于列表,集合也有兩個特點(diǎn):

  一、無序

  二、不可重復(fù)

①、相關(guān)命令介紹

  

②、典型使用場景

  利用集合的交并集特性,比如在社交領(lǐng)域,我們可以很方便的求出多個用戶的共同好友,共同感興趣的領(lǐng)域等。

5、zset 數(shù)據(jù)類型

  zset(sorted set 有序集合),和上面的set 數(shù)據(jù)類型一樣,也是 string 類型元素的集合,但是它是有序的。

①、相關(guān)命令介紹

  

②、典型使用場景

  和set數(shù)據(jù)結(jié)構(gòu)一樣,zset也可以用于社交領(lǐng)域的相關(guān)業(yè)務(wù),并且還可以利用zset 的有序特性,還可以做類似排行榜的業(yè)務(wù)。

6、Redis5.0新數(shù)據(jù)結(jié)構(gòu)-stream

  Redis的作者在Redis5.0中,放出一個新的數(shù)據(jù)結(jié)構(gòu),Stream。Redis Stream 的內(nèi)部,其實(shí)也是一個隊(duì)列,每一個不同的key,對應(yīng)的是不同的隊(duì)列,每個隊(duì)列的元素,也就是消息,都有一個msgid,并且需要保證msgid是嚴(yán)格遞增的。在Stream當(dāng)中,消息是默認(rèn)持久化的,即便是Redis重啟,也能夠讀取到消息。那么,stream是如何做到多播的呢?其實(shí)非常的簡單,與其他隊(duì)列系統(tǒng)相似,Redis對不同的消費(fèi)者,也有消費(fèi)者Group這樣的概念,不同的消費(fèi)組,可以消費(fèi)同一個消息,對于不同的消費(fèi)組,都維護(hù)一個Idx下標(biāo),表示這一個消費(fèi)群組消費(fèi)到了哪里,每次進(jìn)行消費(fèi),都會更新一下這個下標(biāo),往后面一位進(jìn)行偏移。

7、系統(tǒng)相關(guān)命令

8、key 相關(guān)命令

  關(guān)于 key 的命令應(yīng)該說是最常用的,需要大家記住。

  

  這里在介紹一個命令 :

OBJECT ENCODING key

  這是用來顯示這五種數(shù)據(jù)類型的底層數(shù)據(jù)結(jié)構(gòu),下一篇博客我們會詳細(xì)介紹。

  

  上面的命令我們給string 數(shù)據(jù)類型 k1 復(fù)制str,給 k2 復(fù)制123,通過 OBJECT ENCODING 顯示底層實(shí)現(xiàn)的數(shù)據(jù)類型分別是 embstr 和 int。

參考文檔:http://www.redis.cn/commands.html

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java反射機(jī)制給實(shí)體類相同字段自動賦值實(shí)例

    java反射機(jī)制給實(shí)體類相同字段自動賦值實(shí)例

    這篇文章主要介紹了java反射機(jī)制給實(shí)體類相同字段自動賦值實(shí)例,具有
    2020-08-08
  • springboot配置加密的正確姿勢分享

    springboot配置加密的正確姿勢分享

    在Spring boot開發(fā)中,需要在application.yml文件里配置數(shù)據(jù)庫的連接信息,或者在啟動時傳入數(shù)據(jù)庫密碼,如果不加密,傳明文,數(shù)據(jù)庫就直接暴露了,下面這篇文章主要給大家介紹了關(guān)于springboot配置加密的正確姿勢,需要的朋友可以參考下
    2022-11-11
  • jdk7 中HashMap的知識點(diǎn)總結(jié)

    jdk7 中HashMap的知識點(diǎn)總結(jié)

    HashMap的原理是老生常談了,不作仔細(xì)解說。一句話概括為HashMap是一個散列表,它存儲的內(nèi)容是鍵值對(key-value)映射。這篇文章主要總結(jié)了關(guān)于jdk7 中HashMap的知識點(diǎn),需要的朋友可以參考借鑒,一起來看看吧。
    2017-01-01
  • java中redis增刪查以及清理緩存的案例

    java中redis增刪查以及清理緩存的案例

    這篇文章主要介紹了java中redis增刪查以及清理緩存的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • springboot如何通過URL方式訪問外部資源

    springboot如何通過URL方式訪問外部資源

    這篇文章主要介紹了springboot如何通過URL方式訪問外部資源,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java實(shí)現(xiàn)人機(jī)猜拳游戲

    Java實(shí)現(xiàn)人機(jī)猜拳游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)人機(jī)猜拳游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • SpringCloud之Feign代理,聲明式服務(wù)調(diào)用方式

    SpringCloud之Feign代理,聲明式服務(wù)調(diào)用方式

    這篇文章主要介紹了SpringCloud之Feign代理,聲明式服務(wù)調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java處理Markdown格式轉(zhuǎn)換為Word文檔

    Java處理Markdown格式轉(zhuǎn)換為Word文檔

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)處理Markdown格式轉(zhuǎn)換為Word文檔,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2025-03-03
  • 聊聊在Servlet中怎么上傳文件

    聊聊在Servlet中怎么上傳文件

    很多朋友不清楚在Servlet中怎么上傳文件,談到這個問題,首先需要我們掌握開發(fā)servlet的步驟,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-05-05
  • SpringMVC用JsonSerialize日期轉(zhuǎn)換方法

    SpringMVC用JsonSerialize日期轉(zhuǎn)換方法

    下面小編就為大家?guī)硪黄猄pringMVC用JsonSerialize日期轉(zhuǎn)換方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起 小編過來看看吧
    2016-11-11

最新評論

德格县| 台中市| 阳春市| 常山县| 安庆市| 台南县| 宁强县| 肇东市| 博白县| 邯郸市| 垫江县| 桃园县| 临西县| 内乡县| 定陶县| 青海省| 富源县| 扎鲁特旗| 松潘县| 深州市| 金寨县| 上林县| 伊宁县| 永宁县| 三都| 江孜县| 志丹县| 曲水县| 博客| 阜新| 台北县| 益阳市| 江阴市| 廊坊市| 西乡县| 垦利县| 阿拉善盟| 顺义区| 甘谷县| 平原县| 康保县|