<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2020/3/27
* Time: 17:33
*/
namespace app\index\controller\Redis;
use think\App;
use think\Controller;
class Redis extends Controller
{
protected $Redis;
protected function initialize()
{
$this->Redis = new \think\cache\driver\Redis();
$this->Redis->connect('127.0.0.1', 6379);
$this->Redis->auth('yuanyuan');
header('Content-Type:text/html;charset=utf-8 ');
}
//Redis连接
public function Connect()
{
$Check_key = $this->Redis->exists('time');
$_key = 'time';
$_value = date('Y-m-d H:i:s');
if ($Check_key) {
echo '存在' . '<br>';
$value = $this->Redis->get($_key);
echo $value;
if (time() - strtotime($value) > 5) {
echo date('Y-m-d H:i:s') . ' 超时删除', '<br>';
$this->Redis->del($_key);
}
} else {
echo '不存在' . '<br>';
$this->Redis->expire($_key, 10); //设置key在10秒后过期
$this->Redis->set($_key, $_value);
}
}
//Redis 命令
public function command()
{
//echo $this->Redis->ping(); //+PONG 检测Redis是否启动
$key_name = 'one_key';
$key_name2 = 'two_key';
$key_value = date('Y-m-d H:i:s') . '-one_value';
$key_value2 = date('Y-m-d H:i:s') . '-two_value';
#Redis Keys命令
//$this->Redis->set($key_name,$key_value); //设置key
//$this->Redis->set($key_name2,$key_value2); //设置key
//$this->Redis->setex($key_name,'5',$key_value); //写入带生存时间的key
//echo $this->Redis->setnx($key_name, $key_value); //判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1(没成功)
$num_key = 'num_key';
$num_key_value = 1;
//echo $this->Redis->set($num_key,$num_key_value);
//echo '<hr>';
//echo $this->Redis->incr($num_key); //数值自增
//echo $this->Redis->incr($num_key,10); //自增指定数值
//echo $this->Redis->decr($num_key); //数值自减
//echo '<hr>';
//echo $this->Redis->decr($num_key,5); //自减指定数值
/*$Check = $this->Redis->exists($key_name); //检测key值是否存在 存在返回1 不存在返回0
if ($Check) {
echo $this->Redis->get($key_name);
}*/
//echo $this->Redis->expire($key_name,50); //设置key值过期时间 到时自动删除 成功返回1 失败返回0
//echo $this->Redis->persist($key_name); //移除key过期时间 让key保持永久
//echo $this->Redis->pttl($key_name); //返回key的过期时间(毫秒)
//echo $this->Redis->ttl($key_name); //返回key的过期时间(秒)
//echo $this->Redis->dump($key_name); //返回系列化之后的值 序列化:"跨平台储存"和"网络传输"
//echo $this->Redis->rename($key_name,'new_name1'); //修改key的名称
//echo $this->Redis->renamenx('aaa','new_name3'); //仅当 newkey 不存在时,将 key 改名为 newkey (测试未成功)
//echo $this->Redis->type('time'); //获取key的类型 0=>不存在 1=>int 2=>set 3=>list 4=>zset
//echo $this->Redis->getSet($key_name);
//echo '<hr>';
//echo $this->Redis->get($key_name);
//echo $this->Redis->get($key_name2);
//echo $this->Redis->move($key_name,2); //移动key到指定库 成功返回1 失败返回0
//echo $this->Redis->delete('S1'); //根据key删除元素
}
//List相关操作
public function RedisList()
{
//echo $this->Redis->lPush("list", "888"); //创建
//echo $this->Redis->lPush('list','9999'); //返回当前List的个数
//dump($this->Redis->lrange('list',0,-1)); //返回List中全部数据 数组形式
//dump($this->Redis->lrange('list',0,2)); //返回List中的 0 1 2
//echo $this->Redis->lPushx('888', 'value1'); //(测试未成功)在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
//echo $this->Redis->lpop('list'); //输出链表最左边的ksy的值,输出后删除掉这个key
//echo $this->Redis->rpop('list'); //输出链表最右边的ksy的值,输出后删除掉这个key
//echo $this->Redis->lset('list',2,"update"); //修改坐标为7的值,成功返回1
}
//集合 操作
public function RedisAggregate()
{
$key = 'S1';
$key2 = 'T1';
$value = md5(rand(1, 1500) . time());
//echo $this->Redis->sadd($key, $value);
//echo $this->Redis->sadd($key2, $value);
//echo $this->Redis->sadd($key,$value); //集合数据添加(无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序)
//dump($this->Redis->smembers($key)); //返回集合中所有元素
//dump($this->Redis->sdiff($key,$key2)); //两个集合的差集 key有 key2没有
//dump($this->Redis->sinter($key, $key2)); //两个集合的交集
//echo $this->Redis->scard($key); //返回集合个数
//spop 抽奖场景
//echo $this->Redis->spop($key); //随机抽出集合一个元素 然后删除掉他
//echo $this->Redis->srandmember($key); //随机抽出集合一个元素 并不删除
//echo $this->Redis->sismember($key,'15857953809'); //查询元素是否存在集合中 存在返回1
echo '<hr>';
dump($this->Redis->smembers($key));
}
//有序集合
public function RedisZadd(){
$key = 'S1';
$key2 = 'T1';
$value = md5(rand(1, 1500) . time());
//echo $this->Redis->zadd($key,100,'22422'); //有序数组存值 key=>(键值) 100=>(score) value
//echo $this->Redis->zadd($key2,3,$value);
//dump($this->Redis->zrange($key,0,1)); //取得 0=>1 1=>2的元素
//echo $this->Redis->zrem($key,1,'90f333387fd6b97b9bae7b137ac798e6'); //移除指定元素
//dump($this->Redis->zcount($key,'99','100')); //返回 score 99-100 之间的个数
//echo $this->Redis->zsize($key); //返回个数
}
}
php Redis笔记
最新推荐文章于 2024-10-02 05:39:15 发布