zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    4.8日学习
    Apache安装
    HTML5 review
    个人阅读作业LAST
    个人阅读作业Week7
    结对编程:界面模块总结
    个人博客作业Week3
    结对编程博客
    个人博客week2
    软工第一次作业简单总结
  • 原文地址:https://www.cnblogs.com/yeyongjian/p/8922077.html
Copyright © 2011-2022 走看看