PHPredis学习笔记

安装篇

一、 Linux系统下安装配置redis

  1. 可以使用命令wget http://download.redis.io/releases/redis-2.8.17.tar.gz下载到服务器上(根据自己需要的版本选择合适的链接)
  2. 解压下载的软件包 tar xzf redis-2.8.17.tar.gz cd redis-2.8.17.tar.gz make & make install编译安装
  3. 将配置文件移动到redis目录下,mv redis.conf /usr/local/redis/etc/
  4. 设置redis放在后台启动vim /usr/local/redis/etc/redis.conf 修改daemonize值为yes,启动redis服务/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
  5. 让redis开机自启vim /etc/rc.local加入
    /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf
  6. Linux下安装PHP的redis扩展,到https://github.com/phpredis/phpredis下载之后上传服务器中,用tar zxvf 解压安装包,然后输入/usr/local/php/bin/phpize ./configure make & make install 使用phpize生成configure的配置文件 然后编辑PHP配置文件vi /usr/local/php/etc/php.ini 添加extension=”redis.so”

二、window下安装redis配置

  1. https://github.com/ServiceStack/redis-windows/tree/master/downloads下载客户端
  2. http://windows.php.net/downloads/pecl/releases/redis/下载自己PHP版本对应得redis扩展
  3. 将redis.dll放到PHP安装目录下的ext目录下
  4. 打开php.ini加上extension=php_redis.dll保存重启环境

三、PHP操作redis的一些函数

  1. 初始化redis类
$redis = new Redis();

2.connect,open函数
描述:连接redis服务器
参数:host–服务器地址,port–端口,optional timeout–设置超时时间,reserved–如果指定了retry_interval需要设置为NULL,retry_interval 毫秒数
返回值:成功–TRUE,失败–FALSE
实例:

$redis->connect('127.0.0.1');//默认端口6379
$redis->connect('127.0.0.1',6379);
$redis->connect('127.0.0.1',6379,2.5);

3.pconnect,popen
描述:连接到redis服务器或者使用已经存在的连接(跟connect,open的区别为当PHP脚本进程运行完成之后连接会断开,非持久化);
参数:host–服务器地址,port–端口(optional),optional timeout–超时时间(optional),persistent_id–身份识别ID(optional),retry_interval–毫秒数(optional)
返回:成功–TRUE,失败–FALSE
实例:

$redis->pconnect('127.0.0.1');
$redis->pconnect('127.0.0.1',6379);
$redis->pconnect('127.0.0.1',6379,2.5);
$redis->pconnect('127.0.0.1',6379,2.5,'x');

4.auth
描述:当redis需要密码使用此函数
参数:password
返回:连接成功–TRUE,otherwise–FALSE
实例:

$redis->auth('password');

5.select
描述:选择连接其他的数据库
参数:数据库的编号
返回:成功–TRUE,失败–FALSE
实例:

$redis->select(1);//切换到1数据库

6.close
描述:断开redis的连接(当时用pconnect时不需要使用)
实例:

$redis->close();

7.setOption
描述:设置连接的一些选项
参数:parameter name parameter value(参数很多以后细致研究)
返回:成功–TRUE,失败–FALSE
实例:

$redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_NONE);//不要序列化数据
$redis->setOption(Redis::OPT_SERIALTZER,Redis::SERIALIZER_PHP);//使用built-in 实例化会非实例化数据
$redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_IGBINARY);//使用igbinary方式实例化或者非实例化
$redis->setOption(Redis::OPT_PREFIX,'myAppName:');//所有的keys值使用前缀

/*其他设置后续研究*/

8.getOption
描述:获取连接参数设置值
参数:参数名称
返回:参数设置的值
实例:

$redis->getOption(Redis::OPT_SERIALIZER);

9.ping
描述:检查当前连你姐的状态
参数:无
返回:+PONG
实例:

$redis->ping();//返回+PONG

