php-redis 总结
php-redis代码库和文档地址:https://github.com/phpredis/phpredis/#readme
string 字符串类型:
<?php $redis = new Redis(); $redis->connect("127.0.0.1", 6379); $redis->auth(''); //登录 $redis->select(1); /** * string类型 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * * 增 * 返回值:Boolean */ $ret = $redis->set('key', 'value'); //第一个参数为键,第二个参数为值 $ret = $redis->setex('key', 20, 'value'); //第二个参数为生命周期(单位秒) $ret = $redis->mset(array('key-1' => 'value-1', 'key-2' => 'value-2', 'key-3' => 'value-3')); //批量写入 $ret = $redis->setnx('key', 'value'); //如果键名“key”存在则不写入,否则写入 /** * 删 * 返回值:integer */ $ret = $redis->del('key'); //删除单个 key-value $ret = $redis->del(array('key-2', 'key-3')); //批量删除 key-value /** * 修 */ $ret = $redis->set('key', 'value-1'); //修改,返回值:Boolean $ret = $redis->incr('total'); //自增,返回值:integer $ret = $redis->incrby('total', 10); //指定步进自增,返回值:integer $ret = $redis->decr('total'); //自减,返回值:integer $ret = $redis->decrby('total', 12); //指定步进自减,返回值:integer /** * 查 * 返回值:string */ $ret = $redis->get('key'); //获取 $ret = $redis->mget(array('key-1', 'key-2')); //批量获取,没有key时获取的值是false
var_dump($ret);
list 列表类型(也是链表类型):
<?php $redis = new Redis(); $redis->connect("127.0.0.1", 6379); $redis->auth(''); //登录 $redis->select(1); /** * List类型(链表) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * * 增 * 返回值 integer,key内值的个数 */ $ret = $redis->lpush('list','left-list-value'); //左侧插入一个值 $ret = $redis->lpush('list','left-list-value1', 'left-list-value2'); //左侧批量插入值 $ret =$redis->rpush('list','right-list-value'); //右侧插入一个值 $ret =$redis->rpush('list','right-list-value1','right-list-value2'); //右侧批量插入值 // 在“right-list-value1”前面添加“10”,没有“right-list-value1”返回-1 // $ret = $redis->linsert('list', Redis::BEFORE, 'right-list-value1', 10); //在“right-list-value1”后面添加“18”,没有“right-list-value1”返回-1 // $ret = $redis->linsert('list', Redis::AFTER, 'right-list-value1', 18); /** * 删 */ $ret = $redis->lpop('list'); //左侧弹出一个值,返回值是弹出的值;返回值 mixed $ret = $redis->rpop('list'); //右侧弹出一个值,返回值是弹出的值;返回值 mixed //删除指定值“ right-list-value ”; //第三个参数的数值表示,值“ right-list-value ”如果重复时,删除几个值,这里删除3个, //如果重复值小于第三个参数,删除几个就返回几个数值给 $ret。返回值 integer $ret = $redis->lrem('list', 'left-list-value', 3); /** * 改 */ //修改索引(索引是从0开始的)上的值,返回值 boolean $ret = $redis->lset('list', 0, 'list-new-value'); //将值从一个列表的右侧弹出,插入到另一个列表的左侧;返回值:mixed,弹出的值 $ret = $redis->rpoplpush('list', 'list-1'); /** * 查 */ $ret = $redis->lindex('list', 0); //获取第n个元素的值;有值返回 string,无值返回Boolean $ret = $redis->lrange('list', 0, -1); //获取列表中一段的值,0到-1为列表中的全部值;返回值:array $ret = $redis->lLen('list'); //获取列表的长度;返回值:integer var_dump($ret);
Set 无序集合类型:
<?php $redis = new Redis(); $redis->connect("127.0.0.1", 6379); $redis->auth(''); //登录 $redis->select(1); /** * set集合类型 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * 增 */ $ret = $redis->sadd('set', 'value'); //添加单个数据,返回值:integer $ret = $redis->sadd('set', 'value1', 'value2', 'value3'); //批量添加数据,返回值:integer /** * 删 */ $ret = $redis->srem('set', 'value'); //删除一个值,返回值:integer /** * 改,并不是真正的修改数据,是移动数据 */ $ret = $redis->smove('set', 'set-1', 'value'); //把元素 value 从 set 集合移动到 set-1 集合,返回值:Boolean /** * 查 */ $ret = $redis->smembers('set'); //获取集合中所有的值,返回值:array $ret = $redis->sCard('set'); //获取集合中元素的个数,返回值:integer $ret = $redis->srandmember('set'); //随机返回集合中的元素,返回值:string $ret = $redis->sinter('set-1', 'set-2'); //获取两个集合的交集,返回值:array $ret = $redis->sunion('set-1', 'set-2'); //获取两个集合的并集,返回值:array $ret = $redis->sdiff('set-1', 'set-2'); //获取两个集合的差集,set-1 集合在 set-2 集合中不存在的元素,返回值:array $ret = $redis->sismember('set','value'); //检查集合 set 中是否存在元素 value,返回值:Boolean var_dump($ret);
zset有序集合类型:
<?php $redis = new Redis; $redis->connect('localhost', 6379); $redis->auth(''); //登陆;因为没有配置,这里留空 $redis->select(1); //选择数据库 /** * zset有序集合类型 * 增 */ $ret = $redis->zadd('zset', 10, 'value'); //第一个参数是键 key,第二个参数是权重,第三个参数是值;返回值:integer $ret = $redis->zadd('result', 90, 'zhangsan'); //由于不好理解,做个示例:在成绩排名中,zhangsan的成绩是90分 /** * 删 */ $ret = $redis->zrem('zset', 'value'); //第一个参数是 key,第二个参数是值;返回值:integer /** * 改 * 不是真正的修改,如需真正的修改,可以先删除再添加 */ $ret = $redis->zincrby('zset', 1, 'value'); //增加值 value 的权重 1,1为步进;返回值:float /** * 查 */ $ret = $redis->zrange('zset', 0, -1); //获取所有的元素 0,-1 是所有区间,1,9 是1到9的区间;返回值:array $ret = $redis->zrevrange('zset', 0, -1) //倒序获取所有元素;返回值:array $ret = $redis->zrangebyscore('zset', 0, 10, ['withscore' => true, 'limit' => [0,2]]); //按照权重范围进行获取;返回值:array $ret = $redis->zrevrangebyscore('zset', 01, 0, ['withscore' => true, 'limit' => [0,2]]); //按照权重范围倒序获取;返回值:array $ret = $redis->zcount('zset', 3, 10); //返回权重区间中元素的个数;返回值:integer $ret = $redis->lLen('zset'); //获取集合的元素个数;返回值:integer $ret = $redis->zscore('zset', 'value'); //获取单个值的权重;返回值:float $ret = $redis->zrank('zset', 'value'); //获取某个值的权重排名;返回值:integer //上面一行代码的示例 $ret = $redis->zadd('result', 90, 'zhangsan'); //zhangsan 90分 $ret = $redis->zadd('result', 95, 'wangwu'); //wangwu 95分 $ret = $redis->zadd('result', 93, 'zhaosi'); //zhaosi 93分 $ret = $redis->zrank('result', 'zhaosi'); //获取 zhaosi 的排名是 2 $ret = $redis->zrevrank('zset', 'value'); //获取某个值的权重倒序排名;返回值:integer
hash 哈希类型:
<?php $redis = new Redis; $redis->connect('localhost', 6379); $redis->auth(''); //登陆;因为没有配置,这里留空 $redis->select(1); //选择数据库 /** * hash 哈希类型 * 增 */ $ret = $redis->hset('hash', 'key', 'value'); //单个写入,hash 是键,key 是哈希的键,value 是哈希的值;返回值:integer $ret = $redis->hmset('hash', array('key-1' => 'value-1', 'key-2' => 'value-2')); //批量写入,返回值:boolean /** * 删 */ $ret = $redis->hdel('hash', 'key'); //删除啥希的键,此时健值对一并删除;返回值:integer /** * 改 */ $ret = $redis->hset('hash', 'key', 'value'); //给添加是一样的,略 $ret = $redis->hincrby('hash', 'total', 1); //自增某个哈希键(total)的值(1),total 不存在就创建;返回值:integer /** * 查 */ $ret = $redis->hget('hash', 'key'); //获取单个哈希的值,返回值:string $ret = $redis->hmget('hash', array('key-1', 'key-2', 'key-3')); //获取多个键的值,返回值:array $ret = $redis->hgetall('hash'); //获取该哈希下所有的值,返回值:array $ret = $redis->hlen('hash'); //获取该哈希下元素的个数,返回值:integer $ret = $redis->hkeys('hash'); //获取所有的键名,返回值:array $ret = $redis->hvals('hash'); //获取所有的键值,返回值:array $ret = $redis->hexists('hash', 'key-other'); //检测哈希下是否存在该键名,返回值:boolean
Redis通用操作:
$redis->select(1); //选择数据库 $redis->expire('redis-key', 100); //设置键的生命周期 $ret = $redis->ttl('redis-key'); //返回生命周期的时间,返回值:integer $ret = $redis->del('redis-key'); //删除健,里面的值一并删除,返回值:integer $ret = $redis->exists('redis-key-other'); //检测键名是否设置,返回值:boolean $ret = $redis->keys('*'); //获取所有链名,返回值:array $redis->flushdb(); //清空当前数据库 $redis->flushall(); //清空 redis 下所有的数据库