Resid功能介紹, 安裝部署, 發(fā)布訂閱, Redis事務(wù), 樂觀鎖與悲觀鎖 , 服務(wù)器管理命令

Redis

1、Redis功能介紹

高速讀寫

數(shù)據(jù)類型豐富 ******************
支持持 久化 ******************
多種內(nèi)存分配及回收策略
支持事務(wù) ******************
消息隊(duì)列整以、消息訂閱
支持高可用
支持分布式分片集群 (面試) ******************
緩存穿透\雪崩(筆試胧辽、面試) ******************
Redis API ************

2、Redis使用場景介紹

Memcached:多核的緩存服務(wù)公黑,更加適合于多用戶并發(fā)訪問次數(shù)較少的應(yīng)用場景

Redis:單核的緩存服務(wù)邑商,單節(jié)點(diǎn)情況下摄咆,更加適合于少量用戶,多次訪問的應(yīng)用場景人断。

Redis一般是單機(jī)多實(shí)例架構(gòu)吭从,配合redis集群出現(xiàn)。

3. Redis安裝部署

  1. 下載安裝

    下載:
    wget http://download.redis.io/releases/redis-3.2.12.tar.gz
    
    解壓:
    上傳至 /data
    tar xzf redis-3.2.12.tar.gz
    mv redis-3.2.12 redis
    
    安裝:
    cd redis
    make
    
    啟動(dòng):
    src/redis-server &
    
    環(huán)境變量:
    vim /etc/profile 
    export PATH=/data/redis/src:$PATH
    source /etc/profile 
    
    redis-server & 
    
  2. 配置文件

    [root@standby ~]# redis-cli  shutdown
    
    mkdir /data/6379
    
    cat >>/data/6379/redis.conf <<EOF
    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379
    dbfilename dump.rdb
    EOF
    
    
    重啟redis
    redis-cli shutdown 
    redis-server /data/6379/redis.conf 
    netstat -lnp|grep 63
    
    配置文件說明
    
    是否后臺運(yùn)行: daemonize yes
    默認(rèn)端口: port 6379
    日志文件位置:  logfile /var/log/redis.log
    持久化文件存儲位置:  dir /data/6379
    RDB持久化數(shù)據(jù)文件:  dbfilename dump.rdb
    
  3. 客戶端命令常用參數(shù)說明

    redis-cli 剛裝完,可以在redis服務(wù)器上直接登錄redis
    -p 6379   指定端口號
    -h        指定鏈接地址
    -a        指定鏈接密碼
    redis-cli  set num  10 ,無交互執(zhí)行redis命令
    cat /tmp/1.txt |redis-cli
    
    [root@db01 ~]# redis-cli -h 10.0.0.51  -p 6379
    10.0.0.51:6379> 
    
  4. redis安全配置

    redis默認(rèn)開啟了保護(hù)模式恶迈,只允許本地回環(huán)地址登錄并訪問數(shù)據(jù)庫涩金。
    禁止protected-mode
    
    1. Bind :指定IP進(jìn)行監(jiān)聽
    echo "bind 10.0.0.200  127.0.0.1" >>/data/6379/redis.conf
    
    2. 增加requirepass  {password}
    echo "requirepass 123" >>/data/6379/redis.conf
    
    3. 重啟redis
    redis-cli shutdown 
    redis-server /data/6379/redis.conf 
    
  5. 在線查看和修改配置

    CONFIG GET *
    CONFIG GET requirepass
    CONFIG SET requirepass 123
    
  6. redis持久化(內(nèi)存數(shù)據(jù)保存到磁盤)

    作用:可以有效防止,在redis宕機(jī)后,緩存失效的問題.

    RDB 持久化

    可以在指定的時(shí)間間隔內(nèi)生成數(shù)據(jù)集的時(shí)間點(diǎn)快照(point-in-time snapshot)。
    優(yōu)點(diǎn):速度快暇仲,適合于用做備份步做,主從復(fù)制也是基于RDB持久化功能實(shí)現(xiàn)的。
    缺點(diǎn):會有數(shù)據(jù)丟失
    
    rdb持久化核心配置參數(shù)
    vim /data/6379/redis.conf
    dir /data/6379
    dbfilename dump.rdb
    
    save 900 1
    save 300 10
    save 60 10000
    
    配置分別表示:
    900秒(15分鐘)內(nèi)有1個(gè)更改
    300秒(5分鐘)內(nèi)有10個(gè)更改
    60秒內(nèi)有10000個(gè)更改
    

    AOF 持久化(append-only log file)

    記錄服務(wù)器執(zhí)行的所有寫操作命令奈附,并在服務(wù)器啟動(dòng)時(shí)全度,通過重新執(zhí)行這些命令來還原數(shù)據(jù)集。 
    AOF 文件中的命令全部以 Redis 協(xié)議的格式來保存斥滤,新命令會被追加到文件的末尾将鸵。
    優(yōu)點(diǎn):可以最大程度保證數(shù)據(jù)不丟
    缺點(diǎn):日志記錄量級比較大
    
    AOF持久化配置
    vim /data/6379/redis.conf
    appendonly yes  # 是否打開aof日志功能,每1個(gè)命令,都立即同步到aof 
    appendfsync everysec  # 每秒寫1次
    
    appendfsync always
    appendfsync no
    

    總結(jié)

    持久化方式有哪些?有什么區(qū)別佑颇?
    rdb:基于快照的持久化顶掉,速度更快,一般用作備份漩符,主從復(fù)制也是依賴于rdb持久化功能
    aof:以追加的方式記錄redis操作日志的文件一喘。可以最大程度的保證redis數(shù)據(jù)安全嗜暴,類似于mysql的binlog
    