10.echo
描述:发送一个字符串到redis,将会收到一个同样的字符串
参数:输入的字符串
返回:返回为输入的字符串
实例:

$redis->echo('this is a test');//返回的是this is a test字符串

11.bgRewiteAOF
描述:异步(Asynchronously)重写文件已反映当前数据库的状态
参数:none
返回:成功–TRUE,失败–FALSE
实例:

$redis->bgRewriteAOF();

12.bgSave
描述:异步保存数据库到磁盘中
参数:none
返回:成功–TRUE,失败或者已经运行了一个保存事件–FALSE
实例:

$redis->bgSave();

13.config
描述:获取或者设置redis服务的配置参数
参数:parameter1:GET or SET ,parameter2:配置项名字
返回值:GET情况下是key-value格式的数组,SET的话返回的是bool的TRUE或FALSE
实例:

$redis->config('GET','*max-*-entries*');
$redis->config('SET','dir','/var/run/redis/dumps/');

14.dbSize
描述:返回当前选择的数据库中keys的数量
参数:none
返回:keys的个数
实例:

$count = $redis->dbSize();
echo "Redis has $count keys";

15.flushAll
描述:移除所有数据库所有的数据
参数:none
返回:总是TRUE
实例:

$redis->flushAll();

16.flushDb
描述:移除当前连接数据库的所有的数据
参数:none
返回:总是返回TRUE
实例:

$redis->flushDb();

17.info
描述:返回服务器的信息和运行状态
参数:当无参数时返回所有信息,可以设置想要看到信息的eg:”CPU”,’COMMANDSTATS’
返回:服务器信息或者运行状态
实例:

$redis->info();//返回全部信息
$redis->info('COMMANDSTATS');//返回已经运行的命令的信息
$redis->info('CPU');//返回CPU的信息

18.lastSave
描述:返回最后一次保存数据到磁盘的时间戳
参数:none
返回:时间戳
实例:

$redis->lastSave();

19.resetStat
描述:充值服务器为初始状态
参数:none
返回:成功–TRUE,失败–FALSE
实例:

$redis->resetStat();

20.save
描述:同步保存数据库数据到磁盘中
参数:none
返回:成功–TRUE,失败或者已经存在此操作–FALSE
实例:

$redis->save()

21.slaveOf
描述:连接一个从redis服务器
参数:host–服务器地址, port–端口,不提供参数的时候关闭一个从服务器的连接
返回:成功–TRUE,失败–FALSE
实例:

$redis->slaveOf('10.0.1.7',6379);//连接一个从服务器
$redis->slaveOf();//断开一个从服务器的连接

22.time
描述:返回redis服务器当前的时间
参数:none
返回:返回的是个数组,包括当前服务器时间的时间戳和微秒数
实例:

$redis->time();

23.slowLog
描述:访问记录redis查询执行时间的日志
参数:参数可以是get len reset ,get –获取日志可以指定时间长短,len–返回日志长度,reset–重置日志
返回:当参数为get的时候返回的是一个包含日志的数组,参数为len返回的是日志长度,参数为reset返回的是boolean值来反映TRUE与FALSE
实例:

$redis->slowLog('get',10);获取10个访问日志
$redis->slowLog('get');//获取默认数量的访问日志
$redis->slowLog('reset');//重置日志
$redis->slowLog('len');//返回日志的长度

24.get
描述:获取指定键的值
参数:键名称
返回:如果键存在则返回值,如果不存在返回FALSE
实例:

$redis->get('name');

25.set
描述 :设置键值
参数:key–键名称,value–键的值,timeout–过期时间(可以是数字或数组)
返回:成功–TRUE,如果已经存在键值返回FALSE
实例:

$redis->set('key','value');
$redis->set('key','value',10);//设置时间
$redis->set('key','value',Array('nx','ex'=>10));//以数组的形式设置timeout

26.setEx,pSetEx
描述:设置键值存在时间,psetex是设置微秒
返回:命令成功返回TRUE
实例:

