成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

HotFrameLearning Redis_01_簡(jiǎn)介

focusj / 2543人閱讀

摘要:收到后則會(huì)調(diào)用指令一個(gè)子進(jìn)程來(lái)持久化存儲(chǔ)的數(shù)據(jù),在的持久化的這個(gè)短短期間內(nèi),的指令則存儲(chǔ)到內(nèi)存中。經(jīng)過(guò)官網(wǎng)的測(cè)試性能結(jié)果達(dá)到的。

HotFrameLearning Redis_01_簡(jiǎn)介

-

一、大致介紹
1、介紹Redis之前,我有一堆的疑問(wèn),Redis是什么?有什么用?它能干什么?有什么特性?能解決我們?nèi)粘5哪男﹩?wèn)題?
   為什么要用Redis?Redis好在哪里?除了Redis外還有其他替代方案么?
2、對(duì)于還沒(méi)了解過(guò)Redis的童鞋,可以帶著這些疑問(wèn)往下看,而對(duì)于了解過(guò)Redis的童鞋那就走過(guò)路過(guò)不要錯(cuò)過(guò)^_^。
3、另外目前討論的版本也是比較新的版本3.x版本;
二、簡(jiǎn)單認(rèn)識(shí)Redis 2.1 何為Redis?
   Redis 是一個(gè)開(kāi)源的基于內(nèi)存的數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)媒介,多用于數(shù)據(jù)庫(kù)、緩存以及消息代理。
   再簡(jiǎn)言之,Redis 是一個(gè)基于內(nèi)存的 key-value 數(shù)據(jù)庫(kù)。
2.2 原滋原味解釋
原文地址:https://redis.io/topics/introduction

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.

You can run atomic operations on these types, like appending to a string; incrementing the value in a hash; pushing an element to a list; computing set intersection, union and difference; or getting the member with highest ranking in a sorted set.

In order to achieve its outstanding performance, Redis works with an in-memory dataset. Depending on your use case, you can persist it either by dumping the dataset to disk every once in a while, or by appending each command to a log. Persistence can be optionally disabled, if you just need a feature-rich, networked, in-memory cache.

Redis also supports trivial-to-setup master-slave asynchronous replication, with very fast non-blocking first synchronization, auto-reconnection with partial resynchronization on net split.

Other features include:

Transactions
 - Pub/Sub
 - Lua scripting
 - Keys with a limited time-to-live
 - LRU eviction of keys
 - Automatic failover
You can use Redis from most programming languages out there.

Redis is written in ANSI C and works in most POSIX systems like Linux, *BSD, OS X without external dependencies. Linux and OS X are the two operating systems where Redis is developed and more tested, and we recommend using Linux for deploying. Redis may work in Solaris-derived systems like SmartOS, but the support is best effort. There is no official support for Windows builds, but Microsoft develops and maintains a Win-64 port of Redis.
三、Redis的一些特性 3.1 數(shù)據(jù)類型
   Redis支持多種數(shù)據(jù)結(jié)構(gòu),這也是它的亮點(diǎn)所在,除外Redis的單個(gè)Value最大限制為1GB,已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)memcached的
1MB的大小限制。下面我們看看它有哪些數(shù)據(jù)類型,能干什么用,內(nèi)部結(jié)構(gòu)是怎么樣的。

    ? strings:字符串類型,最基本的數(shù)據(jù)類型,通常來(lái)存儲(chǔ)基本的字段值;
    ? hash:是一個(gè)string類型的Field和Value之間的映射表,通常用來(lái)存儲(chǔ)一個(gè)對(duì)象中各個(gè)Key與Value信息的映射;
    ? lists:元素都是string類型的雙向鏈表,通常用來(lái)存儲(chǔ)好友列表,粉絲列表,前十首熱門歌曲,最新消息排行等;
    ? set:是一個(gè)無(wú)序的string類型數(shù)據(jù)的集合,其內(nèi)部用的是HashMap實(shí)現(xiàn),只是Value都是空的而已,通常用來(lái)對(duì)數(shù)據(jù)
      做交集、并集、差集等操作,因此就有類似共同好友,共同興趣等業(yè)務(wù)數(shù)據(jù)應(yīng)運(yùn)而生;
    ? sortset:有序set,其內(nèi)部?jī)H僅只是在set基礎(chǔ)上新增了一個(gè)排序score字段,通常用于具有排序功能的業(yè)務(wù)數(shù)據(jù)展示;
