linux二进制编译安装redis

前言

环境:centos7 redis-6.2.6.tar.gz
查看哪个是稳定版本:https://redis.io/download/
下载地址:https://download.redis.io/releases/

redis使用场景

很多大型电商网站、视频直播和游戏应用等,存在大规模数据访问,对数据查询效率要求高,且数据结构简单,不涉及太多关联查询。这种场景使用redis,在速度上对传统磁盘数据库有很大优势,能够有效减少数据库磁盘IO,提高数据查询效率,减轻管理维护工作量,降低数据库存储成本。redis对传统磁盘数据库是一个重要的补充,成为了互联网应用,尤其是支持高并发访问的互联网应用必不可少的基础服务。电商网站的商品类目、推荐系统以及秒杀抢购活动,适宜使用redis缓存数据库。

例如秒杀抢购活动,并发高,对于传统关系型数据库来说访问压力大,需要较高的硬件配置(如磁盘IO)支撑。redis数据库,单节点QPS支撑能达到10万,轻松应对秒杀并发。实现秒杀和数据加锁的命令简单,使用SET、GET、DEL、RPUSH等命令即可。

1、(视频直播)消息弹幕:直播间的在线用户列表,礼物排行榜,弹幕消息等信息,都适合使用redis中的SortedSet结构进行存储。例如弹幕消息,可使用ZREVRANGEBYSCORE排序返回,在redis 5.0中,新增了zpopmax,zpopmin命令,更加方便消息处理。

2、(游戏应用)游戏排行榜:在线游戏一般涉及排行榜实时展现,比如列出当前得分最高的10个用户。使用redis的有序集合存储用户排行榜非常合适,有序集合使用非常简单,提供多达20个操作集合的命令。

3、(社交APP)返回最新评论/回复:在web类应用中,常有“最新评论”之类的查询,如果使用关系型数据库,往往涉及到按评论时间逆排序,随着评论越来越多,排序效率越来越低,且并发频繁。使用redis的List(链表),例如存储最新1000条评论,当请求的评论数在这个范围,就不需要访问磁盘数据库,直接从缓存中返回,减少数据库压力的同时,提升APP的响应速度。

redis的数据流

在这里插入图片描述

安装必要依赖、gcc编译工具

yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make
yum -y install centos-release-scl 
yum -y install devtoolset-9-gcc
yum -y install devtoolset-9-c++
yum -y install devtoolset-9-binutils scl enable devtoolset-9 

安装redis

wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxvf  redis-6.2.6.tar.gz
# 进入解压目录开始编译
cd redis-6.2.6/
#编译,-j表示开启4个线程编译
make -j 4
#创建一个目录,作为redis安装目录
mkdir /usr/local/redis-6.2.6						
#正式安装redis,加PREFIX参数指定redis安装到/usr/local/redis-6.2.6目录下
#如果不加的话直接执行make install的话,默认安装二进制命令就会生成到/usr/local/bin下
make PREFIX=/usr/local/redis-6.2.6 install

#进入redis的安装目录
cd /usr/local/redis-6.2.6
#ll查看一下有哪些文件,发现只有一个bin目录
[root@redis redis-6.2.6]# ll
total 0
drwxr-xr-x 2 root root 134 Jan 23 22:31 bin
[root@redis redis-6.2.6]#
#其实就是生成了redis-server、redis-cli等6个命令文件而已
[root@redis redis-6.2.6]# tree bin/
bin/
 redis-benchmark
 redis-check-aof -> redis-server
 redis-check-rdb -> redis-server
 redis-cli
 redis-sentinel -> redis-server
 redis-server

0 directories, 6 files
[root@redis redis-6.2.6]# 

创建目录

刚才我们上面看到redis的/usr/local/redis-6.2.6安装目录默认只有一个bin目录,为了规范一点,我们手动创建一下目录:

#进入redis的安装目录
cd /usr/local/redis-6.2.6

#创建3个目录,etc用于存放redis的主配置文件,logs目录存放redis日志,data用于存放redis的持久化数据
mkdir etc logs data	

复制配置文件

redis的启动需要指定配置文件,在我们解压的源码包里就有默认配置文件,为了方便。这里把它复制一份到redis的安装目录下:

#复制一份源码包配置文件到redis安装目录
cp /redis-6.2.6/redis.conf /usr/local/redis-6.2.6/etc/

修改配置文件

默认的redis配置文件是以前台的方式运行redis,这里需要修改一下配置,让redis启动的时候在后台守护进程方式运行,以及设置登陆密码等。