$redis->setEx('key',3600,'value');//设定key值1h TTL
$redis->pSetEx('key',100,'value');//设定key值0.1s TTL

27.setNx
描述:当数据库不存在键值的时候设定键值
参数:key–键名称,value–键的值
返回:成功–TRUE,失败–FALSE
实例:

$redis->setNx('key','value');//返回TRUE
$redis->setNx('key','value');//再次运行会返回FALSE

28.del,delete
描述:删除指定的键值
参数:可以是一个数组包括所有想删除的键的名称,也可以是不定数量的键名称eg key1,key2,key3
返回:删除的键的个数
实例:

$redis->delete('key1','key2');
$redis->delete(array('key3','key4'));

29.exsits
描述:检测是否存在此键
参数:键名称
返回:如果存在返回TRUE,不存在返回FALSE
实例:

$redis->exists('key');

30.incr,incrBy
描述:将储存的key值增加1,如果给定了第二个参数,则增加的数值是第二个参数,键值必须是数字要不会抛出FALSE
参数:key–key的名称,integer–(optional)设定增长的值
返回:新的值
实例:

$redis->incr('keys');//key1不存在则从0开始
$redis->incr('keys',10);//增长10

31.incrByFloat
描述:key的增长值为浮点数
参数:key–key名称,增长值为浮点数
返回:新的值
实例:

$redis->incrByFloat('key1',1.5);//如果key值不存在,现在就会是1.5
$redis->incrByFloat('key1',2.5);//现在key1的值是4

32.decr,decrBy
描述:当没有提供第二个参数的时候,每次将键值减少1,如果提供第二个值每次减少值为提供的而第二个值
参数:key–键名字,interger–(optional)减少的值
返回:新的值
实例:

$redis->decr('key1');//如果key1不存在现在的值为-1
$redis->decr('key1',10);//现在的key值为-11

33.mGet,getMultiple
描述:获取给定key的值
参数:包含多个key的数组
返回:返回对应键的值数组,如果键不存在则返回对应的FALSE
实例:

$redis->mGet(array('key1','key2','key3'));

34.getSet
描述:给key设置一个新的值返回之前的值,如果key不存在则会设置key但是会返回FALSE
参数:key–key名字,value–key的值
返回:键之前的值
实例:

$redis->set('x',42);
$redis->getSet('x','lol');//x被设置为LOL 返回42

35.randomKey
描述:随机返回一个key
参数:none
返回:存在redis中的一个键
实例:

$key = $redis->randomKey();

36.move
描述:移动一个键值到其他的数据库
参数:key–键名称,数据库名
返回:成功–TRUE,失败–FALSE
实例:

$redis->select(0);//选择DB0
$redis->move('x',1);//移动到x到DB1
$redis->select(1);//切换到DB1
$redis->get('x');//返回x的值

37.rename,renameKey
描述:重命名一个key
参数:key1–原key的名字,key2–新key的名字
返回:成功–TRUE,失败–FALSE
实例:

$redis->set('x',42);
$redis->rename('x','y');//重命名
$redis->get('x');//返回FALSE
$redis->get('y');//返回42

38.renameNx
描述:重命名一个key,只有当给定的新key不存在才会操作成功
其他同rename
39.expire,setTimeout,pexpire
描述:给一个键值设置存在时间,pexpire设置的值是毫秒
参数:key–key名称,interger–键值存在的时间(pexpire是毫秒)
实例:

$redis->setTimeout('x',3);//设置x存在时间为3s
sleep(5);
$redis->get('x');//返回FALSE,x已经被清除了

40.expireAt,pexpireAt
描述:同expire和pexpire功能,但expireAt与pexpireAt设置的时间是时间戳
41.keys,getKeys
描述:返回跟给定的字符串匹配的key
参数: 匹配的字符,*作为通配符
返回:跟给定字符匹配的一组key,是个数组
实例:

