//链接Redis
$redis = new Redis();
$redis->connect("127.0.0.1", 6379);
//基础操作
if(0){
//清空库
$redis->flushAll(); // 删除所有数据库
$redis->flushDB(); //删除当前数据库
$redis->set("name", "kongling"); //保存 K-V 键值对字符串
dd($redis->get("name"), "get key:name"); //获取 key:name 的value值
// $redis->Mget('name'); //批量读取keys
$redis->type("name"); //判断key 的类型
$redis->set("name", "sixstar"); //修改 value 值 /直接覆盖
//修改/替换 value 部分 值
$redis->setRange("name", 3, "fire"); //把 sixstar 修改为 sixfire
dd($redis->get("name"), '把 sixstar 修改为 sixfire');
$redis->getrange("name", 0, 5); //截取字符串长度
//判断key 是否存在,如果存在不修改,如果不存在新增 赋值判断原值是否存在,存在不赋值,返回0;不存在才赋值,返回1;命令setnx
$redis->setnx("name", "hello world");
//设置key 生存时间
$redis->set("zoon", "dog");
$redis->expire("zoon", 20); //单位 秒
$redis->setex("botany", 50, "flower"); //单位 秒
$redis->psetex("botany", 50000, "fruits"); //单位 毫秒
//获取key 的生存时间
$redis->ttl("zoon"); //单位 秒
$redis->pttl("botany"); //单位 毫秒
//mset 同时设置多个kv键值对
$arr = [
"dog_name" => "小花",
"cat_name" => "小毛",
"fish_name" => "小飞",
];
$redis->mset($arr);
$redis->msetnx($arr); // msetnx 为原子性,判断如果有一个存在,全部都不设置
//给 key 尾部追加字符串
$redis->append("name", "is veally good");
// 获取原有value值的同时写入新的value值
$redis->getset("name", "veally goods");
// redis数据加法计算命令incr,incrby,数据加法运算,incr为+1内置运算,incrby为+n自设n运算
$redis->incr("count");
$redis->incrby("num", 10);
//redis数据减法计算命令decr,decrby, 数据减法运算,decr为-1内置运算,decrby为减n自设n运算
// $redis->set("count", 10);
dd($redis->decr("count"), 'decr("count")');
$redis->decrby("num", 5);
//获取string长度的命令strlen
$redis->strlen("name");
//删除key
$redis->del("name");
}
/*
* string 应用场景
* session 分布式集群服务器 登录同步
* 配置服务器的 PHP 的session 存储到 Redis中去
* 具体操作 :略
* */
/*
* string 应用场景
* Inc incrBy decr decrBy 计数器
* */
if(0){
$redis->incr("count"); //每次自动加一
$redis->incrBy("num",3);//每次自动加 自定义数值
$redis->decr("count"); //每次自动减一
$redis->decrBy("num",3);//每次自动减 自定义数值
}
/*
* 请求拦截
* 短信发送
* 5分钟内最多发送5次
* */
if(1){
// $redis->flushAll();
$phone = "130****1418";
$key = "phone:".$phone;
$redis->exists($key) ? $redis->incr($key) : $redis->setex($key,30,1) ;
/* if(!$redis->exists($key) ){
$redis->setex($key,30,1);
dd($redis->get($key),"count ");
}else{
dd("count incr ");
$redis->incr($key);
}*/
$count = $redis->get($key);
if($count>5){
exit("对不起,您发送次数太过频繁,请稍后再发送");
}
//to do send Phone Msg
dd($count,"to do send Phone Msg");
}