search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

java大型分散式應用系統構架之Redis內存資料庫

ava升職加薪必備術之Redis內存資料庫

1. Redis 有什麼用

1.1. Redis的作用和地位

Redis的主要作用一句話來概括就是 能夠快速存取

如下圖所示:以電商平台架構為例,Redis在系統架構中的位置,它是擋在關係型資料庫前面的一道快速讀取數據的屏障,極大的緩解了關係型數據的讀取壓力,使整個系統的在數據存取的瓶頸得到了極大的改善。

Redis在大型分散式系統架構中主要的一些應用場景包括 單點登陸系統的許可權驗證,直播平台的好友列表顯示,商品秒殺活動的剩餘商品數目,電商網站的商品排行,網站的訪問數量統計等高併發訪問的功能需求,接下來我們在介紹Redis支持的數據類型裡面會一一介紹此些場景的操作。

2. Redis怎麼用

Redis的官網地址: https://redis.io/

Redis最新版本:3.2.9

Redis資料庫服務啟動: 在linux下面啟動Redis資料庫服務:./redis-server /etc/redis.conf

Redis客戶端:啟動客戶端鏈接資料庫 ./redis-cli -h 127.0.0.1 -p 6379

2.1. Redis的五大數據類型以及應用場景

Redis一共有五種數據類型來支持各種應用場景,String /Hash/List/Set/Zset

接下來我們一一介紹。

2.1.1. String類型

K-V格式中 V是一個字元串(數字)

基本的操作語法如下:

單個設值取值 : set k1 v1 get k1

多個設置取值 mset k1 v1 k2 v2 mget k1 k2

刪除key del k1

注意: 當value是數字時,可以遞增,可以進行遞增遞減操作 比如INCR K1, DECR K1

實際應用場景: 如下圖所示 秒殺商品數目或者點贊的操作

2.1.2. Hash 數據類型

K-V格式中 V是一個Hash類型 ,類似於Java裡面Map<Object,Object>

基本的操作語法如下:

設置對象的某個屬性 hset student:001 id 1

設置對象的多個屬性hmset student:001 id 1 name xiaoxi sex boy height 180

獲取對象的單個屬性 hget student:001 id /hget strudent name

獲取對象的多個屬性 hmget student:001 id name

獲取對象所有的屬性 hgetall student

刪除一個或多個欄位 hdel stduent id name

實際應用場景 : 如下圖所示,電商網站中商品的詳細信息可以存儲在Redis中,不需要每次都訪問關係型資料庫。

2.1.3. list數據類型

K-V格式中 V是一個list類型 ,類似與java裡面的LinkedList 有序列表

基本的操作語法如下:

從左邊插入記錄 lpush comment:1 1 2 3

從右邊插入記錄 rpush comment:1 4 5 6

把它看成一個竹子,從竹子兩端插入數據 上面插入的記錄排列如下。

3 2 1 4 5 6

刪除就是彈出左邊彈出,右邊彈出 lpop commet:1 1/ rpop commet:1 1

獲取list長度 llen comment:1

獲取list lrange start end 適用分頁

應用場景: 如下圖所示: 商品的評論表,最新的評論顯示在最前面,而且可以分頁顯示

2.1.4. set數據類型

K-V格式中 V是一個set類型,和list的不同的地方就是set是無序的而且裡面的元素有唯一性

基本的操作語法如下:

增加元素 sadd keven_friends xiaoxi xiaohei

刪除元素 srem keven_friends xiaoxi

查看元素 smember keven_friends

查看元素個數 scard keven_friends

是否存在某個元素 sisimember keven_friends xiaoxi

集合運算 交集/並集 sinter key1 key2 / sunion key1 key2

應用場景: 如下圖所示,set數據類型主要應用在 獨立IP投票的限制/微信朋友圈的查看許可權(共同好友)

* Zset (sorted set) 有序集合

K-V格式中 V是一個有序set類型 怎麼做到有序呢,其實就是給它增加一個分數

基本的操作語法如下:

增加商品的銷售量對象 zadd phone_sales 100 huawei 99 iphone 98 vivo 97 oppo

獲取某個商品的銷售值 zscore phone_sales oppo

獲取分數範圍的商品列表 zrange phone_sales 0 -1 withscores /從小到大

獲取分數範圍的商品列表 zrevrange phone_sales 0 -1 withscores /從大到小

增加商品銷售量 zincreby phone_sales 1 huawei

應用場景: 如下圖所示,Zset 數據類型主要應用在一些臨時統計的商品銷售排行榜的業務情景

以上給大家介紹的一些內容僅僅是Redis的一些基礎入門知識,同樣Redis雖然是內存數據,但是也可以同其他資料庫一樣進行數據的持久化,以及進行主從分配和集群,在這裡就不再詳細描述 .我會在分享課上分享的,想要系統的學習java分散式可以加我1459956873,我會分享課上分享

Lucene 全文檢索技術

高併發編程之NIO流行框架之Netty

Redis內存資料庫

Duboo框架的應用場景和應用方式。

ActivMQ 分散式消息匯流排

還有更多精彩類容不容錯過,有想學習java分散式的夥伴嗎?



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