# 进入到配置文件etc目录
cd /usr/local/redis-6.2.6/etc/
[root@redis etc]# vim redis.conf 					#主要启用或修改下面这些参数即可
[root@redis redis-6.2.6]# grep -Ev "#|$^" etc/redis.conf             
bind 0.0.0.0										#设置绑定本机哪些IP,0.0.0.0表示本机全部可用IP,建议设置本机IP即可
port 6379											#redis的默认监听端口6379
daemonize yes										#设置redis启动为后台守护进程
pidfile /usr/local/redis-6.2.6/logs/redis_6379.pid	#pidfile的路径
loglevel notice										#日志级别
logfile /usr/local/redis-6.2.6/logs/redis_6379.log	#日志文件的路径
dir /usr/local/redis-6.2.6/data/					#持久化数据存放的目录
databases 16										#数据库的个数,默认16个
requirepass 123456									#设置客户端登陆密码

[root@redis redis-6.2.6]# 

启动redis服务

cd /usr/local/redis-6.2.6/bin/
#启动redis服务并指定配置文件
./redis-server  /usr/local/redis-6.2.6/etc/redis.conf
#查看6379端口,正常监听即可
lsof -i:6379

问题排查

#第一次启动redis可能会看到日志报下面的3个警告:
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
WARNING: overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
WARNING: you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with redis. To fix thisissue run the command ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled’ as root, and add it to your /etc/rc.local in order to retain thesetting after a reboot. redis must be restarted after THP is disabled.

按照提示解决即可:
vim /etc/sysctl.conf					#打开/etc/sysctl.conf文件,添加下面2行
net.core.somaxconn = 1024				#指定内核参数,默认值128对于负载很大的服务是不够的,改为1024或2048或者更大
vm.overcommit_memory = 1				#内存的分配策略,设置为1表示允许内核分配所有的物理内存

修改完成后保存,执行: sysctl -p 使修改立即生效

使用root账号执行:echo never > /sys/kernel/mm/transparent_hugepage/enabled
为了防止重启服务器失效,将echo never > /sys/kernel/mm/transparent_hugepage/enabled 添加到/etc/rc.local开机自启中即可。

客户端登陆redis

redis-cli就是redis服务的客户端工具,使用该工具登陆redis服务端即可:

cd /usr/local/redis-6.2.6/bin/
#指定IP、端口连接
./redis-cli -h 192.168.1.1 -p 6379
192.168.1.1:6379> auth 123456		#使用auth命令来输入密码
OK
192.168.1.1:6379> info				#查看redis的信息

总结

1、安装依赖插件
yum install -y cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make

2、下载、解压、编译、安装
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxvf  redis-6.2.6.tar.gz
cd redis-6.2.6/
#编译, -j表示开启4个cpu同时编译
make -j 4
#创建一个目录,作为redis安装目录
mkdir /usr/local/redis-6.2.6						
#正式安装redis,加PREFIX参数指定redis安装到/usr/local/redis-6.2.6
#如果不加的话默认安装命令就会生成到/usr/local/bin下
make PREFIX=/usr/local/redis-6.2.6 install				

3、创建目录(为了规范化)
cd /usr/local/redis-6.2.6
#创建etl目录,存放redis配置文件
mkdir etc
#创建logs目录,存放redis日志文件
mkdir logs
#创建data目录,存放redis持久化化数据
mkdir data

4、复制配置文件
#复制源码包里的配置文件到etc目录
cp /redis-6.2.6/redis.conf /usr/local/redis-6.2.6/etc/

5、修改配置文件
cd /usr/local/redis-6.2.6/etc/
[root@redis etc]# vim redis.conf 					#主要启动或修改下面这些参数即可            
bind 0.0.0.0										#设置绑定本机哪些IP,0.0.0.0表示本机全部可用IP,建议设置本机IP即可
port 6379											#redis的默认端口6379
daemonize yes										#设置redis启动为后台守护进程
pidfile /usr/local/redis-6.2.6/logs/redis_6379.pid	#pidfile的路径
loglevel notice										#日志级别
logfile /usr/local/redis-6.2.6/logs/redis_6379.log	#日志文件的路径
dir /usr/local/redis-6.2.6/data/					#持久化数据存放的目录
databases 16										#数据库的个数,默认16个
requirepass 123456									#设置客户端登陆密码

6、启动redis-server
cd /usr/local/redis-6.2.6/bin/
#启动redis服务并指定配置文件
./redis-server  /usr/local/redis-6.2.6/etc/redis.conf
#查看6379端口
lsof -i:6379

7、使用客户端工具redis-cli进行连接
#指定IP、端口进行连接
cd /usr/local/redis-6.2.6/bin/
./redis-cli -h 192.168.1.1 -p 6379					
192.168.1.1:6379> auth 123456		#进入redis后,使用auth命令来输入密码登陆									
OK
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值