Redis编译安装以及一些参数说明

本文详细介绍了Redis的特性、数据结构、安装过程,包括编译安装、解决编译问题及将其添加到Service服务。讨论了Redis为何如此快速,并解释了单线程非阻塞执行的优势。此外,还提到了Redis的常用配置选项,如daemonize、bind、port等。

Redis介绍

  • Redis是开源免费NoSQL数据库产品,它使用内存缓存数据
  • Redis读写性能2万/秒,MySQL读性能5千/秒,写入性能3千/秒
  • Redis是单线程的,采用的是**非阻塞执行

Redis功能概述

  • 高性能 :

    底层C语言编写,内存数据库,通讯采用epoll非阻塞I/O多路复用机制

  • 线程安全

    Redis操作都是单线程的,都是原子操作 。 (Reids 6+ 是多线程,但是多线程体系在同步数据需求上,底层的核心操作还是单线程,避免高并发场景下数据安全的问题。 )

  • 功能丰富

    支持数据结构多种,支持数据持久化,支持Master-Slave主从模式、支持集群分片、以及哨兵监控机制。

Redis数据结构类型

  • 基本的有:StringListHashSetSortedSet
  • 高阶:GEOBitMapHyperLogLog

Redis特点

  • 内存数据库,速度快,也支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的Key-Value数据类型,同时还提供Lists、Hashes 、 Sets 、Sorted Sets等多种数据类型
  • Redis支持数据备份(master-slave)与集群(分片存储),以及拥有哨兵监控机制。
  • 支持事务

为什么Redis那么快?

Redis使用内存来缓存数据,以防唯一还可以修改设置,让Redis把数据保存在硬盘上,因为Redis是用内存保存数据,IO性能比MySQL好很多。

Redis没有二维表结构,数据结构是key-value的,数据结构变简单了,读写速度就快了,

没优化读写到达2w/秒,优化后最多10W/秒。

为什么是采用带线程?

Redis是单线程的,采用的是非阻塞执行,别看是单线程比多线程的程序执行的还要快。

因为线程越多,线程调度的时候切换等待的时间就越长,反而性能不如单线程程序。

非阻塞式的好处?

因为是非阻塞式,比如A访问redis,比如相差10秒之间才发送过来,redis就不会等待这10秒,执行完A指令后,那么redis就处理其他的客户端指令,等到客户端A发送第二指令的时候,redis再调一个时间去执行这个指令。

非阻塞让redis任务排的非常满,没有多线程切换和调度的时间。

Redis软件安装

编译安装

  1. 下载地址:https://redis.io/download,一般下载稳定版(Stable),截止目前为止最新版是6.0
  2. 上传至服务器
    在这里插入图片描述
  3. 解压
tar -zxvf redis-6.0.16.tar.gz
  1. 安装依赖

(因为Redis底层是C语言写的,需要安装gcc进行编译 ,以及安装autoconf automake)

yum -y install gcc-c++ autoconf automake
  1. 升级gcc

这里要说明一下,在编译Redis 6之前需要升级gcc的版本,默认情况yum安装的gcc版本是4.8.5,由于版本过低,在编译时会报如下错误,所以我们需要执行一下操作,升级GCC。

# 安装 scl源
yum install -y cenots-release-scl scl-utils-build
#安装 9版本的gcc 、gcc-c++ 工具链
yum install -y devtoolset-9-toolchain
#临时覆盖系统原有的gcc引用
scl enable devtoolset-9 bash
# 查看gcc 当前版本
gcc -v
  1. 预编译

切换到解压目录

cd redis-6.0.16/
make

出现make[1]:离开目录就代表成功了

  1. 创建安装Redis目录
mkdir -p /usr/local/redis

不使用:make install(make install默认安装到/usr/local/bin目录下)

使用:如果需要指定安装路径,需要添加PREFIX参数

make prefix=/usr/local/redis/ install

安装成功后的几个文件解释

  • redis-benchmark 性能测试工具
  • redis-check-aof AOF文件修复工具
  • redis-check-rdb RDB文件修复工具
  • redis-cli 客户端命令行
  • redis-sentinal 集群管理工具
  • redis-server 服务进程指令
  1. 启动

安装的默认目标路径:/usr/local/redis/bin ,切换目录

./redis-server

在这里插入图片描述

可以看到当前是6.0.16版本, standaloned mode 单节点运行,PID 父ID, 端口默认是 6379。

启动方式:

第一种:执行

./redis-server命令 , 执行Ctrl + C就会停止服务

第二种:守护进程启动

redis.conf 是Redis的配置文件,安装完后,可以复制redis.conf文件到安装路径下

cp redis.conf /usr/local/redis/bin/

在编译redis安装目录下,找到redis.conf放入/usr/local/redis/bin ,千万不要在原始源上改配置!!最好是拷贝一个新的文件。

#redis.conf
daemonize yes

修改安装路径下的redis.conf,将daemonize修改为yes

启动时,指定配置文件路径即可

./redis-server redis.conf

在这里插入图片描述
结束运行就使用kill -9

出现编译问题

出现server.c:5166:39: error: ‘struct redisServer’ has no member named ‘maxmemory’

错误原因

原因是gcc版本问题,redis6.0+ 需要新版gcc。

查看gcc版本

gcc -v

解决

#升级到 5.3及以上版本
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
 
scl enable devtoolset-9 bash
 
#注意:scl命令启用只是临时的,推出xshell或者重启就会恢复到原来的gcc版本。
#如果要长期生效的话,执行如下:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

Redis添加到Service服务

配置开机自启动(centos7以上)

1.在系统服务目录里创建redis.service文件

vim /etc/systemd/system/redis.service

写入以下内容:

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart= /usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  1. 重载系统服务
systemctl daemon-reload
  1. 这时候,可以用sytemctl 启动redis
systemctl restart redis.service
  • 关闭redis-server : systemctl stop redis.service
  • 开启redsi-server : systemctl start redis.service
  • 查看redis-server状态 : systemctl status redis.service
  1. 加入开机自启动
systemctl enable redis.service 

Redis的常用配置

Redis的配置文件

Redis支持很多的参数,但都是有默认值

  • daemonize :

    默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项值改成yes。

  • bind

    指定Redis只接收来自于该IP地址的请求。 (0.0.0.0 代表任意IP可访问,127.0.0.1 只可本地服务器可访问)

  • port

    监听端口,默认为 6379

  • databases

    设置数据库的个数,默认使用数据库为 16个

  • save

    设置Redis进行数据库镜像的频率

  • dbfilename

    镜像备份文件的文件名

  • dir

    数据库镜像备份的文件放置的路径

  • requirepass

    设置密码访问 设置客户端连接后进行任何其他执行需要的使用的密码。

  • maxclients

    限制同时连接的客户数量。

  • maxmemory

    设置redis能够使用的最大内存。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值