$redis->keys('*');//获取所有的key
$redis->keys('user*');//获取开始是user这几个字母的key
$redis->keys('*se*');//获取key中包含se的key

42.scan
描述:扫描所有的key值
参数:LONG–interger整形数字,或者NULL,match–匹配LONG(optional)iteration–每几次循环计算一下key值得数量
返回:返回一个数组,没有key的时候返回FALSE
实例:

$it = NULL;
$redis->setOption(Redis::OPT_SCAN,Redis::SCAN_RETRY);//当没有数据返回重新扫描,要设置这个才能扫出数据
while($arr_keys = $redis->scan($it)){
    foreach($arr_keys as $str_key){
        echo "Here is a key:$str_key\n";
    }
    echo "No more keys to scan\n";
}

43.object
描述:查看给定的key的redis对象
参数:refcount key
encoding key
idletime key
返回:refcount 返回给定key引用所储存的值得次数
encoding 返回给定key储存的值所使用的内部表示
idletime 返回给定key自存储以来空转时间以秒为单位
实例:

$redis->object('encoding','num');//返回的是num存储的类型
$redis->object('refcount','num');//返回的是key引用的次数
$redis->object('idletime','num');//返回key自存储以来空转时间

44.type
描述:检测一个给定key的值的类型
参数:key-键名称
返回:返回实际的类型
实例:

$redis->type('num');

45.append
描述:像指定的键的值里添加指定的字符串
参数:key–key名称,value–指定的字符串
返回:返回添加字符串之后键值的长度
实例:

$redis->set('key','value');
$redis->append('key','value1');//返回是增加字符串之后的长度11

46.getRange
描述:返回一个长字符串的子字符串
参数:key–key名称,start–开始位置,end–结束位置
返回:截取的字符串
实例:

$redis->set('key','stringvalue');
$redis->getRange('key',0,5);//返回string
$redis->getRange('key',-5,-1);//返回value负数的话是从-1开始计数的

47.setRange
描述:替换指定的子字符串
参数:key–key名称,offset–起始位置,value–指定的字符串
返回:返回修改之后的字符串长度
实例:

$redis -> set('key','helloworld');
$redis -> setRange('key',6,'redis');//返回修改之后字符串长度
$redis->get('key');//字符串为hellowredis

48.strLen
描述:获取一个键的值的长度
参数:key–键名称
返回:键值的长度
实例:

$redis->strlen('key');

49.getBit
描述:对key所存储的字符串,获取指定偏移量上的位
参数:key–key名称,offset–偏移量
返回:位(0 or 1)
实例:

$redis->set('key','test');
$redis->getBit('key',0);//返回为0
$redis->getBit('key',1);//返回为1

50.setBit
描述:设置字符串上偏移量上的位的值
参数:key–key名称,offset–位移量,value–位的值(0 or 1)
返回:被设置数值之前的位值
实例:

$redis->set('key','*');//ord('*') = 42 = 0x2f = '0010 1010'
$redis->setBit('key',5,1);//返回之前的位上的值0
$redis->setBit('key',7,1)//返回之前的位上的值0

51.bitOp
描述:对一个或多个保存二进制的字符串key进行位操作
参数:AND destkey–存储结果的名称 key名称 对一个或多个key求逻辑并
OR destkey–存储结果的名称 key名称 对一个或多个key求逻辑或
XOR destkey–存储结果的名称 key名称 对一个或多个key求逻辑异或
XOR destkey–存储结果的名称 key名称 对一个或多个key求逻辑非
返回:返回求值的值
52.bitCount
描述:计算给定key的值中,被设置为1的比特位的数量
参数:key–key名称
返回:数量值
53.sort
描述:排序给定的键的值
参数:key–key名称,按什么方式排序
‘by’=>’some_pattern_*’,//按指定列进行排序
‘limit’=>array(0,1),//限制排序之后返回数据的数量
‘get’=>’some_other_pattern_*’,//按指定序列进行排序
‘sort’=>’asc’ or ‘desc’,//正序或者倒序排列
‘alpha’=>TRUE,//加入对字符串的排序,sort默认是对数字进行排序
‘store’=>’external-key’//将给定的值保存在指定的key上。如果key已经存在则会覆盖掉原先的
返回:排序后的数组,如果设置了store则返回的是数组的数
实例:

