redis的安装与配置
1.redis的安装
1.在linux安装redis 通过源码编译安装redis 1.下载源码包 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩redis tar -zxf redis-4.0.10.tar.gz 3.进入redis源码,直接可以编译且安装 make && make install 4.可以指定配置文件启动redis vim /opt/redis-4.0.10/redis.conf deamonize 改为yes 启动redis服务端就不会夯住了 1.更改bind参数,让redis可以远程访问 bind 0.0.0.0 2.更改redis的默认端口 port 6380 3.使用redis的密码进行登录 requirepass 登录redis的密码 4.指定配置文件启动 redis-server redis.conf
redis还支持交互式的参数,登录数据库
redis-cli -p 6380 -a redis的密码 (这个不太安全)
6.通过登录redis,用命令查看redis的密码
config set requirepass 新的密码 #设置新密码
config get requirepass #获取当前的密码
2.redis发布订阅
三个角色,提供的redis命令 1.发布者 publish 频道 消息 给频道发消息 2.订阅者 SUBSCRIBE 频道 订阅频道 PSUBSCRIBE 频道* 支持模糊匹配的订阅 3.频道 channel 频道名 自定义
3.redis持久化值rdb
1.在配置文件中添加参数,开启rdb功能 redis.conf 写入 port 6379 daemonize yes logfile /data/6379/redis.log dir /data/6379 dbfilename s15.rdb save 900 1 #rdb机制 每900秒 有1个修>改记录 save 300 10 #每300秒 10个修改 记录 save 60 10000 #每60秒内 10000修>改记录 2.开启redis服务端,测试rdb功能 save #手动生成s15.rdb文件进行保存 redis-server redis.conf
3.redis持久化之aof
1.开启aof功能,在redis.conf中添加参数 port 6379 daemonize yes logfile /data/6379/redis.log dir /data/6379 appendonly yes appendfsync everysec 2.启动redis服务端,指定aof功能,测试持久化数据
4.redis不重启将rdb数据切换到aof数据
1.准备rdb的redis服务端 redis-server s15-redis.conf (注明这是在rdb持久化模式下) 2.切换rdb到aof redis-cli 登录redis,然后通过命令,激活aof持久化 127.0.0.1:6379> CONFIG set appendonly yes #用命令激活aof持久化(临时生效,注意写入到配置文件) OK 127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> CONFIG SET save "" #关闭rdb持久化 2.5 将aof操作,写入到配置文件,永久生效,下次重启后生效 port 6379 daemonize yes logfile /data/6379/redis.log dir /data/6379 #dbfilename s15.rdb #save 900 1 #save 300 10 #save 60 10000 appendonly yes appendfsync everysec 3.测试aof数据持久化 ,杀掉redis,重新启动 kill redis-server s15-redis.conf 4.写入数据,检查aof文件
5.redis的主从同步
1.检查redis数据库信息,主从状态的命令 redis-cli -p 6379 info 检查数据库信息 redis-cli -p 6379 info replication 检查数据库主从信息 1.准备三个redis配置文件,通过端口的区分,启动三个redis数据库实例,然后配置主从复制 redis-6379.conf port 6379 daemonize yes pidfile /data/6379/redis.pid loglevel notice logfile "/data/6379/redis.log" dbfilename dump.rdb dir /data/6379
通过命令快速生成配置文件
sef -i "s/6379/6380/g" redis-3679.conf #更改并写入该文件中 sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf slaveof 127.0.0.1 6379 #指明主库的身份ip 和端口 #以6380端口登录之后在操作
通过命令快速生成配置文件 sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf slaveof 127.0.0.1 6379
2.启动三个数据库实例,检测redis主从同步方案 3.redis主从赋值,故障手动切换, 1.杀死6379的主库实例 kill 主库 2.手动切换主从身份 1.登录 redis-6380 ,通过命令,去掉自己的从库身份,等待连接 slaoveof no one 2.登录redis-6381 ,通过命令,生成新的主任 slaveof 127.0.0.1 6380 3.测试新的主从数据同步
6.redis哨兵
1.什么是哨兵呢?保护redis主从集群,正常运转,当主库挂掉之后,自动的在从库中挑选新的主库,进行同步 2.redis哨兵的安装配置 1. 准备三个redis数据库实例(三个配置文件,通过端口区分) [root@localhost redis-4.0.10]# redis-server redis-6379.conf [root@localhost redis-4.0.10]# redis-server redis-6380.conf [root@localhost redis-4.0.10]# redis-server redis-6381.conf 2.准备三个哨兵,准备三个哨兵的配置文件(仅仅是端口的不同26379,26380,26381) -rw-r--r-- 1 root root 227 Jan 2 18:44 redis-sentinel-26379.conf port 26379 dir /var/redis/data/ logfile "26379.log" sentinel monitor s15master 127.0.0.1 6379 2 sentinel down-after-milliseconds s15master 30000 sentinel parallel-syncs s15master 1 sentinel failover-timeout s15master 180000 daemonize yes -rw-r--r-- 1 root root 227 Jan 2 18:45 redis-sentinel-26380.conf 快速生成配置文件 sed "s/26379/26380/g" redis-sentinel-26379.conf > redis-sentinel-26380.conf -rw-r--r-- 1 root root 227 Jan 2 18:46 redis-sentinel-26381.conf sed "s/26379/26381/g" redis-sentinel-26379.conf > redis-sentinel-26381.conf 3.添加后台运行参数,使得三个哨兵进程,后台运行 [root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26379.conf [root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26380.conf [root@localhost redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26381.conf 4.启动三个哨兵 1003 redis-sentinel redis-sentinel-26379.conf 1007 redis-sentinel redis-sentinel-26380.conf 1008 redis-sentinel redis-sentinel-26381.conf 5.检查哨兵的通信状态 redis-cli -p 26379 info sentinel 查看结果如下之后,表示哨兵正常 [root@localhost redis-4.0.10]# redis-cli -p 26379 info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=s15master,status=ok,address=127.0.0.1:6381,slaves=2,sentinels=3 6.杀死一个redis主库,6379节点,等待30s以内,检查6380和6381的节点状态 kill 6379主节点 redis-cli -p 6380 info replication redis-cli -p 6381 info replication 如果切换的主从身份之后,(原理就是更改redis的配置文件,切换主从身份) 7.恢复6379节点的数据库,查看是否将6379添加为新的slave身份
7.redis-cluster安装配置
1.准备6个redis数据库实例,准备6个配置文件redis-{7000....7005}配置文件 -rw-r--r-- 1 root root 151 Jan 2 19:26 redis-7000.conf -rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7001.conf -rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7002.conf -rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7003.conf -rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7004.conf -rw-r--r-- 1 root root 151 Jan 2 19:27 redis-7005.conf 2.启动6个redis数据库实例 [root@localhost s15rediscluster]# redis-server redis-7000.conf [root@localhost s15rediscluster]# redis-server redis-7001.conf [root@localhost s15rediscluster]# redis-server redis-7002.conf [root@localhost s15rediscluster]# redis-server redis-7003.conf [root@localhost s15rediscluster]# redis-server redis-7004.conf [root@localhost s15rediscluster]# redis-server redis-7005.conf 3.配置ruby语言环境,脚本一键启动redis-cluster 1.下载ruby语言的源码包,编译安装 wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz 2.解压缩 ./configure --prefix=/opt/ruby/ 释放makefile make && make install 编译且安装 3.下载安装ruby操作redis的模块包 wget http://rubygems.org/downloads/redis-3.3.0.gem gem install redis 4.配置ruby的环境变量 echo $PATH vim /etc/profile 写入最底行 PATH=$PATH:/opt/ruby/bin/ 读取文件 source /etc/profile 5.通过ruby的包管理工具去安装redis包,安装后会生成一个redis-trib.rb这个命令 一键创建redis-cluster 其实就是分配主从关系 以及 槽位分配 slot槽位分配 /opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 6.检查节点主从状态 redis-cli -p 7000 info replication 7.向redis集群写入数据,查看数据流向 redis-cli -c -p 7000 #这里会将key自动的重定向,放到某一个节点的slot槽位中 set name s15 set addr shahe