Redis內(nèi)存數(shù)據(jù)庫(kù)簡(jiǎn)介:                 Redis 是完全開源免費(fèi)的..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

redis內(nèi)存數(shù)據(jù)庫(kù)

發(fā)布時(shí)間:2020-07-18 11:55:06 來(lái)源:網(wǎng)絡(luò) 閱讀:1845 作者:菜鳥的征程 欄目:關(guān)系型數(shù)據(jù)庫(kù)

===> Redis內(nèi)存數(shù)據(jù)庫(kù)簡(jiǎn)介:

                 Redis 是完全開源免費(fèi)的,遵守BSD協(xié)議,是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。


===> Redis 的特點(diǎn):

            ->基于內(nèi)存

    -> 持久化: RDB、AOF

            -> 消息機(jī)制:支持String,只支持Topic的消息(廣播)  

            -> 豐富的數(shù)據(jù)類型

            -> 支持簡(jiǎn)單的事務(wù)

            -> 支持主從復(fù)制

            -> HA(哨兵): 對(duì)版本有要求,需要 2.4 版本以上


===> Redis的安裝和配置: 需要gcc的編譯器

            -> Redis 單機(jī)部署:

        tar -zxvf redis-3.0.5.tar.gz        
        make
        make PREFIX=/app/redis install

            -> Redis的相關(guān)命令

                    redis-benchmark       提供的一個(gè)壓力測(cè)試工具,模擬:10萬(wàn)操作

                    redis-check-aof       檢查AOF日志文件

                    redis-check-dump      檢查RDB快照文件

                    redis-cli                     命令行

                    redis-sentinel        哨兵(Redis的HA) -----> 配置文件:sentinel.conf 2.4版本以上

                    redis-server      服務(wù)器

            -> 配置文件   

                    --- redis.conf

                            daemonize yes  改成yes 后,啟動(dòng)后會(huì)在后臺(tái)運(yùn)行

                            port 6379

            -> 服務(wù)啟動(dòng)命令:redis-server conf/redis.conf

            -> 客戶端連接命令: redis-cli -p 6379  |  redis-cli  -h 192.168.10.210 -p 6379


