redis屬於NoSQL學名(not only sql) 特色: 存儲結構與mysql這一種關係型數據庫徹底不一樣,nosql存儲的是key value形式 nosql有不少產品,都有本身的api和語法,以及業務場景 產品種類: Mongodb redis Hbase hadoop
應用場景不一樣,sql支持關係複雜的數據查詢,nosql反之 sql支持事務性,nosql不支持
Redis 是一個開源(BSD許可)的,內存中的數據結構存儲系統,它能夠用做數據庫、緩存和消息中間件 redis是c語言編寫的,支持數據持久化,是key-value類型數據庫。 應用在緩存,隊列系統中 redis支持數據備份,也就是master-slave模式
性能高,讀取速度10萬次每秒 寫入速度8萬次每秒 全部操做支持原子性 # 這麼快的緣由是: 1.徹底基於內存數據庫, 2.redis徹底是由C語言寫的單線程數據庫 用做緩存數據庫,數據放在內存中 替代某些場景下的mysql,如社交類app 大型系統中,能夠存儲session信息,購物車訂單
1 . yum安裝mysql
#前提得配置好阿里雲yum源,epel源 #查看是否有redis包 yum list redis #安裝redis yum install redis -y #安裝好,啓動redis systemctl start redis # 檢查redis是否工做了 redis-cli #redis 客戶端工具 #進入交互式環境後,執行ping,返回pong表示安裝成功 127.0.0.1:6379> ping PONG
2 . 源碼編譯安裝redis
# 編譯安裝的優點 1. 編譯安裝能夠擴展第三方模塊 2.編譯安裝能夠統一路徑,Linux軟件約定安裝在 /opt下 3.軟件倉庫版本通常比較低, 編譯安裝能夠根據需求, 安裝最新版本
1.下載redis源碼 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解壓縮 tar -zxvf redis-4.0.10.tar.gz 3.切換redis源碼目錄 cd redis-4.0.10.tar.gz 4.編譯源文件 make 5.編譯好後,src/目錄下有編譯好的redis指令 6.make install 安裝到指定目錄,默認在/usr/local/bin # 能夠直接make && make install
./redis-benchmark //用於進行redis性能測試的工具 ./redis-check-dump //用於修復出問題的dump.rdb文件 ./redis-cli //redis的客戶端 ./redis-server //redis的服務端 ./redis-check-aof //用於修復出問題的AOF文件 ./redis-sentinel //用於集羣管理
redis配置文件名爲 redis.conf # 這個文件能夠自定義, 好比: # touch redis.s18.conf 內容以下 grep -v '^$' redis.conf |grep -v "^#" > redis.s18.conf # 去掉空格和#開頭的數據寫到redis.s18.conf中 # 而後 vim redis.s18.conf bind 192.168.81.132 #redis啓動地址 protected-mode yes #開啓redis安全模式 port 6800 #更改redis端口 daemonize yes #redis後臺啓動 pidfile /var/run/redis_6379.pid loglevel notice # 日誌等級是notice logfile "" requirepass 666 #設置redis的密碼 redis沒有帳號
# redis-server 指定加載的文件 # 若是redis-server 後面什麼也不指定, 會以非daemon的方式來運行,且默認服務端口爲6379。 redis-server redis.s18.conf
redis-cli -h 192.168.81.132 -p 6800 # 參數解釋 -h 指定主機地址 -p 指定redis端口 # 登陸以後經過auth指令 驗證密碼 若是沒有密碼直接ping 使用ping命令,確保redis正常可用回覆了一個pong
redis是一種高級的key:value存儲系統,其中value支持五種數據類型 字符串(strings) 散列(hashes) 列表(lists) 集合(sets) 有序集合(sorted sets)
keys * # 查看數據庫全部的key type key #查看key的類型 EXPIRE addr 20 #給addr這個key設置20秒的過時時間 ttl key #查看key的過時剩餘時間 persist key # 取消key的過時時間 exists key # 判斷key存在 存在返回1 不然0 del keys # 刪除key 能夠刪除多個 dbsize # 計算key的數量 set key value # 設置key value # set name attila get key # get name 獲得的是attila
Redis是一種內存型數據庫,一旦服務器進程退出,數據庫的數據就會丟失,爲了解決這個問題,
Redis提供了兩種持久化的方案,將內存中的數據保存到磁盤中,避免數據的丟失。
RDB(持久化) 內存數據保存到磁盤 能夠按期執行, 也能夠手動(save)執行 RDB持久化產生的RDB文件是一個通過壓縮的二進制文件,這個文件被保存在硬盤中,redis能夠經過這個文件還原數據庫當時的狀態。 在指定的時間間隔內生成數據集的時間點快照(point-in-time snapshot) 優勢:速度快,適合作備份,主從複製就是基於RDB持久化功能實現 rdb經過再redis中使用save命令觸發 rdb
# (在redis文件下)開啓rdb功能,vim redis-rdb.conf 內容以下: daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 # 這個須要mkdir -p /data/6379 dbfilename dbmp.rdb # 當觸發save以後會生成dbmp.rdb這個文件 bind 127.0.0.1 save 900 1 # 每隔900秒有一個操做就執行持久化 save 300 10 save 60 10000
redis-server redis-rdb.conf
redis-cli # 登陸redis 127.0.0.1:6379> set name attila OK 127.0.0.1:6379> save OK # 而後退出redis 在進來,keys * name還在,若是不持久化,就沒有數據
AOF(append-only log file) 記錄服務器執行的全部變動操做命令(例如set del等),並在服務器啓動時,經過從新執行這些命令來還原數據集 AOF 文件中的命令所有以redis協議的格式保存,新命令追加到文件末尾。 優勢:最大程序保證數據不丟 缺點:日誌記錄很是大
# 在redis文件下 vim redis-aof.conf 寫入以下數據: daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 # 也須要建立/data/6379 appendonly yes appendfsync everysec
appendonly yes appendfsync always 老是修改類的操做 everysec 每秒作一次持久化 no 依賴於系統自帶的緩存大小機制
redis-server redis-aof.conf
[root@localhost 6379]# ls appendonly.aof redis.log
redis-cli # 登陸redis 127.0.0.1:6379> set name attila OK 127.0.0.1:6379> save OK # 最後退出redis, 從新登陸redis, 輸入keys * 檢查結果name還在
# 再開一個窗口,而後檢測實時動態 [root@localhost 6379]# tail -f appendonly.aof
# 1.啓動rdb方式的redis # 2.經過命令切換爲aof模式,僅僅是臨時生效,切換到aof,切換後還得修改配置文件 127.0.0.1:6379> CONFIG set appendonly yes #開啓AOF功能 OK 127.0.0.1:6379> CONFIG SET save "" #關閉RDB功能 OK 3.還得修改redis的配置文件,讓他下次重啓也是aof 修改redis-rdb.conf 爲以下配置,之後重啓也是aof了 daemonize yes port 6379 logfile /opt/6379/redis.log dir /opt/6379 appendonly yes appendfsync everysec # 重啓redis數據庫 # 4.至此redis已經切換到 aof模式下了