五分鐘教學學會redis實戰-這篇文章讓我輕松拿下阿里offer,建議收藏

      網友投稿 707 2022-05-29

      簡介: CSDN博客專家,一線互聯網從業人員,架構師,云計算運維講師,互聯網連續創業者,從16年開始做直播教學,幾年來,陸續幫助近3000+小伙伴高薪就業。歡迎各位小伙伴加我咨詢相關問題,帶你走出迷茫;

      座右銘: 我不認為自己是最優秀的,但我可以是最努力的

      正文

      Redis概述和安裝Redis

      Redis 是完全開源的,遵守 BSD 協議,是一個高性能的 key-value 數據庫。

      Redis 與其他 key - value 緩存產品有以下三個特點:

      Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。

      Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。

      Redis支持數據的備份,即master-slave模式的數據備份。

      目前官網上推薦下載的版本是:6.2.3

      支持存儲的數據類型有:

      五分鐘教學妹學會redis實戰-這篇文章讓我輕松拿下阿里offer,建議收藏

      String(字符串,包含整數),

      List(列表),

      Hash(關聯數組),

      Sets(集合),

      Sorted Sets(有序集合)

      Bitmaps(位圖), HyperLoglog。

      100萬較小的鍵存儲字符串,大概消耗100M內存

      由于Redis是單線程,如果服務器主機上有多個CPU,只有一個能夠使用,但并不意味著CPU會成為瓶頸,因為Redis是一個比較簡單的K-V數據存儲,CPU通常不會成為瓶頸的

      在常見的linux服務器上,500K(50萬)的并發,只需要一秒鐘處理,如果主機硬件較好的情況下,每秒鐘可以達到上百萬的并發

      面試題: redis和memcache的區別

      關于reids和memcache的區別,我在專欄《運維面試寶典》里有些可以跳轉閱讀。

      這里可以列舉兩條:

      (1)【持久化能力】Redis支持持久化,memcache也支持但一般不做持久化(重啟丟失數據)

      (2)【數據類型支持】Redis類型較多(5種數據類型,string、list、hash、set、sorted set),memcache只能是字符串

      在安裝Remi repository源時,需要依賴epel源,因此先安裝epel源

      [root@itlaoxin17 ~]# yum -y install epel-release

      安裝remi repository源

      [root@itlaoxin~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

      使用remi repository源安裝Redis

      [root@itlaoxin ~]# yum --enablerepo=remi install -y redis #選用remi源進行安裝redis

      啟動Redis

      [root@itlaoxin ~]# systemctl start redis [root@itlaoxin-17 ~]# netstat -antup | grep redis tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 68199/redis-server tcp6 0 0 ::1:6379 :::* LISTEN 68199/redis-server 注:redis默認監聽6379端口

      redis基本操作

      基本操作

      [root@itlaoxin ~]# redis-cli 選項: -h 指定主機IP -p 指定端口socket文件進行通信。 [root@itlaoxin ~]# redis-cli -h 127.0.0.1 #連接redis,默認不啟用密碼認證。 127.0.0.1:6379> exit #退出連接。 或: [root@itlaoxin ~]# redis-cli #使用redis-cli直接連接,默認連接是127.0.0.1 IP。

      舉例1:設置鍵system的值為centos

      [root@itlaoxin ~]# redis-cli -h 127.0.0.1 127.0.0.1:6379> set system centos #set用于創建鍵值 OK 127.0.0.1:6379> get system #get 后加鍵,可以查看鍵中的值 "centos"

      舉例2: 定義一個鍵name值為zhangsan,并設置過期時間為60秒。

      127.0.0.1:6379> set name itlaoxin EX 60 OK 127.0.0.1:6379> get name "itlaoxin"

      舉例3,開啟redis用戶認證服務

      [root@itlaoxin ~]# vim /etc/redis.conf 改:901 # requirepass foobared #啟用此項,并指定密碼即可。 為:901 requirepass jfvip123 #指定密碼為jfvip123 [root@itlaoxin ~]# systemctl restart redis #重啟服務 [root@itlaoxin ~]# iptables -F #關閉防火墻 測試用戶認證功能: [root@itlaoxin ~]# redis-cli #登陸測試 127.0.0.1:6379> get system (error) NOAUTH Authentication required. #發現報錯, 需要用戶密碼認證 127.0.0.1:6379> auth jfvip123 #輸入密碼 OK 127.0.0.1:6379> get system "centos"

      配置reids持久化

      1. redis持久化介紹

      redis持久化概述

      redis持久化主要有兩種 ROD和AOF,也可以把兩種混合起來,從reids4.0后引入的方式。

      RDB實現原理:

      RDB類似于快照,在某個時間點,將 Redis 在內存中的數據庫狀態(數據庫的鍵值對等信息)保存到磁盤里面。RDB 持久化功能生成的 RDB 文件是經過壓縮的二進制文件。

      AOF:

      保存 Redis 服務器所執行的所有寫操作命令來記錄數據庫狀態,并在服務器啟動時,通過重新執行這些命令來還原數據集。

      AOF默認是關閉的,可以通過appendonley yes 開啟

      AOF 持久化功能的實現可以分為三個步驟:命令追加、文件寫入、文件同步。

      2. 配置文件中配置與RDB相關的參數

      [root@itlaoxin ~]# vim /etc/redis.conf #默認參數就夠用了 235 stop-writes-on-bgsave-error yes #在進行快照備份時,一旦發生錯誤的話是否停止。 241 rdbcompression yes #RDB文件是否使用壓縮,壓縮會消耗CPU。 250 rdbchecksum yes #是否對RDB文件做校驗碼檢測,此項定義在redis啟動時加載RDB文件是否對文件檢查校驗碼,在redis生成RDB文件是會生成校驗信息,在redis再次啟動或裝載RDB文件時,是否檢測校驗信息。 253 dbfilename dump.rdb #定義RDB文件的名稱。 263 dir /var/lib/redis #定義RDB文件存放的目錄路徑。

      實戰 搭建redis主從架構

      原理:

      Redis的主從復制是自動進行的,并不需要用戶的介入,slave端會自動連接master并進行數據同步。如果同步連接時slave端短暫的與master端斷開了連接,那連接恢復后slave端會與master端進行一次同步。從而保證數據一致。

      拓撲圖:

      配置itlaoxin17為redis主

      [root@itlaoxin-17 ~]# rm -rf /var/run/yum.pid [root@itlaoxin ~]# yum -y install epel-release #安裝epel源。 [root@itlaoxin ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm #安裝remi源。 [root@itlaoxin ~]# yum --enablerepo=remi install -y redis #安裝Redis。

      [root@itlaoxin-17 ~]# vim /etc/redis.conf: 改:75 bind 127.0.0.1 為:75 bind 0.0.0.0 #redis監聽的地址,默認監聽在127.0.0.1地址上,改為0.0.0.0地址或192.168.1.17 改:507 # requirepass foobared #啟用此項,并指定密碼即可。 為:507 requirepass jfxinvip123 #指定密碼為jfxinvip123

      重啟服務

      [root@itlaoxin ~]# systemctl restart redis #重啟服務 [root@itlaoxin ~]# iptables -F

      [root@itlaoxin ~]# yum -y install epel-release #安裝epel源。 [root@itlaoxin ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm #安裝remi源。 [root@itlaoxin ~]# yum --enablerepo=remi install -y redis #安裝Redis。

      [root@itlaoxin ~]# vim /etc/redis.conf #修改第286行。 改: 478# replicaof #修改此項如下。 為: 478 replicaof 192.168.1.17 6379 改:486 # masterauth 為:486 masterauth jfxinvip123 #寫上redis主的密碼。如果redis主沒有密碼,這里可不寫 [root@itlaoxin ~]# systemctl start redis #啟動redis。

      [root@itlaoxin ~]# redis-cli #登錄redis。 127.0.0.1:6379> info replication # Replication role:slave #角色: slave master_host:192.168.1.17 #主服務器IP。 master_port:6379 #主服務器端口 master_link_status:up ##主服務器連接狀態為up,說明已經主從同步上了 master_last_io_seconds_ago:8 master_sync_in_progress:0 slave_repl_offset:112 slave_priority:100 slave_read_only:1 #成為從服務以后,1表示該服務器為只讀。

      [

      root@itlaoxin ~]# redis-cli #登錄Redis。 127.0.0.1:6379>AUTH jfxinvip123 OK 127.0.0.1:6379> info replication # Replication role:master #角色:master。 connected_slaves:1 #從服務器數量。 slave0:ip=192.168.1.18,port=6379,state=online,offset=476,lag=0 #從服務器信息。 ...

      登錄Redis主服務,并創建一個user鍵。 [root@itlaoxin-17 ~]# redis-cli 127.0.0.1:6379> AUTH jfxinvip123 OK 127.0.0.1:6379> set user itlaoxin OK 8、登錄Redis從服務,獲取在主服務上創建的user鍵。 [root@itlaoxin ~]# redis-cli 127.0.0.1:6379> get user #可以查看到鍵值,說明主從數據同步成功。 "itlaoxin"

      實戰二: 使用sentinel實現redis集群高可用

      實驗拓撲:

      重新開啟3臺全新服務器,一定是全新的3臺服務器,如果之前的實驗環境上做,會出現配置混亂。每臺服務器上分別配置redis和sentinel。其中1個master和2個slave。如下圖所示:

      [root@itlaoxin ~]# yum -y install epel-release [root@itlaoxin ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm [root@itlaoxin ~]# yum --enablerepo=remi install -y redis #安裝Redis

      [root@itlaoxin17 ~]# vim /etc/redis.conf 改:675 bind 127.0.0.1 為:75 bind 0.0.0.0 #redis監聽的地址,改為0.0.0.0表示在所有網卡接口上進行監聽 改:94 protected-mode yes 為:94 protected-mode no #關閉允protected-mode,許外網訪問redis服務器 [root@itlaoxin17 ~]# systemctl restart redis #重啟服務 [root@itlaoxin17 ~]# iptables -F

      [root@itlaoxin18 ~]# vim /etc/redis.conf #修改第286行。 改:75 bind 127.0.0.1 為:75 bind 0.0.0.0 #redis監聽的地址,改為0.0.0.0表示在所有網卡接口上進行監聽 改:94 protected-mode yes 為: 94 protected-mode no 改: 477 # replicaof 為: 478 replicaof 192.168.1.17 6379 [root@itlaoxin18 ~]# systemctl start redis #啟動redis。 [root@itlaoxin18 ~]# iptables -F

      [root@itlaoxin19 ~]# redis-cli #登錄redis。 127.0.0.1:6379> info replication # Replication role:slave #角色:slave。 master_host:192.168.1.17 #主服務器IP。 master_port:6379 #主服務端口。 master_link_status:up #主服務器連接狀態為up,說明已經主從同步上了 到此,1主2從的redis主從復制架構已經搭建成功,下面開始配置sentinel架構構。

      [root@itlaoxin17 ~]# vim /etc/redis-sentinel.conf 改:17 # protected-mode no 為:17 protected-mode no 改:26 daemonize no :26 daemonize yes 改:84 sentinel monitor mymaster 127.0.0.1 6379 2 為:84 sentinel monitor mymaster 192.168.1.17 6379 2 改:113 sentinel down-after-milliseconds mymaster 30000 #默認單位是毫秒,配成10秒 為:113 sentinel down-after-milliseconds mymaster 10000 改:146 sentinel failover-timeout mymaster 180000 為:146 sentinel failover-timeout mymaster 60000 如果在該時間(ms)內未能完成failover操作,則認為該failover失敗

      [root@itlaoxin17 ~]# scp /etc/redis-sentinel.conf 192.168.1.18:/etc/redis-sentinel.conf [root@itlaoxin17 ~]# scp /etc/redis-sentinel.conf 192.168.1.19:/etc/redis-sentinel.conf 11111111111111111111111111111

      [root@itlaoxin17 ~]# systemctl start redis && systemctl start redis-sentinel [root@itlaoxin18 ~]# systemctl start redis && systemctl start redis-sentinel [root@itlaoxin19 ~]# systemctl start redis && systemctl start redis-sentinel 一定要關閉selinux

      查看當前主從狀態 [root@itlaoxin17 ~]# redis-cli -h 192.168.1.18 192.168.1.18:6379> info replication # Replication role:slave master_host:192.168.1.17 master_port:6379 [root@itlaoxin17 ~]# systemctl stop redis #在itlaoxin17上關閉master [root@itlaoxin-17 ~]# redis-cli -h 192.168.1.19 192.168.1.19:6379>info replication # Replication role:slave master_host:192.168.1.8 #master已經轉移到itlaoxin18上了 master_port:6379

      [root@itlaoxin17 ~]# systemctl start redis [root@itlaoxin17 ~]# redis-cli -h 192.168.1.17 192.168.1.17:6379> info replication # Replication role:slave master_host:192.168.1.18 #主redis還是itlaoxin18,并不會因為itlaoxin17恢復成功后,就主動讓出權限。 這樣可以避免再次回切時,發生服務中斷。 #登錄主redis上查看從節點信息 [root@itlaoxin-19 etc]# redis-cli 127.0.0.1:6379> info replication # Replication role:slave master_host:192.168.1.18 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:33537 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:49a65486e84936ed563d6796f253945b492660a8 master_replid2:7514fbacc143345f567dd8e93a081592b24e0c9a master_repl_offset:33537 second_repl_offset:2702 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:163 repl_backlog_histlen:33375 127.0.0.1:6379>

      [root@itlaoxin17 ~]# redis-cli -h 192.168.1.17 -p 26379 #查看Sentinel信息。 [root@itlaoxin18 ~]# redis-cli -h 192.168.1.17 -p 26379 192.168.1.17:26379> info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=sdown,address=192.168.1.17:6379,slaves=0,sentinels=1 192.168.1.17:26379> exit 14

      互聯網老辛,2021年立下個flag,每天直播分享技術5小時,持續10000小時,也就是2000天

      今天是持續直播教學的第 110 / 2000天。

      求、求評論、求。

      有任何疑問都可以在評論區詢問,有問必答~

      本文,以后沒準能用到哦~

      5G教育 Redis

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:2019華為云社區年度大盤點——七宗“最”
      下一篇:MongoDB 第1章 MongoDB介紹
      相關文章
      亚洲人AV永久一区二区三区久久| 亚洲国产精品美女久久久久| 天堂亚洲免费视频| 亚洲三级高清免费| 亚洲AV成人无码天堂| 亚洲视频在线观看不卡| 亚洲视频在线观看免费| 亚洲av无码成h人动漫无遮挡 | 亚洲成A人片在线播放器| 亚洲午夜精品国产电影在线观看| 亚洲精品自在线拍| 亚洲日韩乱码中文无码蜜桃 | 亚洲欧美国产国产一区二区三区| 国产亚洲玖玖玖在线观看| 中文字幕亚洲综合久久综合 | 国产精品亚洲综合五月天| 国产亚洲国产bv网站在线 | 国产aⅴ无码专区亚洲av麻豆| 色噜噜AV亚洲色一区二区| 亚洲色自偷自拍另类小说| 亚洲人成中文字幕在线观看| 久久精品国产亚洲沈樵| 久久精品亚洲综合一品| 久久亚洲私人国产精品| 亚洲国产成人久久综合一区| 亚洲国产成人精品激情| 亚洲日韩一区二区三区| 18禁亚洲深夜福利人口| 亚洲精品岛国片在线观看| 国产亚洲色视频在线| 日本亚洲视频在线| 久久青青草原亚洲av无码app| 亚洲精品中文字幕乱码| 亚洲一本一道一区二区三区| 亚洲av成人一区二区三区观看在线 | 亚洲日韩国产欧美一区二区三区| 亚洲AV日韩综合一区| 亚洲精品偷拍视频免费观看| 亚洲精品乱码久久久久66| 亚洲国产第一页www| 亚洲国产成人九九综合|