Redis源码安装for centos7

Redis概述

Redis的出现时间并不长,是NoSQL中的一种,基于键-值型的存储,与Memcache类似,但是Memcache中只是内存的缓存,而Redis不仅是内存中的缓存,还提供持久存储,在2009年第一次发布Redis

Redis 全称(REmote DIctionary
Server)远程字典服务器,而这个字典服务器从本质上来讲,主要是提供数据结构的远程存储功能的,可以理解为Redis是一个高级的K-V存储,和数据结构存储,因为Redis除了能够存储K-V这种简单的数据之外,还能够存储,列表、字典、hash表、等对应的数据结构

redis支持主从模式,但是redis的主从模式默认就有一个sentinel工具,从而实现主从架构的高可用,也就是说,redis能够借助于sentinel工具来监控主从节点,当主节点发生故障时,会自己提升另外一个从节点成为新的主节点

在redis 3.0版本发布,开始支持redis集群,从而可以实现分布式,可以将用户的请求分散至多个不同节点

Redis官网

1
官网地址:https://redis.io/

Redis和Memcache性能

在性能上redis不比memcache差,因为redis整个运行通通都是在内存中实现的,它的所有的数据集都是保存在内存中的,内存中的数据会周期性的写入到磁盘上,以实现数据的持久功能,而这种写磁盘并不是用于访问,而仅是冗余功能,所以redis所有功能都在内存中完成,因为此性能也是可想而知

Redis和Memcache不同

redis与mamcache不同之处在于redis有一个周期性的将数据保存到磁盘上的机制,而且不只一种,有两种机制,这也是redis持久化的一种实现,另外与mamcache有所区别的是,redis是单线程服务器,只有一个线程来响应所有的请求,相比较还有以下:

1
2
3
4
5
1)Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。
2)Redis不仅仅支持简单的k/v类型的数据,同时还提供list,sets,hash等数据结构的存储。
3)Redis支持数据的备份,即master-slave模式的数据备份。
4)Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
5)Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存

Redis支持的数据类型

支持存储的数据类型有:

1
String(字符串,包含整数), List(列表), Hash(关联数组), Sets(集合), Sorted Sets(有序集合), Bitmaps(位图), HyperLoglog

Redis性能评估

1
2
3
1)100万较小的键存储字符串,大概消耗100M内存
2)由于redis是单线程,如果服务器主机上有多个CPU,只有一个能够使用,但并不意味着CPU会成为瓶颈,因为redis是一个比较简单的K-V数据存储,CPU通常不会成为瓶颈的
3)在常见的linux服务器上,500K(50万)的并发,只需要一秒钟处理,如果主机硬件较好的情况下,每秒钟可以达到上百万的并发

Redis优势

1
2
3
4
5
1)支持存储多种数据类型
2)内建Replication和cluster(自身支持复制和集群功能)
3)支持就地更新(in-place update)操作,直接可以在内存中完成更新的操作
4)支持持久化(写入磁盘)
5)避免雪崩,万一出现雪崩,所有的数据都无法恢复,但redis由于有持久性的数据,可以实现恢复

Memcache优势

1
2
3
4
5
6
1)多线程
2)善用多核CPU
3)更少的阻塞操作
4)更少的内存开销
5)更少的内存分配压力
6)可能有更少的内存碎片

Redis源码安装for centos7

