centos7安装redis4详细教程

如果缺少插件或者环境自行根据错误下载:
以下命令按照步骤安装即可:

sudo yum update
yum install wget
mkdir /usr/local/redis
cd /usr/local/redis
wget http://download.redis.io/releases/redis-4.0.4.tar.gz
tar xzf redis-4.0.4.tar.gz
cd redis-4.0.4
make
#整理配置文件与服务到指定文件夹,方便维护:
mkdir /usr/local/redis/bin
拷贝编译后的执行程序到/usr/local/redis/bin/src/目录下:
cp mkreleasehdr.sh redis-benchmark redis-check-aof  redis-cli redis-sentinel redis-server /usr/local/redis/bin/
mkdir /usr/local/redis/etc
拷贝配置文件到/usr/local/redis/etc目录下:
cp redis.conf/usr/local/redis/etc

#修改配置redis.conf文件
1.后台启动
vim redis.conf 
# i 用/xxx搜索daemonize 
daemonize yes(这里默认是no)
2.设置密码:
 requirepass xxxx
3.注释掉这句话 bind 127.0.0.1(不然只能本地访问)
4.将默认protected mode yes,需要将其改为protected mode no
运行:redis-server与redis.conf路径正确即可
切换到bin目录 ./redis-server redis.conf
#查看启动状态:
ps -ef|grep redis
远程连接:
redis-cli -h ip地址 -p 6379 -a 密码(密码也可后面再输,用auth + 密码验证)
查看防火墙状态:
firewall-cmd --state
或者
systemctl status firewalld
开启防火墙:
service firewalld start
关闭防火墙:
service firewalld stop



#补充(可忽略):
conf配置文件:
设定当前服务启动端口号
dir “/自定义目录/redis/data“
设定当前服务文件保存位置,包含日志文件、持久化文件(后面详细讲解)等
logfile "6***.log“
设定日志文件名,便于查阅

reb持久化:
3种方法:
save  单线程执行 大数据量下造成阻塞,不推荐
bgsave  后台执行保存,但不会立马保存会调用fork函数生成子线程执行保存
配置文件conf配置保存持久化,达到某个条件进行持久化:
save second changes
满足限定时间范围内key的变化数量达到指定数量即进行持久化

 dbfilename dump.rdb
说明:设置本地数据库文件名,默认值为 dump.rdb
经验:通常设置为dump-端口号.rdb
 dir
说明:设置存储.rdb文件的路径
经验:通常设置成存储空间较大的目录中,目录名称data
 rdbcompression yes
说明:设置存储至本地数据库时是否压缩数据,默认为 yes,采用 LZF 压缩
经验:通常默认为开启状态,如果设置为no,可以节省 CPU 运行时间,但会使存储的文件变大(巨大)
 rdbchecksum yes
说明:设置是否进行RDB文件格式校验,该校验过程在写文件和读文件过程均进行
经验:通常默认为开启状态,如果设置为no,可以节约读写性过程约10%时间消耗,但是存储一定的数据损坏风险

stop-writes-on-bgsave-error yes
说明:后台存储过程中如果出现错误现象,是否停止保存操作
经验:通常默认为开启状态

**注意点:SHUTDOWN 和 FLUSHALL 命令都会触发RDB快照,这是一个坑,请大家注意。**

RDB优点:
 RDB是一个紧凑压缩的二进制文件, 存储效率较高
 RDB内部存储的是redis在某个时间点的数据快照, 非常适合用于数据备份,全量复制等场景
 RDB恢复数据的速度要比AOF快很多
 应用:服务器中每X小时执行bgsave备份,并将RDB文件拷贝到远程机器中,用于灾难恢复。

RDB缺点:
 RDB方式无论是执行指令还是利用配置,无法做到实时持久化,具有较大的可能性丢失数据
 bgsave指令每次运行要执行fork操作创建子进程, 要牺牲掉一些性能
 Redis的众多版本中未进行RDB文件格式的版本统一,有可能出现各版本服务之间数据格式无法兼容现象

注意点:SHUTDOWN 和 FLUSHALL 命令都会触发RDB快照,这是一个坑,请大家注意。

AOF持久化配置:
appendonly yes (默认是no)
appendfsync everysec
appendfilename filename (一般加端口号)

AOF重写:
随着命令不断写入AOF,文件会越来越大,为了解决这个问题, Redis引入了AOF重写机制压缩文件体积。 AOF文件重
写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。 简单说就是将对同一个数据的若干个条命令执行结
果转化成最终结果数据对应的指令进行记录。

作用:
 降低磁盘占用量,提高磁盘利用率
 提高持久化效率,降低持久化写时间,提高IO性能
 降低数据恢复用时,提高数据恢复效率

