毛片在线视频观看,一级日韩免费大片,在线网站黄色,澳门在线高清一级毛片

薈聚奇文、博采眾長、見賢思齊
當(dāng)前位置:公文素材庫 > 計(jì)劃總結(jié) > 工作總結(jié) > 電腦語言Redis學(xué)習(xí)總結(jié)

電腦語言Redis學(xué)習(xí)總結(jié)

網(wǎng)站:公文素材庫 | 時間:2019-05-14 12:00:45 | 移動端:電腦語言Redis學(xué)習(xí)總結(jié)

  在工作過中運(yùn)用到了redis的相關(guān)知識,在結(jié)合多方資料后,加深了對于redis的使用和理解,下面就是電腦語言Redis學(xué)習(xí)總結(jié),快來看一看吧。

    最近在工作中使用到了redis的相關(guān)緩存的知識,之前對redis的理解僅僅局限于“緩存數(shù)據(jù)”、“redis分布式鎖”的簡單使用,了解的知識面很窄。在結(jié)合了多方資料和虛機(jī)、java代碼進(jìn)行實(shí)操后,加深了對redis的使用和理解。趁熱打鐵,對學(xué)習(xí)到的知識做一下總結(jié)。

    本次學(xué)習(xí)筆記 將從以下幾個方面進(jìn)行學(xué)習(xí)總結(jié):

    NoSql 簡單介紹

    * Redis的基本數(shù)據(jù)類型

    一、NoSql 簡單介紹

    1、NoSql是什么?

    NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫,NoSQL即Not-Only SQL,它可以作為關(guān)系型數(shù)據(jù)庫的良好補(bǔ)充。

    2、能解決什么?

    為了解決高并發(fā)、高可擴(kuò)展、高可用、大數(shù)據(jù)存儲問題而產(chǎn)生的數(shù)據(jù)庫解決方案,就是NoSql數(shù)據(jù)庫。

    3、該怎么用? NoSql數(shù)據(jù)庫的4大分類  :

    KV鍵值,存儲數(shù)據(jù)庫(memcache、Redis的存儲類型)--本次學(xué)習(xí)redis存儲數(shù)據(jù)庫文檔型數(shù)據(jù)庫(MongoDB)--之后學(xué)習(xí)

    列存儲數(shù)據(jù)庫(HBase)--之后學(xué)習(xí)

    圖形數(shù)據(jù)庫(Neo4J)--之后學(xué)習(xí)

    4、分布式數(shù)據(jù)中需要遵循的CAP原理

    C:Consistency(強(qiáng)一致性)

    A:Availability(可用性)

    P:Partition tolerance(分區(qū)容錯性)

    沒有NosQL數(shù)據(jù)庫能同時滿足這三點(diǎn)

    這句話我個人的理解就是,在對于數(shù)據(jù)的強(qiáng)一直性和數(shù)據(jù)的分區(qū)容錯性之間,系統(tǒng)更加傾向于接受“分區(qū)容錯性”。在分布式數(shù)據(jù)庫中有個3進(jìn)2的原則,就是一個分布式系統(tǒng)中,最多只能同時滿足CA、CP、AP相互使用。

    二、Redis的基本數(shù)據(jù)類型

    String:

    在項(xiàng)目中最常見的一個使用方式就是,用來緩存用戶的信息, 將用戶信息的結(jié)構(gòu)體使用JSON序列化成字符串,然后將序列化后的字符串放入reids的緩存中進(jìn)行存儲。從緩存中取用戶信息會經(jīng)過一次反序列化的過程。

    當(dāng)字符串長度小于 1M 時,擴(kuò)容都是加倍現(xiàn)有的空間,如果超過 1M,擴(kuò)容時一次只會多擴(kuò) 1M 的空間。需要注意的是字符串最大長度為 512M。

    參考資料 操作實(shí)例

    單個鍵值的存取

    > set k1 v1

    OK

    > get k1

    "v1"

    > del k1

    (integer) 1

    > get k1

    (nil)

    多個鍵值的存取

    > set k2 v2

    OK

    > mget k1 k2  k3# 返回一個列表

    1) "v1"

    2) "v2"

    3) (nil)

    > mset k1 1 k2 2 k3 v3

    > mget k1 k2 k3

    1) "1"

    2) "2"

    3) "v3"

    key 值的過期策略

    > set k4 v4

    > get k4

    "v4"

    > expire k4 5  # 5s 后過期

    ...  # wait for 5s

    > get k4

    (nil)

    List(鏈表): redis的列表類似java的LinkedList,是鏈表而不是數(shù)據(jù),插入和刪除速度很快,O(1),索引定位很慢 O(n)。

    Redis的列表結(jié)構(gòu)常用來做異步隊(duì)列使用,將需要延后處理的任務(wù)結(jié)構(gòu)體序列化成字符串塞進(jìn)redis的列表,另一個線程從這個列表中輪詢數(shù)據(jù)進(jìn)行處理。

    當(dāng)列表彈出了最后一個元素之后,該數(shù)據(jù)結(jié)構(gòu)自動被刪除,內(nèi)存被回收。

    參考資料 操作實(shí)例 右進(jìn)左出(隊(duì)列)

    > rpush nums 1 2 3

    (integer) 3

    > llen nums

    (integer) 3

    > lpop nums

    "1"

    > lpop nums

    "2"

    > lpop nums

    "3"

    > lpop nums

    (nil)

    右進(jìn)右出(棧)

    > rpush nums 4 5 6

    (integer) 3

    > rpop nums

    "6"

    > rpop nums

    "5"

    > rpop nums

    "4"

    > rpop nums

    (nil)

    Hash:

    相當(dāng)于hashmap,hash結(jié)構(gòu)也可以存儲用戶的信息,可以對用戶結(jié)構(gòu)中的每個字段單獨(dú)存儲, 這樣當(dāng)我們需要獲取用戶信息時可以進(jìn)行部分獲取。

    參考資料 操作實(shí)例

    > hset books java "think in java"  # 命令行的字符串如果包含空格,要用引號括起來(integer) 1

    > hset books golang "concurrency in go"

    (integer) 1

    > hset books python "python cookbook"

    (integer) 1

    > hgetall books  # entries(),key 和 value 間隔出現(xiàn)1) "java"

    2) "think in java"

    3) "golang"

    4) "concurrency in go"

    5) "python"

    6) "python cookbook"

    > hlen books

    (integer) 3

    > hget books java

    "think in java"

    > hset books golang "learning go programming"  # 因?yàn)槭歉虏僮,所以返?0(integer) 0

    > hget books golang

    "learning go programming"

    > hmset books java "effective java" python "learning python" golang "modern golang programming"  # 批量 setOK

    Set:

    相當(dāng)于Hashset,內(nèi)部的鍵值對是無序的惟一的,set結(jié)構(gòu)可以存儲活動中中獎的用戶ID,因?yàn)橛腥ブ氐墓δ埽梢员WC同一個用戶不會中獎兩次。

    參考資料 操作實(shí)例

    > sadd books python

    (integer) 1

    > sadd books python  #  重復(fù)

    (integer) 0

    > sadd books java golang

    (integer) 2

    > smembers books  # 注意順序,和插入的并不一致,因?yàn)?set 是無序的1) "java"

    2) "python"

    3) "golang"

    > sismember books java  # 查詢某個 value 是否存在,相當(dāng)于 contains(o)(integer) 1

    > sismember books rust

    (integer) 0

    > scard books  # 獲取長度相當(dāng)于 count()

    (integer) 3

    > spop books  # 彈出一個

    "java"

    zset:

    類似于SortedSet和HashMap的結(jié)合體,set既可以保證value的唯一性,另一方面可以給每個value 賦予一個值,代表著排序權(quán)重 zset 可以用來存儲粉絲列表,value值是粉絲的用戶ID,score是關(guān)注時間,對粉絲類表按照關(guān)注時間進(jìn)行排序 參考資料 操作實(shí)例> zadd books 9.0 "think in java"

    (integer) 1

    > zadd books 8.9 "java concurrency"

    (integer) 1

    > zadd books 8.6 "java cookbook"

    (integer) 1

    > zrange books 0 -1  # 按 score 排序列出,參數(shù)區(qū)間為排名范圍1) "java cookbook"

    2) "java concurrency"

    3) "think in java"

    > zrevrange books 0 -1  # 按 score 逆序列出,參數(shù)區(qū)間為排名范圍1) "think in java"

    2) "java concurrency"

    3) "java cookbook"

    > zcard books  # 相當(dāng)于 count()

    (integer) 3

    > zscore books "java concurrency"  # 獲取指定 value 的 score"8.9000000000000004"  # 內(nèi)部 score 使用 double 類型進(jìn)行存儲,所以存在小數(shù)點(diǎn)精度問題> zrank books "java concurrency"  # 排名

    (integer) 1

    > zrangebyscore books 0 8.91  # 根據(jù)分值區(qū)間遍歷 zset1) "java cookbook"

    2) "java concurrency"

    > zrangebyscore books -inf 8.91 withscores # 根據(jù)分值區(qū)間 (-∞, 8.91] 遍歷 zset,同時返回分值。inf 代表 infinite,無窮大的意思。

    1) "java cookbook"

    2) "8.5999999999999996"

    3) "java concurrency"

    4) "8.9000000000000004"

    > zrem books "java concurrency"  # 刪除 value(integer) 1

    > zrange books 0 -1

    1) "java cookbook"

來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。


電腦語言Redis學(xué)習(xí)總結(jié)》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://m.seogis.com/gongwen/192700.html
相關(guān)文章