3.2 持久化
   Redis 提供了兩種持久化方式,一個(gè)是RDB(Redis DataBase),另一個(gè)是AOF(Append Only File),至于說(shuō)誰(shuí)好誰(shuí)差
呢?應(yīng)該說(shuō)各有所長(zhǎng),然而官網(wǎng)卻建議我們兩者結(jié)合使用,雙保險(xiǎn)嘛。   

    ? RDB:就是在不同的時(shí)間點(diǎn)生成的快照文件并存儲(chǔ)到硬盤上;
    ? AOF:就是將redis的那些寫指令記錄下來(lái),目的就是為了下次redis重啟時(shí)可以快速執(zhí)行這些指令恢復(fù)數(shù)據(jù);
    
   不過(guò)既然用到Redis存儲(chǔ),個(gè)人建議如果大家沒(méi)有什么特殊的持久化需求的話,完全不用理會(huì)這兩種持久化的方式,直接
關(guān)閉即可,因?yàn)閞edis本來(lái)擅長(zhǎng)的領(lǐng)域就是內(nèi)存數(shù)據(jù)庫(kù),對(duì)于持久化存儲(chǔ)方面不擅長(zhǎng)。   
3.3 主從同步
   Redis 所謂的主從一方面可是一主有多從,但是另外一方面每個(gè)從節(jié)點(diǎn)也可以有多個(gè)從節(jié)點(diǎn)。而這樣做的目的其實(shí)很簡(jiǎn)
單,一來(lái)是為了提升讀的性能,二來(lái)也是為了去中心化增加數(shù)據(jù)冗余備份。一旦主節(jié)點(diǎn)掛了,從節(jié)點(diǎn)就得立馬頂上去。
   
   然而主從之間的同步的思路也是挺簡(jiǎn)單的,都是slave主動(dòng)向master發(fā)出sync指令,意思就是告訴master,slave需要同
步數(shù)據(jù)啦。master收到sync后則會(huì)調(diào)用bgsave指令fork一個(gè)子進(jìn)程來(lái)持久化存儲(chǔ)master的數(shù)據(jù),在master的持久化的這個(gè)
短短期間內(nèi),master的write指令則存儲(chǔ)到內(nèi)存中。待master的子進(jìn)程持久化完成后則將持久化的這個(gè)文件發(fā)送給slave節(jié)點(diǎn),
待slave接收完成并將數(shù)據(jù)加載到slave內(nèi)存中,然后master節(jié)點(diǎn)還會(huì)將持久化期間緩存的write指令再次發(fā)給slave節(jié)點(diǎn)。
3.4 發(fā)布訂閱
   該發(fā)布訂閱,和我們常用的MQ發(fā)送訂閱的模式是一樣的,支持訂閱單個(gè)頻道,也支持訂閱多個(gè)頻道,還支持類似正則表
達(dá)式一樣的模式匹配。
3.5 事務(wù)
   Redis 也擁有自己的一套事務(wù)機(jī)制,只是這個(gè)所謂的事務(wù)機(jī)制沒(méi)有關(guān)系型數(shù)據(jù)庫(kù)那么強(qiáng)大,但是還是勉強(qiáng)夠用,其實(shí)Redis
的事務(wù),就是一組命令的集合,MULTI、EXEC、DISCARD 和 WATCH 是 Redis 事務(wù)相關(guān)的命令。既然是一組命令的執(zhí)行,那么
Redis給了我們什么樣的保證呢?來(lái)保證執(zhí)行不被其他命令打斷或篡改呢?

    ? 保證一:事務(wù)是一個(gè)多帶帶的隔離操作,所有命令被序列號(hào)有序執(zhí)行;
    ? 保證二:事務(wù)是一個(gè)原子操作,要么全部執(zhí)行,要么全部不執(zhí)行;

   然而在實(shí)際應(yīng)用中總是那么差強(qiáng)人意,事務(wù)中如果是因?yàn)檎Z(yǔ)法錯(cuò)誤的話,則是不會(huì)提交事務(wù),但是如果是運(yùn)行時(shí)錯(cuò)誤的