注意点:aof重写并不是对已有的aof文件进行重写,而是根据当前的redis数据库状态进行优化重写,比如之前的命令是lpush lista 1,lpush lista 2,重写后会变成lpush lista 1,2;

aof重写规则:
 进程内已超时的数据不再写入文件
 忽略无效指令,重写时使用进程内数据直接生成,这样新的AOF文件只保留最终数据的写入命令
如del key1、 hdel key2、 srem key3、 set key4 111、 set key4 222等
 对同一数据的多条写命令合并为一条命令
如lpush list1 a、 lpush list1 b、 lpush list1 c 可以转化为: lpush list1 a b c。
为防止数据量过大造成客户端缓冲区溢出,对list、 set、 hash、 zset等类型, 每条指令最多写入64个元素

aof重写方式:
手动: bgrewriteaof
自动:
auto-aof-rewrite-min-size size
auto-aof-rewrite-percentage percentage

 自动重写触发条件设置
auto-aof-rewrite-min-size size
auto-aof-rewrite-percentage percent

扫描二维码关注公众号,回复: 9198985 查看本文章

 自动重写触发比对参数( 运行指令info Persistence获取具体信息 )
aof_current_size
aof_base_size

 自动重写触发条件:
在这里插入图片描述

redis事务:
只保证几个命令执行过程中不被其他命令影响,不会回滚
开启事务:multi
执行事务:exec
取消事务:discard
监视key:watch key

过期数据删除策略:
定时删除:
 创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作
 优点:节约内存,到时就删除,快速释放掉不必要的内存占用
 缺点: CPU压力很大,无论CPU此时负载量多高,均占用CPU,会影响redis服务器响应时间和指令吞吐量
 总结:用处理器性能换取存储空间(拿时间换空间)

惰性删除:
 数据到达过期时间,不做处理。等下次访问该数据时
 如果未过期,返回数据
 发现已过期,删除,返回不存在
 优点:节约CPU性能,发现必须删除的时候才删除
 缺点:内存压力很大,出现长期占用内存的数据
 总结:用存储空间换取处理器性能(拿时间换空间)

定期删除:
 周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度
 特点1: CPU性能占用设置有峰值,检测频度可自定义设置
 特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理
 总结:周期性抽查存储空间(随机抽查,重点抽查)

淘汰(逐出)算法:
当新数据进入redis时,如果内存不足怎么办?
 Redis使用内存存储数据,在执行每一个命令前,会调用freeMemoryIfNeeded()检测内存是否充足。如
果内存不满足新加入数据的最低存储要求, redis要临时删除一些数据为当前指令清理存储空间。清理数据
的策略称为逐出算法。
 注意:逐出数据的过程不是100%能够清理出足够的可使用的内存空间,如果不成功则反复执行。当对所
有数据尝试完毕后,如果不能达到内存清理的要求,将出现错误信息

(error) OOM command not allowed when used memory >'maxmemory

相关配置:
 最大可使用内存:
maxmemory
占用物理内存的比例,默认值为0,表示不限制。生产环境中根据需求设定,通常设置在50%以上。

 每次选取待删除数据的个数
maxmemory-samples
选取数据时并不会全库扫描,导致严重的性能消耗,降低读写性能。因此采用随机获取数据的方式作为待检
测删除数据

 删除策略
maxmemory-policy
达到最大内存后的,对被挑选出来的数据进行删除的策略

影响数据逐出的相关配置:
 检测易失数据(可能会过期的数据集server.db[i].expires )
① volatile-lru:挑选最近最少使用的数据淘汰
② volatile-lfu:挑选最近使用次数最少的数据淘汰
③ volatile-ttl:挑选将要过期的数据淘汰
④ volatile-random:任意选择数据淘汰
 检测全库数据(所有数据集server.db[i].dict )
⑤ allkeys-lru:挑选最近最少使用的数据淘汰
⑥ allkeys-lfu:挑选最近使用次数最少的数据淘汰
⑦ allkeys-random:任意选择数据淘汰
 放弃数据驱逐
⑧ no-enviction(驱逐):禁止驱逐数据( redis4.0中默认策略),会引发错误OOM( Out Of Memory)

redis相关配置:

daemonize yes|no
bind 127.0.0.1
port 6379
databases 16
loglevel debug|verbose|notice|warning
logfile 端口号.log
maxclients 0

 客户端闲置等待最大时长,达到最大值后关闭连接。如需关闭该功能,设置为 0
timeout 300

redis主从复制以及集群搭建请看下集内容!!!

借鉴地址:
https://blog.csdn.net/qq_36918149/article/details/92087113
https://www.cnblogs.com/itdragon/p/7906481.html

发布了23 篇原创文章 · 获赞 5 · 访问量 4829

猜你喜欢

转载自blog.csdn.net/weixin_42567141/article/details/104304987
今日推荐