$redis->delete('s');
$redis->sAdd('s',5);
$redis->sAdd('s',4);
$redis->sAdd('s',2);
$redis->sAdd('s',1);
$redis->sAdd('s',3);
$redis->sort('s');//返回1,2,3,4,5
$redis->sort('s',array('sort'=>'desc'));//5,4,3,2,1
$redis->sort('s',array('sort'=>'desc','store'=>'out'));//返回的是5,排序后的数组存储在out里

54.ttl,pttl
描述:获取给定的key在redis中剩下的存在时间
参数:key
返回:返回剩下的时间ttl为second ,pptl为millisecond,如果此key没有存储限制时间返回-1,如果key不存在返回-2
实例:

$redis->ttl('key');

55.persist
描述:移除给定key的限定时间
参数:key
返回:成功–TRUE,如果key不存在或者没有限制时间–FALSE
实例:

$redis->persist('key')

56.mSet,mSetNx
描述:同时设置多个键值
参数:数组array(key=>value,……)
返回:成功–TRUE,失败–FALSE,mSetNx只有当所有的键值设置成功才会返回TRUE
实例:

$redis->mSet(array('key0'=>'value0','key1'=>'value1'));

57.dump
描述:序列化给定的key的值,返回序列化的值,可以使用restore命令将这个反序列化为redis的值
参数:key
返回:返回序列化之后的数值
实例:

$redis->set('foo','bar');
$val = $redis->dump('foo');

58.restore
描述:将dump序列化的值反序列化
参数:key –key值存储反序列化的值,ttl interger–设置存活时间(设为0没有限制),encode–序列化后之后的字符串
返回:成功–TRUE,失败–FALSE
实例:

$redis->set('foo','bar');
$val = $redis->dump('foo');
$redis->restore('bar',0,$val);//获取bar的值为bar

59.migrate
描述:迁移一个键到另外一个redis服务器
参数:host–redis服务器地址,port–服务器端口,key–要迁移的key,destination-db–要迁移到的数据库,timeout–存在时间,copy boolean–(optional)复制key不会删除源key,replace boolean–(optional)如果目标redis上存在key会替换掉
返回:成功–TRUE,失败-返回相应的错误
实例:

$redis->migrate('backup',6379,'foo',0,3600);
$redis->migrate('backup',6379,'foo',0,3600,true,true);//复制和替换掉key
$redis->migrate('backup',6379,'foo',0,3600,false,true);//会删除源上的key

hash表的一些操作命令

60.hset
描述:给hash表中key的域设定新值
参数:key–key名称,hashKey–域名,value–设定的值
返回:如果值不存在和设置成功会返回1,如果值已经存在并且被替换掉会返回0,如果出现错误会返回FALSE
实例:

$redis->hSet('h','key1','hello');//返回1
$redis->hGet('h','key1');//返回hello
$redis->hSet('h','key1','lol');//返回0,key1值被替换

61.hGet
描述:获取一个key的hash域的值
参数:key–key名称,hashkey–域名
返回:成功发挥key的hash域的值,如果hash域不存在或者这个key不存在会返回FALSE
实例:

$redis->hGet('h','key1');

62.hLen
描述:返回hash表的长度
参数:key
返回:返回长度值,如果key不存在,或者不存在hash表会返回FALSE
实例:

$redis->hSet('h','key1','hello');
$redis->hSet('h','key2','lol');
$redis->hLen('h');//返回2

63.hDel
描述:删除key的hash域的值
参数:key–key名,hashkey1–hashKey名字(可以连接多个)
返回:删除成功会返回删除的个数,当key不存在返回0,hash域不存在返回FALSE
实例:

