CentOS 7系統Redis 5.0.4安裝使用

  2020年05月20日(Network Valentine’s Day),很開心,喜歡的人的甜言蜜語、鮮花禮品不算什麼,今日是工資發放日纔是真理,叮!

  來一張《挪威的森林》劇照:

  再煽情的來一段文中的經典語醒醒神:

  正值青春年華的我們,總會一次次不知覺望向遠方,對遠方的道路充滿憧憬,儘管忽隱忽現,充滿迷茫。有時候身邊就像被濃霧緊緊包圍,那種迷茫和無助只有自己能懂。儘管有點孤獨,儘管帶着迷茫和無奈,但我依然勇敢地面對,因爲這就是我的青春,不是別人的,只屬於我的。

  不要因爲寂寞隨便牽手,然後依賴上,人自由自在多好,縱使漂泊,那種經歷也好過牢獄般的生活,所以我刻意不讓自己對網絡太依賴,對失去的人也保持淡然的態度,數千個擦肩而過中,你給誰機會誰就和你有緣分,縱沒有甲,也會有乙。

  言歸正傳,轉彎正題Redis:

1. Redis介紹

  Redis是一個開源免費的(BSD許可)、高性能的key-value數據庫,內存存儲的數據結構服務器,可用作數據庫,高速緩存和消息隊列代理。跟Memcached類似,不過數據可以持久化,而且支持的數據類型很豐富,它支持字符串、哈希表、列表、集合、有序集合,位圖,hyperloglogs等數據類型。內置複製、Lua腳本、LRU收回、事務以及不同級別磁盤持久化功能,同時通過Redis Sentinel提供高可用,通過Redis Cluster提供自動分區。

  Redis所有數據都是保存在內存中,然後不定期的通過異步方式保存到磁盤上(這稱爲“半持久化模式”);也可以把每一次數據變化都寫入到一個append only file(aof)裏面(稱爲“全持久化模式”),官方教程:https://www.redis.net.cn/tutorial/3501.html
或者黃健宏編譯的參考:http://redisdoc.com/

  Redis與其他key - value緩存產品有以下三個特點:

  • Redis支持數據的持久化,可以將內存中的數據保持在磁盤中,重啓的時候可以再次加載進行使用;
  • Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲;
  • Redis支持數據的備份,即master-slave模式的數據備份。

2. Redis 5.0.4安裝使用

  Redis的代碼遵循ANSI-C編寫,可以在所有POSIX系統(如Linux, *BSD, Mac OS X, Solaris等)上安裝運行,而且Redis並不依賴任何非標準庫,也沒有編譯參數必需添加,Redis的安裝簡單易上手。

[root@chengyu ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core) 

1. 下載解壓Redis

  Redis可以到它的官網:http://www.redis.cn/進行下載:

[root@chengyu ~]# mkdir -p /home/softwares/nosql
[root@chengyu ~]# cd /home/softwares/nosql/
[root@chengyu nosql]# wget http://download.redis.io/releases/redis-5.0.4.tar.gz

  Redis可以解壓至任何目錄,一個make安裝即可獲得執行、配置文件。

[root@chengyu nosql]# tar xzf redis-5.0.4.tar.gz
[root@chengyu nosql]# cd redis-5.0.4

2. 編譯

  可以直接make,但是建議先make test確認當前系統環境與Redis 5.0.4適配:

[root@chengyu redis-5.0.4]# make
cd src && make all
make[1]: Entering directory `/home/softwares/nosql/redis-5.0.4/src'
Hint: It's a good idea to run 'make test' ;)
make[1]: Leaving directory `/home/softwares/nosql/redis-5.0.4/src'

  所以還是先make test:

[root@chengyu redis-5.0.4]# make test
cd src && make test
make[1]: Entering directory `/home/softwares/nosql/redis-5.0.4/src'
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] Error 1
make[1]: Leaving directory `/home/softwares/nosql/redis-5.0.4/src'
make: *** [test] Error 2

  報錯提示:需要tcl 8.5或者更高版本的tcl來運行Redis test

  解決:工具命令語言(Tcl:Tool Command Language)是一種解釋性語言,可在 Unix、Windows 和 Apple Macintosh 操作系統上跨平臺運行,並且是該語言的非常可移植的解釋器,Tcl具有可嵌入性和可擴展性,自1988年由John Ousterhout創建以來已被廣泛使用,可以直接yum install tcl安裝使用,也可以自行下載安裝:

[root@chengyu redis-5.0.4]# wget -P /home/softwares/nosql/ http://downloads.sourceforge.net/tcl/tcl8.6.8-src.tar.gz
[root@chengyu redis-5.0.4]# ll /home/softwares/nosql/
-rw-r--r-- 1 root root 9793786 Dec 22  2017 tcl8.6.8-src.tar.gz
[root@chengyu redis-5.0.4]# tar xzvf /home/softwares/nosql/tcl8.6.8-src.tar.gz -C /home/softwares/nosql/
[root@chengyu tcl8.6.8]# cd /home/softwares/nosql/tcl8.6.8/unix/
[root@chengyu unix]# ./configure
configure: creating ./config.status
config.status: creating Makefile
config.status: creating dltest/Makefile
config.status: creating tclConfig.sh
config.status: creating tcl.pc
[root@chengyu unix]# make
gcc -pipe -O2 -fomit-frame-pointer -DNDEBUG -Wall -fPIC  -Wl,--export-dynamic  -shared -o libthread2.8.2.so threadNs.o threadCmd.o threadSvCmd.o threadSpCmd.o threadPoolCmd.o psGdbm.o psLmdb.o threadSvListCmd.o threadSvKeylistCmd.o tclXkeylist.o threadUnix.o  -L/home/softwares/nosql/tcl8.6.8/unix -ltclstub8.6 
: libthread2.8.2.so
make[1]: Leaving directory `/home/softwares/nosql/tcl8.6.8/unix/pkgs/thread2.8.2'
[root@chengyu unix]# make install
Installing header files in /usr/local/include
Installing /home/softwares/nosql/tcl8.6.8/pkgs/thread2.8.2/generic/tclThread.h
Installing documentation in /usr/local/share/man
Installing /home/softwares/nosql/tcl8.6.8/pkgs/thread2.8.2/doc/man/thread.n
Installing /home/softwares/nosql/tcl8.6.8/pkgs/thread2.8.2/doc/man/tpool.n
Installing /home/softwares/nosql/tcl8.6.8/pkgs/thread2.8.2/doc/man/tsv.n
Installing /home/softwares/nosql/tcl8.6.8/pkgs/thread2.8.2/doc/man/ttrace.n
make[1]: Leaving directory `/home/softwares/nosql/tcl8.6.8/unix/pkgs/thread2.8.2'

  重新make test:

[root@chengyu unix]# cd /home/softwares/nosql/redis-5.0.4/
[root@chengyu redis-5.0.4]# make test

  對於最新穩定版5.0.4,可以先進行make test,test完畢後,如下表明當前環境下運行無誤:
在這裏插入圖片描述
  接下來clean後重新make然後安裝:

[root@chengyu redis-5.0.4]# make clean
cd src && make clean
make[1]: Entering directory `/home/softwares/nosql/redis-5.0.4/src'
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark
make[1]: Leaving directory `/home/softwares/nosql/redis-5.0.4/src'

  make試試:
在這裏插入圖片描述
    make命令執行完成之後,會在src目錄下生成8個可執行文件:

[root@chengyu redis-5.0.4]# ls src -F | grep "*"
mkreleasehdr.sh*
redis-benchmark*
redis-check-aof*
redis-check-rdb*
redis-cli*
redis-sentinel*
redis-server*
redis-trib.rb*

  主要幾個分別是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-rdb、redis-check-dump,它們的作用如下:

  • redis-server:Redis服務器的daemon啓動程序;
  • redis-cli:Redis命令行操作工具,或者通過telnet進行純文本協議操作;
  • redis-benchmark:Redis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能;
  • redis-check-dump:用於本地數據庫檢查;
  • redis-check-aof:更新日誌檢查;
  • redis-check-rdb:修復損壞的rdb備份文件。

3.安裝

  可以使用make install PREFIX=/usr/local/redis 指定安裝目錄:

[root@chengyu redis-5.0.4]# mkdir -p /usr/local/redis
[root@chengyu redis-5.0.4]# make install PREFIX=/usr/local/redis

在這裏插入圖片描述
4.自啓動

  make install安裝命令是不帶自啓動腳本的,而redis官方提供了一個手動編譯時的自啓動腳本,但是需要通過另外一個工具來安裝,切換到目錄中的utils目錄下:

[root@chengyu redis-5.0.4]# utils/install_server.sh

在這裏插入圖片描述
  在/etc/init.d/目錄下可以看到redis_6379這個自啓動腳本:

[root@chengyu redis-5.0.4]# ll /etc/init.d/
total 52
-rw-r--r--. 1 root root 13948 Sep 16  2015 functions
-rwxr-xr-x. 1 root root 10571 Sep 28  2018 mysqld
-rwxr-xr-x. 1 root root  2989 Sep 16  2015 netconsole
-rwxr-xr-x. 1 root root  6630 Sep 16  2015 network
-rw-r--r--  1 root root  1160 Mar 18 07:46 README
-rwxr-xr-x  1 root root  1702 May 20 11:16 redis_6379
-rwxr-xr-x  1 root root   406 Mar 19  2019 zookeeper

  也可以自己編寫自啓動腳本:

