• Redis_24_Redission的使用


    一、前言

    redis单机版 192.168.100.141

    redisCluster集群 192.168.100.138 六个端口

    redisSentinel 集群
    192.168.100.139
    192.168.100.140

    本文工程代码(redission工程压缩包):
    https://www.syjshare.com/res/31T49XV7

    二、单机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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    三、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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述

    四、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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    随便进入一个 ./redis-cli -p 7291 ,执行 cluster nodes 命令,只要能够看到集群的各个节点,就说明集群已经起来了,如下:

    在这里插入图片描述

    之前搭建好 redisCluster 三主三从的机器,关机重启之后,只需要启动六个 redis 就好了,不需要重新执行 redis-cli --cluster create 命令

    执行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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    在这里插入图片描述

    机器中也有了(注意需要关闭防火墙,否则java程序连不上)
    在这里插入图片描述

    六、尾声

    redission的操作,如下:
    1、单机Redis
    2、Redis分布式锁
    3、Sentinel哨兵
    4、RedisCluster三主三从集群

    完成了。

  • 相关阅读:
    Apache SeaTunnel MongoDB CDC 使用指南
    flink on yarn
    【深度学习 Pytorch笔记 B站刘二大人 线性模型 Linear-Model 数学原理分析以及源码实现(1/10)】
    Android ASM插桩探索及实战
    RN操作SQLite数据库的包(sqlite-helper.js)及其使用
    【failed to solve: ***: failed commit on ref “unknown-sha256:】
    C++:面试二叉树的遍历
    自己公司开发的ERP系统,怎么对接京东,淘宝等这些电商平台?
    论文阅读_深度学习的医疗异常检测综述
    口袋参谋:如何对宝贝关键词进行词根分析?用它就对了!
  • 原文地址:https://blog.csdn.net/qq_36963950/article/details/126923184