0
点赞
收藏
分享

微信扫一扫

Redis_24_Redission的使用

斗米 2022-09-19 阅读 216

文章目录

一、前言

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三主三从集群

完成了。

举报

相关推荐

0 条评论