不會(huì)這門技術(shù)也想年薪百萬?Redis內(nèi)存數(shù)據(jù)庫知識(shí)精講
內(nèi)存數(shù)據(jù)庫
1. Redis產(chǎn)生背景
隨著互聯(lián)網(wǎng)+大數(shù)據(jù)時(shí)代的來臨,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)不能滿足中大型網(wǎng)站日益增長的訪問量和數(shù)據(jù)量,這個(gè)時(shí)候就需要一種能夠快速存取數(shù)據(jù)的組件來緩解數(shù)據(jù)庫服務(wù)I/O壓力,來解決系統(tǒng)性能上的瓶頸。
2. Redis是什么?
Redis是開源的,高性能,C語言開發(fā)的,鍵值對(k-v)存儲(chǔ)數(shù)據(jù)的NoSQL數(shù)據(jù)庫。
Redis是分布式的內(nèi)存數(shù)據(jù)庫,讀取速度每秒能達(dá)到10W左右。而且用redis-benchmark可以測試機(jī)器性能。執(zhí)行redis-benchmark也可以看出Redis的讀取性能。Redis默認(rèn)有16個(gè)數(shù)據(jù)庫,用select可以切換Redis的數(shù)據(jù)庫,下角標(biāo)是從0開始的。在redis.conf文件中也可以找到databases 16。Redis默認(rèn)端口6379。
2.1 NoSQL數(shù)據(jù)庫是什么?
NoSQL:Not noly SQL,泛指非關(guān)系型數(shù)據(jù)庫,例如MongoDB、Redis
3. 數(shù)據(jù)庫應(yīng)用的發(fā)展歷史
(1).在互聯(lián)網(wǎng)大數(shù)據(jù)時(shí)代來臨之前,企業(yè)的一些內(nèi)部信息管理系統(tǒng),一個(gè)單一數(shù)據(jù)庫實(shí)例可以應(yīng)付系統(tǒng)的需求
❦單數(shù)據(jù)庫實(shí)例
(2).隨著系統(tǒng)訪問量用戶的增多,數(shù)據(jù)量的增大,單個(gè)數(shù)據(jù)庫實(shí)例已經(jīng)瞞住不了系統(tǒng)讀取數(shù)據(jù)的需求
❦緩存(memcache)+數(shù)據(jù)庫實(shí)例
(3).緩存可以緩解數(shù)據(jù)庫的讀取壓力,但是數(shù)據(jù)量的寫入壓力持續(xù)增大,可以采取數(shù)據(jù)庫主從進(jìn)行讀寫分離
❦緩存+主從數(shù)據(jù)庫+讀寫分離
(4).數(shù)據(jù)量再次增大,讀寫分離以后,主數(shù)據(jù)庫的寫庫壓力出現(xiàn)瓶頸
❦緩存+主從數(shù)據(jù)庫集群+讀寫分離+分庫分表
(5).互聯(lián)網(wǎng)+大數(shù)據(jù)時(shí)代來臨,關(guān)系型數(shù)據(jù)庫不能很好的存取一些并發(fā)性大,實(shí)時(shí)性高而且格式不固定的數(shù)據(jù)
❦NoSQL+主從數(shù)據(jù)庫集群+讀寫分離+分庫分表
4. Redis有什么用?
redis的主要作用:快速存取
Redis的應(yīng)用場景?
單點(diǎn)登錄/直播平臺(tái)在線好友列表/搶購/秒殺/商品的排行/點(diǎn)贊/數(shù)據(jù)過期
Redis怎么用?
官網(wǎng)地址:redis,io
命令地址:http://doc.redisfans.com/
***版本:3.2.9
應(yīng)用版本:3.0.4
5. Redis的五大數(shù)據(jù)類型以及應(yīng)用場景
*String類型
k-v格式中V的數(shù)據(jù)類型是String,一個(gè)redis字符串value最多可以存512M
應(yīng)用場景:秒殺商品/點(diǎn)贊
設(shè)值 set key value
取值 get key
刪除 del key
incr key 遞增加1
decr key 遞減減1
incrby key 2 遞增加 2
decrby key 2 遞減減2
*Hash類型
k-v格式中V的數(shù)據(jù)類型是hash。
應(yīng)用場景:電商網(wǎng)站中的商品詳細(xì)信息
設(shè)值:hset mobile id 1 設(shè)值mobile id 為1
取值:hget mobile id
批量設(shè)值:hmset mobile_huawei id 1 name huaweip10 price 5600
批量取值:hgetall mobile_huawei
刪除 del key
*List類型
k-v格式中V的數(shù)據(jù)類型是List。
應(yīng)用場景:獲取分頁/商品評論表
從左邊插入記錄:lpush comment:1 1 2 3
從右邊插入記錄:rpush comment:1 4 5 6
插入后comment:1 的數(shù)據(jù)為:3 2 1 4 5 6
從左邊彈出記錄:lpop comment:1 彈出3
從右邊彈出記錄:rpop comment:1 彈出6
獲取分頁:lrangge comment:1 start end
rpush list01 1 1 2 2 3 3 4 4 插入數(shù)據(jù)
刪除:lrem list01 2 3 刪除2個(gè)3
*Set類型
k-v格式中V的數(shù)據(jù)類型是set和list不同是:list是有序的,set是無序的,且具有唯一性
應(yīng)用場景:微信朋友圈查看權(quán)限/獨(dú)立IP投票限制
增加:sadd set01 1 1 2 2 3 3
去掉重復(fù)數(shù)據(jù)添加1 2 3,因?yàn)閟et具有唯一性。插入重復(fù)數(shù)據(jù)直接會(huì)過濾掉
添加朋友圈juran sadd friends:juran a b c
添加朋友圈xxxx sadd friends:xx b c
查看集合的交集:sinter friends:juran friends:xx
*Zset類型
k-v格式中v的數(shù)據(jù)類型是zset,有序的
應(yīng)用場景:商品的銷售排行
增加 zadd mobile:sales 100 huawei 99 ipx 98 vivo 97 oppo
從小到大獲取商品:zrange moblie:sales 0 -1
從大到小獲取商品:zrevrange mobile:sales 0 -1
如果想帶上數(shù)量可以加上參數(shù),withscores