成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

全棧必備 Redis基礎

存儲 存儲軟件 Redis
從個人電腦上的軟件到基于計算機網(wǎng)絡的分布式系統(tǒng),存儲系統(tǒng)更是基礎環(huán)節(jié),而且還承擔著整個系統(tǒng)的數(shù)據(jù)責任。

 從個人電腦上的軟件到基于計算機網(wǎng)絡的分布式系統(tǒng),存儲系統(tǒng)更是基礎環(huán)節(jié),而且還承擔著整個系統(tǒng)的數(shù)據(jù)責任。

[[334226]]

應用程序離不開數(shù)據(jù)存儲,關系型數(shù)據(jù)庫的誕生為軟件系統(tǒng)的發(fā)展揭開了一個新的時代,而互聯(lián)網(wǎng)應用中大量的非結構化數(shù)據(jù)為非關系型數(shù)據(jù)庫——NoSQL,提供了廣泛的應用場景。

NoSQL 技術與高伸縮性無縫融合,很多技術同時具備了高分布性和高性能, 也是大數(shù)據(jù)分析的存儲基石。大多數(shù)時間里,它們使 現(xiàn)有RDBMS 技術所實現(xiàn)的架構更加完整,例如 作為緩存服務器,搜索引擎,非結構化存儲,易變信息存儲等。大約可以分為4類:

  • Key/value型NoSQL
  • 列存儲型NoSQL
  • 面向文檔的存儲型NoSQL
  • 圖存儲型NoSQL

關于這些NoSQL 的應用場景可以參見《NoSQL 之于大數(shù)據(jù)》。

面對這些NoSQL, 如果只需掌握一種NoSQL,那可能就是key/value型的Redis了。

什么是Redis

Redis 是一個開源(BSD許可)的,內(nèi)存中的數(shù)據(jù)結構存儲系統(tǒng),它可以用作數(shù)據(jù)庫、緩存和消息中間件。

它支持多種類型的數(shù)據(jù)結構,如字符串, 散列, 列表, 集合, 有序集合與范圍查詢, bitmaps, hyperloglogs 和 地理空間(geospatial) 索引半徑查詢。

Redis 內(nèi)置了復制,LUA腳本, LRU驅(qū)動事件,事務和不同級別的磁盤持久化, 并通過 Redis哨兵(Sentinel)和自動分區(qū)(Cluster)提供高可用性。

以上來自redis.cn 上的介紹,簡單的說,Redis是一個支持多種數(shù)據(jù)結構并且能夠持久化的高性能NoSQL 數(shù)據(jù)庫。

Redis 的存儲實現(xiàn)

Redis作為一個性能高達10萬qps的key/value存儲類型的NoSQL數(shù)據(jù)庫,大致的存儲實現(xiàn)體系如下:

 

一個RedisServer包含了N個redisDb,redisDb有dict的指針和失效時間的指針,核心是dictEntry 指針鏈表的指針,每一個具體的dictEntry鏈表節(jié)點存儲了任意類型的key 和 value,不論是key還是value 都可以是redisObject。可以認為,指針鏈表的特性對redis的性能做出重要的作用。

Redis 中的數(shù)據(jù)結構與存儲實現(xiàn)關系如下:

 

INT壓縮存儲String,常量數(shù)字對象是共享的。SDS 存儲string,變長的字符數(shù)組以及共享的常用字符串等。雙端列表LINKEDLIST來存儲list,支持雙向遍歷。HT是hash表,存儲set和hash,根據(jù)填充率縮放,支持事件觸發(fā)。INTSET壓縮存儲set,編碼為int16_t/ int32_t/ int64_t。SKIPLIST存儲有序集,聯(lián)合dict處理zset。ZIPLIST通過雙端指針壓縮存儲hash、list和zset。

Redis存儲實現(xiàn)中的網(wǎng)絡模型支持Epoll/Select/Kqueue等,事件模型主要是TimeEvent/FileEvent。由于FileEvent處理器是單線程的,所以 redis 是單線程的模型。Redis 單線程模型是純內(nèi)存操作,核心是基于非阻塞的 IO 多路復用機制,單線程反而避免了多線程的頻繁上下文切換問題,因而整體的存儲實現(xiàn)性能很高。

Redis 的常見命令集

Redis 簡潔易用,為了方便記憶,命令集分類如下:

 

 

訪問Redis的客戶端類型豐富,幾乎涵蓋了大多數(shù)的主流編程語言:

 

Redis 的集群部署

Redis 自2.4 版本開始就可以在生產(chǎn)環(huán)境上穩(wěn)定可用了,在2.6版本引入了Lua腳本和Watch dog,2.8版本對主從同步進行了優(yōu)化,并開始支持Sentinel 和 HyperLog。Redis 2.x 的集群主要是通過主從同步實現(xiàn)的,數(shù)據(jù)是異步復制和增量同步。

有限狀態(tài)機在主從同步和數(shù)據(jù)持久化方面起到了重要的作用。數(shù)據(jù)持久化是通過快照實現(xiàn)的,通信協(xié)議是RESP,一種便于實現(xiàn)和理解的二進制安全協(xié)議。AOF 最終通過fsync寫入磁盤實現(xiàn)數(shù)據(jù)的持久化。

