最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux服務器Redis6.x安裝、配置全過程

 更新時間:2026年03月02日 15:12:10   作者:一恍過去  
Redis是一個高性能的鍵值對數(shù)據(jù)庫,支持多種數(shù)據(jù)類型和持久化方式,它在緩存、分布式系統(tǒng)、聊天室、任務隊列等領域有廣泛應用,本文詳細介紹了Redis的安裝、配置、高級類型和持久化機制

1、概述

Redis是用C語言開發(fā)的一個開源的高性能鍵值對(key-value)數(shù)據(jù)庫。它通過提供多種鍵值數(shù)據(jù)類型來適應不同場景下的存儲需求,通過Redis是單線程+多路IO復用技術,提高了reids的可用性。

目前為止Redis支持的鍵值數(shù)據(jù)類型如下:

  • 字符串類型(String)
  • 散列類型(Hash)
  • 列表類型(List)
  • 集合類型(Set)
  • 有序集合類型(Zset)

2、新特性

redis6.x相比于redis5.x增加新特性:

多線程IO,通過多線程用來處理網(wǎng)絡數(shù)據(jù)的讀寫和協(xié)議解析,底層數(shù)據(jù)及命令操作還是單線程。

多線程IO默認不開啟,需要修改配置進行修改:

io-threads-do-reads yes
io-threads 4
  • 引入了 ACL機制,給每個用戶分配不同的權限來控制權限。
  • 支持集群代理
  • 提升了RDB日志加載速度
  • 實現(xiàn)了客戶端緩存功能

3、應用場景

  • 緩存(數(shù)據(jù)查詢、短連接、新聞內容、商品內容等等)。
  • 分布式集群架構中的session(Token)分離。
  • 聊天室的在線好友列表。
  • 任務隊列(秒殺、搶購等等)。
  • 應用排行榜。
  • 網(wǎng)站訪問統(tǒng)計。
  • 數(shù)據(jù)過期處理(可以精確到毫秒)。

4、安裝運行redis

docker環(huán)境安裝

4.1、環(huán)境依賴

  • 依賴c++環(huán)境
yum install gcc-c++
yum install centos-release-scl scl-utils-build
yum install -y devtoolset-8-toolchain

4.2、源碼安裝redis

  • 操作目錄:/usr/local/redis/
  • 安裝版本:redis-6.2.5
  • 安裝目錄:/usr/local/redis/6.2.5

下載地址:http://download.redis.io/releases

通過先下載然后拷貝到服務器上,或者通過wget命令下載,下面通過wget進行下載;

創(chuàng)建目錄:

mkdir /usr/local/redis/

進入目錄:

cd /usr/local/redis/	

下載:

wget http://download.redis.io/releases/redis-6.2.5.tar.gz

解壓:

tar -zxvf  redis-6.2.5.tar.gz

目錄結構如下:

編譯源碼:

# 進入源碼目錄
cd  /usr/local/redis/redis-6.2.5
# make編譯源碼,并且指定安裝目錄為/usr/local/redis/6.2.5
make PREFIX=/usr/local/redis/6.2.5  install 

拷貝配置文件:

# 創(chuàng)建配置文件
mkdir  /usr/local/redis/6.2.5/config  -p
# 將源碼中的配置文件,拷貝到安裝目錄下
cp /usr/local/redis/redis-6.2.5/redis.conf  /usr/local/redis/6.2.5/config

創(chuàng)建日志文件目錄:

mkdir  /usr/local/redis/6.2.5/log -p

安裝目錄結構如下:

  • redis-benchmark:性能測試工具,看看自己服務器性能如何
  • redis-check-aof:修復有問題的AOF文件,rdb和aof后面講
  • redis-check-dump:修復有問題的dump.rdb文件
  • redis-sentinel:Redis集群使用
  • redis-server:Redis服務器啟動命令
  • redis-cli:客戶端,操作入口

4.3、修改配置文件

