一、主从复制
主从复制:用多台redis服务器来组成一个集群,让其中一台作为主服务器,其他作为从服务器。从服务器会自动的同步主服务器的数据。分担一部分读的操作,那么读取数据的时候就不会从一台服务器拿数据,而是从多态服务器读取数据。写的操作就是在主服务器中。
从服务器作用:减轻主服务器的压力,从服务器担任rdb快照功能。
Master配置(主服务器)
1:关闭rdb快照(备份工作交给slave)
2:可以开启aof
slave配置:(从服务器)
1、声明slave-of
2、某一个slave打开rdb快照功能
3、配置是否只读 slave-read-only
4、可选配置密码(内网可不必)
在主服务器配置中修改 requirepass 123456
客户端连上后需要 auth 123456才能访问
但是从服务器已经连不成功master
需要在从服务器配置上 masterauth 123456
cp redis.conf redis6380.conf
cp redis.conf redis6381.conf
pidfile /var/run/redis6380.pid
port 6380
dbfilename dump6380.rdb
dir /var/rdb/
注:每次slave断开后,再次连接master时,都要master全部dump出来rdb再aof,即同步的过程需要重新来一遍
所以要记住,多台slave不要一下都启动起来
案例一 主从服务器配置
ps:在重新启动6380端口的时候,必须将主redis配置文件中的RDB快照持久化和AOF日志持久化关掉。因此,配置从服务器就可以在从服务器中做持久化操作。
关掉的操作如下: RDB快照注释
AOF日志设为no
通过不同的redis实例占用不同的端口,相当于多台服务器。可以复制多个redis配置文件,因为每个实例都是读取一个配置文件。
redis默认端口6379,修改复制后的配置文件端口6380。
第一步:复制redis配置文件cp redis.conf redis6380.conf
第二步 修改redis6380.conf配置文件
先修改redis实例
再配置主服务器 slaveof localhost 6379 表示本台服务器属于哪个主服务器。
还可以选择配置密码验证,此处我们先不配置密码,有需要再说。
配置从服务器是否只读:是
保存,退出。
启动6380端口服务器
第三步:通过客户端连接6379主服务器
再开一个客户端窗口,连接6380端口
第四步:测试 在主服务器设置key值,从服务器也能获取key值
主服务器
从服务器
已达到从服务器同步主服务器的数据。
注意:在修改配置文件后,都需要重启redis服务器才会生效。
目前redis版本比较多,本章是使用最新的redis版本,在第一章有介绍。因此在配置文件中和视频中的老版本有一些不同,但是效果都是一样的。
1)以下数据显示,redis服务器启动正常
启动6379端口号服务器
启动6380端口号服务器
2)主从配置文件具体需要修改的位置
首先主配置文件的持久化注釋掉,在從配置文件中做持久化
1、注释掉RDB快照
#save 900 1
#save 300 10
#save 60 10000
2、AOF日志设为no appendonly no
4、port 6379(系统默认)
5、redis.conf配置文件中daemonize守护线程,默认是NO。daemonize是用来指定redis是否要用守护线程的方式启动。
设置为daemonize:yes。
redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。
从服务器配置如下:
1、修改生成的文件名,防止和原文件重複
pidfile /var/run/redis6380.pid
2、修改端口号 port 6380
3、配置本台从服务器属于哪个主服务器
replicaof 127.0.0.1 6379
4、配置从服务器是否只读:是
replica-read-only yes
5、采用系统默认daemonize:no
当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。
关闭redis服务器
(1)强制结束程序。使用kill -9 进程的pid,强行终止Redis进程可能会导致redis持久化丢失;
(2)正确停止redis的方式是向redis发送shutdown命令,方法为:(关闭默认端口)
关闭指定端口:
全文快速搜索 /(关键字)
按下”/“键,这时在状态栏(也就是屏幕左下脚)就出现了 “/” 然后输入你要查找的关键字敲回车就可以了。
找到相关文字以后:
(1)按下小写n,向下查找
(2)按下大写N,向上查找
-------------redis运维--------------
TIME 查看时间戳与微秒数
127.0.0.1:6379> time
1) "1423329581"
2) "398972"
dbsize 查看当前库中的key数量
bgrewriteaof 后台进程重写aof
bgsave 后台保存rdb快照
save 保存rdb快照
lastsave 上次保存时间
slaveof 设为slave服务器(设为从服务器)
flushall 清空所有db
flushdb 清空当前db
shutdown save|nosave 断开连接关闭服务器
slowlog显示慢查询
(多慢才算慢? slowlog-log-slower-than 10000)
存多少条? slowlog-max-len 128
查看慢日志 slowlog get
config get slowlog-log-slower-than
config set slowlog-log-slower-than 10
info 显示服务器信息
config get 获取配置信息
config set 设置配置信息
monitor 打开控制台
sync 主从同步
client list 客户端列表
client kill 关闭某个客户端
client setname 为客户端设置名字
client getname 获取客户端名字
-----
如果不小心flushall了
应该首先 shutdown nosave
然后编辑aof
重启
二、java客户端编写
通过java程序调用redis,实现数据存储。
2.1 进入https://redis.io/官网,打开Clients客户端
找到java对应的redis客户端,点击Repository
2.2就可以通过java客户端连接redis服务器
如何使用,有两种方式:第一、直接下载包,第二、通过maven的方式
第一种方式:直接下载zip文件
第二种方式:通过maven方式
2.3 下面是采用第二种方式,创建maven项目,添加redis的配置
新建RedisDao类,创建redis对象。
Jedis jedis = new Jedis("redis服务器ip或名称");
通过redis服务器验证是否存入数据库中