首页 > 编程知识 正文

redis集群应用场景,redis-cli连接redis数据库

时间:2023-05-05 22:13:58 阅读:50044 作者:2345

Redis集群构建和java连接redis Redis集群分为以下3类。

1、主从关系模式2、哨兵关系模式3、集群去中心化模式1、主从关系模式1.1、主从模式是什么? )主节点可以只有一个,而多个从节点(即,一个主节点可以具有多个相应的从节点)。

)主节点值负责写入操作,从节点负责读取操作(从节点不能使用写入操作)。

)主节点关闭后,从节点将等待主节点恢复,整个群集将无法使用。 一个从节点宕机,不影响其他节点的动作。

1.2、主从模式构建(1)在redis安装目录下创建master-slave目录,复制redis.conf文件三份(假设主节点一个,从节点两个)

redis文件mkdir master-slave在创建两个redis.conf的文件中创建master-slave目录以保留主从目录要复制到Redis7001.1 .的master-slave/redis 7002.confcpredis.conf/home/redis/master-slave/redis 7003 CD.conf (2)

编辑redis7001.conf文件。

vi redis7001.conf 找到端口号位置,然后将其修改为7001 (自定义端口号)

修改持久化文件的名称(RDB文件)

关闭AOF持久化:

)3) redis启动时指定以上3个配置文件

redis-server redis7001.conf redis-server redis 7002.conf redis-server redis 7003.conf (4)分别是redis 7001、7002和7003

redis-cli -h ip (自己的ip )-p7001redis-cli -h ip )-p7002redis-cli -h ip )-p7003 ) 5设置7001主节点

当前节点在显示主从信息info replication的从节点上设置7001主节点(两个从节点都配置) slaveof ip ) 7001主从节点,并分别使用读写操作时,将2 .可以从节点进行读取操作,但不能使用写入操作。 3、添加从站节点后,发现数据与其余节点的数据一致。 关闭主节点后,从节点将无法进行读取操作,通过查看主节点和从节点的信息,可以看到主节点处于down状态。 可以看到,如果打开主节点并关闭其中一个从节点,则主节点也不会受到影响。 因此,1、主节点瘫痪,集群无法操作,从节点无法操作。 2、即使从节点停机,其馀的从节点和主节点也不受影响。 2、哨兵模型(哨兵可以有多个,主节点每隔一定时间向哨兵发送“状态信息”,超过一定时间不发送信息,哨兵就会认为主节点停机。 接着,从从节点中选择一个节点作为主节点,当主节点再次在线时,成为新的主节点的从节点。

2.1哨兵模式构建1、使用主从模式redis (不创建新主从节点)。 2、变更sentinel文件结构的vi sentinel# 192.168.31.166表示redis主节点的ip (本机情况下为127.0.0.1 ),# 7001表示主节点的端口sentinelmonitormymaster 192.168.31.166700113,哨兵redis-sentinel sentinel.conf4的启动和测试,表示该从节点可能被选为主节点的数量哨兵解决了主从模式下主节点瘫痪、从节点等待导致集群停止的缺点。 但是哨兵仍然没有解决单节点问题,持久化文件始终位于一个服务器上。 3、以集群为中心,解决了单节点问题。 使用了分槽的概念。 去中心化可以说是哨兵模式和主从模式的结合体,集群可以实现主从和主从的再选择功能,因此配置2个副本3个分片就需要6个Redis实例。 由于Redis中的数据基于一定的规则分配给群集中的不同计算机,因此如果数据量太大,可以通过添加计算机来扩展容量。

3.1、创建和放置集群(必须保证aof打开,保证redis中没有数据(1、three-master-three-slave文件夹mkdir three-mastave ) 将redis.conf文件复制到three-master-three three-slave/redis 8001.confcpredis.conf/home/redis /

dis.conf /home/redis/three-master-three-slave/redis8004.confcp redis.conf /home/redis/three-master-three-slave/redis8005.confcp redis.conf /home/redis/three-master-three-slave/redis8006.conf3、分别修改redis8001.conf。。。。的配置#修改端口号为8001:port 8001#修改为其他用户可以连接:bind * -::*#修改为后台运行:daemonize yes#修改为AOF,改为开启状态:appendonly yes#开启集群cluster-enabled yes 833行# 集群的配置文件,该文件自动生成 cluster-config-file nodes-8001.conf 841行# 集群的超时时间cluster-node-timeout 5000 847行 3.2、启动所有redis并分配槽 (1)启动所有redisredis-server redis8001.confredis-server redis8002.confredis-server redis8003.confredis-server redis8004.confredis-server redis8005.confredis-server redis8006.conf(2)为主节点分配槽以及随机分配从节点,cluster-replica:表示每个主节点跟随的从节点的个数redis-cli --cluster create --cluster-replicas 1 192.168.31.166:8001 192.168.31.166:8002 192.168.31.166:8003 192.168.31.166:8004 192.168.31.166:8005 192.168.31.166:8006(3)使用客户端访问redis-cli -c -h 192.168.31.166 -p 8001 4、java连接redis(maven项目)—jedis (1)创建maven项目 (2)引入Jedis依赖 <dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.3.0</version> </dependency> </dependencies> (3)使用jedis连接redis public class TestJedis { public static void main(String[] args) { Jedis jedis=new Jedis("192.168.31.166",6379);//必须运行远程连接 必须防火墙放行该端口号 //关于字符串 jedis.set("k1","v1"); jedis.set("k8","18"); jedis.mset("k2","v2","k3","v3","k4","v4"); jedis.setnx("k1","12"); jedis.decr("k8"); //操作key Set<String> keys = jedis.keys("*"); System.out.println("所有的key:"+keys); jedis.del("k1"); jedis.expire("k2",60); jedis.ttl("k2"); }} (4)使用jedis连接池 public class TestPoolJedis { public static void main(String[] args) { //连接池的配置 JedisPoolConfig config=new JedisPoolConfig(); //设置连接池的最大连接数 config.setMaxTotal(100); //设置最大空闲的个数 config.setMaxIdle(10); //在从连接池这种获取连接对象前是否测试该对象可以。 config.setTestOnBorrow(true); //创建连接池对象 JedisPool jedisPool=new JedisPool(config,"192.168.31.166",6379); //获取jedis对象 Jedis jedis = jedisPool.getResource(); System.out.println(jedis.get("k3"));//释放资源 jedis.close(); }}

);

//创建连接池对象 JedisPool jedisPool=new JedisPool(config,"192.168.31.166",6379); //获取jedis对象 Jedis jedis = jedisPool.getResource(); System.out.println(jedis.get("k3"));//释放资源 jedis.close();}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。