# 編輯配置文件
vim /usr/local/redis/6.2.5/config/redis.conf

#1、開啟后臺啟動
daemonize  no  —>  daemonize  yes
#2、開啟遠程連接
注釋 bind 127.0.0.1
protected-mode yes  —>  protected-mode no
#3、配置客戶端連接活躍時間
tcp-keepalive 60
#4、配置日志文件位置
logfile "/usr/local/redis/6.2.5/log/redis.log"

4.4、啟動、停止redis

啟動:

cd /usr/local/redis/6.2.5/bin
./redis-server ../config/redis.conf

停止:

pkill redis

5、redis配置文件介紹

  • INCLUDES:類似nginx的include,多實例的情況可以把公用的配置文件提取出來
  • protected-mode:本機保護模式
  • bind:默認情況bind=127.0.0.1只能接受本機的訪問請求,如果不配置,則無限制接受任何IP地址的訪問
  • timeout:一個空閑的客戶端維持多少秒會關閉,0表示關閉該功能,即永不關閉
  • tcp-keepalive:每個n秒對客戶端進行一次心跳檢測,如果設置為0,則不會檢測,建議設置成60
  • databases:庫的數(shù)量,默認為16個
  • requirepass:設置連接密碼
  • maxclients:最大連接數(shù),默認為1000
  • maxmemory:可用最大內存
  • maxmemory-policy:移除策略算法
  • no-eviction(??v?k?n):不刪除策略。當達到最大內存限制時, 如果再新增,返回錯誤信息,為默認策略。
  • allkeys-lru: 在所有key中優(yōu)先刪除最少使用的鍵。
  • allkeys-random: 在所有key中隨機刪除鍵。
  • volatile-lru: 在設置了超時時間的key中優(yōu)先刪除最少使用的鍵。
  • volatile-random:在設置了超時時間的key中隨機刪除鍵。
  • volatile-ttl:在設置了超時時間的key中優(yōu)先刪除剩余時間最短的鍵。
  • maxmemory-samples:設置樣本數(shù)量

LRU算法和最小TTL算法都并非是精確的算法,而是估算值,通過設置樣本的大小,redis默認會檢查樣本中的數(shù)據(jù),選擇LRU的那個。

一般設置3到7的數(shù)字,數(shù)值越小樣本越不準確,但性能消耗越小。

6、redis高級類型使用

  • Bitmaps:通過二進制形式存儲數(shù)據(jù),可以用于用戶簽到統(tǒng)計、訪問量統(tǒng)計。
  • HyperLogLog:統(tǒng)計非常大量的不重復數(shù)據(jù)的總和。
  • Geospatial:redis基于該類型,提供了經(jīng)緯度設置,查詢,范圍查詢,距離查詢,經(jīng)緯度Hash等常見操作

7、持久化

Redis的高性能是由于其將所有數(shù)據(jù)都存儲在了內存中,為了使Redis在重啟之后仍能保證數(shù)據(jù)不丟失,需要將數(shù)據(jù)從內存中同步到硬盤中,這一過程就是持久化。

Redis支持兩種方式的持久化,一種是RDB方式,一種是AOF方式,可以單獨使用其中一種或將二者結合使用。

7.1、RDB持久化

RDB方式的持久化是通過快照(snapshotting)完成的,當符合一定條件時Redis會自動將內存中的數(shù)據(jù)進行快照并持久化到硬盤。

RDB是Redis默認采用的持久化方式,在redis.conf配置文件中默認有此下配置:

save 900 1
save 300 10
save 60 10000

save 開頭的一行就是持久化配置,可以配置多個條件(每行配置一個條件),每個條件之間是“或”的關系,“save 900 1”表示15分鐘(900秒鐘)內至少1個鍵被更改則進行快照,“save 300 10”表示5分鐘(300秒)內至少10個鍵被更改則進行快照。

在redis.conf中:

  • 配置dir指定rdb快照文件的位置
  • 配置dbfilenam指定rdb快照文件的名稱