===> Redis 集群的安裝和配置:(星型架構(gòu),線型架構(gòu))

            -> 此處只講解星型架構(gòu)(此架構(gòu)結(jié)構(gòu)為單臺(tái)服務(wù)器上使用不同端口啟動(dòng)三個(gè)服務(wù)組成集群,多臺(tái)服務(wù)器同理)

                --- 主:6379端口               (關(guān)閉 RDB 和 AOF)

                --- 從:6380, 6381端口  (開啟 RDB 和 AOF)

            -> 配置文件:

	    redis6379.conf
		daemonize yes
		#save 900 1
		#save 300 10
		#save 60 10000
				
		pidfile /app/redis/pids/redis_6379.pid
		logfile "/app/redis/logs/redis_6379/redis.log"
		dbfilename dump.rdb
		dir "/data/redis_data/redis_6379"
		    
		appendonly no
		appendfilename "appendonly6379.aof"
				
	    redis6380.conf
		port 6380
		slaveof 192.168.157.11 6380
		    
		pidfile /app/redis/pids/redis_6380.pid
		logfile "/app/redis/logs/redis_6380/redis.log"
		dbfilename dump.rdb
		dir "/data/redis_data/redis_6380"
		    
		appendonly yes
		appendfilename "appendonly6380.aof"
				
	    redis6381.conf
		port 6381

		slaveof 192.168.157.11 6379
		pidfile /app/redis/pids/redis_6381.pid
		logfile "/app/redis/logs/redis_6381/redis.log"
		dbfilename dump.rdb
		dir "/data/redis_data/redis_6381"
		    
		appendonly yes
		appendfilename "appendonly6381.aof"		

                 (*)注意:默認(rèn):從節(jié)點(diǎn)只讀

		(error) READONLY You can't write against a read only slave.
		修改參數(shù):
		slave-read-only yes


            -> Redis的HA:哨兵機(jī)制(要在解壓的安裝包中copy sentinel.conf 文件到 /conf 目錄下)

      sentinel monitor mymaster  192.168.10.210  6379  1
      #                              IP            端口   哨兵個(gè)數(shù)
      sentinel auth-pass  <master-name>  <password>
      # 配置連接主節(jié)點(diǎn)的密碼
      sentinel down-after-milliseconds  mymaster  30000
      # 表示 30 秒內(nèi)如果沒有收到主節(jié)點(diǎn)的心跳,哨兵就認(rèn)為主節(jié)點(diǎn)down
      sentinel  parallel-syncs  mymaster 1
      # 選舉出新的主節(jié)點(diǎn)后,可以同時(shí)連接其他從節(jié)點(diǎn)的個(gè)數(shù)
      sentinel  failover-timeout  mymaster  180000
      # 失敗切換時(shí),允許的最大時(shí)間

                    ---哨兵啟動(dòng)命令:redis-sentinel sentinel.conf

            -> Redis的分片:

                    ---Twemproxy 是一種代理分片機(jī)制, 由 Twitter 開源

                        Twemproxy 作為代理,可接受來(lái)自多個(gè)程序 的訪問,按照路由規(guī)則,轉(zhuǎn)發(fā)給后臺(tái)的各個(gè) Redis 服務(wù)器, 再原路返回

                    --- 安裝Twemproxy

       git clone https://github.com/twitter/twemproxy.git
       cd twemproxy/
       
       CFLAGS="-ggdb3 -O0" autoreconf -fvi && ./configure --prefix=/app/proxy --enable-debug=log && make &&  make install



                    --- 配置文件:nutcracker.yml  (需要在解壓的安裝包/conf 目錄下copy 到安裝目錄的 conf 目錄下)

       alpha:
       listen: 127.0.0.1:22121
       hash: fnvla_64
       distribution: ketama
         auto_eject_hosts: true
         redis: true
         server_retry_timeout: 2000
         server_failure_limit: 1
         servers:
         - 192.168.10.210:6380
         - 192.168.10.210:6381

                    --- 檢查配置文件是否正確:  ./nutcracker  -t  conf/nutcracker.yml

                    --- 啟動(dòng)代理服務(wù)器: ./nutcracker -d -c  conf/nutcracker.yml

                    --- 此時(shí)連接Redis 需要使用 Twemproxy 配置的端口連接: redis-cli  -p  22121

===> Redis的操作:基于key-value形式 

            -> 

                    --- 

===> Redis的事務(wù): 不是真正的事務(wù)

            -> Redis的事務(wù)的本質(zhì):將一組操作放入隊(duì)列中,批量執(zhí)行

            -> 對(duì)比Oracle和Redis的事務(wù)

                 redis內(nèi)存數(shù)據(jù)庫(kù)

            -> Redis 的事務(wù)實(shí)例:(銀行轉(zhuǎn)賬)

      set tom 1000
      set mike 1000
      multi
      decrby tom 100
      incrby mike 100
      exec


===> Redis的鎖機(jī)制

            -> 核心:當(dāng)事務(wù)提交的時(shí)候,如果監(jiān)控的值,發(fā)生變化,則提交失敗

         命令:watch

            -> Redis 的鎖實(shí)例:(買票

      set ticket 1        
      set tom 1000
          
      用戶一:tom
      multi
      decr ticket
      decrby tom 100
      exec  -------> 提交的時(shí)候,慢了一點(diǎn)
          
      1) (integer) -1   ====> 票數(shù)不可能是-1
      2) (integer) 900
          
      用戶二:在tom提交前,已經(jīng)把票買走了  
      decr ticket


