yum安装redis
1.yum安装
#前提得配置好阿里云yum源,epel源 #查看是否有redis包 yum list redis#安装redisyum install redis -y#安装好,启动redissystemctl start redis
2.检测redis是否工作
redis-cli #redis 客户端工具 #进入交互式环境后,执行ping,返回pong表示安装成功 127.0.0.1:6379> ping PONG
源码安装redis,编译安装
编译安装的优势是:
- 编译安装时可以指定扩展的module(模块),php、apache、nginx都是一样有很多第三方扩展模块,如mysql,编译安装时候,如果需要就定制存储引擎(innodb,还是MyIASM)
- 编译安装可以统一安装路径,linux软件约定安装目录在/opt/下面
- 软件仓库版本一般比较低,编译源码安装可以根据需求,安装最新的版本
1.下载redis源码 wget http://download.redis.io/releases/redis-4.0.10.tar.gz2.解压缩tar -zxf redis-4.0.10.tar.gz3.切换redis源码目录cd redis-4.0.10.tar.gz4.编译源文件make 5.编译好后,src/目录下有编译好的redis指令6.make install 安装到指定目录,默认在/usr/local/bin
redis可执行文件
./redis-benchmark //用于进行redis性能测试的工具 ./redis-check-dump //用于修复出问题的dump.rdb文件 ./redis-cli //redis的客户端 ./redis-server //redis的服务端 ./redis-check-aof //用于修复出问题的AOF文件 ./redis-sentinel //用于集群管理
启动redis服务端
启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件: ./redis-server ../redis.conf默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。
使用redis客户端
#执行客户端命令即可进入 ./redis-cli #测试是否连接上redis 127.0.0.1:6379 > ping 返回pong代表连接上了 //用set来设置key、value 127.0.0.1:6379 > set name "chaoge" OK //get获取name的值 127.0.0.1:6379 > get name "chaoge"
通过新的端口和密码登录redis
redis.conf设置
protected-mode yes #打开保护模式 port 6380 #更改默认启动端口 requirepass xxxxxx #设置redis启动密码,xxxx是自定义的密码
启动redis服务端
redis-server /opt/redis-4.0.10/redis.conf & #指定配置文件启动redis,且后台启动
使用密码登录redis,使用6380端口
方法1,使用这个
[[email protected]_python ~ 09:48:41]#redis-cli -p 6380 127.0.0.1:6380> auth xxxx OK
方法2,此方案不安全,容易暴露密码
[[email protected]_python ~ 09:49:46]#redis-cli -p 6380 -a xxxx Warning: Using a password with ‘-a‘ option on the command line interface may not be safe. 127.0.0.1:6380> ping PONG
补充
检查redis是否设置了密码
127.0.0.1:6380> CONFIG get requirepass
1) "requirepass"
2) "xxxxxx"
如果没有,也可以给redis设置密码(命令方式)
CONFIG set requirepass "xxxxxx"
发布/订阅 实验
发布订阅的命令
PUBLISH channel msg 将信息 message 发送到指定的频道 channel SUBSCRIBE channel [channel ...] 订阅频道,可以同时订阅多个频道 UNSUBSCRIBE [channel ...] 取消订阅指定的频道, 如果不指定频道,则会取消订阅所有频道 PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道,每个模式以 * 作为匹配符,比如 it* 匹配所 有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有 以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类 PUNSUBSCRIBE [pattern [pattern ...]] 退订指定的规则, 如果没有参数则会退订所有规则 PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态 注意:使用发布订阅模式实现的消息队列,当有客户端订阅channel后只能收到后续发布到该频道的消息,之前发送的不会缓存,必须Provider和Consumer同时在线。
发布订阅:
窗口1,启动两个redis-cli窗口,均订阅diantai 频道(channel)
窗口2,启动发布者向频道 diantai发送消息
[[email protected] ~]# redis-cli 127.0.0.1:6379> PUBLISH diantai ‘jinyewugenglaiwojia‘ (integer) 2
窗口3,查看订阅者的消息状态
订阅一个或者多个符合模式的频道
窗口1,启动两个redis-cli窗口,均订阅 wang*频道(channel)
127.0.0.1:6379> PSUBSCRIBE wang* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "wang*" 3) (integer) 1 1) "pmessage" 2) "wang*" 3) "wangbaoqiang" 4) "jintian zhennanshou "
窗口2,启动redis-cli窗口,均订阅wang*频道
127.0.0.1:6379> PSUBSCRIBE wang* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "wang*" 3) (integer) 1 1) "pmessage" 2) "wang*" 3) "wangbaoqiang" 4) "jintian zhennanshou "
窗口3,发布者消息
[[email protected] ~]# redis-cli 127.0.0.1:6379> PUBLISH wangbaoqiang "jintian zhennanshou " (integer) 2
redis持久化
Redis
是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis
提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。
RDB持久化
redis
提供了RDB持久化
的功能,这个功能可以将redis
在内存中的的状态保存到硬盘中,它可以手动执行。
也可以再redis.conf
中配置,定期执行。
RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态
RDB(持久化) 内存数据保存到磁盘 在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot) 优点:速度快,适合做备份,主从复制就是基于RDB持久化功能实现 rdb通过再redis中使用save命令触发 rdb rdb配置参数: dir /data/6379/ dbfilename dbmp.rdb 每过900秒 有1个操作就进行持久化 save 900秒 1个修改类的操作 save 300秒 10个操作 save 60秒 10000个操作 save 900 1 save 300 10 save 60 1000
redis持久化之RDB实践
1.启动redis服务端,准备配置文件
daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 #定义持久化文件存储位置 dbfilename dbmp.rdb #rdb持久化文件 bind 10.0.0.10 127.0.0.1 #redis绑定地址 requirepass redhat #redis登录密码 save 900 1 #rdb机制 每900秒 有1个修改记录 save 300 10 #每300秒 10个修改记录 save 60 10000 #每60秒内 10000修改记录
2.启动redis服务端
3.登录redis设置一个key
redis-cli -a redhat
4.此时检查目录,/data/6379底下没有dbmp.rdb文件
5.通过save触发持久化,将数据写入RDB文件
127.0.0.1:6379> set age 18 OK 127.0.0.1:6379> save OK
redis持久化之AOF
AOF(append-only log file)
记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集
AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。
优点:最大程序保证数据不丢
缺点:日志记录非常大
redis-client 写入数据 > redis-server 同步命令 > AOF文件
配置参数
AOF持久化配置,两条参数 appendonly yes appendfsync always 总是修改类的操作 everysec 每秒做一次持久化 no 依赖于系统自带的缓存大小机制
1.准备aof配置文件 redis.conf
daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 dbfilename dbmp.rdb requirepass redhat save 900 1 save 300 10 save 60 10000 appendonly yes appendfsync everysec
2.启动redis服务
redis-server /etc/redis.conf
3.检查redis数据目录/data/6379/是否产生了aof文件
[[email protected] 6379]# ls appendonly.aof dbmp.rdb redis.log
4.登录redis-cli,写入数据,实时检查aof文件信息
[[email protected] 6379]# tail -f appendonly.aof
5.设置新key,检查aof信息,然后关闭redis,检查数据是否持久化
redis-cli -a redhat shutdown redis-server /etc/redis.conf redis-cli -a redhat
redis不重启之rdb数据切换到aof数据
redis.conf服务端配置文件
daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 dbfilename dbmp.rdb save 900 1 #rdb机制 每900秒 有1个修改记录 save 300 10 #每300秒 10个修改记录 save 60 10000 #每60秒内 10000修改记录
启动redis服务端
redis-server redis.conf
登录redis-cli插入数据,手动持久化
127.0.0.1:6379> set name chaoge OK 127.0.0.1:6379> set age 18 OK 127.0.0.1:6379> set addr shahe OK 127.0.0.1:6379> save OK
检查RDB文件
[[email protected] /data 22:34:16]#ls 6379/ dbmp.rdb redis.log
备份这个rdb文件,保证数据安全
[[email protected] /data/6379 22:35:38]#cp dbmp.rdb /opt/
执行命令,开启AOF持久化
127.0.0.1:6379> CONFIG set appendonly yes #开启AOF功能 OK 127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能 OK
确保数据库的key数量正确
127.0.0.1:6379> keys * 1) "addr" 2) "age" 3) "name"
确保插入新的key,AOF文件会记录
127.0.0.1:6379> set title golang OK
参考:https://www.cnblogs.com/pyyu/p/9843950.html
总结:
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源码,直接可以编译且安装 cd redis-4.0.10 make && make install 4.可以指定配置文件启动redis vim /opt/redis-4.0.10/redis.conf 更改 仅修改: daemonize yes 启动 redis-server redis.conf 使用客户端 redis-cli ping 出现 PONG 成功 vim /opt/redis-4.0.10/redis.conf 1.更改bind参数,让redis可以远程访问 bind 0.0.0.0 2.更改redis的默认端口 port 6380 3.使用redis的密码进行登录 requirepass 登录redis的密码 4.指定配置文件启动 redis-server redis.conf 5.通过新的端口和密码登录redis redis-cli -p 6380 登录后 auth 密码 keys * 查看数据 redis还支持交互式的参数,登录数据库 redis-cli -p 6380 -a redis的密码 (这个不太安全) 6.通过登录redis,用命令查看redis的密码 config set requirepass 新的密码 #设置新密码 config get requirepass #获取当前的密码 过滤出文件的空白行和注释行 grep -v "^#" redis.conf | grep -v "^$"
redis发布订阅 三个角色,提供的redis命令 1.发布者 publish 频道 消息 给频道发消息 2.订阅者 SUBSCRIBE 频道 订阅频道 PSUBSCRIBE 频道* 支持模糊匹配的订阅 3.频道 channel 频道名 自定义 redis持久化之RDB 1.在配置文件中添加参数,开启rdb功能 进入redis工作目录 [[email protected] redis-4.0.10]# vim redis.conf 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功能 redis-server redis.conf 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功能,测试持久化数据 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文件 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 redis-6380.conf #通过命令快速生成配置文件 sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf 在redis-6380.conf中写入 slaveof 127.0.0.1 6379 #指明主库的身份ip 和端口 redis-6381.conf #通过命令快速生成配置文件 sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf 在redis-6381.conf中写入 slaveof 127.0.0.1 6379 2.启动三个数据库实例,检测redis主从同步方案 3.redis主从赋值,故障手动切换, 1.杀死6379的主库实例 kill 主库 2.手动切换主从身份 1.登录 redis-6380 ,通过命令,去掉自己的从库身份,等待连接 slaveof no one 2.登录redis-6381 ,通过命令,生成新的主任 slaveof 127.0.0.1 6380 3.测试新的主从数据同步 redis哨兵 1.什么是哨兵呢?保护redis主从集群,正常运转,当主库挂掉之后,自动的在从库中挑选新的主库,进行同步 2.redis哨兵的安装配置 1. 准备三个redis数据库实例(三个配置文件,通过端口区分) [[email protected] redis-4.0.10]# redis-server redis-6379.conf [[email protected] redis-4.0.10]# redis-server redis-6380.conf [[email protected] 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 touch redis-sentinel-26379.conf vim 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.添加后台运行参数,使得三个哨兵进程,后台运行 [[email protected] redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26379.conf [[email protected] redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26380.conf [[email protected] redis-4.0.10]# echo "daemonize yes" >> redis-sentinel-26381.conf 4.启动三个哨兵 redis-sentinel redis-sentinel-26379.conf redis-sentinel redis-sentinel-26380.conf redis-sentinel redis-sentinel-26381.conf 5.检查哨兵的通信状态 redis-cli -p 26379 info sentinel 查看结果如下之后,表示哨兵正常 [[email protected] 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身份 redis-cluster安装配置 1.准备6个redis数据库实例,准备6个配置文件redis-{7000....7005}配置文件 [[email protected] redis-4.0.10]# mkdir s15rediscluster cd s15rediscluster touch redis-7000.conf vim redis-7000.conf 写入以下 port 7000 daemonize yes dir "/opt/redis/data" logfile "7000.log" dbfilename "dump-7000.rdb" cluster-enabled yes cluster-config-file nodes-7000.conf 创建六个 [[email protected] s15rediscluster]# sed "s/7000/7001/g" redis-7000.conf >redis-7001.conf [[email protected] s15rediscluster]# sed "s/7000/7002/g" redis-7000.conf >redis-7002.conf [[email protected] s15rediscluster]# sed "s/7000/7003/g" redis-7000.conf >redis-7003.conf [[email protected] s15rediscluster]# sed "s/7000/7004/g" redis-7000.conf >redis-7004.conf [[email protected] s15rediscluster]# sed "s/7000/7005/g" redis-7000.conf >redis-7005.conf 2.启动6个redis数据库实例 [[email protected] s15rediscluster]# redis-server redis-7000.conf [[email protected] s15rediscluster]# redis-server redis-7001.conf [[email protected] s15rediscluster]# redis-server redis-7002.conf [[email protected] s15rediscluster]# redis-server redis-7003.conf [[email protected] s15rediscluster]# redis-server redis-7004.conf [[email protected] 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.解压缩 tar -zxvf ruby-2.3.1.tar.gz ./configure --prefix=/opt/ruby/ 释放makefile make && make install 编译且安装 3.下载安装ruby操作redis的模块包 cd /opt wget http://rubygems.org/downloads/redis-3.3.0.gem /opt/ruby/bin/gem install -l redis-3.3.0.gem 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 -p 7000 #这里会将key自动的重定向,放到某一个节点的slot槽位中 set name s15 set addr shahe
原文地址:https://www.cnblogs.com/chenxi67/p/10217168.html