• redis集群搭建+lua脚本的使用


    详细参考这篇文章(windows)

    https://blog.csdn.net/qiuyufeng/article/details/70474001

    一、使用JAVA代码操作redis集群

    复制代码
    public static void main(String[] args) throws Exception {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        // 最大连接数  
            poolConfig.setMaxTotal(1);
        // 最大空闲数  
            poolConfig.setMaxIdle(1);
        // 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常:  
        // Could not get a resource from the pool  
            poolConfig.setMaxWaitMillis(1000);
        Set<HostAndPort> nodes = new LinkedHashSet<HostAndPort>();
            nodes.add(new HostAndPort("127.0.0.1", 6379));
            nodes.add(new HostAndPort("127.0.0.1", 6380));
            nodes.add(new HostAndPort("127.0.0.1", 6381));
            nodes.add(new HostAndPort("127.0.0.1", 6382));
            nodes.add(new HostAndPort("127.0.0.1", 6383));
            nodes.add(new HostAndPort("127.0.0.1", 6384));
        JedisCluster cluster = new JedisCluster(nodes, poolConfig);
        String name = cluster.get("name");
            System.out.println(name);
            cluster.set("age", "18");
            System.out.println(cluster.get("age"));
            try {
            cluster.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    复制代码

    二、使用JAVA代码操作lua脚本

      1、编写lua脚本

      

    redis.call("SET",KEYS[1],ARGV[1]);
    "
                + "redis.call("SET",KEYS[2],ARGV[2]);

      2、java代码

      

    复制代码
     public static void main(String[] args) throws Exception {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        // 最大连接数
            poolConfig.setMaxTotal(1);
        // 最大空闲数
            poolConfig.setMaxIdle(1);
        // 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常:
        // Could not get a resource from the pool
            poolConfig.setMaxWaitMillis(1000);
        Set<HostAndPort> nodes = new LinkedHashSet<HostAndPort>();
            nodes.add(new HostAndPort("127.0.0.1", 6379));
            nodes.add(new HostAndPort("127.0.0.1", 6380));
            nodes.add(new HostAndPort("127.0.0.1", 6381));
            nodes.add(new HostAndPort("127.0.0.1", 6382));
            nodes.add(new HostAndPort("127.0.0.1", 6383));
            nodes.add(new HostAndPort("127.0.0.1", 6384));
        JedisCluster cluster = new JedisCluster(nodes, poolConfig);
        String lua = "redis.call("SET",KEYS[1],ARGV[1]);
    "
                + "redis.call("SET",KEYS[2],ARGV[2]);";
    
        String[] p = {"{a}a1","{a}a2","a","b"};
        Object eval = cluster.eval(lua, 2, p);
            try {
            cluster.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    复制代码

    需要注意的时,redis集群执行lua操作的时候,要求key值必须要在同一个solt上面,为了达到这个目的,可以在key值中增加“{xx}”内容,这样redis在计算hash槽的时候会按{}内的内容计算hash值;

    可以参考这篇文章https://blog.csdn.net/jing956899449/article/details/53338282

  • 相关阅读:
    Laravel Passport token过期后判断refresh_token是否过期
    js 数组随机排序
    jquery的animate关于background-position属性
    css hack 汇整
    顶部导航--向上滚动的时候出现,向下滚动的时候隐藏
    手机端全局样式表整理(mobile)
    AR专用汉明码
    css常用命名规则
    晚11点
    当 IDENTITY_INSERT 设置为 OFF 时,不能为表‘XXX’中的标识列插入显式值。
  • 原文地址:https://www.cnblogs.com/yeyongjian/p/8922077.html
Copyright © 2020-2023  润新知