4. 發(fā)布訂閱

PUBLISH channel msg
? 將信息 message 發(fā)送到指定的頻道 channel

SUBSCRIBE channel [channel ...]
? 訂閱頻道凸克,可以同時(shí)訂閱多個(gè)頻道

UNSUBSCRIBE [channel ...]
? 取消訂閱指定的頻道, 如果不指定頻道,則會取消訂閱所有頻道

PSUBSCRIBE pattern [pattern ...]
? 訂閱一個(gè)或多個(gè)符合給定模式的頻道闷沥,每個(gè)模式以 * 作為匹配符萎战,比如 it* 匹配所 有以 it 開頭的頻道( it.news 、 it.blog 舆逃、 it.tweets 等等)蚂维, news.* 匹配所有 以 news. 開頭的頻道( news.it 、 news.global.today 等等)路狮,諸如此類

PUNSUBSCRIBE [pattern [pattern ...]]
? 退訂指定的規(guī)則, 如果沒有參數(shù)則會退訂所有規(guī)則

PUBSUB subcommand [argument [argument ...]]
? 查看訂閱與發(fā)布系統(tǒng)狀態(tài)

注意:使用發(fā)布訂閱模式實(shí)現(xiàn)的消息隊(duì)列虫啥,當(dāng)有客戶端訂閱channel后只能收到后續(xù)發(fā)布到該頻道的消息,之前發(fā)送的不會緩存奄妨,必須Provider和Consumer同時(shí)在線涂籽。

發(fā)布訂閱例子:

窗口1:
127.0.0.1:6379> SUBSCRIBE baodi 
窗口2:
127.0.0.1:6379> PUBLISH baodi "jin tian zhen kaixin!"

訂閱多頻道:
窗口1:
127.0.0.1:6379> PSUBSCRIBE wang*
窗口2:
127.0.0.1:6379> PUBLISH wangbaoqiang "jintian zhennanshou "

5. Redis事務(wù)

redis的事務(wù)是基于隊(duì)列實(shí)現(xiàn)的
mysql的事務(wù)是基于事務(wù)日志實(shí)現(xiàn)的

multi 開啟事務(wù)

discard 取消執(zhí)行

exec 執(zhí)行

開啟事務(wù)功能時(shí)(multi)
multi
command1
command2
command3
command4

4條語句作為一個(gè)組,并沒有真正執(zhí)行砸抛,而是被放入同一隊(duì)列中评雌。
如果树枫,這是執(zhí)行discard,會直接丟棄隊(duì)列中所有的命令景东,而不是做回滾砂轻。

當(dāng)執(zhí)行exec時(shí),對列中所有操作斤吐,要么全成功要么全失敗