$redis->hDel('h','key1');
$redis->hDel('h','key1','key2');

64.hKeys
描述:返回一个key的所有hash域的所有域名
参数:key
返回:包含所有key的域名名称的数组
实例:

$redis->hSet('h','a','x');
$redis->hSet('h','b','y');
$redis->hSet('h','c','z');
var_dump($redis->hKeys('h'));//返回的是array(a,b,c)

65.hVals
描述:返回key的hash域所有的值
参数:key
返回:包含hash域所有的值得数组
实例:

$redis->hSet('h','a','x');
$redis->hSet('h','b','y');
$redis->hSet('h','c','z');
var_dump($redis->hVals('h'));//返回的是array(x,y,z)

66.hGetAll
描述:返回key的整个hash域的值包括域名称和域值
参数:key
返回:一个数组,键为域名称,值为域的值
实例:

$redis->hSet('h','a','x');
$redis->hSet('h','b','y');
$redis->hSet('h','c','z');
var_dump($redis->hGetAll('h'));//返回的是array('a'=>'x','b'=>'y','c'=>'z')

67.hExists
描述:检测指定的key是否有指定的域
参数:key memberKey–域名
返回:如果存在返回–TRUE,不存在–FALSE
实例:

$redis->hSet('h','a','x');
$redis->hExists('h','a');//返回TRUE
$redis->hExists('h','b');//返回FALSE

68.hIncrBy
描述:将key的域值按给定的值增加
参数:key–key名称,member–域名称,value–要增长的值
返回:增加后的值
实例:

$redis->delete('h');
$redis->hIncrBy('h','x',2);//返回2
$redis->hIncrBy('h','x',1);//返回3

69.hIncrByFloat
描述:将key的域值按照给定的浮点数增加
参数:key–key名称,member–域名称,value–要增长的值为浮点数
返回:增加后的值
实例:

$redis->delete('h');
$redis->hIncrByFloat('h','x',1.5);//返回1.5
$redis->hIncrByFloat('h','x',-1.5);//返回0.0

70.hMSet
描述:同时对key进行多个hash值设定
参数:key–key名称,多个hash值的数组
返回:成功返回TRUE,失败返回FALSE
实例:

$redis->hMSet('user:1',array('name'=>'joe','salary'=>2000));

71.hMGet
描述:同时获取多个key的域值
参数:key,member–是个数组
返回:返回包含域值的数组
实例:

$redis->hMGet('user:1',array('name','salary'));//返回array('name'=>'joe','salary'=>2000)

72.hSan
描述: 扫描key所有的域值
参数:key–key名称,pattern,count
返回:数组包含匹配的域值
实例:

$it = NULL;
$redis->setOption(Redis::OPT_SCAN,Redis::SCAN_RETRY);
while($arr_keys = $redis ->hSan('hash',$it) ){
    foreach($arr_keys as $str_field => $str_value){
        echo "$str_field => $str_value\n";
    }
}

73.hStrlen
描述:获取key值域值的长度
参数:key–key名称,field–hash域名称
返回:返回域值长度,当域名不存在或者key不存在返回0
实例:

$redis->hStrlen('h','key1');

Lists表的一些操作命令

74.bLPop,brPop
描述:列表阻塞式弹出原语,当给定列表内没有任何元素可供弹出的时候,连接将被BLPOP命令阻塞,直到等待超时或发现可弹出元素为止
参数:给定列表名的数组、超时时间 或者 key1,key2,key3 超时时间,当超时时间设置为0 时候无限期超时
返回:数组array(‘listName’,’element’); 当没有列表时超时时间不为0则返回空和超时时间
实例:

$redis->blpop('key1','key2',10);
$redis->blpop(array('key1','key2'),10);

75.bRPopLPush
76.
77.
78.
79.
80.
81.
82.
83.
84.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值