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

淺談redis緩存在項(xiàng)目中的使用

 更新時(shí)間:2021年05月20日 09:41:59   作者:獨(dú)寵子沫  
最近由于項(xiàng)目需要,在系統(tǒng)緩存服務(wù)部分上用到了redis,本文就淺談下在redis緩存在項(xiàng)目中的使用,感興趣的小伙伴們可以參考一下

背景

Redis 是一個(gè)開源的內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng)。

可以作為數(shù)據(jù)庫、緩存和消息中間件使用。

支持多種類型的數(shù)據(jù)結(jié)構(gòu)。

Redis 內(nèi)置了 復(fù)制(replication),LUA腳本(Lua scripting), LRU驅(qū)動(dòng)事件(LRU eviction),事務(wù)(transactions) 和不同級(jí)別的 磁盤持久化(persistence)。

通過 Redis 哨兵(Sentinel)和 Redis 集群(Cluster)的自動(dòng)分區(qū),提供高可用性(high availability)。

基本數(shù)據(jù)類型

字符串(strings)

1、string 的過期時(shí)間在重新設(shè)置值之后會(huì)被清除

127.0.0.1:6379> set hello 3OK127.0.0.1:6379> get hello"3"
127.0.0.1:6379> ttl hello(integer) -1127.0.0.1:6379> expire hello 3000
(integer) 1
127.0.0.1:6379> set hello 4OK127.0.0.1:6379> ttl hello(integer) -1

2、設(shè)置 string 類型的值可以覆蓋任何其他類型

127.0.0.1:6379> sadd settest 1,2
(integer) 1
127.0.0.1:6379> type settestset127.0.0.1:6379> set settest helloOK127.0.0.1:6379> type setteststring127.0.0.1:6379> sadd settest a,b(error) WRONGTYPE Operation against a key holding the wrong kind of value

散列(hashes)
列表(lists)
Redis lists 基于 Linked Lists 實(shí)現(xiàn)。頭尾操作極速,檢索較慢
集合(sets)
支持范圍查找的有序集合(sorted sets)
有序集合的排序默認(rèn)按照字典序排列
bitmaps
hyperloglogs
支持按半徑索引查詢的地理空間(geospatial)

應(yīng)用場景

string
緩存數(shù)據(jù)
不管是簡單和復(fù)雜的數(shù)據(jù)都可以直接轉(zhuǎn)為string存儲(chǔ)。

key:active:spring2019:title value:“2019春節(jié)活動(dòng)” 操作:set

商品信息,省市區(qū)信息,活動(dòng)配置等一系列不常變化的冷數(shù)據(jù)緩存

非常熱門數(shù)據(jù)的緩存,游戲排行,后臺(tái)每秒更新一次數(shù)據(jù)

簡單計(jì)數(shù)
2019春節(jié)活動(dòng)參加人數(shù)

key:active:spring2019:total value:3045 操作:incr

定時(shí)過期
一個(gè)人一天只能進(jìn)行一次簽到

key:active:checkin:userId:10000:day:20190101 value:簽到時(shí)間戳 操作:expire
分布式鎖
下面的代碼不嚴(yán)謹(jǐn),nx 可以放并發(fā)

127.0.0.1:6379> set lockkey 1  nxOK127.0.0.1:6379> set lockkey 1  nx(nil)

list
用戶排隊(duì)
push,pop

有序消息
push,pop

實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者模型
阻塞式訪問 BRPOP 和 BLPOP 命令

set
去重列表
2019春節(jié)活動(dòng)參加人數(shù)

key:active:spring2019:users value:100010,10020 操作:很多

標(biāo)簽
用戶標(biāo)簽

商家標(biāo)簽

春節(jié)活動(dòng)一共有 abcde 5個(gè)任務(wù),用戶A已經(jīng)完成a,b,用戶B已經(jīng)完成 c,d

交集
用戶A,用戶B 都完成的任務(wù)

并集
用戶A,用戶B 任一完成的任務(wù)

差集
用戶A還沒有完成的任務(wù)

獲取隨機(jī)元素
從禮品庫 set 中隨機(jī)獲得一個(gè)禮品

hash
同一資源的不同屬性
用戶在活動(dòng)期間一共獲得了不同種類獎(jiǎng)品數(shù)量

key:active:spring:g'ifts:user:10010 value:{“giftA”:2,“giftB”:5} 操作:很多

可以直接對(duì) giftA 執(zhí)行 incr 操作

zset
排行榜
用戶消費(fèi)排行,點(diǎn)贊排行等

key:active:spring⭐️rank value:用戶ID,score:點(diǎn)贊數(shù)量 操作:很多

根據(jù)分?jǐn)?shù)獲取 top 10

查詢某個(gè)用戶的分?jǐn)?shù)

查詢 得分在90-100 之間的用戶

有時(shí)候我們的得分并不是由某一項(xiàng)業(yè)務(wù)值決定的,可能是由兩項(xiàng)業(yè)務(wù)值來排序的,比如先看用戶的實(shí)際得分,在看用戶等級(jí),那么我們在設(shè)計(jì)score的時(shí)候可以用小數(shù)點(diǎn)之前的值表示得分,小數(shù)點(diǎn)之后的值表示等級(jí),如果有其他特殊要求,還可以考慮得分加上某個(gè)極大值來處理。

注意事項(xiàng)
每個(gè) key 都應(yīng)該有合理的失效時(shí)間

string的過期時(shí)間在重新設(shè)值后會(huì)被覆蓋

string類型的 set 操作可以覆蓋類型

合理使用相應(yīng)的數(shù)據(jù)結(jié)構(gòu)

