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