1. 程式人生 > >redis3.2.8安裝和配置,及常用命令簡介

redis3.2.8安裝和配置,及常用命令簡介

什麼redis?

redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set –有序集合)和hash(雜湊型別)。這些資料型別都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是快取在記憶體中。區別的是redis會週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。
Redis 是一個高效能的key-value資料庫。 redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部 分場合可以對關係資料庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。[1]
Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。這使得Redis可執行單層樹複製。存檔可以有意無意的對資料進行寫操作。由於完全實現了釋出/訂閱機制,使得從資料庫在任何地方同步樹時,可訂閱一個頻道並接收主伺服器完整的訊息釋出記錄。同步對讀取操作的可擴充套件性和資料冗餘很有幫助。

redis的優缺點,以及和其他key-value資料的差異

Redis 與其他 key - value 快取產品有以下三個特點:
Redis支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用。
Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
Redis支援資料的備份,即master-slave模式的資料備份。
Redis 優勢
效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
豐富的資料型別 – Redis支援二進位制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。
原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行。
豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。

Redis與其他key-value儲存有什麼不同?

Redis有著更為複雜的資料結構並且提供對他們的原子性操作,這是一個不同於其他資料庫的進化路徑。Redis的資料型別都是基於基本資料結構的同時對程式設計師透明,無需進行額外的抽象。
Redis執行在記憶體中但是可以持久化到磁碟,所以在對不同資料集進行高速讀寫時需要權衡記憶體,應為資料量不能大於硬體記憶體。在記憶體資料庫方面的另一個優點是,相比在磁碟上相同的複雜的資料結構,在記憶體中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。同時,在磁碟格式方面他們是緊湊的以追加的方式產生的,因為他們並不需要進行隨機訪問。

redis支援的兩種持久化方式

rdb/aof
預設為rdb,記憶體快照形式,
RDB方式,是將redis某一時刻的資料持久化到磁碟中,是一種快照式的持久化方法。
redis在進行資料持久化的過程中,會先將資料寫入到一個臨時檔案中,待持久化過程都結束了,才會用這個臨時檔案替換上次持久化好的檔案。正是這種特性,讓我們可以隨時來進行備份,因為快照檔案總是完整可用的。
對於RDB方式,redis會單獨建立(fork)一個子程序來進行持久化,而主程序是不會進行任何IO操作的,這樣就確保了redis極高的效能
aof類似mysql的二進位制日誌形式
AOF,英文是Append Only File,即只允許追加不允許改寫的檔案。
如前面介紹的,AOF方式是將執行過的寫指令記錄下來,在資料恢復時按照從前到後的順序再將指令都執行一遍,就這麼簡單。
我們通過配置redis.conf中的appendonly yes就可以開啟AOF功能。如果有寫操作(如SET等),redis就會被追加到AOF檔案的末尾。
預設的AOF持久化策略是每秒鐘fsync一次(fsync是指把快取中的寫指令記錄到磁碟中),因為在這種情況下,redis仍然可以保持很好的處理效能,即使redis故障,也只會丟失最近1秒鐘的資料。
如果在追加日誌時,恰好遇到磁碟空間滿、inode滿或斷電等情況導致日誌寫入不完整,也沒有關係,redis提供了redis-check-aof工具,可以用來進行日誌修復

redis3.2.8安裝配置

首先下載安裝redis

編譯安裝

本篇文章用的是centos7,編譯安裝模式,需要作業系統首先安裝gcc,
(配置yum源,如果是rpm安裝,要注意安裝rpm包的順序)
yum -y gcc
把redis上傳到linux,如果伺服器聯網了,
直接執行
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -zxvf redis-3.2.8.tar.gz
編譯
cd redis-3.2.8
 cd src
 make install PREFIX=/usr/local/redis
 prefix 是安裝目錄
啟動服務
cd  /usr/local/redis/bin/ (進入redis bin目錄,安裝時,已經配置了環境變數,直接執行也行)
可以看到
這裡寫圖片描述