不要用list存大量數(shù)據(jù)并檢索
合理規(guī)劃 key 的數(shù)量
判斷用戶有沒有參加應(yīng)該用set,不應(yīng)該每個(gè)用戶一個(gè)key
環(huán)境數(shù)據(jù)隔離
業(yè)務(wù)數(shù)據(jù)隔離 用戶 redis 業(yè)務(wù) redis 活動(dòng) redis 應(yīng)該做區(qū)分,活動(dòng)的 redis 在活動(dòng)結(jié)束后可以自由清理
合理使用管道,lua 腳本和 redis 事務(wù),提高性能,尤其是在腳本中使用 redis 的時(shí)候
在有大量 key 的 Reids 線上系統(tǒng),要在主庫禁用 keys * 操作,防止卡死

到此這篇關(guān)于淺談redis緩存在項(xiàng)目中的使用的文章就介紹到這了,更多相關(guān)redis緩存使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • redis中的配置以及密碼設(shè)置方式

    redis中的配置以及密碼設(shè)置方式

    這篇文章主要介紹了redis中的配置以及密碼設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • NestJS+Redis實(shí)現(xiàn)手寫一個(gè)限流器

    NestJS+Redis實(shí)現(xiàn)手寫一個(gè)限流器

    限流是大型系統(tǒng)必備的保護(hù)措施,本文將結(jié)合redis , lua 腳本 以及 Nestjs Guard 來實(shí)現(xiàn) 限流的效果,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • redis.config配置文件

    redis.config配置文件

    在使用Redis時(shí),我們通常需要對(duì)Redis進(jìn)行一些配置,以確保其能夠正常運(yùn)行并滿足我們的需求,本文主要介紹了redis.config配置文件,感興趣的可以了解一下
    2023-11-11
  • Redisson實(shí)現(xiàn)分布式鎖、鎖續(xù)約的案例

    Redisson實(shí)現(xiàn)分布式鎖、鎖續(xù)約的案例

    這篇文章主要介紹了Redisson如何實(shí)現(xiàn)分布式鎖、鎖續(xù)約,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Redis精確去重計(jì)數(shù)方法(咆哮位圖)

    Redis精確去重計(jì)數(shù)方法(咆哮位圖)

    這篇文章主要給大家介紹了關(guān)于Redis精確去重計(jì)數(shù)方法(咆哮位圖)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Redis接口訪問優(yōu)化的方法步驟

    Redis接口訪問優(yōu)化的方法步驟

    本文基于之前的Redis接口訪問進(jìn)行優(yōu)化,引入了接口防抖功能,通過時(shí)間段參數(shù)限制接口調(diào)用頻率,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • 關(guān)于Redis庫存超賣問題的分析

    關(guān)于Redis庫存超賣問題的分析

    在高并發(fā)場景下進(jìn)行優(yōu)惠券秒殺測試時(shí),發(fā)現(xiàn)由于并發(fā)操作導(dǎo)致了超賣問題,即理論上只能賣出100個(gè)優(yōu)惠券,實(shí)際賣出了102個(gè),分析原因,是因?yàn)樵诟卟l(fā)環(huán)境下,多個(gè)線程同時(shí)操作庫存,導(dǎo)致數(shù)據(jù)不一致,提出了兩種解決方案:悲觀鎖和樂觀鎖
    2024-11-11
  • Redis實(shí)現(xiàn)單設(shè)備登錄的場景分析

    Redis實(shí)現(xiàn)單設(shè)備登錄的場景分析

    這篇文章主要介紹了Redis實(shí)現(xiàn)單設(shè)備登錄,用戶首次登錄時(shí),將用戶信息存入Redis,key是用戶id,value是token,當(dāng)用戶在其他設(shè)備登錄時(shí),會(huì)重新生成token,這個(gè)時(shí)候原先的token已經(jīng)被覆蓋了,本文給大家提供樣例及核心代碼,感興趣的朋友參考下吧
    2022-04-04
  • springboot整合使用云服務(wù)器上的Redis方法

    springboot整合使用云服務(wù)器上的Redis方法

    這篇文章主要介紹了springboot整合使用云服務(wù)器上的Redis,整合步驟通過導(dǎo)入依賴,配置yml文件,注入redisTemplate結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),文中給大家分享了可能遇到的坑,感興趣的朋友跟隨小編一起看看吧
    2022-09-09
  • Redis系列之底層數(shù)據(jù)結(jié)構(gòu)SDS詳解

    Redis系列之底層數(shù)據(jù)結(jié)構(gòu)SDS詳解

    SDS(簡單動(dòng)態(tài)字符串)是Redis使用的核心數(shù)據(jù)結(jié)構(gòu),用于替代C語言的字符串,以解決長度獲取慢、內(nèi)存溢出等問題,SDS通過預(yù)分配與惰性釋放策略優(yōu)化內(nèi)存使用,增強(qiáng)安全性,且能存儲(chǔ)文本與二進(jìn)制數(shù)據(jù),可查看源碼src/sds.h和src/sds.c了解更多
    2024-11-11

最新評(píng)論

灵寿县| 崇文区| 商水县| 武山县| 宝兴县| 济南市| 普兰店市| 肃宁县| 孝义市| 桂东县| 庆阳市| 璧山县| 淮阳县| 鞍山市| 图木舒克市| 图们市| 靖安县| 香河县| 和平县| 馆陶县| 抚松县| 泰来县| 闽侯县| 灵山县| 阿尔山市| 自贡市| 南阳市| 全南县| 渝北区| 娄底市| 贺州市| 南城县| 阿瓦提县| 武山县| 陇川县| 全州县| 尚义县| 平泉县| 五常市| 开化县| 睢宁县|