一、gcc环境搭建
1.检查是否有gcc环境:
gcc -v
#运行命令 gcc -v
#如果显示:-bash: gcc: command not found # 表示没有该环境
#如果显示下文,代表有gcc环境
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
2.如果没有gcc环境,就需要安装gcc
2.1.yum安装:(推荐,这种方式比较简单,但是如果服务器没连外网就不能用yum了)
#2023-05-11安装时,安装的gcc版本为4.8.5
yum install gcc
如果初次使用,需要配置yum源:https://blog.csdn.net/qq_44821149/article/details/130629065
2.2.rpm包安装gcc:
之前参考的这个文章,
https://blog.csdn.net/weixin_43231352/article/details/88849961
然后发现他博客里的gcc安装包是4.4.7版本。
然后我用他这个环境编译redis,结果报错了:c: error trying to exec ‘cc1’: execvp: 没有那个文件或目录。
猜想可能是他这个gcc版本太低导致的。如果准备rpm安装gcc,可以尝试尝试较高版本。
2.3.源码编译gcc:
可以参考这篇文章:https://blog.csdn.net/liboyang71/article/details/77152577
二、redis环境搭建
1.下载redis源码包:http://download.redis.io/releases/
本文采用的redis版本为2.8.9,下载redis-2.8.9.tar.gz 即可。
2.把redis源码包放到/usr/redis目录下(没有该目录可以mkdir一个,放其他目录也可以,看个人习惯)
3.解压:
tar -zxvf redis-2.8.9.tar.gz
4.编译
cd /usr/redis/redis-2.8.9
make
5.安装
#加PREFIX参数,安装到特定目录
#因为我服务器data目录挂载分区,所以安装到这个目录,如果/根目录比较大,可以选择安装到usr/local/share/redis
make install PREFIX=/data/reids
6.拷贝配置文件到安装目录:
cp /usr/redis/redis-2.8.9/redis.conf /data/redis/redis.conf
7.测试是否安装成功:
cd /data/redis/bin
./redis-server
出现下图表示安装成功
三、redis常用配置
1.实现redis后台启动
vim /data/redis/redis.conf
修改:daemonize no → daemonize yes
之前启动redis-server时,属于前台启动,ctl c以后服务就关闭了。
现在设置后台启动,就可以后台一直运行了。
2.为redis设置密码
vim /data/redis/redis.conf
定位到该行:#requirepass foobared
去掉注释,然后修改foobared为自己的密码
requirepass 123456
3.配置日志文件
创建日志目录
mkdir /data/redis/log
配置日志文件
vim /data/redis/redis.conf
将
logfile ""
修改为
logfile "./log/redis.log"
4.使用redis.conf启动redis服务
/data/redis/bin/redis-server /data/redis/redis.conf
5.查看redis进程信息:
ps -ef | grep redis
6.使用redis-cli连接redis-server
/data/redis/bin/redis-cli -a 123456 (a为auth,跟配置文件设置的密码)
或者进入交互式界面再密码认证也可以。
/data/redis/bin/redis-cli
127.0.0.1:6379> auth 123456
不加其他参数,默认连的本机的6379端口。
可以指定redis的端口和IP:
/data/redis/bin/redis-cli -a 123456 -h 192.168.0.89 -p 6379
192.168.0.89:6379>
7.关闭redis服务
/data/redis/bin/redis-cli -a 123456
127.0.0.1:6379>shutdown
这时候就关闭redis服务了,查不到redis信息了
ps -ef | grep redis
8.redis配置文件信息阐述:
daemonize:如需要在后台运行,把该项的值改为yes
pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
port:监听端口,默认为6379
timeout:设置客户端连接时的超时时间,单位为秒
loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
database:设置数据库的个数,默认使用的数据库是0
save:设置redis进行数据库镜像的频率
rdbcompression:在进行镜像备份时,是否进行压缩
dbfilename:镜像备份文件的文件名
dir:数据库镜像备份的文件放置的路径
slaveof:设置该数据库为其他数据库的从数据库
masterauth:当主数据库连接需要密码验证时,在这里设定
requirepass:设置客户端连接后进行任何其他指定前需要使用的密码
maxclients:限制同时连接的客户端数量
maxmemory:设置redis能够使用的最大内存
appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
appendfsync:设置appendonly.aof文件进行同步的频率
vm_enabled:是否开启虚拟内存支持
vm_swap_file:设置虚拟内存的交换文件的路径
vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0
vm_page_size:设置虚拟内存页的大小
vm_pages:设置交换文件的总的page数量
vm_max_thrrads:设置vm IO同时使用的线程数量
四、redis主从复制
1.基本信息阐述
主服务器:192.168.0.89:6379
从服务器:192.168.0.90:6379
主服务器redis密码:123456
从服务器redis密码:123456
2.主服务器redis配置(/data/redis/redis.conf):
主服务器配置文件添加 bind 0.0.0.0
表示对所有ip都开放。
如果不开放ip,从服务器会显示:master_link_status:down
表示与主服务器不能通信。
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
bind 0.0.0.0
3.从服务器redis配置(/data/redis/redis.conf):
从服务器配置文件添加
slaveof接主服务器的ip和端口。(据说新版本redis采用replicaof替代了slaveof,使用高版本redis的时候要稍微注意一下。)
masterauth接主服务器redis的密码。
# slaveof <masterip> <masterport>
slaveof 192.168.0.89 6379
# masterauth <master-password>
masterauth 123456
4.依次重启主从redis服务,验证redis主从复制是否搭建成功
验证主服务器(主服务器上运行命令):
/data/redis/bin/redis-cli
127.0.0.1:6379> auth 123456
127.0.0.1:6379> info replication
可以看出来本服务器角色为master,连接的从服务器数量为1。
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.0.90,port=6379,state=online,offset=24833,lag=0
master_repl_offset:24833
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:24832
验证从服务器(从服务器上运行命令):
/data/redis/bin/redis-cli
127.0.0.1:6379> auth 123456
127.0.0.1:6379> info replication
可以看出master_link_status:up,即与主服务器连通状态为开。
一切正常。
# Replication
role:slave
master_host:192.168.0.89
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:25365
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
5.依次测试主从redis服务器的读写数据。
主服务器读写测试:
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
从服务器读写测试:
主服务器上写数据,从服务器上可以直接读到该数据,说明主从复制配置成功,成功同步到从服务器。
从服务器默认设置只读,所以从服务器不能写数据
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> set k2 v2
(error) READONLY You can't write against a read only slave.