Redis是一種高級key-value數據庫。它跟memcached類似,不過數據可以持久化,而且支持的數據類型很豐富。有字符串,鏈表,集 合和有序集合。支持在服務器端計算集合的並,交和補集(difference)等,還支持多種排序功能。所以Redis也可以被看成是一個數據結構服務器。
Redis的所有數據都是保存在內存中(效率高),然後不定期的通過異步方式保存到磁盤上(這稱為“半持久化模式”);也可以把每一次數據變化都寫入到一個append only file(aof)裡面(這稱為“全持久化模式”)。
關於Redis更多的簡介請參考Redis官方網站中文版,在這裡我僅僅給出Redis在Centos7上的安裝部署。
步驟一:下載Redis安裝包
首先從官網下在redis正式版的壓縮包redis-2.8.19.tar.gz:
cd /home/downloads wget http://download.redis.io/releases/redis-2.8.19.tar.gz
步驟二:編譯源程序
解壓和編譯
tar -zxvf redis-2.8.19.tar.gz cd redis-2.8.19/src //編譯 make
…….此處是大量編譯過程,省略。可能有一些警告,不去官它們………….
CC setproctitle.o
CC hyperloglog.o
CC latency.o
CC sparkline.o
LINK redis-server
INSTALL redis-sentinel
CC redis-cli.o
LINK redis-cli
CC redis-benchmark.o
LINK redis-benchmark
CC redis-check-dump.o
LINK redis-check-dump
CC redis-check-aof.o
LINK redis-check-aof
Hint: It's a good idea to run ‘make test' ;)
進入src進行安裝:
cd src make install
//安裝過程提示
Hint: It's a good idea to run ‘make test' ;)
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
這時候,我們可以看看src下的文件:
可以看到此時,src文件夾下出現了一些綠色的文件,這些文件就是我們以後需要用到的命令文件
步驟三:移動文件
移動文件,便於管理:(所有源代碼安裝的軟件都安裝在/usr/local下,如apache等)
創建兩個文件夾,bin用於存放命令,etc擁有存放配置文件。
mkdir -p /usr/local/redis/etc mkdir -p /usr/local/redis/etc
-p是遞歸創建。
接下來,將redis-2.8.19文件夾下的redis.conf復制到/usr/local/redis/etc/
並將src目錄下的7個命令文件(綠色的),移動到/usr/local/redis/bin/
[lsgozi@localhost src]$ cd .. [lsgozi@localhost redis-2.8.19]$ ls 00-RELEASENOTES COPYING Makefile redis.conf sentinel.conf utils BUGS deps MANIFESTO runtest src CONTRIBUTING INSTALL README runtest-sentinel tests [lsgozi@localhost redis-2.8.19]$ mv ./redis.conf /usr/local/redis/etc/ [lsgozi@localhost redis-2.8.19]$ cd src [lsgozi@localhost src]$ mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server /usr/local/redis/bin/
步驟四:啟動Redis服務:
首先進入剛才安裝redis的目錄:
[lsgozi@localhost src]$ cd /usr/local/redis/bin [lsgozi@localhost bin]$ ls mkreleasehdr.sh redis-check-aof redis-cli redis-server redis-benchmark redis-check-dump redis-sentinel
之後我們啟動redis服務。啟動redis服務需要用到命令redis-server
[lsgozi@localhost bin]$ ./redis-server
結果:
但是,這樣做的話,我們並沒有使用etc的下的配置文件進行啟動(圖中紅線部分)。
如果希望通過指定的配置文件啟動,需要在啟動時指定配置文件:
這裡我們先用ctrl+C來終止服務,然後查看redis服務是否終止干淨了,之後通過設置配置文件來啟動服務:
按下ctrl+c後(^C):
^C[32138 | signal handler] (1463921540) Received SIGINT scheduling shutdown... [32138] 22 May 20:52:20.380 # User requested shutdown... [32138] 22 May 20:52:20.380 * Saving the final RDB snapshot before exiting. [32138] 22 May 20:52:20.393 * DB saved on disk [32138] 22 May 20:52:20.393 # Redis is now ready to exit, bye bye...
運行:pstree -p | grep redis 發現redis服務已經被終止干淨
現在我們帶上配置文件 /usr/local/etc/redis.conf 運行redis
[lsgozi@localhost bin]$ ./redis-server /usr/local/redis/etc/redis.conf
但是,現在redis仍然是在前台運行。
如果要後台啟動該怎麼辦呢?
在這裡我們用—-直接將命令丟到後台中“執行”的 & ?可以嗎?
答案是不可以的,Redis的後台啟動並運行需要通過配置文件中的參數設置。如果需要在後台運行,把daemonize配置項改為yes
vim /usr/local/redis/etc/redis.conf
搜索 :'\daemonize'
把daemonize配置項改為yes
保存退出
之後我們再次使用配置文件啟動redis-server。
可以看到,redis是後台啟動了,並且通過ps命令可以查看到redis正在運行。
[lsgozi@localhost bin]\$ ./redis-server /usr/local/redis/etc/redis.conf [lsgozi@localhost bin]\$ ps -ef | grep redis root 13154 1 0 22:53 ? 00:00:00 ./redis-server *:6379 neil 13162 8143 0 22:54 pts/0 00:00:00 grep --color=auto redis [lsgozi@localhost bin]$ pstree -p | grep redis |-redis-server(13154)-+-{redis-server}(13156) | `-{redis-server}(13157)
Redis服務端默認連接端口是6379.
就好比 mysql 或 mariadb 服務端默認連接端口是3306
在平時,我們往往需要查看6379端口是否被占用。可以用以下命令:
netstat -tunpl | grep 6379
注意,redis服務需要 root 權限才能查看,不然只能檢查到6379被某個進程占用,但是看不到進程名稱。
至此,redis服務已經按照配置文件啟動成功!!
步驟五:客戶端登錄
[lsgozi@localhost bin]$ /usr/local/redis/bin/redis-cli
回車後如果提示:
[lsgozi@localhost bin]$ /usr/local/redis/bin/redis-cli 127.0.0.1:6379>//提示
則表明客戶端登錄成功
步驟六:關閉Redis服務
停止Redis實例
我們可以使用pkill redis-server
[lsgozi@localhost bin]$ pkill redis-server [lsgozi@localhost bin]$ netstat -tunpl | grep 6379 [lsgozi@localhost bin]$ [lsgozi@localhost bin]$ pstree -p | grep redis [lsgozi@localhost bin]$ [lsgozi@localhost bin]$ [lsgozi@localhost bin]$ /usr/local/redis/bin/redis-cli Could not connect to Redis at 127.0.0.1:6379: Connection refused not connected> not connected> exit
關閉之後,發現6379就不再被占用了,redis的進程也都沒有了。
客戶登陸也無法成功了。
也可以使用/usr/local/redis/bin/redis-cli shutdown,這種方法使用客戶端命令redis-cli 進行Redis服務的停止
[lsgozi@localhost bin]]$ ./redis-server /usr/local/redis/etc/redis.conf [lsgozi@localhost bin]$ pstree -p | grep redis |-redis-server(13509)-+-{redis-server}(13511) | `-{redis-server}(13512) [lsgozi@localhost bin]$ /usr/local/redis/bin/redis-cli shutdown [lsgozi@localhost bin]$ pstree -p | grep redis [lsgozi@localhost bin]$ [lsgozi@localhost bin]$ sudo netstat -tunpl | grep 6379 [lsgozi@localhost bin]$
當然關閉某個服務還可以使用 killall 和 kill -9.
附錄:更多的關於 /usr/local/redis/etc/redis.conf 的配置信息
1、daemonize 如果需要在後台運行,把該項改為yes
2、pidfile 配置多個pid的地址 默認在/var/run/redis.pid
3、bind 綁定ip,設置後只接受來自該ip的請求
4、port 監聽端口,默認是6379
5、loglevel 分為4個等級:debug verbose notice warning
6、logfile 用於配置log文件地址
7、databases 設置數據庫個數,默認使用的數據庫為0
8、save 設置redis進行數據庫鏡像的頻率。
9、rdbcompression 在進行鏡像備份時,是否進行壓縮
10、dbfilename 鏡像備份文件的文件名
11、Dir 數據庫鏡像備份的文件放置路徑
12、Slaveof 設置數據庫為其他數據庫的從數據庫
13、Masterauth 主數據庫連接需要的密碼驗證
14、Requriepass 設置 登陸時需要使用密碼
15、Maxclients 限制同時使用的客戶數量
16、Maxmemory 設置redis能夠使用的最大內存
17、Appendonly 開啟append only模式
18、Appendfsync 設置對appendonly.aof文件同步的頻率(對數據進行備份的第二種方式)
19、vm-enabled 是否開啟虛擬內存支持 (vm開頭的參數都是配置虛擬內存的)
20、vm-swap-file 設置虛擬內存的交換文件路徑
21、vm-max-memory 設置redis使用的最大物理內存大小
22、vm-page-size 設置虛擬內存的頁大小
23、vm-pages 設置交換文件的總的page數量
24、vm-max-threads 設置VM IO同時使用的線程數量
25、Glueoutputbuf 把小的輸出緩存存放在一起
26、hash-max-zipmap-entries 設置hash的臨界值
27、Activerehashing 重新hash
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。