Redis部署手記之單機模式

1.簡介
Redis 是一個開源,高級的鍵值存儲和一個適用的解決方案,用於構建高性能,可擴展的 Web
應用程序。它有三個主要特點,使其優越於其它鍵值數據存儲系統:

  • Redis 將其數據庫完全保存在內存中,僅使用磁盤進行持久化。
  • 與其它鍵值數據存儲相比,Redis 有一組相對豐富的數據類型。
  • Redis 可以將數據複製到任意數量的從機中。

2.部署條件
本次Redis部署基於 Centos7 系統,會分四篇手記講解單機模式、主從模式、哨兵模式、集羣模式。
需注意,由於虛擬機開不了多臺,所以在同一臺 Centos 機器上的進行不同模式實驗(通過不同的服務端口區分不同的 Redis 實例)。實際使用時,一般會使用多臺機器部署,此時只需要對應修改 IP 即可,部署過程是一樣的。

3.前置環境部署
如果只是部署 Redis(單機模式/主從模式/哨兵模式),是不需要安裝這個前置環境的。如果要部署 Redis(集羣模式(Redis Cluster)),建議先裝完這個前置環境才往下做實驗。這是因爲 Redis Cluster 需要使用 ruby 腳本構建。雖然 Centos7 自帶了 ruby 支持庫的安裝源,但是版本過低(只是 2.0.0 版本),Redis 要求 ruby 的版本至少爲 2.2.2。安裝方法如下:

先更換 yum 源安裝 2.3 版本的 ruby:

#yum install centos-release-scl-rh # 會在/etc/yum.repos.d/目錄多出一個CentOS-SCLo-scl-rh.repo 源

在這裏插入圖片描述
通過 yum 安裝 ruby:

#yum install rh-ruby23 -y
#scl enable rh-ruby23 bash   # 臨時變更當前環境變量的 ruby 版本爲 2.3(重啓後失效)

注:這種安裝方式是使得 ruby2.0 和 2.3 版本並存,並非升級 ruby。之後若要再使用 2.3 版本的 ruby,需再次執scl enable rh-ruby23 bash

查看 ruby 版本:

#ruby -v
ruby 2.3.8p459 (2018-10-18 revision 65136) [x86_64-linux]

安裝 gem:

#yum -y install rubygems 

安裝 ruby 的 redis 包(用於 redis之間的通信):

#gem install redis
# 若前面安裝 ruby 版本過低就會報錯: 
# ERROR:
#Error installing redis:
redis requires Ruby version >= 2.2.2

查看 gem 版本:

#gem -v
2.5.2.3

至此前置環境就安裝完成了,下面開始展示Redis 四種模式的部署。

一、單機模式

1.1簡介
單機模式是 Redis 最基本的模式,之後的主從、哨兵、集羣模式都是據此擴展而來。而且在
開發環境下,出於方便起見,一般部署單機模式即可滿足調試要求。
1.2 安裝
到官網下載redis,本實驗下載的版本是 redis-4.0.11.tar.gz :

中文官網:http://www.redis.cn/
英文官網:https://redis.io/

上傳到 Centos 服務器,本次實驗上傳位置爲:usr/local/redis-4.0.11.tar.gz

解壓安裝包:

#tar -zxvf redis-4.0.11.tar.gz

由於 Redis 需要編譯安裝,先安裝 gcc 編譯環境:

#yum -y install gcc

進入 Redis 安裝目錄:

cd /usr/local/redis-4.0.11/

編譯:

#make MALLOC=libc

編譯完成後,進入 src 目錄:

#cd /usr/local/redis-4.0.11/src/

把 src 目錄下的文件安裝到 /usr/local/bin :

#make install

1.3部署
默認情況下,Redis 是通過以下方式啓動/停止的:

#cd /usr/local/redis-4.0.10/src/    # 切換到啓動腳本目錄
#./redis-server ../redis.conf       # 啓動 Redis
Ctrl + C                           # 停止 Redis