PATH=/usr/local/redis/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
REDIS_CLI=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        if [ "$?"="0" ]
        then
              echo "Redis is running..."
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $REDIS_CLI -p $REDISPORT SHUTDOWN
                while [ -x ${PIDFILE} ]
               do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
   restart|force-reload)
        ${0} stop
        ${0} start
        ;;
  *)
    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
        exit 1
esac

  下面驗證安裝成果:

[root@chengyu redis-5.0.4]# systemctl status redis_6379
● redis_6379.service - LSB: start and stop redis_6379
   Loaded: loaded (/etc/rc.d/init.d/redis_6379; bad; vendor preset: disabled)
   Active: active (running) since Wed 2020-05-20 08:05:11 CST; 3h 13min ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/redis_6379.service
           └─1707 /usr/local/redis/bin/redis-server 127.0.0.1:6379

May 20 08:05:11 chengyu systemd[1]: Starting LSB: start and stop redis_6379...
May 20 08:05:11 chengyu redis_6379[1701]: Starting Redis server...
May 20 08:05:11 chengyu systemd[1]: Started LSB: start and stop redis_6379.
[root@chengyu redis-5.0.4]# systemctl stop redis_6379
[root@chengyu redis-5.0.4]# systemctl status redis_6379
● redis_6379.service - LSB: start and stop redis_6379
   Loaded: loaded (/etc/rc.d/init.d/redis_6379; bad; vendor preset: disabled)
   Active: inactive (dead) since Wed 2020-05-20 11:19:05 CST; 2s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 5158 ExecStop=/etc/rc.d/init.d/redis_6379 stop (code=exited, status=0/SUCCESS)

May 20 08:05:11 chengyu systemd[1]: Starting LSB: start and stop redis_6379...
May 20 08:05:11 chengyu redis_6379[1701]: Starting Redis server...
May 20 08:05:11 chengyu systemd[1]: Started LSB: start and stop redis_6379.
May 20 11:19:05 chengyu systemd[1]: Stopping LSB: start and stop redis_6379...
May 20 11:19:05 chengyu redis_6379[5158]: Stopping ...
May 20 11:19:05 chengyu redis_6379[5158]: Redis stopped
May 20 11:19:05 chengyu systemd[1]: Stopped LSB: start and stop redis_6379.
[root@chengyu redis-5.0.4]# systemctl start redis_6379
[root@chengyu redis-5.0.4]# systemctl status redis_6379
● redis_6379.service - LSB: start and stop redis_6379
   Loaded: loaded (/etc/rc.d/init.d/redis_6379; bad; vendor preset: disabled)
   Active: active (running) since Wed 2020-05-20 11:19:14 CST; 1s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 5158 ExecStop=/etc/rc.d/init.d/redis_6379 stop (code=exited, status=0/SUCCESS)
  Process: 5185 ExecStart=/etc/rc.d/init.d/redis_6379 start (code=exited, status=0/SUCCESS)
    Tasks: 4
   CGroup: /system.slice/redis_6379.service
           └─5187 /usr/local/bin/redis-server 127.0.0.1:6379

May 20 11:19:14 chengyu systemd[1]: Starting LSB: start and stop redis_6379...
May 20 11:19:14 chengyu redis_6379[5185]: Starting Redis server...
May 20 11:19:14 chengyu systemd[1]: Started LSB: start and stop redis_6379.

5.查看進程,確認Redis已經啓動
[root@chengyu redis-5.0.4]# ps -ef | grep redis
在這裏插入圖片描述
6.驗證並關閉Redis服務

[root@chengyu redis-5.0.4]# redis-cli ping
PONG
[root@chengyu redis-5.0.4]# redis-cli shutdown
[root@chengyu redis-5.0.4]# redis-cli ping
Could not connect to Redis at 127.0.0.1:6379: 
Connection refused

7.用客戶端測試一下是否啓動成功

[root@chengyu redis-5.0.4]# systemctl restart redis_6379
[root@chengyu redis-5.0.4]#  redis-cli

  已經成功安裝了Redis客戶端,嘗試一下:

[root@chengyu ~]#  redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set test 20200520-loveday
OK
127.0.0.1:6379> get test
"20200520-loveday"

  另外想要除本地以外的機子訪問修改配置文件:
    [root@chengyu ~]# vim /etc/redis.conf
    bind 192.183.3.194 127.0.0.1 --這是指redis所在服務器的IP地址,而不是遠程訪問的機子IP
    protected-mode no
設置密碼(保證連接保密與安全性):
    requirepass redistest
    daemonize yes --Redis進程後臺運行

  這是往日測試機Redis的安裝筆記,今天抽空整理一下。

  2020年05月20日,借一句“我永遠喜歡你,不是說我會十年二十年一輩子都喜歡你,而是指,我這一刻喜歡你的程度,讓我有勇氣說出來我永遠喜歡你!”,鍾哥,十五年了,節日快樂!END!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章