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