從3.0開始,Redis 支持cluster,cluster內(nèi)部的各節(jié)點間采用的Gossip分布式協(xié)議。通過多數(shù)原則判斷節(jié)點是否宕機,由gossip協(xié)議傳播判活信息,選舉出新的替代者,由gossip協(xié)議傳播選舉結果。

 

Redis 集群可以實現(xiàn)自動故障切換,副本遷移和在線的重新分片。分片變化,數(shù)據(jù)遷移同樣通過gossip協(xié)議達成一致。

然而,Redis cluster 同樣存在著不足,例如隨著節(jié)點的增加,故障切換會有大幅的增加,gossip傳播信息需要一段時間,整機房切換比較慢。按key同步阻塞的遷移對讀寫影響較大,Gossip協(xié)議的調(diào)試非常困難,給故障的排除會帶來諸多的不便。

關注redis 的官方網(wǎng)站,可以看到redis 4.0 以來的諸多新變化。

Redis 的常見應用

Redis 的應用十分廣泛,在key/value 的NoSQL中有著突出的性能體現(xiàn),甚至和文檔型NoSQL——MongoDB 在某些方面有著類似的作用。Redis, Memcache和MongoDB 的對比如下圖所示:

 

根據(jù)用戶標識獲取用戶的相關數(shù)據(jù)在互聯(lián)網(wǎng)應用中是一種常見的場景,這類數(shù)據(jù)具有讀寫量大,但單條數(shù)據(jù)不長,并且對某些字段經(jīng)常進行更新等特點,一般都會使用redis 這樣類型key/value 數(shù)據(jù)庫來實現(xiàn)。Redis在內(nèi)存中對數(shù)字進行遞增或遞減的操作實現(xiàn)的非常好。集合(Set)和有序集合(Sorted Set)也使得在執(zhí)行這些操作時非常簡單,Redis正好提供了這兩種數(shù)據(jù)結構,因而對排行榜類的場景

對于分布式鎖的業(yè)務,Redis 可以提供高性能的分布式鎖服務,例如電商業(yè)務的秒殺場景,全局自增ID等等。

對于系統(tǒng)架構而言, Redis 有時候甚至成為了緩存的代名詞,關于Redis 在分布式緩存方面的各種應用,可以參考《深入分布式緩存——從原理到應用》一書中的諸多章節(jié)。

深入Redis,還可以發(fā)現(xiàn)很多有趣的用法,例如將redis 作為消息隊列等等,一文難以描述Redis,但可以作為全棧需要掌握的一個基礎。

【參考閱讀】

https://www.redislabs.com/

https://www.redis.io/

http://www.redis.cn/

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2017-04-06 10:27:01

JavaScript基礎Java

2021-06-01 07:16:21

C語言基礎代碼

2017-06-13 15:10:02

大數(shù)據(jù)Log日志

2017-06-13 08:55:29

Log日志MySQL

2017-10-12 14:24:24

2017-12-18 15:33:56

Java基礎編程

2017-04-12 14:45:20

數(shù)據(jù)架構數(shù)據(jù)源

2017-08-07 13:02:32

全棧必備貝葉斯

2023-12-10 20:30:51

SQL工具數(shù)據(jù)

2018-01-09 15:35:54

Python編程基礎

2015-08-17 09:27:51

全棧工程師Devops工具周期表

2023-08-21 09:51:57

全棧軟件開發(fā)

2023-07-03 00:47:23

2017-11-10 19:00:37

華為

2013-12-09 09:42:50

JavaScript全棧式

2017-07-05 11:09:35

華為開發(fā)云

2022-11-07 08:42:08

2017-07-31 12:00:42

創(chuàng)業(yè)必備工具棧

2022-07-26 07:47:14

架構

2022-12-15 08:44:52

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜成人免费视频 | 精品中文字幕在线观看 | 亚洲一页 | 国产精品永久免费观看 | 久久成人精品视频 | 天天躁日日躁狠狠躁2018小说 | 日韩网站在线观看 | 亚洲国产精品美女 | 亚洲国产成人在线观看 | 久久在看 | 亚洲成人三级 | 免费在线一区二区 | 91精品综合久久久久久五月天 | 亚洲综合色 | 高清欧美性猛交xxxx黑人猛交 | 午夜爽爽男女免费观看hd | 91九色婷婷 | 久久精品网 | 国产成人99久久亚洲综合精品 | 粉嫩国产精品一区二区在线观看 | 欧美日韩综合视频 | 婷婷成人在线 | 成人午夜激情 | 日韩在线视频免费观看 | 中文字幕一区二区三区在线乱码 | 91在线精品一区二区 | 欧美一区二区成人 | 美女久久久久久久 | 成人在线视频网 | 夜夜撸av| 精品国产欧美一区二区 | 欧美日韩视频在线播放 | 久久久精品影院 | 午夜合集| 亚洲一区 中文字幕 | 国产不卡视频 | 亚洲理论在线观看电影 | 欧美精品一区二区在线观看 | 中文字幕亚洲一区 | 成人精品福利 | 亚洲精品久久久 |