redis安装及配置文件详解

redis 简介

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步

下面是官方数据:
测试完成了50个并发执行100000个请求。
设置和获取的值是一个256字节字符串。
Linux box是运行Linux 2.6,这是X3320 Xeon 2.5 ghz。
结果:读的速度是110000次/s,写的速度是81000次/s 。

安装

官网地址https://redis.io/download/
下载源码安装
在这里插入图片描述

redis 基于c语言开发,所以安装redis 需要安装c环境
以下为安装脚本,按需要调整软件包名称,安装位置,及包格式即可

#!/bin/bash
install_path=$(pwd)
PG_Name="redis-5.0.0"
PG_Format=".tar.gz"
gcc -v &>/dev/null
if [ $? -ne 0 ]
then 
 yum -y install gcc-c++
fi
tar -zxvf $install_path/$PG_Name$PG_Format -C $install_path
cd $install_path/$PG_Name
make && make install
cp -a ./redis.conf ./src/
sed -i "s/bind 127.0.0.1/bind 0.0.0.0/" $install_path/$PG_Name/src/redis.conf
sed -i "s/daemonize no/daemonize yes/" $install_path/$PG_Name/src/redis.conf
$install_path/$PG_Name/src/redis-server $install_path/$PG_Name/src/redis.conf

redis 工具介绍

在redis 安装完成之后在其安装文件得src文件中有几个redis工具,以下做下介绍:

redis-benchmark   # redis性能检测工具
redis-check-aof #AOF文件检测工具
redis-check-rdb #RDB文件检车工具
src/redis-cli #客户端工具
redis-sentinel #哨兵模式测试工具
redis-server #redis服务启动工具

配置文件详解

