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