1、源码安装
1
2
3
4
5
cd /a01/apps/apps_src/
tar -zxvf redis-4.0.8.tar.gz
cd redis-4.0.8
make
make PREFIX=/a01/apps/redis install
2、做好软链接
1
ln -s /a01/apps/redis/bin/* /usr/bin/
3、创建Redis相关目录
1
2
3
4
mkdir -p /etc/redis
mkdir -p /a01/apps/redis/data
mkdir -p /var/log/redis
mkdir -p /var/run/redis
4、创建Redis运行用户
1
useradd redis
5、授权
1
2
3
chown -R redis:redis /a01/apps/redis/
chown -R redis:redis /var/log/redis/
chown -R redis:redis /var/run/redis/
6、创建Redis配置文件
1
cp /a01/apps/apps_src/redis-4.0.8/redis.conf /etc/redis/
7、修改Redis配置文件
1
vim /etc/redis/redis.conf

##基本配置

1
2
3
4
5
6
7
8
9
10
11
12
bind 127.0.0.1						#监听的地址,默认监听在127.0.0.1地址上,可以指定为0.0.0.0地址,或某个特定的地址,或可以指定多个,使用空格分隔即可
port 6379 #监听端口:6379/tcp
tcp-backlog 511 #指定tcp-backlog的长度
unixsocket /tmp/redis.sock #指定使用sock文件通信及sock文件位置,如果服务端和客户都在同一台主机上,建议打开此项,基于sock方式通信可以直接在内存中交换,数据不用再经过TCP/TP协议栈进行封装、拆封
unixsocketperm 700 #定义sock文件的访问权限
timeout 0 #表示当客户端连接成功后,空闲(非活跃、或没有任何数据交互)多长时间则连接超时,0表示不启用此功能
tcp-keepalive 300 #定义是否启用tcp-keepalive功能
daemonize yes #表示redis并不会运行成为一个守护进程,如果需要运行成为一个守护进程,则把no,改为yes即可,如果使用服务脚本启动,即使daemonize为no,也会运行为一个守护进程
pidfile /var/run/redis/redis_6379.pid #定义pid文件
loglevel notice #定义日志级别
logfile /var/log/redis/redis_6379.log #定义日志文件
databases 16 #定义redis默认有多少个databases,但是在分布式中,只能使用一个

##RDB持久化相关

1
2
3
4
5
6
save 900 1							#表示在900秒(15分钟内),如果至少有1个键发生改变,则做一次快照(持久化)
save 300 10 #//表示在300秒(5分钟内),如果至少有10个键发生改变,则做一次快照(持久化)
save 60 10000 #表示在60秒(1分钟内),如果至少有10000个键发生改变,则做一次快照(持久化)

dbfilename dump6379.rdb #持久化数据名称
dir /a01/apps/redis/data #持久化数据存放路径

##配置主从相关(这里没有配置主从,所以不修改)

1
2
3
slaveof <masterip> <masterport>		#此项不启用时,则为主,如果启动则为从,但是需要指明主服务器的IP,端口
masterauth <master-password> #如果主服务设置了密码认证,那么从的则需要启用此项并指明主的认证密码
slave-read-only yes #定义从服务对主服务是否为只读(仅复制)

##定义与连接和资源相关的配置(未配置,默认即可)

1
2
maxclients 10000						#定义最大连接限制(并发数)
maxmemory <bytes> #定义使用主机上的最大内存,默认此项关闭,表示最大将使用主机上的最大可用内存

##定义AOF持久化功能

1
appendonly yes						#AOF的持久化功能相关配置,一旦有某一个键发生变化,将修改键的命令附加到命令列表的文件中,类似于MySQL二进制日志,此项定义是否开启AOF持久化功能,no表示关闭,yes表示开启

注意:RDB和AOF两种持久功能可以同时启用,两者不影响

8、编写Redis启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
vim /etc/systemd/system/redis6379.service

[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=/a01/apps/redis/bin/redis-server /etc/redis/redis.conf --supervised systemd
ExecStop=/a01/apps/redis/bin/redis-cli shutdown
Type=notify
User=redis
Group=redis

[Install]
WantedBy=multi-user.target

chmod 754 /etc/systemd/system/redis6379.service
systemctl daemon-reload ##重新加载Unit文件
systemctl enable redis6379 ##开机自启
systemctl start redis6379 ##启动redis服务
博主QQ:1012405802
技术交流QQ群:830339411
版权声明:网站内容有原创和转载,如有侵权,请联系删除,谢谢!!
感谢打赏,93bok因你们而精彩!!(支付宝支持花呗)
0%