bind 127.0.0.1 #监听地址,可以用空格隔开写多个IP
protected-mode yes  #3.2之后加入得特性,在没有设置bind ip得时候,redis只允许访问回环地址上得6379,远程访问将提示警告,并拒绝远程访问
port 6379 #监听端口
tcp-backlog 511 # tcp三次握手得时候server端收到client ack确认号得队列值
timeout 0 #客户端和redis服务端的链接超时时长,默认是0 ,表示用不超时。建议按需修改,
tcp-keepalive 300 #tcp会话保持时长
daemonize no  #修改redis运行方式,默认前台运行,修改为yes后redis将后台运行
supervised no # 设置通过upstart和systemd管理redis守护进程,centos7以后都使用systemd
pidfile /var/run/redis_6379.pid # pid文件路径
loglevel notice #日志级别
logfile "" #日志文件路径
databases 16 #设置DB库数量,默认是16个,可以按照需要进行增加。最大255
always-show-logo yes # 启动redis的时候是否显示log
save 900 1 #快照保存机制,在900秒内,有一个key发生变化就触发快照机制
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes #快照出错时,是否禁止redis写入操作
rdbcompression yes #持久化到RDB文件时,是否压缩,yes为压缩,no为不压缩
rdbchecksum yes #是否开启RC64校验,默认是开启
dbfilename dump.rdb #快照文件名
dir ./ # 快照文件保存路径
replica-serve-stale-data yes  #当从库与主库失去链接或者复制正在进行时,从库有两种运行凡是1:如果设置为yes 从库会继续响应客户端的读请求,如果设置为no 除去指定的命令外,任何请求都会返回一个错误“SYNC with master in progress”
replica-read-only yes  # 是否设置从库只读
repl-diskless-sync no # 是否使用socket方式复制数据(无盘模式)
repl-diskless-sync-delay 5 # 复制的延迟时间。设置为0 则关闭,在延迟时间内链接的新客户端,会一起通过基于硬盘的方式同步数据,但是一旦复制开始还没有结束之前,master节点不会再接受新的slave的复制请求,直到下一次同步开始
repl-ping-slave-period 10 # slave根据master指定的时间进行周期性的ping检测
repl-timeout 60 # 复制链接的超时时间,需要大于repl-ping-slave-period,否则复制会经常报超时
repl-disable-tcp-nodelay no # 再socket 模式下是否在slave套接字发送SYSNC之后禁用TCP_NODELAY。使用yes,redis将使用更少的TCP包和带宽来向slave发送数据。但是数据到达slave会有延迟。使用no 数据传输到slave 的延迟将会减少,但是将使用更多的带宽
repl-backlog-size 512mb #复制缓冲区内存大小,只有在slave链接之后才会分配
repl-backlog-ttl 3600 # 多少时间master没有slave链接,就清空backlog缓冲区
replica-priority 100  # 当master不可用,Sentinel会根据slave的优先级选举一个master 最低优先级的slave将被选为master 而配置成0 则永不被选举
requirepass foobared # 设置redis的链接密码
rename-command # 重命名一些高危命令
maxclients 10000 #redis最大链接客户端
maxmemory #最大内存,单位为bytes
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
############持久化相关##################
appendonly no # 是否开启AOF日志记录 ,默认是使用rdb方式持久化,redis会把每次写入的数据在接收后都写入appendonly.aof文件,下次启动时会先把这个文件的数据读入内存,先忽略RDB文件
appendfilename "appendonly.aof" #aof文件名
appendfsync everysec #aof持久化策略的配置,no表示不执行Fsync ,由操作系统保证数据同步到磁盘,always表示每次写入都执行fsync,以保证数据同步到磁盘,everysec表示每一秒执行一次fsync ,可能导致丢失这一秒的数据
no-appendfsync-on-rewrite no # 在aof rewrite 期间,是否对aof新纪录的apend暂缓使用文件同步策略,主要烤炉到磁盘IO开支和请求阻塞时间,默认no 表示不暂缓,新的aofj记录任然会立即同步。Linus默认的策略时30秒,如果为yes 可能丢失30秒数据,由于yes 性能好可以避免阻塞,因此比较推荐
auto-aof-rewrite-percentage 100 # 当aof log增长超过指定百分比时,重写AOF文件,设置为0则表示不自动重写AOF日志
auto-aof-rewrite-min-size 64mb #触发aof rewrite的最小文件大小
aof-load-truncated yes # 是否加载由于其他原因导致的末尾异常的AOF文件
aof-use-rdb-preamble yes # 4.0之后新增RDB-AOF混合持久化模式,开启此功能后AOF重写之后的文件将同时包含RDB和AOF格式的内容。其中RDB格式的内容记录已有的数据,而AOF格式的内则用于记录醉经发生变化的数据,这样redis就同时具备了RDB持久化和AOF持久化的有点(既能够快速生成重写文件,也能够在出问题时快速载入数据)
lua-time-limit 5000 # lua脚本的最大执行时间。单位为毫秒
###########cluster相关###############
cluster-enabled yes #是否开启集群模式,默认为no
cluster-config-file nodes-6379.con # 由node节点自动生成集群配置文件
cluster-node-timeout 15000 #集群中的node节点链接超时时长
cluster-replica-validity-factor 10 # 在执行故障转移可能跟有些节点和master断开一段时间数据比较旧,这些master节点就不适合被选举为master,超过这个时间的就不会被进行故障转移
cluster-migration-barrier 1 # 集群迁移屏障,一个节点拥有的至少正常工作的从节点,如果主节点的slave节点故障后将多余的从节点分配到当前主节点成为其新的主节点
cluster-require-full-coverage no # 集群请求槽位全覆盖,如果一个主库宕机切没有备库,就会出现集群槽位不全,那么yes的情况的下redis集群槽位验证不全就不在对外提供服务,而no则会继续使用,但是会出现数据查询不到的情况
slowlog-log-slower-than 10000 # 以微妙为单位的慢日志记录,为负数则会禁用慢日志,为0会记录每一个操作
slowlog-max-len 128  # 最多记录多少条慢日志,超出会滚动删除最早的
##########监控相关##############
latency-monitor-threshold 0 # 
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

redis主从搭建

主备模式,可以实现redis数据的跨主机备份,将数据备份至远程主机,防止服务器宕机导致用户无法访问和数据丢失
由于是主备关系,程序在链接的redis的时候可以考虑在前面加一个负载均衡器,程序通过访问负载均衡器访问后端redis, 但是有个弊端:由于备用节点是只读的,所以需要手动将备用节点的只读权限去掉,并将备用节点手动提升为主节点,防止当主节点启动后,导致主备数据不一致

slave 主要配置

redis slave 也要开启持久化并设置和master相同的链接密码,应为后面slave有可能提升为master,如果密码不一致,会导致应用程序链接不上redis,且slave需要使用密码同步master数据
一个新的redis在成为某个master的slave的时候,会清空自身所有的数据,然后将master的数据导入到自己的内存,断开同步后不会删除已经同步的数数
redis的主从配置很简单,在配置文件中修改两个参数就可以,或则使用命令行执行两条命令,但是使用命令行进行配置在redis重启后主从数据将会丢失

127.0.0.1:6379> REPLICAOF 192.168.144.13 6379
OK
127.0.0.1:6379> CONFIG SET masterauth 111111
OK

通过info命令查看是否同步成功
在这里插入图片描述
这样就同步成功了
通过修改配置文件进行主从同步
slave节点
修改两项配置

# replicaof <masterip> <masterport> #修改为master 的IP和端口
 masterauth 111111 #修改为master 的密码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨煮夕阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值