1. redis的集群的其他模式
哨兵模式:
去中心化集群:
2. 哨兵模式:
修改sentinel.conf的配置
启动哨兵
redis-sentinel sentinel.conf
3. 去中心化集群。
哨兵的缺点
- 没有解决单节点的问题。
- 持久化文件始终在一个服务器上。
去中心化
port 8001
bind 0.0.0.0
daemonize yes
appendonly yes
开启集群
cluster-enabled yes 833行
集群的配置文件,该文件自动生成
cluster-config-file nodes-8001.conf 841行
集群的超时时间
cluster-node-timeout 5000 847行
启动所有的redis
为主节点分配槽以及分配从节点
cluster-replica:每个主节点跟随的从节点的个数
redis-cli --cluster create --cluster-replicas 1 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 127.0.0.1:8004 127.0.0.1:8005 127.0.0.1:8006
必须保证aof开启,保证redis中没有数据。
客户端访问:
redis-cli -c -h 127.0.0.1 -p 8001
4.Java连接redis.—jedis
(1)依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
</dependencies>
(2)操作
public static void main(String[] args) {
Jedis jedis=new Jedis("192.168.213.188",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");
}
}
使用jedis连接池
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.213.188",6379);
//获取jedis对象
Jedis jedis = jedisPool.getResource();
System.out.println(jedis.get("k3"));
jedis.close();//释放资源
}
}