===> Redis的消息機(jī)制

            -> Redis 消息系統(tǒng)類型

                    --- 同步消息系統(tǒng):需要對(duì)方的回答

                    --- 異步消息系統(tǒng):不需要等待對(duì)方回答

            -> Redis 消息類型

                    --- Queue: 隊(duì)列(點(diǎn)對(duì)對(duì))

                    --- Topic: 主題 (廣播)

                    (*)Redis和Kafka:只支持Topic

                    (*)  JMS: Java Message Service ----> 都支持:Queue和Topic

 推薦:Weblogic


            -> Redis 消息相關(guān)命令

                    publish: 發(fā)布消息 指定頻道

                    subscribe:訂閱消息 指定頻道

                    psubscribe:訂閱消息 使用通配符指定頻道



===> Redis的持久化:  RDB、AOF

            -> 持久化作用:進(jìn)行恢復(fù)

            -> RDB:快照的方式。每隔一段時(shí)間,把內(nèi)存中的數(shù)據(jù)寫到rdb文件中

                    --- 優(yōu)點(diǎn):恢復(fù)的速度快

                    --- 缺點(diǎn):如果在兩次RDB之間發(fā)生了掉電,數(shù)據(jù)肯定丟失

                    --- 參數(shù):

                            規(guī)則:從下往上

                            save 900 1      在15分鐘內(nèi),如果有1個(gè)key的value發(fā)生了變化,就產(chǎn)生RDB文件

                            save 300 10     在5分鐘內(nèi),如果有10個(gè)key的value發(fā)生了變化,就產(chǎn)生RDB文件

                            save 60 10000   在60秒內(nèi),如果有1w個(gè)key的value發(fā)生了變化,就產(chǎn)生RDB文件

                            

                            stop-writes-on-bgsave-error yes 如果在寫RDB文件的時(shí)候產(chǎn)生了錯(cuò)誤,停止新的數(shù)據(jù)寫入

                            rdbcompression yes 是否壓縮(優(yōu)點(diǎn):節(jié)約了空間  缺點(diǎn):恢復(fù)的效率低),可以設(shè)置為:no

                            rdbchecksum yes  校驗(yàn)和來(lái)檢查RDB文件是否是好的

                            dbfilename dump.rdb  如果在集群下,一臺(tái)主機(jī)上運(yùn)行多個(gè)Redis的實(shí)例,建議區(qū)別rdb文件

                            dir ./    保存的目錄



            -> AOF:append only file(記錄日志)

                    --- 優(yōu)點(diǎn):數(shù)據(jù)安全性高

                    --- 缺點(diǎn):恢復(fù)速度慢,需要重做日志,達(dá)到恢復(fù)的目的

                    --- 默認(rèn)禁用

                    --- 參數(shù):

        appendonly no  ===> yes     #開啟AOF                
        appendfilename "appendonly.aof"  # 如果在集群下,一臺(tái)主機(jī)上運(yùn)行多個(gè)Redis的實(shí)例,建議區(qū)別aof文件
                  
        # 什么時(shí)候記錄日志???
        # appendfsync always  # 每個(gè)操作都記錄日志。最安全,性能最差
        appendfsync everysec  # 默認(rèn):每秒
        # appendfsync no      # 由操作系統(tǒng)決定
        no-appendfsync-on-rewrite no # 重寫發(fā)生的時(shí)候,是否寫入aof的新日志
        # 什么時(shí)候執(zhí)行AOF重寫?
        auto-aof-rewrite-percentage 100
        auto-aof-rewrite-min-size 64mb
                			
		# 什么是AOF的重寫:rewrite
		set i 0
		incr i
		incr i
								======> 問題: AOF文件太大了
		100次
		****
		incr i

		最終:i = 100
				
		# 演示:AOF的重寫
		模擬:10萬(wàn)個(gè)操作
		bin/redis-benchmark -n 100000			

===> Redis 問題鏈接:(找了幾個(gè)比較經(jīng)典的問題處理鏈接,留作收藏,以后備用


            -> http://blog.sina.com.cn/s/blog_a1e9c7910102vmx5.html

            -> http://blog.csdn.net/a491857321/article/details/52006376

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI