PHP-redis扩展提供了丰富的操作Redis的API接口,使用PHP-redis可以轻松操作Redis。本文整理常用的基础的Redis操作方法,作为笔记方便大家查阅。
PHP连接Redis
我们一般使用connect连接Redis,connect方法为短连接,提供了主机、端口、连接超时等参数设置,如:
1 2 3
| $redis->connect('127.0.0.1', 6379); $redis->connect('127.0.0.1'); $redis->connect('127.0.0.1', 6379, 2.5);
|
也可以使用pconnect或popen方法支持长连接,使用同上。
示例代码:
1 2 3 4 5 6 7
| <?php
$redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully";
echo "Server is running: " . $redis->ping();
|
此外,phpredis还提供了验证密码,选择库和关闭连接释放资源、过期时间(用于缓存)、移动库等方法。
1 2 3 4 5
| $redis->auth('password'); $redis->select(0); $redis->close(); $redis->expire('key', 10); $redis->move('key', 15);
|
String字符串
Redis 字符串数据类型的相关命令用于管理 redis 字符串值。可以设置、获取、删除键key的值,可以对键值自增和自减等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| $redis->set('key', 1); $redis->mset($arr); $redis->setnx('key', 'value'); $redis->get('key'); $redis->mget($arr); $redis->del($key_arr); $redis->delete($key_str, $key2, $key3); $redis->getset('old_key', 'new_value');
$redis->strlen('key'); $redis->append('key', 'string'); $redis->incr('key'); $redis->incrby('key', $num); $redis->decr('key'); $redis->decrby('key', $num); $redis->setex('key', 10, 'value');
|
List列表
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232-1 个元素 (4294967295, 每个列表超过40亿个元素)。
1 2 3 4 5 6 7 8 9 10 11 12 13
| $redis->llen('key'); $redis->lpush('key', 'value'); $redis->rpush('key', 'value'); $redis->lInsert('key', Redis::AFTER, 'value', 'new_value'); $redis->lpushx('key', 'value'); $redis->rpushx('key', 'value'); $redis->lpop('key'); $redis->rpop('key'); $redis->lrem('key', 'value', 0); $redis->ltrim('key', start, end); $redis->lset('key', index, 'new_v'); $redis->lindex('key', index); $redis->lrange('key', 0, -1);
|
Hash字典
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储40多亿键值对。
1 2 3 4 5 6 7 8 9 10 11 12
| $redis->hset('key', 'field', 'value'); $redis->hget('key', 'field'); $arr = array('one'=>1, 2, 3);$arr2 = array('one', 0, 1); $redis->hmset('key', $arr); $redis->hmget('key', $arr2); $redis->hgetall('key'); $redis->hkeys('key'); $redis->hvals('key'); $redis->hdel('key', $arr2); $redis->hexists('key', 'field'); $redis->hincrby('key', 'field', $int_num); $redis->hlen('key');
|
Set集合
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
1 2 3 4 5 6 7 8 9
| $redis->sadd('key', 'value1', 'value2', 'valuen'); $redis->srem('key', 'value1', 'value2', 'valuen'); $redis->smembers('key'); $redis->sismember('key', 'member'); $redis->spop('key'); $redis->srandmember('key'); $redis->sinter('key1', 'key2', 'keyn'); $redis->sunion('key1', 'key2', 'keyn'); $redis->sdiff('key1', 'key2', 'keyn');
|
Sorted Set有序集合
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。
1 2 3 4 5 6 7 8 9 10 11
| $redis->zAdd('key', $score1, $member1, $scoreN, $memberN); $redis->zrem('key', 'member1', 'membern'); $redis->zscore('key', 'member'); $redis->zrange('key', $start, $stop); $redis->zrevrange('key', $start, $stop); $redis->zrangebyscore('key', $min, $max[, $config]); $redis->zrevrangebyscore('key', $max, $min[, $config]); $redis->zrank('key', 'member'); $redis->zrevrank('key', 'member'); $redis->ZINTERSTORE(); $redis->ZUNIONSTORE();
|
Server服务
Phpredis提供服务级别的操作方法,轻松管理redis。
1 2 3 4 5 6 7 8 9 10 11 12 13
| $redis->dbSize(); $redis->flushAll(); $redis->flushDB(); $redis->save(); $redis->bgsave(); $redis->info(); $redis->lastSave();
$redis->watch('key', 'keyn'); $redis->unwatch('key', 'keyn'); $redis->multi(Redis::MULTI); $redis->multi(Redis::PIPELINE); $redis->exec();
|