redis是樂觀鎖, mysql為悲觀鎖

樂觀鎖: 在事物開始時(shí)修改了某條數(shù)據(jù), 還未提交時(shí)另一個(gè)事物也能修改這條數(shù)據(jù)并且提交

悲觀鎖: 在事物開始時(shí)修改了某條數(shù)據(jù), 還未提交時(shí), 其他事物不得修改這條數(shù)據(jù)

.

6. 樂觀鎖與悲觀鎖

redis默認(rèn)為樂觀鎖

redis樂觀鎖

窗口1開啟事務(wù)修改了num的值, 還未提交, 窗口2 也在修改num, 并且提交了, 最后兩個(gè)窗口都提交成功了 ,所以num的值會被修改兩次

通過watch可以避免兩個(gè)事物同時(shí)修改了一條記錄這一情況

使用watch的Redis

窗口1開啟事務(wù)修改了a的值, 還未提交, 窗口2 也在修改a, 并且提交了, 這時(shí)窗口1再提交就會提交失敗

mysql悲觀鎖

窗口1開啟事務(wù)修改了money的值, 還未提交, 窗口2 再修改同一數(shù)據(jù)時(shí)會阻塞住

7. 服務(wù)器管理命令

Info
Clinet list
Client kill ip:port
config get *
CONFIG RESETSTAT 重置統(tǒng)計(jì)
CONFIG GET/SET 動(dòng)態(tài)修改
Dbsize
FLUSHALL 清空所有數(shù)據(jù) 
select 1
FLUSHDB 清空當(dāng)前庫

MONITOR 監(jiān)控實(shí)時(shí)指令
SHUTDOWN 關(guān)閉服務(wù)器

關(guān)閉數(shù)據(jù)庫:
redis-cli -a root shutdown
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搔涝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子曲初,更是在濱河造成了極大的恐慌体谒,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臼婆,死亡現(xiàn)場離奇詭異抒痒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)颁褂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門故响,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颁独,你說我怎么就攤上這事彩届。” “怎么了誓酒?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵樟蠕,是天一觀的道長。 經(jīng)常有香客問我靠柑,道長寨辩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任歼冰,我火速辦了婚禮靡狞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隔嫡。我一直安慰自己甸怕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布腮恩。 她就那樣靜靜地躺著梢杭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秸滴。 梳的紋絲不亂的頭發(fā)上式曲,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼吝羞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛内颗,可吹牛的內(nèi)容都是我干的钧排。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼均澳,長吁一口氣:“原來是場噩夢啊……” “哼恨溜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起找前,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤糟袁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后躺盛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體项戴,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年槽惫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了周叮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡界斜,死狀恐怖仿耽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情各薇,我是刑警寧澤项贺,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站峭判,受9級特大地震影響开缎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朝抖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一啥箭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧治宣,春花似錦急侥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绊茧,卻和暖如春铝宵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工鹏秋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尊蚁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓侣夷,卻偏偏與公主長得像横朋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子百拓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 文章已經(jīng)放到github上 琴锭,如果對您有幫助 請給個(gè)star[https://github.com/qqxuanl...
    尼爾君閱讀 2,286評論 0 22
  • 【本教程目錄】 1.redis是什么2.redis的作者3.誰在使用redis4.學(xué)會安裝redis5.學(xué)會啟動(dòng)r...
    徐猿猿閱讀 1,869評論 0 35
  • redis是什么 redis是一個(gè)開源的、使用C語言編寫的衙传、支持網(wǎng)絡(luò)交互的决帖、可基于內(nèi)存也可持久化的Key-Valu...
    燁楓_邱閱讀 775評論 0 6
  • 1.1 資料 ,最好的入門小冊子蓖捶,可以先于一切文檔之前看地回,免費(fèi)。 作者Antirez的博客腺阳,Antirez維護(hù)的R...
    JefferyLcm閱讀 17,056評論 1 51
  • 安全性 設(shè)置客戶端連接后進(jìn)行任何其他指令前需要使用的密碼落君。 警告:因?yàn)閞edis 速度相當(dāng)快,所以在一臺比較好的服...
    OzanShareing閱讀 1,728評論 1 7