一、redis安装
1、yum安装redis(依赖epel源)
# yum install redis -y
2、编译安装redis
官方下载地址:http://download.redis.io/releases/
官方的安装命令:https://redis.io/download
#(1)安装
cd /usr/local/src
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
tar xf redis-5.0.8.tar.gz
cd redis-5.0.8
make PREFIX=/usr/local/redis install
mkdir /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc
#(2)启动redis
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf &
#解决当前的警告提示:
1、echo 512 > /proc/sys/net/core/somaxconn
2、vim /etc/sysctl.conf
vm.overcommit_memory = 1
3、echo never > /sys/kernel/mm/transparent_hugepage/enabled
#(3)编辑redis服务启动脚本:
[root@s1 ~]# vim /lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
#ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=root
Group=root
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
#(4)创建 redis 用户和数据目录:
groupadd -g 1000 redis && useradd -u 1000 -g 1000 redis -s /sbin/nologin
mkdir -pv /usr/local/redis/{etc,logs,data,run}
chown redis.redis -R /usr/local/redis/
#(5)验证redis启动:
systemctl daemon-reload
systemctl start redis
systemctl stop redis
systemctl status redis
systemctl enable redis#允许开机启动
systemctl disable redis#禁止开机启动
ss -ntl
/usr/local/redis/bin/redis-cli(info)
#(6)创建命令软连接:
ln -sv /usr/local/redis/bin/redis-* /usr/bin/
#(7)编译安装后的命令简介:
[root@redis-s1 ~]# ll /usr/local/redis/bin/
total 32656
-rwxr-xr-x 1 redis redis 4365488 Dec 13 09:21 redis-benchmark #redis性能测试工具
-rwxr-xr-x 1 redis redis 8088920 Dec 13 09:21 redis-check-aof #AOF文件检查工具
-rwxr-xr-x 1 redis redis 8088920 Dec 13 09:21 redis-check-rdb #RDB文件检查工具
-rwxr-xr-x 1 redis redis 4800752 Dec 13 09:21 redis-cli #redis客户端工具
lrwxrwxrwx 1 redis redis 12 Dec 13 09:21 redis-sentinel -> redis-server #哨兵,软连接到server
-rwxr-xr-x 1 redis redis 8088920 Dec 13 09:21 #redis-server #redis服务端
#(8)连接到 Redis:主要分为运维人员的连接和程序的连接
#1\本机非密码连接:
[12:37:35 root@centos7 etc]#redis-cli
127.0.0.1:6379>
[12:37:49 root@centos7 etc]#redis-cli -h 192.168.149.133
192.168.149.133:6379>
#2\跨主机非密码连接:
redis-cli -h HOSTNAME/IP -p PORT
#3\跨主机密码连接:
redis-cli -h HOSTNAME/IP -p PORT -a PASSWORD
4\python 连接方式:
#!/bin/env python
#Author: ZhangJie
import redis
import time
pool = redis.ConnectionPool(host="192.168.7.101",
port=6379,password="")
r = redis.Redis(connection_pool=pool)
for i in range(100):
r.set("k%d" % i,"v%d" % i)
time.sleep(1)
data=r.get("k%d" % i)
print(data)
3、windows 安装redis:
Windows 版 Redis 下载地址:https://github.com/MicrosoftArchive/redis/releases
强烈不推荐在生产环境使用 Windows 系统运行 Redis 服务。
#(1)编辑配置文件并执行 redis-server.exe:
C:\Users\ZhangShiJie>cd C:\Users\ZhangShiJie\Desktop\Redis-x64-3.0.504
C:\Users\ZhangShiJie\Desktop\Redis-x64-3.0.504>redis-server.exe redis.windows.conf
#(2)验证 Redis 服务端口:
netstat -t -n
#(3)执行redis-cli客户端:使用客户端连接到Windows版redis server,进行创建key与获取key操作。
C:\Users\ZhangShiJie>cd C:\Users\ZhangShiJie\Desktop\Redis-x64-3.0.504
C:\Users\ZhangShiJie\Desktop\Redis-x64-3.0.504>redis-cli.exe -h 192.168.31.179 -a 123456
二、redis常用配置中文注释
bind 0.0.0.0 #监听地址,可以用空格隔开后多个监听IP#用于指定本机网卡对应的IP地址
protected-mode yes #redis3.2之后加入的新特性,在没有设置bind IP和密码的时候只允许访问127.0.0.1:6379
port 6379 #监听端口
tcp-backlog 511 #三次握手的时候server端收到client ack确认号之后的队列值。
timeout 0 #客户端和Redis服务端的连接超时时间,默认是0,表示永不超时。
tcp-keepalive 300 #tcp会话保持时间
daemonize no #该情况下redis不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成yes,当redis作为守护进程运行的时候,它会写一个pid到/var/run/redis.pid文件里面
supervised no #和操作系统相关参数,可以设置通过upstart和systemd管理 Redis守护进程,centos 7以后都使用systemd
pidfile /var/run/redis_6379.pid #pid 文件路径
loglevel notice #日志级别
logfile "" #日志路径
databases 16 #设置db库数量,默认16个库
always-show-log yes #在启动redis时是否显示log
save 900 1 #在900秒内有1个键内容发生更改就出快照机制
save 300 10
save 60 10000
stop-writes-on-bgsave-error no #快照出错时是否禁止redis写入操作
rdbcompression yes #持久化到RDB文件时是否压缩,"yes"为压缩,"no"则反之
rdbchecksum yes #是否开启RC64校验,默认是开启
dbfilename dump.rdb #快照文件名
dir ./ #快照文件保存路径
replica-serve-stale-data yes #当从库同主库失去连接或者复制正在进行,从机库有两种运行方式:1) 如果为yes(默认设置),从库会继续响应客户端的读请求。2) 如果为no,除去指定的命令之外的任何请求都会返回一个错误"SYNC with master in progress"。
replica-read-only yes #是否设置从库只读
repl-diskless-sync no #是否使用socket方式复制数据,目前redis复制提供两种方式,disk和socket,disk方式是master创建一个新的进程把rdb文件保存到磁盘,再把磁盘上的rdb文件传递给slave,socket是 master创建一个新的进程,直接把rdb文件以 socket的方式发给slave。disk方式的时候,当一个rdb保存的过程中,多个slave都能共享这个rdb文件,socket 的方式就是一个个slave顺序复制,只有在磁盘速度缓慢但是网络相对较快的情况下才使用socket方式,否则使用默认的 disk方式
repl-diskless-sync-delay 30 #diskless复制的延迟时间,设置 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套接字发送SYNC 之后禁用TCP_NODELAY,如果你选择“yes”Redis将使用更少的TCP包和带宽来向slaves发送数据。但是这将使数据传输到slave上有延迟,Linux内核的默认配置会达到40毫秒,如果你选择了 "no" 数据传输到salve的延迟将会减少但要使用更多的带宽
repl-backlog-size 1mb #复制缓冲区大小,只有在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 #最大连接客户端
maxmemory #最大内存,单位为bytes字节,8G内存的计算方式8(G)*1024(MB)*1024(KB)*1024(Kbyte),需要注意的是slave的输出缓冲区是不计算在maxmemory内。
appendonly no #是否开启AOF日志记录,默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是 redis 如果中途宕机,会导致可能有几分钟的数据丢失,根据 save 来策略进行持久化,Append Only File 是另一种持久化方式,可以提供更好的持久化特性。Redis 会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时 Redis 都会先把这个文件的数据读入内存里,先忽略 RDB 文件。
appendfilename "appendonly.aof" #AOF文件名
appendfsync everysec #aof持久化策略的配置,no表示不执行fsync,由操作系统保证数据同步到磁盘,always 表示每次写入都执行fsync,以保证数据同步到磁盘,everysec表示每秒执行一次fsync,可能会导致丢失这1s数据。
no-appendfsync-on-rewrite no #在aof rewrite期间,是否对aof新记录的 append暂缓使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间。默认为no,表示"不暂缓",新的aof记录仍然会被立即同步,Linux 的默认fsync策略是30秒,如果为 yes 可能丢失30秒数据,但由于yes性能较好而且会避免出现阻塞因此比较推荐。
auto-aof-rewrite-percentage 100 # 当Aof log 增长超过指定百分比例时,重写log file, 设置为0表示不自动重写Aof日志,重写是为了使aof体积保持最小,而确保保存最完整的数据。
auto-aof-rewrite-min-size 64mb #触发aof rewrite的最小文件大小
aof-load-truncated yes #是否加载由于其他原因导致的末尾异常的 AOF 文件(主进程被 kill/断电等)
aof-use-rdb-preamble yes #redis4.0 新增 RDB-AOF 混合持久化格式,在开启了这个功能之后,AOF 重写产生的文件将同时包含 RDB 格式的内容和 AOF 格式的内容,其中 RDB 格式的内容用于记录已有的数据,而 AOF 格式的内存则用于记录最近发生了变化的数据,这样 Redis 就可以同时兼有 RDB 持久化和AOF 持久化的优点(既能够快速地生成重写文件,也能够在出现问题时,快速地载入数据)。
lua-time-limit 5000 #lua 脚本的最大执行时间,单位为毫秒
cluster-enabled yes #是否开启集群模式,默认是单机模式
cluster-config-file nodes-6379.conf #由node 节点自动生成的集群配置文件
cluster-node-timeout 15000 #集群中node 节点连接超时时间
cluster-replica-validity-factor 10 #在执行故障转移的时候可能有些节点和 master 断开一段时间数据比较旧,这些节点就不适用于选举为 master,超过这个时间的就不会被进行故障转移
cluster-migration-barrier 1 #一个主节点拥有的至少正常工作的从节点,即如果主节点的 slave 节点故障后会将多余的从节点分配到当前主节点成为其新的从节点。
cluster-require-full-coverage no #集群槽位覆盖,如果一个主库宕机且没有备库就会出现集群槽位不全,那么yes 情况下redis 集群槽位验证不全就不再对外提供服务,而 no 则可以继续使用但是会出现查询数据查不到的情况(因为有数据丢失)。
#Slow log #是 Redis 用来记录查询执行时间的日志系统,slow log 保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启 slow log 而损害 Redis 的速度。
slowlog-log-slower-than 10000 #以微秒为单位的慢日志记录,为负数会禁用慢日志,为 0 会记录每个命令操作。
slowlog-max-len 128 #记录多少条慢日志保存在队列,超出后会删除最早的,以此滚动删除
127.0.0.1:6379> slowlog len
(integer) 14
127.0.0.1:6379> slowlog get
1) 1) (integer) 14
2) (integer) 1544690617
3) (integer) 4
4) 1) "slowlog"
127.0.0.1:6379> SLOWLOG reset
OK
主从同步优化:从2.8 版本开始增加了部分复制的功能
repl-diskless-sync yes#yes 为支持 disk,master 将 RDB 文件先保存到磁盘在发送给 slave,no 为 maste直接将 RDB 文件发送给 slave,默认即为使用 no,Master RDB 文件不需要与磁盘交互。
repl-diskless-sync-delay 5 #Master准备好RDB 文件后等等待传输时间
repl-ping-slave-period 10 #slave端向server端发送 ping 的时间区间设置,默认为10 秒
repl-timeout 60 #设置超时时间
repl-disable-tcp-nodelay no #是否启用 TCP_NODELAY,如设置成 yes,则 redis 会合并小的 TCP 包从而节省带宽,但会增加同步延迟(40ms),造成 master 与 slave 数据不一致,假如设置成 no,则 redis master会立即发送同步数据,没有延迟,前者关注性能,后者关注一致性
repl-backlog-size 1mb #master 的写入数据缓冲区,用于记录自上一次同步后到下一次同步过程中间的写入命令,计算公式:b repl-backlog-size = 允许从节点最大中断时长 * 主实例 offset 每秒写入量,比如 master 每秒最大写入 64mb,最大允许 60 秒,那么就要设置为 64mb*60 秒=3840mb(3.8G)=
repl-backlog-ttl 3600 #如果一段时间后没有 slave 连接到 master,则 backlog size 的内存将会被释放。如果值为 0 则表示永远不释放这部份内存。
slave-priority 100 #slave 端的优先级设置,值是一个整数,数字越小表示优先级越高。当 master 故障时将会按照优先级来选择 slave 端进行恢复,如果值设置为 0,则表示该 slave 永远不会被选择。
#min-slaves-to-write 0 #
#min-slaves-max-lag 10 #设置当一个 master 端的可用 slave 少于 N 个,延迟时间大于 M 秒时,不接收写操作。Master 的重启会导致 master_replid 发生变化,slave 之前的 master_replid 就和 master 不一致从而会引发所有 slave 的全量同步。

本文详细介绍了Redis在Linux和Windows平台上的安装步骤,包括通过YUM和编译源码安装,以及服务启动脚本的编辑。同时,深入解析了Redis配置文件的各项参数,如监听地址、端口、日志级别、持久化策略、主从复制等,帮助读者掌握Redis的全面配置。

910

被折叠的 条评论
为什么被折叠?