這種啓動方式非但無法在後臺運行,而且也不符合使用習慣。另外默認情況下 Redis 也不直接支持開機自啓,爲此要對其進行改善。

通過命令 vi /usr/local/redis-4.0.10/redis.conf編輯 Redis 配置文件,爲支持後臺啓動

daemonize yes                       # 後臺啓動模式
# 修改一下其他配置項
maxmemory 536870912      # 最大內存(單位 byte),需根據實際配置,建議爲當前空閒內存的 50%左右
dir /tmp/redis    # Redis的工作目錄(若不存在需手建否則無法啓動),默認值爲[./],logfile 與 dbfilename 受其影響
logfile ""                         # Redis 日誌名稱(默認不配置,表示輸出到 stdout),正式部署請設置爲合適的名稱
dbfilename dump.rdb    # Redis 數據持久化時的存儲位置,正式部署請設置爲合適的名稱

建上面配置的 Redis 工作目錄:

#mkdir /tmp/redis

然後在/etc 目錄下新建 redis 目錄:

#mkdir /etc/redis

拷貝 redis.conf 配置文件到/etc/redis 目錄下,並重命名爲 6379.conf(取的是 Redis 默認端口
名稱,Redis 啓動腳本里的變量會讀取這個名稱,因此若 redis 的端口號改了,這個文件名也要修
改):

#cp /usr/local/redis-4.0.11/redis.conf /etc/redis/6379.conf

拷貝 Redis 的啓動腳本到/etc/init.d 目錄下,並重命名爲 redisd:

#cp /usr/local/redis-4.0.11/utils/redis_init_script /etc/init.d/redisd

通過vi /etc/init.d/redisd命令修改 redisd 文件,在首行#!/bin/sh下面添加兩行(其含義是 Redis服務必須在運行級 2,3,4,5 下被啓動或關閉,啓動的優先級是 90,關閉的優先級是 10):

#!/bin/sh 
# chkconfig:2345 90 10
# description:	Redis is a persistent key-value database

切換到/etc/init.d 目錄:

#cd /etc/init.d

設置爲開機自啓:

#chkconfig redisd on    #若不需要自啓則執行 chkconfig redisd off

現在可以直接以服務的形式啓動 Redis 了:

#service redisd start

在這裏插入圖片描述
1.4測試
通過 Redis 測試客戶端命令 redis-cli 分別連接到 Redis 實例:

#cd /usr/local/redis-4.0.11/src/    # 切換到啓動腳本目錄
[root@localhost src]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> info
# Server
redis_version:4.0.11
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:dcb7502714117eda
redis_mode:standalone
os:Linux 3.10.0-123.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:5733
run_id:308fbc71ec2d48c346f3b937023c46e96c05cadb
tcp_port:6379
uptime_in_seconds:244
uptime_in_days:0
hz:10
lru_clock:10414214
executable:/usr/local/bin/redis-server
config_file:/etc/redis/6379.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:903737
used_memory_human:882.56K
used_memory_rss:2019328
used_memory_rss_human:1.93M
used_memory_peak:903737
used_memory_peak_human:882.56K
used_memory_peak_perc:100.11%
used_memory_overhead:902277
used_memory_startup:852647
used_memory_dataset:1460
used_memory_dataset_perc:2.86%
total_system_memory:1915682816
total_system_memory_human:1.78G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:2.23
mem_allocator:libc
active_defrag_running:0
lazyfree_pending_objects:0

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1587472274
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:0
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:0

# Stats
total_connections_received:1
total_commands_processed:1
instantaneous_ops_per_sec:0
total_net_input_bytes:31
total_net_output_bytes:10163
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0

# Replication
role:master
connected_slaves:0
master_replid:552fd682b8b91f80122e782f8bb799803b901538
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:0.26
used_cpu_user:0.00
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
127.0.0.1:6379> 

至此 Redis 單機模式部署完成。
爲了部署後面幾種模式,現在先停止這個 Redis 進程:

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