程序员qiao

"Hello word" 即是起点,也是终点。

php 操作redis

<?php
    //实例化redis
    $redis = new Redis();  
    //连接redis  服务ip  端口默认6379
    $redis->connect('127.0.0.1', 6379);
    //redis password
    $redis->auth('mypassword');
    //设置值
    $redis ->set( "test" , "Hello World"); 
    //获取值并输出
    echo $redis ->get( "test");

php 操作redis 常用函数

<?php
    //setex 带生存时间的写入值
    $redis->setex('key', 3600, 'value'); 

    //setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    $redis->setnx('key', 'value');

    //返回已经删除key
    $redis->delete('key1'); //成功返回1失败返回0
    $redis->delete('key1','key2'); //删除两个键成功返回1失败返回0

    //查询生存时间
    $redis->ttl('key1'); //持久化的返回-1,有生存时间的返回时间(单位秒)

    //同时给多个key赋值,同时设置key0和key1
    $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));

    //key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    $redis->incr('key1');
    $redis->incrBy('key1', 10);
    
    //减法跟加法一样
    $redis->decr("key1"); //减少1
    $redis->decrBy("key1",5); //减少5
    
    /**
     * list相关操作,连表操作
     */
        //lPush
        $redis->lPush("list", "888");
        $id = $redis->lpush('list','HHHHHHH');
        echo $id;//返回链表的元素个数
        $redi->lrange('list',0,-1); //返回全部数据,数组形式
        $redis->lrange('list',0,2); //返回连表0-2坐标的三个元素

        //lPushx/rPushx
        $redis->lPushx(key, value);

        //在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
        $redis->lpop('list');//输出链表最左边的ksy的值,输出后删除掉这个key
        $redis->rpop('list');//输出链表最右边的ksy的值,输出后删除掉这个key
        $redis->lset('list',7,"update"); //修改坐标为7的值,成功返回1

    /**
     * 集合  无序集合  有序集合
     */
        // sadd s1 zhangsan
        // sadd s1 lisi
        // sadd s1 wangwu
        // sadd t1 yangxingyi
        // sadd t1 lilei
        // sadd t1 zhangsan
        // smembers s1 s1的所有集合内容
        // sdiff s1 t1 s1有的,t1没有的,差集
        $redis->sinter('s1','t1');//返回s1和t1两个集合都有的,数组形式
        // scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的

        // spop抽奖场景,返回集合里面随机的数
        // spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
        $i = $redis->spop('s1');var_dump($i); //返回一个数,返回后删除这个数
        $i = $redis->spop('s1',2);var_dump($i);//不能返回两个的,提示错误的

        //随机返回集合里面的一个元素,但不删除,重复中奖
        $i = $redis->srandmember('s1');echo $i;
        
        //sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
        $i = $redis->sismember('s1','zhangsan2');
        echo $i;//存在1,不存在false
        
        // zadd key 2 value 有序集合
        // zadd y1 1 zhangsan;
        // zadd y1 3 lisi;
        // zadd y1 2 wangwu;
        // zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
        $i = $redis->zrange('y1',0,-1);var_dump($i);
        //返回数组,键值不是插入时候给的键,是从0开始的新键
        // zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
        // zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
        // 无序就scard,有序就zcard,有z没有s

        // sInterStore
        // 求交集并将交集保存到output的集合
        $redis->sInterStore('output', 'key1', 'key2', 'key3');
     
    /**
     * Hash操作
     */
        //hSet
        $redis->hSet('h', 'key1', 'hello');
        //向名称为h的hash中添加元素key1—>hello
        
        //hGet
        $redis->hGet('h', 'key1');
        //返回名称为h的hash中key1对应的value(hello)
        
        //hLen
        $redis->hLen('h');
        //返回名称为h的hash中元素个数
        
        //hDel
        $redis->hDel('h', 'key1');
        //删除名称为h的hash中键为key1的域
        
        //hKeys
        $redis->hKeys('h');
        //返回名称为key的hash中所有键
    
        //hVals
        $redis->hVals('h');
        //返回名称为h的hash中所有键对应的value
        
        //hGetAll
        $redis->hGetAll('h');
        //返回名称为h的hash中所有的键(field)及其对应的value
        
        //hExists
        $redis->hExists('h', 'a');
        //名称为h的hash中是否存在键名字为a的域
    
        //hIncrBy
        $redis->hIncrBy('h', 'x', 2);
        //将名称为h的hash中x的value增加2
    
        //hMset
        $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
        //向名称为key的hash中批量添加元素
        
        //hMGet
        $redis->hmGet('h', array('field1', 'field2'));
        //返回名称为h的hash中field1,field2对应的value
    
    /**
     * redis 操作相关
     */
        // flushDB
        // 清空当前数据库
        // flushAll
        // 清空所有数据库
        
        // randomKey
        // 随机返回key空间的一个key
        $key = $redis->randomKey();
        
        // select
        // 选择一个数据库
        // move
        // 转移一个key到另外一个数据库
        $redis->select(0); // switch to DB 0
        $redis->set('x', '42'); // write 42 to x
        $redis->move('x', 1); // move to DB 1
        $redis->select(1); // switch to DB 1
        $redis->get('x'); // will return 42
        
        // rename, renameKey
        // 给key重命名
        $redis->set('x', '42');
        $redis->rename('x', 'y');
        $redis->get('y'); // → 42
        $redis->get('x'); // → `FALSE`
        // renameNx
        // 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功

        // setTimeout, expire
        // 设定一个key的活动时间(s)
        $redis->setTimeout('x', 3);
        
        // expireAt
        // key存活到一个unix时间戳时间
        $redis->expireAt('x', time() + 3);
        
        // keys, getKeys
        // 返回满足给定pattern的所有key
        $keyWithUserPrefix = $redis->keys('user*');
        
        // dbSize
        // 查看现在数据库有多少key
        $count = $redis->dbSize();
        
        // auth
        // 密码认证
        $redis->auth('foobared');
        
        // bgrewriteaof
        // 使用aof来进行数据库持久化
        $redis->bgrewriteaof();
        
        // slaveof
        // 选择从服务器
        $redis->slaveof('10.0.1.7', 6379);
        
        // save
        // 将数据同步保存到磁盘
        // bgsave
        // 将数据异步保存到磁盘
        // lastSave
        // 返回上次成功将数据保存到磁盘的Unix时戳
        // info
        // 返回redis的版本信息等详情
        
        Redis::__construct;//构造函数
        $redis = new Redis();
        
        // connect, open 链接redis服务
        // 参数
        // host: string,服务地址
        // port: int,端口号
        // timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
        // 注: 在redis.conf中也有时间,默认为300
        // pconnect, popen 不会主动关闭的链接
        // 参考上面
        // setOption 设置redis模式
        // getOption 查看redis设置的模式
        // ping 查看连接状态
        // get 得到某个key的值(string值)
        // 如果该key不存在,return false
        // set 写入key 和 value(string值)
        // 如果写入成功,return ture
        // setex 带生存时间的写入值
        $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
        
        // setnx 判断是否重复的,写入值
        $redis->setnx('key', 'value');
        $redis->setnx('key', 'value');
        
        // delete  删除指定key的值
        // 返回已经删除key的个数(长整数)
        $redis->delete('key1', 'key2');
        $redis->delete(array('key3', 'key4', 'key5'));
        
        // ttl
        // 得到一个key的生存时间
        // persist
        // 移除生存时间到期的key
        // 如果key到期 true 如果不到期 false
        // mset (redis版本1.1以上才可以用)
        // 同时给多个key赋值
        $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));

 

声明 本人博客的所有东西,部分源于网络书籍和视频,其他的是个人的理解感悟,经过自己整理撰写成博客。 本人博客均只用于个人学习、复习,不作为商业用途,如有侵权,请联系我修改或删除。 联系邮箱:15121014713@163.com

posted on 2021-12-08 17:09  程序员qiao  阅读(156)  评论(1编辑  收藏  举报

导航