Redis啟動后會讀取RDB快照文件,將數(shù)據(jù)從硬盤載入到內存。根據(jù)數(shù)據(jù)量大小與結構和服務器性能不同,這個時間也不同。通常將記錄一千萬個字符串類型鍵、大小為1GB的快照文件載入到內存中需要花費20~30秒鐘。

優(yōu)點:

  • 適合大規(guī)模的數(shù)據(jù)恢復
  • 對數(shù)據(jù)完整性和一致性要求不高更適合使用
  • 節(jié)省磁盤空間
  • 恢復速度快

缺點:

  • 克隆時會瞬間增大內存
  • 數(shù)據(jù)過大時,耗時更久
  • 可能會丟失最后一次數(shù)據(jù)

問題總結:

通過RDB方式實現(xiàn)持久化,一旦Redis異常退出,就會丟失最后一次快照以后更改的所有數(shù)據(jù)。這就需要開發(fā)者根據(jù)具體的應用場合,通過組合設置自動快照條件的方式來將可能發(fā)生的數(shù)據(jù)損失控制在能夠接受的范圍。如果數(shù)據(jù)很重要以至于無法承受任何損失,則可以考慮使用AOF方式進行持久化。

rdb移植恢復:

通過將rdb文件拷貝到其他redis服務器下,可以實現(xiàn)rdb的恢復,步驟如下:

  • 關閉需要恢復數(shù)據(jù)的Redis
  • 先把備份的文件拷貝到redis工作目錄下
  • 啟動Redis, 備份數(shù)據(jù)會直接加載

7.2、AOF持久化

默認情況下Redis沒有開啟AOF(append only file)方式的持久化。 

修改配置文件開啟:

appendonly yes

開啟AOF持久化后每執(zhí)行一條會更改Redis中的數(shù)據(jù)的命令或者每隔一秒,Redis就會將該命令寫入硬盤中的AOF文件。

通過修改配置文件設置AOF策略:

#always:表示每一條更新命令都同步;everysec:每秒同步一次(如果宕機,會丟失最后一秒數(shù)據(jù))
appendfsync always | everysec

AOF文件的保存位置和RDB文件的位置相同,都是通過dir參數(shù)設置的,默認的文件名是appendonly.aof

可以通過修改配置文件自定義名稱:

appendfilename appendonly.aof

Rewrite壓縮機制:

? AOF采用文件追加方式,文件會越來越大為避免出現(xiàn)此種情況,新增了重寫機制(fork出一條新進程來將文件重寫), 當AOF文件的大小超過所設定的閾值時,Redis就會啟動AOF文件的內容壓縮, 只保留可以恢復數(shù)據(jù)的最小指令集。

何時觸發(fā)重寫:

Redis會記錄上次重寫時的AOF大小,默認配置是當AOF文件大小是上次rewrite后大小的一倍且文件大于64M時觸發(fā),比如:

系統(tǒng)載入時或者上次重寫完畢時,Redis會記錄此時AOF大小,設為base_size,如果Redis的AOF當前大小>= base_size +base_size*100% (默認)且當前大小==>=64mb==(默認)的情況下,Redis會對AOF進行重寫。

通過修改配置,設置重寫觸發(fā)條件:

# 文件大小達到上次重寫大小的100%(2倍)時開始重寫
auto-aof-rewrite-percentage:100
# 文件大小達到"設置"值時開始重寫
auto-aof-rewrite-min-size:64mb

重寫流程:

1、主進程fork出子進程執(zhí)行重寫操作,保證主進程不會阻塞。

2、子進程遍歷redis內存中數(shù)據(jù)到臨時文件,客戶端的寫請求同時寫入aof_buf緩沖區(qū)和aof_rewrite_buf重寫緩沖區(qū)保證原AOF文件完整以及新增數(shù)據(jù)的完整性。

3、子進程寫完新的AOF文件后,向主進程發(fā)信號,父進程更新統(tǒng)計信息。