這個一些相關命令
其中
redis-servers是啟動服務的

啟動
redis-server redis.conf(前面是命令,後面是配置地址)
redis.conf 可以從壓縮目錄中取出
這裡寫圖片描述
cp redis.conf /usr/local/redis/

客戶端連線

  /usr/local/redis/bin/redis-cli

停止redis例項

  /usr/local/redis/bin/redis-cli shutdown

  或者

  pkill redis-server

讓redis開機自啟

  vim /etc/rc.local

  加入

  /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf

bin目錄介紹:

  redis-benchmark:redis效能測試工具

  redis-check-aof:檢查aof日誌的工具

  redis-check-dump:檢查rdb日誌的工具

  redis-cli:連線用的客戶端

  redis-server:redis服務程序

配置介紹:

 daemonize:如需要在後臺執行,把該項的值改為yes

  pdifile:把pid檔案放在/var/run/redis.pid,可以配置到其他地址

  bind:指定redis只接收來自該IP的請求,如果不設定,那麼將處理所有請求,在生產環節中最好設定該項
  如果想所有的ip都可以連線可以設定 註釋掉bind,虛擬機器安裝註釋掉就行,生產環境,建議bind,多個ip以空格 分開

  port:監聽埠,預設為6379

  timeout:設定客戶端連線時的超時時間,單位為秒

  loglevel:等級分為4級,debug,revbose,notice和warning。生產環境下一般開啟notice

  logfile:配置log檔案地址,預設使用標準輸出,即列印在命令列終端的埠上

  database:設定資料庫的個數,預設使用的資料庫是0

  save:設定redis進行資料庫映象的頻率

  rdbcompression:在進行映象備份時,是否進行壓縮

  dbfilename:映象備份檔案的檔名

  dir:資料庫映象備份的檔案放置的路徑

  slaveof:設定該資料庫為其他資料庫的從資料庫

  masterauth:當主資料庫連線需要密碼驗證時,在這裡設定

  requirepass:設定客戶端連線後進行任何其他指定前需要使用的密碼

  maxclients:限制同時連線的客戶端數量

  maxmemory:設定redis能夠使用的最大記憶體

  appendonly:開啟appendonly模式後,redis會把每一次所接收到的寫操作都追加到appendonly.aof檔案中,當redis重新啟動時,會從該檔案恢復出之前的狀態

  appendfsync:設定appendonly.aof檔案進行同步的頻率

  vm_enabled:是否開啟虛擬記憶體支援

  vm_swap_file:設定虛擬記憶體的交換檔案的路徑

  vm_max_momery:設定開啟虛擬記憶體後,redis將使用的最大實體記憶體的大小,預設為0

  vm_page_size:設定虛擬記憶體頁的大小

  vm_pages:設定交換檔案的總的page數量

  vm_max_thrrads:設定vm IO同時使用的執行緒數量

redis常用命令

鍵值相關命令
keys * 取出當前所有的key(支援匹配)keys key*(key開頭的)
exists name 檢視n是否有name這個key
del name 刪除key name
expire confirm 100 設定confirm這個key100秒過期
ttl confirm 獲取confirm 這個key的有效時長
select 0 選擇到0資料庫 redis預設的資料庫是0~15一共16個數據庫(可以在配置檔案中設定,databases 16)
move confirm 1 將當前資料庫中的key移動到其他的資料庫中,這裡就是把confire這個key從當前資料庫中移動到1中
persist confirm 移除confirm這個key的過期時間
randomkey 隨機返回資料庫裡面的一個key
rename key2 key3 重新命名key2 為key3
type key2 返回key的資料型別
2、伺服器相關命令
ping PONG返回響應是否連線成功
echo 在命令列列印一些內容
select 0~15 編號的資料庫
quit /exit 退出客戶端
dbsize 返回當前資料庫中所有key的數量
info 返回redis的相關資訊
config get dir/* 實時傳儲收到的請求
flushdb 刪除當前選擇資料庫中的所有key
flushall 刪除所有資料庫中的資料庫