redis9 php 操作 reids
1redispipeline
管道的好处
这种技术的好处是极大地改善协议的性能。通过管道将慢互联网连接速度从5倍的连接速度提高到localhost至少达到百过倍。
redispipeline 怎么用的是事务呀
$resource = $this->cache->redispipeline();
$this->cache->HINCRBY($userKey,$field,1);
$this->cache->HINCRBY($userKey,$month_field,1);
$res = $this->cache->redisExec($resource);
pipeline 管道
是 redis_cli 的一个工具,可以对 redis 服务器产生并发的请求
//管道开始
public function redispipeline()
{
$result = $this->handler->multi(\Redis::PIPELINE);
return $result;
}
//事务结束
public function redisExec($redisObj)
{
$result = $redisObj->exec();
return $result;
}
- <?php
- $redis = new Redis();
- $redis->connect('127.0.0.1', 6379);
- $pipe = $redis->multi(Redis::PIPELINE);
- for ($i = 0; $i < 3; $i++) {
- $key = "key::{$i}";
- print_r($pipe->set($key, str_pad($i, 2, '0', 0)));
- echo PHP_EOL;
- print_r($pipe->get($key));
- echo PHP_EOL;
- }
- $result = $pipe->exec();
- print_r($result);
参数说明:
在php代码中使用redis服务
$redis = new Redis();连接
$redis->connect('127.0.0.1',port);//redis服务器ip及端口号
$redis->pconnect($this->configs['host'],$this->configs['port'],$this->timeout);
$redis->auth($this->configs['password’]);//密码
$redis->close();
管道开始
$redis->mult(\Redis::PIOELINE);
事务接收
$redis->exec();
设置时间
$redis->expire($key,$expire);
$redis->set($key,$value);//设置缓存
$redis-> setex('key', 3600, 'value') 带生存时间的写入值
$redis->setnx('key', 'value');//在 Redis 里,所谓 SETNX,是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果//判断是否重复的,写入值
$redis->mset(array('key0' => 'value0', 'key1' => 'value1’));//同时给多个key赋值
$redis->get($key);//查找缓存
$redis->del($key);//删除缓存
$redis->delete($key);//删除缓存
$redis->delete(array('key3', 'key4', 'key5'));
hash
$redis->hgetall($key)//返回名称为h的hash中所有的键(field)及其对应的value
$redis->hget($key,$fields)
$redis->hset($key,$fields,$value)
hLen
$redis->hLen('h');
返回名称为h的hash中元素个数
hDel
$redis->hDel('h', 'key1');
删除名称为h的hash中键为key1的域
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->ping 查看连接状态
$redis->getOption 查看redis设置的模式
$redis->setOption 设置redis模式
ttl
得到一个key的生存时间
resource = $redis->multi(\Redis::PIPELINE);//将多个操作当成一个事务执行
resource = $redis->multi(\Redis::MULTI); //让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
resource -> exec()
discard:删除一个事务
exists
判断key是否存在。存在 true 不在 false
incr, incrBy
key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
$redis->incr('key1');
$redis->incrBy('key1', 10);
decr, decrBy
做减法,使用方法同incr
append
string,名称为key的string的值在后面加上value
$redis->set('key', 'value1');
$redis->append('key', 'value2');
$redis->get('key');
redis 操作相关
flushDB
清空当前数据库
flushAll
清空所有数据库
$redis->rename('x', 'y');
save
将数据同步保存到磁盘
bgsave
将数据异步保存到磁盘
type
返回key的类型值
string: Redis::REDIS_STRING
set: Redis::REDIS_SET
list: Redis::REDIS_LIST
zset: Redis::REDIS_ZSET
hash: Redis::REDIS_HASH
other: Redis::REDIS_NOT_FOUND