文章目录
一、前言
redis单机版 192.168.100.141
redisCluster集群 192.168.100.138 六个端口
redisSentinel 集群
192.168.100.139
192.168.100.140
二、单机Redis
关闭防火墙 systemctl stop firewalld
启动单机版redis ./src/redis-server redis.conf
执行java程序,完成存取
public class SingleTest {
public static void main(String[] args) {
Config config = new Config();
config.setCodec(new org.redisson.client.codec.StringCodec());
//指定使用单节点部署方式
config.useSingleServer().setAddress("redis://192.168.100.141:6379");
RedissonClient redisson = Redisson.create(config);
//首先获取redis中的key-value对象,key不存在没关系
RBucket<String> keyObject = redisson.getBucket("redisson-single-key");
//如果key存在,就设置key的值为新值value
//如果key不存在,就设置key的值为value
keyObject.set("value");
System.out.println(keyObject.get());
//最后关闭RedissonClient
redisson.shutdown();
}
}
三、Redis分布式锁
public class LockTest {
private static RedissonClient redissonClient;
static {
Config config=new Config();
config.useSingleServer().setAddress("redis://192.168.100.141:6379");
redissonClient= Redisson.create(config);
}
public static void main(String[] args) throws InterruptedException {
RLock rLock=redissonClient.getLock("updateAccount");
// 最多等待100秒、上锁10s以后解锁
if(rLock.tryLock(100,10, TimeUnit.SECONDS)){
System.out.println("获取锁成功");
}
Thread.sleep(20000);
rLock.unlock();
System.out.println("解锁成功");
redissonClient.shutdown();
}
}
四、Sentinel哨兵
步骤1:两个机器上都关闭防火墙
步骤2:两个机器都启动 redis-server 和 redis-sentinel
步骤3:启动之后,info replication 发现主从结构搭建起来了
步骤4:运行java程序(无需连接redis 6379端口集群,直接连接sentinel 26379端口集群)
步骤5:java程序运行完成后,机器上数据确实存入了
五、RedisCluster三主三从集群
找到 192.168.100.138 机器,之前布置好的redisCluster三注三从集群,执行 ps -ef|grep redis 发现没有运行起来,所以直接将六个都启动起来,如下:
cd /usr/local/soft/redis-6.0.9/
./src/redis-server redis-cluster/7291/redis.conf
./src/redis-server redis-cluster/7292/redis.conf
./src/redis-server redis-cluster/7293/redis.conf
./src/redis-server redis-cluster/7294/redis.conf
./src/redis-server redis-cluster/7295/redis.conf
./src/redis-server redis-cluster/7296/redis.conf
随便进入一个 ./redis-cli -p 7291
,执行 cluster nodes 命令,只要能够看到集群的各个节点,就说明集群已经起来了,如下:
执行java程序
public class ClusterTest {
public static void main(String[] args) {
//创建配置
Config config = new Config();
config.setCodec(new org.redisson.client.codec.StringCodec());
//指定使用集群部署方式
config.useClusterServers()
// 集群状态扫描间隔时间,单位是毫秒
.setScanInterval(2000)
//cluster方式至少6个节点(3主3从,3主做sharding,3从用来保证主宕机后可以高可用)
.addNodeAddress("redis://192.168.100.138:7291" )
.addNodeAddress("redis://192.168.100.138:7292")
.addNodeAddress("redis://192.168.100.138:7293")
.addNodeAddress("redis://192.168.100.138:7294")
.addNodeAddress("redis://192.168.100.138:7295")
.addNodeAddress("redis://192.168.100.138:7296");
RedissonClient redisson = Redisson.create(config);
//首先获取redis中的key-value对象,key不存在没关系
RBucket<String> keyObject = redisson.getBucket("redisson-cluster-key");
//如果key存在,就设置key的值为新值value
//如果key不存在,就设置key的值为value
keyObject.set("value");
System.out.println(keyObject.get());
//最后关闭RedissonClient
redisson.shutdown();
}
}
机器中也有了(注意需要关闭防火墙,否则java程序连不上)
六、尾声
redission的操作,如下:
1、单机Redis
2、Redis分布式锁
3、Sentinel哨兵
4、RedisCluster三主三从集群
完成了。