亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景

    1.string類型

    1-1 string類型數(shù)據(jù)的基本操作

    添加 / 修改數(shù)據(jù):set key value

    獲取數(shù)據(jù):get key

    刪除數(shù)據(jù):del key

    添加 / 修改多個(gè)數(shù)據(jù):mset key value key1 value1

    獲取多個(gè)數(shù)據(jù):mget key key1

    追加信息到原始數(shù)據(jù)后邊(不存在時(shí)則添加):append key value

    1-2 string類型 增減操作

    設(shè)置數(shù)值增加指定范圍的值:incr key 默認(rèn)每次加1 | incrby key value 每次新增value
    設(shè)置數(shù)據(jù)減少指定范圍:decr key | decrby key value 跟新增是一回事

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

    控制數(shù)據(jù)庫表主鍵id,為數(shù)據(jù)庫表提供主鍵生成策略,保證數(shù)據(jù)表主鍵的一致性。

    1-3 string類型 時(shí)效操作

    設(shè)置過期時(shí)間:setex key seconds value

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

    實(shí)現(xiàn)限制時(shí)間投票功能:例如一個(gè)微信一個(gè)小時(shí)可以投一次
    實(shí)現(xiàn)熱點(diǎn)信息:例如電商行業(yè)熱門商品、新聞網(wǎng)站熱門新聞

    1-4 string類型的應(yīng)用場(chǎng)景

    微博大V主頁高頻的訪問,對(duì)于粉絲數(shù)、關(guān)注數(shù)、微博數(shù)都需要時(shí)時(shí)更新。這個(gè)就屬于高頻信息了,我們就可以使用redis的string類型來解決
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景
    在redis中為大V設(shè)定用戶信息,以用戶主鍵和屬性為鍵值,以下為實(shí)現(xiàn)案例。
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景
    在這里需要簡(jiǎn)單的說一下key的命名規(guī)則:以表名+主鍵+主鍵值+字段 :字段值。以這樣的規(guī)則來命名就可以很好的來管理我們的鍵值。

    我們還可以使用另外一種方式來實(shí)現(xiàn),就是鍵后邊直接跟一個(gè)結(jié)構(gòu),例如
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景
    以上的倆種方式都是可以實(shí)現(xiàn)的,只是第一種可以很方便的對(duì)任意一個(gè)值進(jìn)行管理,第二種是改一個(gè)都得改一次,看業(yè)務(wù)場(chǎng)景,定時(shí)刷新就行。

    2. hash類型

    2-1 hash類型數(shù)據(jù)的基本操作

    添加 / 修改數(shù)據(jù):hset key field value

    獲取數(shù)據(jù):hget key field | hgetall key

    刪除數(shù)據(jù):hdel key field field1

    添加 / 修改多個(gè)數(shù)據(jù):hmset key field value field1 value1

    獲取多個(gè)數(shù)據(jù):hmget key field field1

    獲取表中字段數(shù)量:hlen key

    獲取表中是否存在某個(gè)字段:hexists key field

    2-2 hash類型數(shù)據(jù)的擴(kuò)展操作

    獲取hash表中所有的字段值:hkeys key

    獲取hash表中所有的字段值:hvals key

    設(shè)置指定字段的數(shù)值增加指定范圍的值:hincrby key field increment | hincrbyfloat key field increment

    2-3 hash業(yè)務(wù)場(chǎng)景之購(gòu)物車

    此圖來源于網(wǎng)絡(luò)非自制,只是模擬購(gòu)物車場(chǎng)景
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景
    在上圖中,我們可以看到購(gòu)物車?yán)锏男畔?,下來咱們使用redis來對(duì)這個(gè)購(gòu)物車的實(shí)現(xiàn)。

    這里實(shí)現(xiàn)了一個(gè)添加購(gòu)物車和獲取購(gòu)物車,keys的命名為 表名+主鍵+主鍵值
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景
    在上圖中,我們會(huì)有一個(gè)問題就是商品信息存儲(chǔ)會(huì)大量重復(fù),所有我們也需要將商品單獨(dú)給一直hash。如下圖,只存儲(chǔ)商品id
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景
    這里提供了倆種設(shè)置方式,一種是設(shè)置多個(gè)字段,一種是直接存儲(chǔ)為json。信息不經(jīng)常變動(dòng)的話可以使用json
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景
    給大家在提供一個(gè)方法hsetnx key field value,如果有則不進(jìn)行添加,沒有則添加。這個(gè)功能就使用在不同的用戶添加同樣的商品時(shí)不會(huì)執(zhí)行覆蓋和無用操作
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景

    3. list類型

    數(shù)據(jù)存儲(chǔ)需求:存儲(chǔ)多個(gè)數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)空間的順序進(jìn)行區(qū)分
    需要的數(shù)據(jù)結(jié)構(gòu):一個(gè)存儲(chǔ)空間保存多個(gè)數(shù)據(jù),且通過數(shù)據(jù)可以體現(xiàn)進(jìn)入順序
    list類型:保存多個(gè)數(shù)據(jù),底層使用雙向鏈表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)

    3-1 list類型數(shù)據(jù)的基本操作

    添加 / 修改數(shù)據(jù):lpush key value value1 | rpush key value value1

    獲取數(shù)據(jù):lrange key start end | lindex key index | llen key

    刪除數(shù)據(jù):rpop key | lpop key

    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景

    3-2 list類型數(shù)據(jù)的擴(kuò)展操作

    在規(guī)定時(shí)間內(nèi)獲取并移除數(shù)據(jù):blpop key1 key2 timeout | brpop key1 key2 timeout

    這個(gè)功能簡(jiǎn)單的寫一個(gè)案例,容易理解

    左邊這個(gè)終端指令執(zhí)行后會(huì)等待30秒的時(shí)間返回刪除的數(shù)據(jù)

    當(dāng)右邊的添加指令執(zhí)行后左邊會(huì)直接返回返回刪除的數(shù)據(jù)
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景

    3-3 list業(yè)務(wù)場(chǎng)景

    在上邊我們知道了list的基礎(chǔ)操作 執(zhí)行 lpop key 或者 rpop key可以從做或者從右進(jìn)行刪除,但是現(xiàn)在有個(gè)場(chǎng)景是朋友圈點(diǎn)贊業(yè)務(wù),然后從中間取消數(shù)據(jù)。案例如下圖

    我們先往list5里邊添加 a b c d
    然后移除c
    在查看就剩下a b d了
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景

    4. set類型

    新的存儲(chǔ)需求:存儲(chǔ)大量的數(shù)據(jù),在查詢方便提供更高的效率
    需要的存儲(chǔ)結(jié)構(gòu):能夠保存大量的數(shù)據(jù),高效的內(nèi)部存儲(chǔ)機(jī)制,便于查詢
    set類型:與hash存儲(chǔ)結(jié)構(gòu)完全相同,僅存儲(chǔ)鍵,不存儲(chǔ)值(nil),并且值是不允許重復(fù)的

    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景

    4-1 set類型數(shù)據(jù)的基本操作

    添加 / 修改數(shù)據(jù):sadd key member member1

    獲取數(shù)據(jù):smembers key

    刪除數(shù)據(jù):srem key member1

    獲取集合數(shù)據(jù)總量:scard key

    判斷集合中是否包含指定數(shù)據(jù):sismember key member

    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景

    4-2 set類型數(shù)據(jù)擴(kuò)展操作

    隨機(jī)獲取集合中指定數(shù)量的數(shù)據(jù):srandmember key count

    隨機(jī)獲取集合中某個(gè)數(shù)據(jù)并將改數(shù)據(jù)集移除集合:spop key

    4-3 set類型業(yè)務(wù)場(chǎng)景推薦信息

    隨機(jī)推送熱點(diǎn)信息、熱點(diǎn)新聞、熱賣旅游、應(yīng)用app推薦、關(guān)注推薦等

    由于最近咔咔在寫discuz,這個(gè)案例就以實(shí)現(xiàn)關(guān)注推薦。

    案例一:根據(jù)一定的推薦機(jī)制往set里邊存放對(duì)應(yīng)的用戶,然后每次進(jìn)行隨機(jī)獲取2位需要推薦的用戶

    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景

    案例二:根據(jù)一定的推薦機(jī)制往set里邊存放對(duì)應(yīng)的用戶,然后根據(jù)日期每天推薦的用戶都不能重復(fù)

    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景

    4-4 set類型業(yè)務(wù)場(chǎng)景挖掘用戶關(guān)系

    倆個(gè)集合的交、并、差集

    sinter key key1 sunion key key1 sdiff key key1

    倆個(gè)集合的交、并、差集并存儲(chǔ)到指定集合中

    sinterstore destination key1 key2 sunionstore destination key1 key2 sdiffstore destination key1 key2

    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景
    案例:我們需要挖掘一個(gè)信息的共同好友。例如微信公眾號(hào)的共同關(guān)注好友數(shù)量、QQ添加新好友的推薦機(jī)制、深度挖掘用戶直接的聯(lián)系

    就根據(jù)上述案例,我們可以使用差集來實(shí)現(xiàn)qq的有可能認(rèn)識(shí)的好友。

    4-5 set類型業(yè)務(wù)場(chǎng)景 實(shí)現(xiàn)網(wǎng)站的PV UV IP的記錄

    PV直接使用string類型的incr統(tǒng)計(jì)即可

    UV和IP都是獨(dú)立不重復(fù)的,使用set來操作。

    在上邊我們知道set有一個(gè)特性就是不能重復(fù),我們就可以根據(jù)這一點(diǎn)來輕松實(shí)現(xiàn)這個(gè)功能。然后使用scard key 來統(tǒng)計(jì)數(shù)量。

    至于UV是獨(dú)立訪客,使用本地的cookie來實(shí)現(xiàn)就可以,方法一樣把cookie傳給redis做記錄即可
    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景

    5. sorted_set類型

    在之前的四個(gè)類型中都不支持排序的,下來咱們看的sorted_set類型是既支持存儲(chǔ)大數(shù)據(jù),也支持排序功能

    5-1. sorted_set類型基本操作

    添加數(shù)據(jù):zadd key score member

    獲取數(shù)據(jù):zrange key start stop | zrevrange key start stop

    刪除數(shù)據(jù):zrem key member

    一文搞定Redis五大數(shù)據(jù)類型及應(yīng)用場(chǎng)景
    按條件獲取數(shù)據(jù):zrangebyscore key min max limit | zrevrangescore key max min

    條件刪除數(shù)據(jù):zremrangebyrank key start stop | zremrangebyscore key min max

    獲取集合數(shù)據(jù)總量:zcard key | zcount key min max

    集合交、并操作:zinterstore destination numkeys key | zunionstore destination numkeys key(這個(gè)指令就不做演示了,可以自己查看文檔。跟set有點(diǎn)類似,只不過會(huì)把所有交集的和給加起來。然后這里邊有個(gè)numkeys這個(gè)參數(shù)是一共幾個(gè)key進(jìn)行計(jì)算 后邊的key就需要幾個(gè))

    獲取數(shù)據(jù)對(duì)應(yīng)的索引:zrank key member | zrevrank key member

    socre值獲取與修改:zscore key member | zincrby key increment member

    總結(jié)

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)