php Redis笔记

<?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);                                       //返回个数
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值