php redis 写入读取的两个class

<?php
class MyRedis{
private static $handler;

private static function handler(){
if(!self::$handler){
self::$handler = new Redis();
self::$handler -> connect('127.0.0.1','6379');
}
return self::$handler;
}


/*
*可以是一个对象,数组或者字符串
*/
public static function get($key){
$value = self::handler() -> get($key);
//如果是数组,解析字节流
$value_serl = @unserialize($value);
if(is_object($value_serl)||is_array($value_serl)){
return $value_serl;
}
return $value;
}

/**
*写入一个键值对
*/
public static function set($key,$value){
if(is_object($value)||is_array($value)){
//serialize 返回字符串,包含一个value的字节流,可以用于储存任何地方
$value = serialize($value);
}

return self::handler() -> set($key,$value);
}

/*
*清理redis所有数据
*/
public static function clean(){
return self::handler()->flushDB();
}

}

//第二个类引入上面的文件

<?php
require_once 'redis1.php';

class MyObj{
public function rTime(){
return time();
}
}


$arr = array(
'account'=>'928546266@qq.com',
'appid'=>'10488',
'api'=>'https://www.baidu.com',
'code'=>103,
'msg'=>'this is error msg2',
);


// $obj = new MyObj();
// $str = ' My name is Jeffrey.';
//存数组
MyRedis::set('arr',$arr);
//存对象
// MyRedis::set('obj',$obj);
//存字符串
// MyRedis::set('str',$str);
$a = MyRedis::get('arr');
// $_obj = MyRedis::get('obj');
// $_str = MyRedis::get('str');


//清理数据
// $a = MyRedis::clean();
var_dump($a);

 

转载于:https://www.cnblogs.com/ayanboke/p/9982957.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在Flink中使用Kafka消费者的`FlinkKafkaConsumer`类来读取Kafka消息,并使用`FlinkKafkaConsumer`提供的`assignTimestampsAndWatermarks`方法指定用于生成Watermark的时间戳生成器。然后,你可以使用Flink的`redis`客户端库来将偏移量写入Redis。 具体的实现步骤如下: 1. 创建`FlinkKafkaConsumer`实例并指定Kafka主题和消费者组。 ``` FlinkKafkaConsumer consumer = new FlinkKafkaConsumer(topic, new SimpleStringSchema(), properties); consumer.setStartFromEarliest(); // 从最早的消息开始消费 ``` 2. 使用`assignTimestampsAndWatermarks`方法为Kafka消息生成Watermark。 ``` consumer.assignTimestampsAndWatermarks(new AssignerWithPeriodicWatermarks() { private long currentTimestamp = Long.MIN_VALUE; @Override public long extractTimestamp(String element, long previousElementTimestamp) { // 从消息中提取时间戳 long timestamp = Long.parseLong(element.split(",")[0]); currentTimestamp = Math.max(timestamp, currentTimestamp); return timestamp; } @Override public Watermark getCurrentWatermark() { // 根据最大时间戳生成Watermark return new Watermark(currentTimestamp == Long.MIN_VALUE ? Long.MIN_VALUE : currentTimestamp - 1); } }); ``` 3. 使用Flink的`redis`客户端库将偏移量写入Redis。 ``` DataStream<String> stream = env.addSource(consumer); stream.map(new MapFunction<String, Tuple2<String, Long>>() { @Override public Tuple2<String, Long> map(String value) throws Exception { // 从消息中提取偏移量 long offset = Long.parseLong(value.split(",")[1]); return new Tuple2<>("offset", offset); } }).addSink(new RedisSink<>(redisConfig, new RedisOffsetMapper())); ``` 其中,`RedisOffsetMapper`是一个实现了`RedisMapper`接口的类,用于将偏移量写入Redis。 ``` public class RedisOffsetMapper implements RedisMapper<Tuple2<String, Long>> { @Override public RedisCommandDescription getCommandDescription() { return new RedisCommandDescription(RedisCommand.SET); } @Override public String getKeyFromData(Tuple2<String, Long> data) { return data.f0; } @Override public String getValueFromData(Tuple2<String, Long> data) { return data.f1.toString(); } } ``` 这样,当Flink从Kafka读取消息时,就会自动生成Watermark,并将偏移量写入Redis中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值