Linux伺服器安裝redis資料庫教程

来源:https://www.cnblogs.com/AlanLee/archive/2018/03/17/8592143.html
-Advertisement-
Play Games

前面小Alan給大家說了jdk的安裝,這篇跟大家聊聊redis非關係型資料庫在Linux伺服器的安裝。 redis簡單介紹 REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。 Redis是一個開源的使用AN ...


 

前面小Alan給大家說了jdk的安裝,這篇跟大家聊聊redis非關係型資料庫在Linux伺服器的安裝。

 

redis簡單介紹

REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。

Redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。

它通常被稱為數據結構伺服器,因為值(value)可以是 字元串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。

 

一、在有外網情況下的安裝(外網的配置在linux分類的隨筆中有聊過)

 

第一步:安裝編譯工具,redis是有ANSI C語言編寫的,我們需要安裝編譯它的工具

命令:yum install wget  make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel kernel keyutils  patch perl

 

第二步:安裝tcl組件包,我們在安裝redis的時候是需要tcl腳本語言支持的

#選擇一個存放軟體包存放的地方,進入軟體包存放的目錄文件中

命令:cd /usr/local/src

#下載tcl組件包

命令:wget  http://downloads.sourceforge.net/tcl/tcl8.6.6-src.tar.gz

#在當前目錄解壓tcl組件包

命令:tar  zxvf  tcl8.6.6-src.tar.gz

#進入解壓之後的安裝目錄文件

命令:cd tcl8.6.6

#配置tcl組件

命令:cd unix

命令:./configure --prefix=/usr   --without-tzdata    --mandir=/usr/share/man $([ $(uname -m) = x86_64 ] && echo --enable-64bit)

#編譯

命令:make

#以選項中指定的script來處理輸入的文本文件

命令:sed -e "s@^\(TCL_SRC_DIR='\).*@\1/usr/include'@"  -e "/TCL_B/s@='\(-L\)\?.*unix@='\1/usr/lib@"  -i tclConfig.sh

#安裝

命令:make install

命令:make install-private-headers

#建立軟連接(好比windows中的快捷方式)

命令:ln -v -sf tclsh8.6 /usr/bin/tclsh

#修改執行文件許可權

命令:chmod -v 755 /usr/lib/libtcl8.6.so

 

第三步:安裝Redis資料庫

#選擇一個存放軟體包存放的地方,進入軟體包存放的目錄文件中

命令:cd /usr/local/src

#下載redis資料庫軟體包

命令:wget http://download.redis.io/redis-stable.tar.gz

#解壓redis資料庫軟體包

命令:tar -zxvf redis-stable.tar.gz

#創建redis的安裝目錄文件

命令:mkdir /usr/local/redis

#移動文件到安裝目錄

命令:mv redis-stable  /usr/local/redis

#進入安裝目錄

命令:cd /usr/local/redis

#編譯

命令:make

#安裝

命令:make install

#然後查看/usr/local/bin目錄下是否有redis的程式文件,如果沒有,則從redis-stable中拷貝redis的程式文件

命令:cd  /usr/local/bin

命令:ls

#註意:假如沒有則拷貝

命令:cd /usr/local/redis/redis-stable
命令:mkdir -p /usr/local/bin

#複製操作
命令:cp -p redis-server /usr/local/bin
命令:cp -p redis-benchmark /usr/local/bin
命令:cp -p redis-cli /usr/local/bin
命令:cp -p redis-check-dump /usr/local/bin
命令:cp -p redis-check-aof /usr/local/bin

#給redis的配置文件創建一個軟連接(好比windows中的快捷方式)

命令:ln -s  /usr/local/redis/redis-stable/redis.conf  /etc/redis.conf

#編輯redis配置文件

命令:vi /etc/redis.conf

#設置後臺啟動redis(vim編輯器按i進入編輯模式,exit退出編輯模式進入命令模式)

daemonize yes

#強制保存退出

:wq!

#切換到/usr/local/bin目錄啟動redis服務(cd切換命令)

命令:redis-server /etc/redis.conf

#關閉redis服務

命令:redis-cli shutdown

#編輯,在最後一行添加下麵代碼

命令:vi /etc/sysctl.conf

vm.overcommit_memory = 1

#強制保存退出

:wq!

#使設置立即生效

命令:sysctl -p

 

第四步:設置redis在linux伺服器上開機啟動

#把redis工具中的初始化腳本拷貝到/etc/init.d/目錄文件中並重命名

