【Redis】2. Redis数据类型 String以及key的设置约定
學(xué)習(xí)資料
https://www.bilibili.com/video/BV1CJ411m7Gc?p=6
數(shù)據(jù)存儲(chǔ)類型介紹
業(yè)務(wù)數(shù)據(jù)的特殊性
作為緩存使用
秒殺
618活動(dòng)
雙十一活動(dòng)
排隊(duì)購(gòu)票
突發(fā)市政要聞,被強(qiáng)勢(shì)關(guān)注圍觀
在線人數(shù)
投票排行榜
附加功能
系統(tǒng)功能優(yōu)化或升級(jí)
- 單服務(wù)器升級(jí)集群
- Session管理
- Token管理
Redis 數(shù)據(jù)類型(5種常用)
- string --> String
- hash --> Hashmap
- list --> LinkList
- set --> HashSet
- sorted_set --> TreeSet
String
redis 數(shù)據(jù)存儲(chǔ)格式
- redis自身是一個(gè)Map,其中所有的數(shù)據(jù)都是采用key:value的形式存儲(chǔ)
- 數(shù)據(jù)類型指的是存儲(chǔ)的數(shù)據(jù)的類型,也就是value部分的類型,key部分永遠(yuǎn)都是字符串
String 類型 - 存儲(chǔ)的數(shù)據(jù):單個(gè)數(shù)據(jù),最賤的數(shù)據(jù)存儲(chǔ)類型,也是最常用的數(shù)據(jù)存儲(chǔ)類型
- 存儲(chǔ)數(shù)據(jù)的格式:一個(gè)存儲(chǔ)空間保存一個(gè)數(shù)據(jù)
- 存儲(chǔ)內(nèi)容:通常使用字符串,如果字符串以整數(shù)的形式展示,可以作為數(shù)字操作使用
String 類型數(shù)據(jù)的基本操作
- 添加/修改數(shù)據(jù)
set key value
- 獲取數(shù)據(jù)
get key
- 刪除數(shù)據(jù)
del key
- 添加/修改多個(gè)數(shù)據(jù)
mset key1 valueq key2 value2 …
- 獲取多個(gè)數(shù)據(jù)
mget key1 key2 …
- 獲取數(shù)據(jù)字符個(gè)數(shù)(字符串長(zhǎng)度)
strlen key
- 追加信息到原始信息后部(如果原始信息存在就追加,否則新建)
append key value
String類型數(shù)據(jù)的擴(kuò)展操作
業(yè)務(wù)場(chǎng)景
大型企業(yè)級(jí)應(yīng)用中,分表操作是基本操作,使用多張表存儲(chǔ)同類型數(shù)據(jù),但是對(duì)應(yīng)的主鍵id必須保證統(tǒng)一性,不能重復(fù)。Oracle數(shù)據(jù)庫(kù)具有sequence設(shè)定,可以解決該問(wèn)題,但是MySQL數(shù)據(jù)庫(kù)并不具有類似的機(jī)制,那么如何解決?
解決方案
- 設(shè)置數(shù)值數(shù)據(jù)增加指定范圍的值
incr key
incrby key increment
incrbyfloat key increment
- 設(shè)置數(shù)值數(shù)據(jù)減少指定范圍的值
decr key
decrby key increment
String作為數(shù)值操作
- string在redis內(nèi)部存儲(chǔ)默認(rèn)就是一個(gè)字符串,當(dāng)遇到增減類操作incr,decr時(shí)會(huì)轉(zhuǎn)成數(shù)值型進(jìn)行計(jì)算
- redis所有的操作都是原子性的,采用單線程處理所有業(yè)務(wù),命令是一個(gè)一個(gè)執(zhí)行的,因此無(wú)需考慮并發(fā)帶來(lái)的數(shù)據(jù)影響。
- 注意:按數(shù)值進(jìn)行操作的數(shù)據(jù),如果原始數(shù)據(jù)不能轉(zhuǎn)成數(shù)值,或超過(guò)了redis數(shù)值上線范圍,將會(huì)報(bào)錯(cuò)。9223372036854775807 (java中l(wèi)ong型數(shù)據(jù)最大值,Long.MAX_VALUE)
- redis用于控制數(shù)據(jù)庫(kù)表主鍵id,為數(shù)據(jù)庫(kù)表主鍵id提供生成策略,保障數(shù)據(jù)庫(kù)表的主鍵唯一性
- 此方案適用于所有數(shù)據(jù)庫(kù),且支持?jǐn)?shù)據(jù)庫(kù)集群
String 數(shù)據(jù)時(shí)效性設(shè)置
業(yè)務(wù)場(chǎng)景
場(chǎng)景一:“最強(qiáng)女生”,啟動(dòng)海選投票,只能通過(guò)微信投票,每個(gè)微信號(hào)每4個(gè)小時(shí)只能投1票。
場(chǎng)景二:電商商家開啟熱門商品推薦,熱門商品不能一直處于熱門期,每種商品熱門期維持3天,3天后自動(dòng)取消熱門
場(chǎng)景三:新聞網(wǎng)站會(huì)出現(xiàn)熱點(diǎn)新聞,熱點(diǎn)新聞最大的特征是對(duì)時(shí)效性,如何自動(dòng)控制熱點(diǎn)新聞的時(shí)效性
解決方案
- 設(shè)置數(shù)據(jù)具有指定的生命周期
setex key seconds value
psetex key milliseconds value
Tips 2:
- redis 控制數(shù)據(jù)的生命周期,通過(guò)數(shù)據(jù)是否失效控制業(yè)務(wù)行為,適用于所有具有時(shí)效性限定控制的操作
String 類型的注意事項(xiàng)
- 數(shù)據(jù)操作不成功的反饋與數(shù)據(jù)正常操作之間的差異
1、表示運(yùn)行結(jié)果是否成功
?(integer)0–>false 失敗
?(integer)1–>true 成功
2、表示運(yùn)行結(jié)果值
?(integer)3–>3 3個(gè)
?(integer)1–>1 1個(gè) - 數(shù)據(jù)未獲取到
(nil)等同于null - 數(shù)據(jù)最大存儲(chǔ)量
512MB - 數(shù)值計(jì)算最大范圍(java中的long的最大值)
String類型應(yīng)用場(chǎng)景
業(yè)務(wù)場(chǎng)景
主頁(yè)高頻訪問(wèn)信息顯示控制,例如新浪微博大V主頁(yè)顯示粉絲數(shù)與微博數(shù)量
- redis用于各種結(jié)構(gòu)型和非結(jié)構(gòu)型高熱度數(shù)據(jù)訪問(wèn)加速
key的設(shè)置約定
- 數(shù)據(jù)庫(kù)中的熱點(diǎn)數(shù)據(jù)key命名慣例
總結(jié)
以上是生活随笔為你收集整理的【Redis】2. Redis数据类型 String以及key的设置约定的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Redis】1.Redis入门简介以及
- 下一篇: 【Redis】3. Redis数据类型