您好,登錄后才能下訂單哦!
===> Redis內存數據庫簡介:
Redis 是完全開源免費的,遵守BSD協議,是一個高性能的key-value數據庫。
===> Redis 的特點:
->基于內存
-> 持久化: RDB、AOF
-> 消息機制:支持String,只支持Topic的消息(廣播)
-> 豐富的數據類型
-> 支持簡單的事務
-> 支持主從復制
-> HA(哨兵): 對版本有要求,需要 2.4 版本以上
===> Redis的安裝和配置: 需要gcc的編譯器
-> Redis 單機部署:
tar -zxvf redis-3.0.5.tar.gz make make PREFIX=/app/redis install
-> Redis的相關命令
redis-benchmark 提供的一個壓力測試工具,模擬:10萬操作
redis-check-aof 檢查AOF日志文件
redis-check-dump 檢查RDB快照文件
redis-cli 命令行
redis-sentinel 哨兵(Redis的HA) -----> 配置文件:sentinel.conf 2.4版本以上
redis-server 服務器
-> 配置文件
--- redis.conf
daemonize yes 改成yes 后,啟動后會在后臺運行
port 6379
-> 服務啟動命令:redis-server conf/redis.conf
-> 客戶端連接命令: redis-cli -p 6379 | redis-cli -h 192.168.10.210 -p 6379
===> Redis 集群的安裝和配置:(星型架構,線型架構)
-> 此處只講解星型架構(此架構結構為單臺服務器上使用不同端口啟動三個服務組成集群,多臺服務器同理)
--- 主:6379端口 (關閉 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"
(*)注意:默認:從節點只讀
(error) READONLY You can't write against a read only slave. 修改參數: slave-read-only yes
-> Redis的HA:哨兵機制(要在解壓的安裝包中copy sentinel.conf 文件到 /conf 目錄下)
sentinel monitor mymaster 192.168.10.210 6379 1 # IP 端口 哨兵個數 sentinel auth-pass <master-name> <password> # 配置連接主節點的密碼 sentinel down-after-milliseconds mymaster 30000 # 表示 30 秒內如果沒有收到主節點的心跳,哨兵就認為主節點down sentinel parallel-syncs mymaster 1 # 選舉出新的主節點后,可以同時連接其他從節點的個數 sentinel failover-timeout mymaster 180000 # 失敗切換時,允許的最大時間
---哨兵啟動命令:redis-sentinel sentinel.conf
-> Redis的分片:
---Twemproxy 是一種代理分片機制, 由 Twitter 開源
Twemproxy 作為代理,可接受來自多個程序 的訪問,按照路由規則,轉發給后臺的各個 Redis 服務器, 再原路返回
--- 安裝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
--- 啟動代理服務器: ./nutcracker -d -c conf/nutcracker.yml
--- 此時連接Redis 需要使用 Twemproxy 配置的端口連接: redis-cli -p 22121
===> Redis的操作:基于key-value形式
->
---
===> Redis的事務: 不是真正的事務
-> Redis的事務的本質:將一組操作放入隊列中,批量執行
-> 對比Oracle和Redis的事務
-> Redis 的事務實例:(銀行轉賬)
set tom 1000 set mike 1000 multi decrby tom 100 incrby mike 100 exec
===> Redis的鎖機制
-> 核心:當事務提交的時候,如果監控的值,發生變化,則提交失敗
命令:watch
-> Redis 的鎖實例:(買票)
set ticket 1 set tom 1000 用戶一:tom multi decr ticket decrby tom 100 exec -------> 提交的時候,慢了一點 1) (integer) -1 ====> 票數不可能是-1 2) (integer) 900 用戶二:在tom提交前,已經把票買走了 decr ticket
===> Redis的消息機制
-> Redis 消息系統類型
--- 同步消息系統:需要對方的回答
--- 異步消息系統:不需要等待對方回答
-> Redis 消息類型
--- Queue: 隊列(點對對)
--- Topic: 主題 (廣播)
(*)Redis和Kafka:只支持Topic
(*) JMS: Java Message Service ----> 都支持:Queue和Topic
推薦:Weblogic
-> Redis 消息相關命令
publish: 發布消息 指定頻道
subscribe:訂閱消息 指定頻道
psubscribe:訂閱消息 使用通配符指定頻道
===> Redis的持久化: RDB、AOF
-> 持久化作用:進行恢復
-> RDB:快照的方式。每隔一段時間,把內存中的數據寫到rdb文件中
--- 優點:恢復的速度快
--- 缺點:如果在兩次RDB之間發生了掉電,數據肯定丟失
--- 參數:
規則:從下往上
save 900 1 在15分鐘內,如果有1個key的value發生了變化,就產生RDB文件
save 300 10 在5分鐘內,如果有10個key的value發生了變化,就產生RDB文件
save 60 10000 在60秒內,如果有1w個key的value發生了變化,就產生RDB文件
stop-writes-on-bgsave-error yes 如果在寫RDB文件的時候產生了錯誤,停止新的數據寫入
rdbcompression yes 是否壓縮(優點:節約了空間 缺點:恢復的效率低),可以設置為:no
rdbchecksum yes 校驗和來檢查RDB文件是否是好的
dbfilename dump.rdb 如果在集群下,一臺主機上運行多個Redis的實例,建議區別rdb文件
dir ./ 保存的目錄
-> AOF:append only file(記錄日志)
--- 優點:數據安全性高
--- 缺點:恢復速度慢,需要重做日志,達到恢復的目的
--- 默認禁用
--- 參數:
appendonly no ===> yes #開啟AOF appendfilename "appendonly.aof" # 如果在集群下,一臺主機上運行多個Redis的實例,建議區別aof文件 # 什么時候記錄日志??? # appendfsync always # 每個操作都記錄日志。最安全,性能最差 appendfsync everysec # 默認:每秒 # appendfsync no # 由操作系統決定 no-appendfsync-on-rewrite no # 重寫發生的時候,是否寫入aof的新日志 # 什么時候執行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萬個操作 bin/redis-benchmark -n 100000
===> Redis 問題鏈接:(找了幾個比較經典的問題處理鏈接,留作收藏,以后備用)
-> http://blog.sina.com.cn/s/blog_a1e9c7910102vmx5.html
-> http://blog.csdn.net/a491857321/article/details/52006376
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。