开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

想sink 到 redis-hash 里面 把 对象的属性和值都写进去 ,大佬们有Demo 吗?

想sink 到 redis-hash 里面 把 对象的属性和值都写进去 ,大佬们有Demo 吗?

展开
收起
游客3oewgrzrf6o5c 2022-07-20 14:31:30 371 0
1 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    是的,可以使用Redis来实现这个功能。您可以使用Redis的Hashes数据结构来存储对象的属性和值。以下是一个使用Java Redis客户端Jedis实现此功能的示例代码:

    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.Tuple;
    
    import java.util.List;
    import java.util.Map;
    
    public class RedisHashSink {
        private final Jedis jedis;
        private final String hashKey;
        private final String propertyKey;
        private final String valueKey;
    
        public RedisHashSink(Jedis jedis, String hashKey, String propertyKey, String valueKey) {
            this.jedis = jedis;
            this.hashKey = hashKey;
            this.propertyKey = propertyKey;
            this.valueKey = valueKey;
        }
    
        public void sinkObject(String objectKey, Map<String, Object> objectProperties) {
            List<Tuple> tupleList = jedis.hgetall(hashKey);
            if (tupleList == null) {
                tupleList = jedis.hset(hashKey, new Tuple(propertyKey, objectKey), new Tuple(valueKey, objectProperties));
            } else {
                for (Tuple tuple : tupleList) {
                    if (tuple.getString(0).equals(objectKey)) {
                        tuple.setString(1, objectProperties);
                        return;
                    }
                }
                tupleList.add(new Tuple(propertyKey, objectKey), new Tuple(valueKey, objectProperties));
            }
        }
    }
    

    在这个示例中,我们首先创建了一个RedisHashSink对象,它使用给定的Jedis实例和hashKey、propertyKey和valueKey参数。然后,我们实现了sinkObject方法,该方法接受一个对象的key和一个对象的属性和值的Map。它使用jedis.hgetall方法获取hashKey对应的所有元素,如果不存在,则使用jedis.hset方法将对象的属性和值写入hashKey中。如果存在,则比较对象的key和hashKey中已有的key,如果相同,则更新对象的属性和值,否则将新对象的属性和值写入hashKey中。
    这只是一个简单的示例,您可以根据自己的需求进行修改和扩展。希望对您有所帮助。

    2023-07-28 15:37:53
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
ApsaraDB for Redis——与创客同行 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载