命令:cd /usr/local/redis/redis-stable/utils/

命令:cp redis_init_script /etc/init.d/

命令:cd /etc/init.d/

命令:mv redis_init_script redis

#修改腳本執行許可權

命令:chmod 755 /etc/init.d/redis

#添加開機啟動

命令:chkconfig --add redis

這時大家可能會遇到問題,就是無法將redis添加到開機啟動中,那麼要怎麼解決呢?

#編輯/etc/init.d/redis文件

命令:vi /etc/init.d/redis(i進入編輯模式,exit返回命令模式:wq!強制保存退出)

在最前面加上兩行註釋放在/etc/init.d/redis文件靠前的註釋中:

 

# chkconfig:   2345 90 10

 

# description:  Redis is a persistent key-value database

 

上面的註釋的意思是,redis服務必須在運行級2,3,4,5下被啟動或關閉,啟動的優先順序是90,關閉的優先順序是10。

#添加開機啟動

命令:chkconfig --add redis

#把redis在運行級別為2、3、4、5的情況下都是on(開啟)的狀態

命令:chkconfig –level redis 2345 on

#查看是否添加成功,列出所有的系統服務,查看裡面是否有redis

命令:chkconfig --list

#關閉redis服務,啟動redis服務

命令:service redis stop

命令:service redis start

 

最後一步:測試redis是否已經成功啟動服務

#查看本機ip地址

 

#使用第三方jar包jedis在本地的java應用程式中進行測試

我相信很多人,在執行的時候肯定會不通過,比如連接超時之類的,這是為什麼呢?讓我們一一來解決:

1.查看redis配置文件,併排查問題,編輯之後保存

命令:vi /etc/redis.conf

第一個可能存在的問題,ip被綁定了,其他ip無法訪問:

將綁定ip這個屬性註釋掉,繼續排查,還有一個可能存在的問題,開啟了保護模式:

將它從yes改為no,然後執行java程式測試,很多人可能還是會遇到類似的錯誤,比如:

經過前面的操作,我們可以確定redis服務是啟動的,ip埠的設置也是正確的,保護模式也被我們關了,還不能訪問,那很大可能就是Linux防火牆導致其他電腦無法訪問redis的6379埠了,我們現在windows上測試一下,通過cmd打開命令視窗,telnet命令如果不能使用,自己百度一下開啟。

命令:telnet 192.168.0.21 6379

如果很久都沒反應,或者出現了錯誤,則需要在Linux伺服器上關掉防火牆或者添加此埠允許被訪問。

#通過root用戶登錄Linux伺服器,執行命令開啟埠

命令:/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

 

然後再執行Java應用程式測試一波,基本上就沒什麼問題了,也能得到像上面那樣的正確的結果。

 

二、在沒有外網情況下的安裝,假設此時只有區域網怎麼辦

 

第一步:將Linux伺服器對應的鏡像文件掛載到/mnt目錄文件下

比如:mount -o loop /data/downloads/redhat/rhel-server-6.5-x86_64-dvd.iso /mnt 

#鏡像文件包中包含了大多數玩轉Linux所需的軟體

cd /mnt/Packages 

 

第二步:安裝gcc編譯工具,相關安裝包從centos6.6.iso鏡像文件的package包中獲取

執行以下的命令:

rpm -ivh mpfr-2.4.1-6.el6.i686.rpm 回車
rpm -ivh cpp-4.4.6-4.el6.i686.rpm 回車
rpm -ivh kernel-headers-2.6.32-279.el6.i686.rpm 回車
rpm -ivh glibc-headers-2.12-1.80.el6.i686.rpm 回車
rpm -ivh glibc-devel-2.12-1.80.el6.i686.rpm 回車
rpm -ivh libgomp-4.4.6-4.el6.i686.rpm 回車
rpm -ivh ppl-0.10.2-11.el6.i686.rpm
rpm -ivh cloog-ppl-0.15.7-1.2.el6.i686.rpm 回車
rpm -ivh gcc-4.4.6-4.el6.i686.rpm 回車
rpm -ivh libstdc++-devel-4.4.7-11.el6.x86_64.rpm 回車
rpm -ivh gcc-c++-4.4.6-4.el6.i686.rpm 回車

如果error: Failed dependencies: cpp = 4.4.7-4.el6 is needed by gcc-4.4.7-4.el6.x86_64
安裝gcc及其他依賴包的時候,加上參數 --force --nodeps
例如:
rpm -ivh gcc-4.4.7-4.el6.x86_64.rpm --nodeps --force

 

