安装redis
#安装gcc yum -y install gcc gcc-c++ #安装net-tools yum -y install net-tools
#官网https://redis.io/ cd /opt/ wget http://download.redis.io/releases/redis-7.0.4.tar.gz 解压至/opt/目录下 tar -zxvf redis-7.0.4.tar.gz -C /opt/
#编译安装 make make install
INSTALL redis-server INSTALL redis-benchmark INSTALL redis-cli
//启动redis redis-server 或 nohup redis-server & //配置后台启动 redis-server /opt/redis/redis.conf //停止redis redis-cli shutdown #daemonize配置该为yes vim redis.conf
#配置redis开机自启 vim /etc/systemd/system/redis.service [Unit] Description=redis-server After=network.target [Service] Type=forking ExecStart=/opt/redis/src/redis-server /opt/redis/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target //重载系统服务 systemctl daemon-reload systemctl start redis systemctl status redis systemctl restart redis //开机自启 systemctl enable redis
#修改配置密码(根据个人需求修改密码) find / -name redis.conf vim redis.conf
#创建 redis 命令软链接 find / -name redis-cli ln -s /usr/local/bin/redis-cli /usr/bin/redis redis //登录redis redis-cli auth 密码 redis-cli -h 127.0.0.1 -p 6379 redis-cli -h 127.0.0.1 -p 6379 -a 密码 redis-cli -a 密码
#查看所有6379端口使用情况 netstat -ntulp |grep 6379 netstat -ntulp |grep redis
连接配置
vim /opt/redis/redis.conf
注释 bind
#注释
#bind 127.0.0.1 -::1 //bind 127.0.0.1 -::1表示只本机使用 ,注释后表示任意连接
关闭保护模式(自己访问自己)
命令重命名
flushall与flushdb根据项目情况使用
flushall删除所有
flushdb删除当前数据库
rename-command flushall "" #表示flushall不能使用
rename-command flushdb ""
Redis客户端
命令行客户端
redis-cli -h 127.0.0.1 -p 6379 redis-cli -h 127.0.0.1 -p 6379 -a 密码
图形化桌面客户端
8.8版本后商业化收费
RedisDesktopManager
https://github.com/RedisInsight/RedisDesktopManager
链接:https://pan.baidu.com/s/1y3cdOqS1E2UIGW22nr9zNQ?pwd=QGS1
提取码:QGS1
RedisPlus
https://gitee.com/MaxBill/RedisPlus
RedisDesktopManager-Windows
https://github.com/lework/RedisDesktopManager-Windows/releases
Redis主从集群搭建
Redis的主从集群是一个“一主多从”的读写分离集群。集群中的 Master节点负责处理客户端的读写请求,而 Slave节点仅能处理客户端的读请求。只所以要将集群搭建为读写分离模式,主要原因是,对于数据库集群,写操作压力一般都较小,压力大多数来自于读操作请求。所以,只有一个节点负责处理写操作请求即可。
要搭建主从集群,且每个主机都有可能会是 Master,所以最好不要设置密码验证属性 requirepass如果真需要设置,一定要每个主机的密码都设置为相同的。此时每配置文件中都要设置两个完全相同的属性: requirepass与 masterauth。其中 requirepass用于指定当前主机的访问密码,而 masterauth用于指定当前save访问 master时向 master提交的访问密码,用于让 master验证自己身份是否合法
repl-disable-tcp-nodelay no
该属性用于设置是否禁用TCP特性tcp-nodelay。设置为yes则禁用tcp- nodelay,此时master与 slave间的通信会产生延迟,但使用的TCP包数量会较少,占用的网络带宽会较小相反,如果设置为no,则网络延迟会变小,但使用的TCP包数量会较多,相应占用的网络带宽会大
tcp-nodelay:为了充分复用网络带宽,TCP总是希望发送尽可能大的数据块。
主从的redis.conf配置是一样的 从机多了一个 slaveof 主机ip 端口 或者进入redis配置 两台从机 #从主机向master发送slaveof IP port 表示作为他的从机 slaveof 127.0.0.1 6379
info replication
slaveof 127.0.0.1 6379
从主机向master发送slaveof IP port 表示作为他的从机
info replication
哨兵模式
哨兵是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master
每台redis都启动一个哨兵,或者一台虚拟机启动三台哨兵需分配不同端口
新建哨兵空间路径文件
Mkdir -p/opt/sentinel/data
Master
过滤sentinel.conf文件
cat sentinel.conf | grep -v "#" | grep -v "^$"
将过滤的sentinel.conf文件信息新建并加入新文件
cat sentinel.conf | grep -v "#" | grep -v "^$" > /opt/sentinel/sentinel.conf
#sentinel.conf配置文件说明 #哨兵默认端口 port 26379 daemonize no pidfile "/var/run/redis-sentinel.pid" logfile "/opt/sentinel/6381.log" dir "/opt/sentinel/data" # 2表示配置哨兵,有2个哨兵作出同样的决策,才有决策权 sentinel monitor mymaster 127.0.0.1 6381 2 # master被sentinel认定为失效的间隔时间 sentinel down-after-millisebcodes mymaster 30000 # 剩余的slaves重新和新的master做同步的并行个数 sentinel parallel-syncs mymaster 1 # 主备切换的超时时间,哨兵要去做故障转移,这个时候哨兵也是一个进程,如果他没有去执行,超过这个时间后,会由其他的哨兵来处理 sentinel failover-timeout mymaster 180000
#配置文件 port 26379 daemonize no pidfile "/var/run/redis-sentinel.pid" logfile "/opt/sentinel/6380.log" dir "/opt/sentinel/data" sentinel monitor mymaster 116.205.131.136 6380 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 bind 0.0.0.0 #启动 redis-sentinel /opt/sentinel/sentinel.conf ps -ef | grep redis
转移成功后的sentinel.conf文件
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis是一个NoSQL数据库,常用缓存(cache)
Redis数据类型:string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)
Redis是一个中间件
同步数据(实时性同步数据、阶段性同步数据)