話,那就完蛋了,所有命令都會(huì)被執(zhí)行,沒(méi)有回滾機(jī)制,難道就沒(méi)有解救措施了么,這個(gè)還真沒(méi)有,運(yùn)行時(shí)錯(cuò)誤是編程時(shí)
需要杜絕的,這樣的話其實(shí)也不存在需要什么回滾操作,一切順其自然一氣呵成。

   當(dāng)然Redis還提供一個(gè)WATCH命令,來(lái)防止EXEC執(zhí)行后發(fā)現(xiàn)值被篡改的話,則EXEC也照樣返回失敗處理;
3.6 Lua腳本
    Lua腳本功能是Reids 2.6版本的最大亮點(diǎn),通過(guò)內(nèi)嵌對(duì)Lua環(huán)境的支持,解決了長(zhǎng)久以來(lái)不能高效地處理CAS命令的缺點(diǎn), 
并且可以通過(guò)組合使用多個(gè)命令, 輕松實(shí)現(xiàn)以前很難實(shí)現(xiàn)或者不能高效實(shí)現(xiàn)的模式。
3.7 回收策略
    回收策略,還有一個(gè){{BANNED}}的輔助幫手,就是客戶端每執(zhí)行一個(gè)命令,都會(huì)檢測(cè)內(nèi)存是否超標(biāo),如果超標(biāo),果斷淘汰。
    
    六種回收策略如下:
    ? noeviction 不回收;
    ? allkeys-lru 從所有鍵中刪除最近最少使用的鍵;
    ? volatile-lru 從設(shè)置了過(guò)期時(shí)間的鍵中刪除最近最少使用的鍵;
    ? allkeys-random 從所有鍵中隨機(jī)刪除;
    ? volatile-random 從設(shè)置了過(guò)期時(shí)間的鍵中隨機(jī)刪除;
    ? volatile-ttl 從設(shè)置了過(guò)期時(shí)間的鍵中選擇存活時(shí)間最短的鍵刪除;
3.8 線程模型
    Redis 之所以有著飛一樣的讀寫速度,這還得得益于它的單進(jìn)程單線程模樣的線程模型。經(jīng)過(guò)Redis官網(wǎng)的測(cè)試性能結(jié)
果達(dá)到10W+的QPS。

    優(yōu)秀的線程模型不但簡(jiǎn)化了代碼邏輯,而且也不用考慮并發(fā),也不用考慮各種鎖的問(wèn)題,更不存在多線程切換消耗CPU
的問(wèn)題了,一切的一切,就是單線程挨個(gè)挨個(gè)執(zhí)行。

    但是這種線程模型架構(gòu)也帶來(lái)一定的問(wèn)題,犧牲了多核CPU性能,視多核CPU如無(wú)物,簡(jiǎn)直暴殄天物,反過(guò)來(lái)講,目前
得到大家的方響,也沒(méi)說(shuō)redis十分慢,若如果真的遇到了redis十分慢的話,那很有可能是開(kāi)發(fā)者的姿勢(shì)不對(duì),說(shuō)不定又
在哪里進(jìn)行了耗時(shí)的操作。
四、Redis優(yōu)缺點(diǎn) 4.1 優(yōu)點(diǎn)
    ? 速度快,10W+的QPS,而且數(shù)據(jù)結(jié)構(gòu)類似HashMap查詢復(fù)雜度低;
    ? 數(shù)據(jù)結(jié)構(gòu)相對(duì)比較豐富,而且存儲(chǔ)的Value也相對(duì)足夠大;
    ? 支持事務(wù),而且還支持Lua腳本進(jìn)行CAS操作;
    ? 主從復(fù)制,支持讀寫分離,而且還支持RDB與AOF兩種持久化方式;