4、主進程把aof_rewrite_buf中的數(shù)據(jù)寫入到新的AOF文件。

5、使用新的AOF文件覆蓋舊的AOF文件,完成AOF重寫。

優(yōu)缺點:

優(yōu)點:

  • 備份機制更穩(wěn)健,丟失數(shù)據(jù)概率更低

缺點:

  • 比起RDB占用更多的磁盤空間
  • 恢復備份速度要慢
  • 頻繁的同步導致系統(tǒng)性能壓力更大

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Redis?布隆過濾器命令的使用詳解

    Redis?布隆過濾器命令的使用詳解

    這篇文章主要介紹了Redis?布隆過濾器的相關命令的使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Redis高可用部署架構的實現(xiàn)

    Redis高可用部署架構的實現(xiàn)

    本文主要介紹了Redis高可用部署架構的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • Redis實現(xiàn)分布式鎖的實例講解

    Redis實現(xiàn)分布式鎖的實例講解

    在本篇文章里小編給大家整理了一篇關于Redis實現(xiàn)分布式鎖的實例講解內容,有興趣的朋友們可以學習參考下。
    2021-12-12
  • redis?主從哨兵模式實現(xiàn)一主二從

    redis?主從哨兵模式實現(xiàn)一主二從

    本文主要介紹了redis?主從哨兵模式實現(xiàn)一主二從,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • Redis中的RDB用法原理及說明

    Redis中的RDB用法原理及說明

    Redis RDB是通過fork子進程生成內存數(shù)據(jù)快照的持久化機制,采用寫時復制(COW)技術,確保數(shù)據(jù)一致性,優(yōu)點:性能高、恢復快;缺點:可能丟失最后一次持久化后的數(shù)據(jù),常用于備份,建議與AOF結合使用以兼顧安全與效率
    2025-09-09
  • Redis實現(xiàn)持久化的方式匯總

    Redis實現(xiàn)持久化的方式匯總

    Redis是一種高級key-value數(shù)據(jù)庫。它跟memcached類似,不過數(shù)據(jù)可以持久化,而且支持的數(shù)據(jù)類型很豐富。今天我們就來看看如何實現(xiàn)Redis持久化,需要的朋友可以參考下
    2022-10-10
  • Redis五種數(shù)據(jù)結構在JAVA中如何封裝使用

    Redis五種數(shù)據(jù)結構在JAVA中如何封裝使用

    本篇博文就針對Redis的五種數(shù)據(jù)結構以及如何在JAVA中封裝使用做一個簡單的介紹。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • redis執(zhí)行redis命令的方法教程

    redis執(zhí)行redis命令的方法教程

    這篇文章主要給大家介紹了在redis中執(zhí)行redis命令的方法教程,文中詳細介紹了關于Redis 命令及在遠程服務上執(zhí)行命令的方法,介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Redis使用bloom-filter過濾器實現(xiàn)推薦去重

    Redis使用bloom-filter過濾器實現(xiàn)推薦去重

    這篇文章主要介紹了Redis使用bloom-filter過濾器實現(xiàn)推薦去重,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • redis5集群如何主動手工切換主從節(jié)點命令

    redis5集群如何主動手工切換主從節(jié)點命令

    這篇文章主要介紹了redis5集群如何主動手工切換主從節(jié)點命令,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論

阿城市| 泾阳县| 蕲春县| 思南县| 哈巴河县| 徐州市| 吴旗县| 昔阳县| 江安县| 林甸县| 河曲县| 墨玉县| 吉木萨尔县| 永顺县| 漳平市| 顺平县| 北票市| 济源市| 石泉县| 文昌市| 兰坪| 什邡市| 威信县| 河间市| 务川| 安吉县| 霍林郭勒市| 丽水市| 政和县| 凤城市| 明星| 永寿县| 慈利县| 南平市| 淄博市| 建宁县| 皮山县| 京山县| 平和县| 龙里县| 绥棱县|