Hazelcast Hazlecast通过数字查找查找范围

Hazelcast Hazlecast通过数字查找查找范围,hazelcast,querydsl,Hazelcast,Querydsl,我是hazle cast的新手,尝试使用hazle cast实现查找。我的假设是,我有一系列数字1-10,10-20,20-30。如果我得到一个带有数字的请求,那么我需要返回它所属的范围,例如,如果请求带有数字22,那么我应该返回20-30范围。是否可以使用hazle cast查询?如果你做过类似的实现,如果你能分享,我将不胜感激 我们执行的SQL查询是 select * from table where '21' between min and max Hazelcast为分布式查询提供以下

我是hazle cast的新手,尝试使用hazle cast实现查找。我的假设是,我有一系列数字1-10,10-20,20-30。如果我得到一个带有数字的请求,那么我需要返回它所属的范围,例如,如果请求带有数字22,那么我应该返回20-30范围。是否可以使用hazle cast查询?如果你做过类似的实现,如果你能分享,我将不胜感激

我们执行的SQL查询是

select * from table where '21' between min and max

Hazelcast为分布式查询提供以下API:

  • CriteriaAPI(Hazelcast提供的编程接口,类似于Java持久性查询语言(JPQL))
  • 分布式SQL查询(com.hazelcast.Query.SqlPredicate采用常规SQL where子句)
您可以在此处找到文档:

以下是SqlPredicate的一个示例:

public class SqlPredicateSample {

    public static class Item implements Serializable {
        String name;
        int number;

        public Item(String name, int number) {
            this.name = name;
            this.number = number;
        }

        @Override
        public String toString() {

            return "Item{"
                    + "name='" + name + '\''
                    + ", number=" + number
                    + '}';
        }
    }

    public static void main(String[] args) {
        // Start the Embedded Hazelcast Cluster Member.
        HazelcastInstance hz = Hazelcast.newHazelcastInstance();
        // Get a Distributed Map called "items"
        IMap<Integer, Item> items = hz.getMap("items");
        // Add some users to the Distributed Map
        for (int i = 0; i <= 100; i++) {
            items.put(i, new Item("name" + i , i));
        }
        Predicate sqlQuery = new SqlPredicate("name = 'name22' AND number BETWEEN 20 AND 30");
        Collection<Item> objects = items.values(sqlQuery);

        System.out.println(objects);
    }
}

公共类SqlPredicateSample{
公共静态类项实现可序列化{
字符串名;
整数;
公共项(字符串名称、整数){
this.name=名称;
这个数字=数字;
}
@凌驾
公共字符串toString(){
返回“项目{”
+“name=”+name+“\”
+“,number=“+number
+ '}';
}
}
公共静态void main(字符串[]args){
//启动嵌入式Hazelcast群集成员。
HazelcastInstance hz=Hazelcast.newHazelcastInstance();
//获取一个名为“items”的分布式映射
IMap items=hz.getMap(“items”);
//向分布式地图添加一些用户
对于(int i=0;i
private void workAroundSolution() {
    HazelcastInstance client = HazelcastClient.newHazelcastClient();
    IMap<Integer, List> map = client.getMap("map");

    int sequence = 10;
    for (int i = 0; i < 5; i++) {
        int key = i + 1;
        int min = i * sequence;
        int max = key * sequence;
        List<Integer> list = IntStream.range(min, max).boxed().collect(Collectors.toList());
        map.put(i, list);
    }


    int givenValue = 22;
    int key = Math.floorDiv(givenValue, sequence);

    System.out.println("Key to look up: " + key);
    System.out.println("Range of values: " + map.get(key));
}