4.2 缺點(diǎn)
    ? 不能充分利用多核CPU的硬件優(yōu)勢(shì);
    ? 多主多從模式中,如果某一區(qū)域獨(dú)立的主從同時(shí)掛掉且造成哈希槽的部分不可用,那么整個(gè)集群將會(huì)導(dǎo)致不可用;
    ? 網(wǎng)絡(luò)波動(dòng)會(huì)造成主從之間會(huì)進(jìn)行全量數(shù)據(jù)復(fù)制,如果快照文件過(guò)大,則會(huì)給內(nèi)存帶來(lái)非常大的壓力;
    ? 主從復(fù)制如果不在同一局域網(wǎng),則會(huì)給主從復(fù)制的性能帶來(lái)很大的損傷;
4.3 對(duì)比memcached
    ? 數(shù)據(jù)類型:Redis不僅支持簡(jiǎn)單的k/v類型,還支持list,set.zset,hash等數(shù)據(jù)結(jié)構(gòu),但memcached支持圖片視頻緩存;
    ? 存儲(chǔ)方式:Redis在物理內(nèi)存用完時(shí)還能將很少用的Value進(jìn)行磁盤存儲(chǔ),有AOF與RDB兩種持久化存儲(chǔ)方式;
    ? 主從模式:Redis支持一主多從,也可以支持多主多從,但memcached利用magent適用于一主多從;
    ? 災(zāi)難恢復(fù):Redis可以通過(guò)從AOF或RDB方式恢復(fù)數(shù)據(jù),而memcached則不可恢復(fù);
    ? 數(shù)據(jù)大小:Redis的Value最大能支撐1G大小,而memcached最大支撐只有1M;
    ? 內(nèi)存分配:Redis會(huì)浪費(fèi)一定時(shí)間去分配內(nèi)存空間,而memcached則事先就分配好了一定的Page、Slab、Chunk空間;
    ? 等等還有很多,就不一一列舉了,想了解的更多跟詳細(xì),大家可以自行約會(huì)度娘問(wèn)個(gè)究竟。
五、下載地址

https://gitee.com/ylimhhmily/HotFrameLearning.git

HotFrameLearning交流QQ群: 235322432

HotFrameLearning交流微信群: 微信溝通群二維碼圖片鏈接

歡迎關(guān)注,您的肯定是對(duì)我最大的支持!!!

-
<上一篇????????首頁(yè)????????下一篇>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71450.html

相關(guān)文章

  • HotFrameLearning 熱門框架學(xué)習(xí)(目錄)

    摘要:熱門框架學(xué)習(xí)目錄項(xiàng)目介紹專輯欄目一簡(jiǎn)介環(huán)境安裝配置客戶端連接常用命令集群搭建分布式鎖二簡(jiǎn)介環(huán)境安裝配置基本特性啟動(dòng)過(guò)程分析選舉過(guò)程主從數(shù)據(jù)同步過(guò)程分析集群搭建分布式鎖三簡(jiǎn)介環(huán)境安裝配置基本特性基本概念和模型收發(fā)消息案例架構(gòu)初識(shí)收發(fā)消息原 HotFrameLearning 熱門框架學(xué)習(xí)(目錄) - I、項(xiàng)目介紹 - II、專輯欄目 一、Redis Redis 簡(jiǎn)介 Redis 環(huán)境安裝...

    lakeside 評(píng)論0 收藏0
  • HotFrameLearning 熱門框架學(xué)習(xí)(前言)

    摘要:熱門框架學(xué)習(xí)前言一初衷知識(shí)是共享的,知識(shí)是大家的,本人也只是盡人事,幫助能幫助的人,將知識(shí)取之于民,用之于民。但游戲規(guī)則是需要服務(wù)于游戲服務(wù)于大眾的,脫離了這些,游戲規(guī)則僅僅只是一堆文字描述而已。 HotFrameLearning 熱門框架學(xué)習(xí)(前言) - 一、初衷 知識(shí)是共享的,知識(shí)是大家的,本人也只是盡人事,幫助能幫助的人,將知識(shí)取之于民,用之于民。 原本...

    lmxdawn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<