#rpm卸載命令
rpm -e --nodeps gcc-4.4.7-4.el6.x86_64

#卸載掛載的資源
umount /mnt

 

 

第三步,將下載好的tcl組件包安裝到Linux伺服器中

將文件copy到 /usr/local/src 目錄下(隨意目錄)
chmod 777 tcl8.6.1-src.tar.gz
tar xzvf tcl8.6.1-src.tar.gz
cd tcl8.6.1/nuix
./configure 或者 ./configure --prefix=/usr/local/tcl8.6.1/ --enable-shared
make
make install

 

第四步:將下載好的redis資料庫安裝包安裝到Linux伺服器中

將文件copy到 /usr/local/src 目錄下(隨意目錄)
chmod 777 redis-2.8.8.tar.gz
tar xzf redis-2.8.8.tar.gz
cd redis-2.8.8
make MALLOC=libc
make test
make install

 

後面這種方式就大概給大家提個思路,你完全可以自己結合上面詳細的線上安裝的方式去實現沒有外網時候的安裝,這裡主要的區別就是沒有外網的時候gcc編譯工具可以從掛載的ios鏡像中去獲取,然後所有的安裝包都是已經下載好的,需要自己上傳到Linux伺服器中,上傳的方式可以參考上一篇隨筆Linux伺服器安裝JDK運行環境教程

 

結束語:不驚擾別人的寧靜,就是慈悲; 不傷害別人的自尊,就是善良。 人活著,發自己的光就好,不要吹滅別人的燈。

 

可愛博主:AlanLee

博客地址:http://www.cnblogs.com/AlanLee

本文出自博客園,歡迎大家加入博客園。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一門語言如果是另一個語言的超集的話,那麼這麼語言就要向後者相容,會變得臃腫,在某些方面的顯得過於複雜,如c++ 2.引用是可以獨立的存在的,當給一個引用進行初始化的時候,就是給這個引用添加了關聯 如 string a;和string a="as" 3.常量的使用通常都是放在程式的內部,但也可放在非r ...
  • 如上面的代碼,在方法前面添加 [Obsolete] 特性即可 2018.3.16 14:33 補充 使用這個重載形式,後面的布爾值表示是否在客戶調用該方法的時候報錯。這樣可以保證不會有人會誤用該方法 ...
  • 本文記錄了給字元串賦予字面值時,為便於操作與閱讀而進行的常用操作,如轉義序列,C#6的新功能‘字元串插入’以及一字不變的指定字元串等。 ...
  • .NET Core 是一個通用開發平臺,由 Microsoft 和 GitHub 上的 .NET 社區共同維護。 它是跨平臺的,支持 Windows、macOS 和 Linux,並且可用於設備、雲和嵌入式/IoT 方案。 本教程學習如何創建基於ASP.NET Core Razor頁面的Web應用程式... ...
  • 寫在前面 「守護進程」是 Linux 的一種長期運行的後臺服務進程,也有人稱它為「精靈進程」。我們常見的 httpd、named、sshd 等服務都是以守護進程 Daemon 方式運行的,通常服務名稱以字母d結尾,也就是 Daemon 第一個字母。與普通進程相比它大概有如下特點: 無需控制終端(不需 ...
  • What is FFmpeg? FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化為流的開源電腦程式。它提供了錄製、轉換以及流化音視頻的完整解決方案。 What is x264? H.264是ITU(國際通信聯盟)和MPEG(運動圖像專家組)聯合制定的視頻編碼標準。而x264是一個開... ...
  • 本文目錄:1.vpn概述 1.1 vpn應用場景 1.2 隧道協議 1.3 SSL VPN和IPSEC VPN2.openvpn搭建client-to-site的vpn 2.1 安裝lzo和openvpn 2.2 創建CA和SSL證書 2.3 配置服務端 2.4 配置客戶端 2.5 查看vpn的連接 ...
  • 歸檔(tar) 將許多文件一起保存至一個單獨的磁帶或磁碟歸檔,並能從歸檔中單獨還原所需文件。歸檔不是壓縮!!!所謂歸檔,就是將一些文件歸到一起,並沒有對其進行壓縮的操作。 -c:創建歸檔文件 .tar -f:表示使用歸檔文件 -j:調用bzip2程式進行壓縮或解壓 用來壓縮的選項 -z:調用gzip ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...