01.redis扩容
由于redis的容量也是有限的,所以,就会有扩容的操作。也就好像内存中扩容一样。redis有分片这种说法,具体实现操作如下:
第一步:首先在/usr/local/src中去找到redis文件夹。cd /usr/local/src 而后进入redis文件夹。使用的linux命令是 cd redis 。
第二步:
01.使用查看当前redis进程的命令ps -ef|grep redis,
ps 命令的作用是显示进程信息的;| 符号,是个管道符号,表示ps 和 grep 命令同时执行;ps命令有一些参数:
-e : 显示所有进程
-f : 全格式
-h : 不显示标题
-l : 长格式
-w : 宽输出
a :显示终端上的所有进程,包括其他用户的进程。
r :只显示正在运行的进程。
u :以用户为主的格式来显示程序状况。
x :显示所有程序,不以终端机来区分。
grep 命令是查找,能使用正则表达式搜索文本,然后把匹配的行显示出来;
02.并且关闭redis服务。使用命令redis-cli -p 6379 shoudown,6379是redis服务运行在Linux上的端口号
第三步:搭建redis分片(这里的redis分片由三台redis服务器组成,端口号分别是6379,6380,6381)为了方便管理redis分片,在redis目录下创建一个新的文件夹shards,这个文件名shads和在springboot项目中使用redis分片对象的类名差不多。
第四步:将redis的conf文件复制三份,文件名 分别是6379.conf,6380.conf,6381.conf
使用的linux命令是:cp 文件名 复制后新的文件
查看相关文件
cd shard
ls
第五步:修改复制后文件的端口号,三个端口号表示这是三个redis服务器
分别修改6380.conf,6381.conf文件中的端口号,修改成6380,6381
vim 6380.conf
第92行修改redis的端口号
第六步:修改完成配置文件之后,去启动redis分片
启动redis服务的命令是 redis-server 端口号.conf
第七步:启动之后去检查是否启动成功
先是检查redis的相关服务
再去启动redis的客户端(先启动了redis服务后,在打开客户端)
redis-cli -p 端口号.conf
Redis入门案例
@SpringBootTest
public class TestRedisShards {
/**
* 由java程序远程操作redis分片,redis分片目的为了进行redis内存的扩容
* 组成redis分片的3台redis服务器存储的数据是不一样的,每个数据只能去选择一台redis进行数
据的存储
*/
@Test
public void test() {
List<JedisShardInfo> shards=new ArrayList<JedisShardInfo>();
shards.add(new JedisShardInfo("192.168.126.129", 6379));
shards.add(new JedisShardInfo("192.168.126.129", 6380));
shards.add(new JedisShardInfo("192.168.126.129", 6381));
ShardedJedis jedis=new ShardedJedis(shards);
jedis.set("shards", "hello~shards");
System.out.println(jedis.get("shards"));
}
}
SpringBoot整合Redis分片
1编辑redis.properties配置文件
#配置redis分片
redis.shards=192.168.126.129:6379,192.168.126.129:6380,192.168.126.129:6381
2编辑RedisConfig配置类
@Configuration
//执行代码的主体是jt-manage项目
@PropertySource("classpath:/properties/redis.properties")
public class RedisConfig {
@Value("${redis.shards}")
private String nodes;//node,node,node
//spring整合redis分片机制
@Bean
public ShardedJedis shardedJedis() {
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
String[] nodeArray = nodes.split(",");
for (String node : nodeArray) {//host:port
String host = node.split(":")[0];
int port=Integer.parseInt(node.split(":")[1]);
JedisShardInfo info =new JedisShardInfo(host, port);
shards.add(info);
}
return new ShardedJedis(shards);
}
}
3修改RedisAOP
说明:注入redis分片
缺点:
1.由于redis分片机制中的每台redis服务器存储的数据都不一致,而且没有实现高可用(故障自动迁移),所以最终很有可能造成一部分数据丢失。
2.组成redis分片机制中的任意一台redis如果宕机,会导致整个Redis分片崩溃。
02.预备redis宕机的哨兵处理
第一步:复制哨兵的配置文件sentinel.conf文件到sentinel目录中。
第二步:编辑sentinel.conf。
关闭保护模式:
开启后台启动:
第三步:配置哨兵监听(sentinel.conf)
说明:哨兵所监听的主机ip(192.168.126.129) 端口号(6379) 以及票数(1)
第四步:修改哨兵选举主机的时间 10s
第五步:修改选举失败的超时时间 20s
第六步:退出编辑模式,保存退出。
linux命令 按esc
后使用:wq
第七步:启动redis哨兵