您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13233|回复: 1
打印 上一主题 下一主题

[php学习资料] php操作redis大全

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php& x  B. x7 I4 ^
  2. $redis = new Redis();  
    ) j# S1 y* \( X/ O/ }
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    6 a2 w: f6 m$ u3 Q
  4. $redis->auth('mypassword');//my redis password ! k! E# ]+ A5 e6 K' @: }' e
  5. $redis ->set( "test" , "Hello World");  ' E! e7 X5 r6 B7 J/ f
  6. echo $redis ->get( "test");8 i- _2 q) h: w$ z
复制代码
php操作redis函数封装
  1. /**
    1 l! |+ q7 b  H+ i- g' B1 _  m+ N
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数: S* M% d3 Z+ c! E2 O
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    ' Z+ j6 }& N; A8 l
  4. */
    $ ?$ Q' O) u" W! c
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){. Z: }9 G: `5 j0 s! Q0 X9 D
  6.     if(!$key||!$value) return false;, o1 M* i+ B; g) F6 j/ e& d; M. U; {
  7.     $host = $host?$host:getenv('REDIS_HOST');
    / `. _5 B3 O" p9 H
  8.     $port = $port?$port:getenv('REDIS_PORT');
    6 s# a) I! g) t; R+ {! N8 P
  9.     $redis = new Redis();% p: W7 A  y/ `
  10.     $redis->connect($host, $port);. G0 ^% V1 X( O7 b
  11.     $value = is_array($value)?json_encode($value):$value;
    - i( T/ B+ Y( M2 X
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);; Y% i9 w, [* c! F, I. o
  13. }1 m" _- n. j* e1 i# Y6 o6 }
  14. /**/ w7 `( H' d2 @. }' q
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi& ~  H% d! J, k4 b  Y
  16. */$ y7 z$ z6 Y3 ^$ l" t2 @9 j4 n) u" \
  17. function RedisGet($key,$host='',$port=''){
    / F8 W+ e! U% M' L
  18.     $redis = new Redis();
    : l- M' d5 c! w2 e3 T
  19.     $host = $host?$host:getenv('REDIS_HOST');: t$ Y5 t2 h+ k( N8 v
  20.     $port = $port?$port:getenv('REDIS_PORT');9 Q$ |9 K6 e# W1 ]9 v0 g
  21.     $redis->connect($host, $port);
    ) ]& D$ O1 t; t# |) O
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    8 F3 z0 p$ \) g  S8 W& W4 l. C+ V& N
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    6 g2 q) B* Y  I# ~: F
  24. }
    # _; C& R6 p' D7 m
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了6 x! K+ B9 m; G: ~$ U, x
  1. setex 带生存时间的写入值/ Z1 O3 [, p/ h3 C% J/ o
  2. $redis->setex('key', 3600, 'value');
    . ~+ c- i$ g$ F$ l
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1/ O3 Q3 k. U" u* L8 i) G+ Y
  4. $redis->setnx('key', 'value');0 ^' F4 y( F$ z6 l9 W5 _/ d+ N% c
  5. 返回已经删除key
    4 M5 e1 q1 D3 o, ?5 F' K3 s
  6. $redis->delete('key1'); 成功返回1失败返回0! P: k, ]1 Y0 X$ N3 m# V4 ~( j4 h
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    7 p( `) s8 R+ o' z* M+ P4 _5 C0 W
  8. 查询生存时间0 _! l+ _  ~5 P4 V- p
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)2 k# p8 X: A+ `4 S( ]$ x; g
  10. 同时给多个key赋值,同时设置key0和key1
    5 g$ ~. e' m% A
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    8 y" h/ D1 p8 D
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值, u. J3 l: o, H' Q) n8 \; ?. `5 Q
  13. $redis->incr('key1');: R5 ~, Q) \# @7 B% S( c* q& c* C
  14. $redis->incrBy('key1', 10);$ X8 y# m) ?: B3 m- w/ l8 _* Y
  15. 减法跟加法一样2 h4 ]6 V& ]' }% N/ x
  16. $redis->decr("key1"); 减少1
    5 I; P+ J% ]8 _; |  L# C! A& n) _/ p
  17. $redis->decrBy("key1",5) 减少5
    / Y" l9 }3 y$ R* a, d) D

  18. ; A2 K* W. v: [
  19. list相关操作,连表操作# l. ~8 t* U6 ^4 ^1 @) ?. a
  20. lPush! G% @5 P! v0 \. y0 X0 ~1 F+ ?
  21. $redis->lPush("list", "888");6 q$ W" K, r3 b
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数$ R& ]6 a' d+ a% H9 P6 q
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    ; t" W* u! F4 s. q+ N1 S
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    : _( u0 _' f) n: Q# Z7 u
  25. lPushx/rPushx
    $ X3 v& |$ Y: t: h; w$ P
  26. $redis->lPushx(key, value);
    # v) O& b0 L  T
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
      v7 r3 @# k/ A6 S( f

  28. 5 Q$ {. m& x8 D, Z. s! H
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    0 F& P( ]3 ?! |: m3 A
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    $ ?, k  v  x" N0 A
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    4 E/ g: O+ P: e8 b% a9 I$ }: {
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    ( c3 y; [2 {# p! }# D( D9 d
  33. sadd s1 zhangsan
    % b  J8 W' d) d, y
  34. sadd s1 lisi
    5 t. m( X# h# N) B9 D) X2 s- I
  35. sadd s1 wangwu8 z4 W+ y( t9 z& _7 r
  36. sadd t1 yangxingyi
    . Y/ o! S, f0 Y' m' s
  37. sadd t1 lilei; d- V$ Z  I3 {
  38. sadd t1 zhangsan
    7 {9 s* ^( y3 ?. |1 J6 J, T2 t
  39. smembers s1 s1的所有集合内容
    7 z7 @0 U7 U) B9 K
  40. sdiff s1 t1 s1有的,t1没有的,差集
    ! b8 s0 u; Y& d( m
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    + H( ?# a6 \' h* j# C6 Q, ^
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ; |: S+ I. t# R) K, F* ?# w
  43. spop抽奖场景,返回集合里面随机的数8 L. x  `; p3 l1 t8 S
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    4 K2 X& o& X' U
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数: G+ m; A9 w0 U- H# R' Y; ^
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
      C5 b; |) {) b$ _( U7 |0 f
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    % [, k# C. L) w' @# C
  48. $i = $redis->srandmember('s1');echo $i;7 y0 _8 H; Y0 z) D: H
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false! p  H4 N7 J. ]9 C7 d$ G' s
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    ' [/ d) R* r3 ?$ i5 k

  51. 1 |$ X4 {; t* ]
  52. zadd key 2 value 有序集合
    / X) M: X& C) a- ^/ x1 J: j
  53. zadd y1 1 zhangsan;! y: Y& D9 i' `( b3 W6 |/ p
  54. zadd y1 3 lisi;  ?; K' X( Q7 [5 m6 ?& ~
  55. zadd y1 2 wangwu;
      Y6 g5 F- _9 P8 P1 Q7 {" Q9 w' f
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    : H& |6 Z1 i* G
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);9 W9 B5 P& O" ^4 N& U& E0 J
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键/ A! n. g$ G; o( i6 H- M: t/ u
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先' v: G, f" k8 W$ E! t8 Y% ]
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的" V( Z; d. A5 ?! U5 z% C
  61. 无序就scard,有序就zcard,有z没有s! D0 C7 {! ]8 j4 c1 P! A8 `8 f0 r- v8 A  N
  62. sInterStore1 o% ]% B' x' w/ ~" p. F! O% G$ d3 V
  63. 求交集并将交集保存到output的集合
    : i( D  E5 S+ {5 C& k. ]0 ^! O; ^
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3'). f8 p- [6 A% V! W$ C

  65. $ z3 e: o4 R4 F. M
  66. Hash操作+ x' I8 g; O. w  x5 Q7 @5 v8 R
  67. hSet: V* o; P3 f/ z$ s+ Q0 X; G
  68. $redis->hSet('h', 'key1', 'hello');! D! [4 c7 C' D; {; F4 ?- b
  69. 向名称为h的hash中添加元素key1—>hello
    " t4 x2 K, v8 _2 D
  70.   y. r# D+ z+ V  `$ o5 h  C) F
  71. hGet
    % e& ~' B2 v, U9 I; ~8 w/ @
  72. $redis->hGet('h', 'key1');
    5 z- u( |" Z. _4 [7 v+ N9 `: l
  73. 返回名称为h的hash中key1对应的value(hello)
    ' T5 e5 z7 [. \+ b; O
  74. ( R  C! z( d; t; n3 {; a9 o3 v
  75. hLen6 B9 U) }8 K: b8 T' z
  76. $redis->hLen('h');
    5 w; {7 M/ G( W2 [6 ]* p
  77. 返回名称为h的hash中元素个数2 v6 D, q8 A7 A/ D; P4 l& }

  78. 6 R6 V# L  O4 M9 d: k
  79. hDel
    0 u& u# K; e5 o- B5 I  {, Y
  80. $redis->hDel('h', 'key1');
    9 t; B7 N' r6 v1 I( l
  81. 删除名称为h的hash中键为key1的域
    " J8 W% i  D: X+ o, b* Y

  82. - D! R8 ?* j" t" \) `* ^
  83. hKeys$ `2 }8 S" \" Y0 S
  84. $redis->hKeys('h');
    5 @5 ]* S5 e* Z! \2 L
  85. 返回名称为key的hash中所有键% n5 {2 Z2 \/ g3 O! H1 k
  86. 9 y; j' U' m' i- j& B5 l8 z
  87. hVals! G/ r% y" w9 S* m
  88. $redis->hVals('h')
    7 K$ z1 O9 s: ]$ |& A
  89. 返回名称为h的hash中所有键对应的value# g5 L! g8 n; l$ k7 L5 K3 l

  90. & j- F0 c" r. a$ [* P9 a
  91. hGetAll, _7 \0 F" `2 |% [
  92. $redis->hGetAll('h');- v0 t" Y% u) t6 _, _8 E% J
  93. 返回名称为h的hash中所有的键(field)及其对应的value, S6 C% ^* k) p) W1 X( Z
  94. . m4 e! m! U4 {0 l8 v+ w
  95. hExists9 w) j; ^% ^3 C/ U0 @9 h. g
  96. $redis->hExists('h', 'a');
    $ `1 j7 @+ W/ j5 u' X3 g7 p* t
  97. 名称为h的hash中是否存在键名字为a的域# w  a3 q" V6 _. u# |- B

  98. / y2 v' Y3 ~# v  `4 ^5 v
  99. hIncrBy4 W: t6 z1 s4 X1 j  d
  100. $redis->hIncrBy('h', 'x', 2);$ p" q8 a: J8 V  H
  101. 将名称为h的hash中x的value增加24 q; [4 Z4 z- X5 A

  102. - |3 P3 i! Q2 W7 r4 r/ x7 J# h5 t
  103. hMset
    7 l. T: E8 m* D5 h' y2 _4 s
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    . O0 F1 O. x7 {) }
  105. 向名称为key的hash中批量添加元素# ]- ]! W- {* Q- Q  w

  106. # p$ s) ]5 S+ @- u6 `% c
  107. hMGet
    " L$ I. `7 u0 e/ O9 L# B! ^. {
  108. $redis->hmGet('h', array('field1', 'field2'));3 j9 \+ w3 @+ y5 F2 C: A+ q. S
  109. 返回名称为h的hash中field1,field2对应的value
    9 {- c, A3 P: A2 h

  110. ( J, U/ o. L/ p& |" o( ~
  111. redis 操作相关0 i7 C: s; Q  L
  112. flushDB
    # v& H# ]8 z1 c, M
  113. 清空当前数据库: O/ y2 z9 `8 \

  114. 3 L# x4 \4 v& h6 r* E, Q- Y# x* S
  115. flushAll7 _' T1 U, I+ V0 ~" e1 j/ C) v
  116. 清空所有数据库* v) C- r! Z: N" a7 w
  117. 6 C& ^0 j6 A; g& n9 K( f  o6 x& c
  118. randomKey
    / O3 t. H: E& M1 P3 d8 t1 j/ a' X
  119. 随机返回key空间的一个key
    , M* }+ o1 j! E  I- B  J# P3 Y
  120. $key = $redis->randomKey();* A: J5 ~% C/ }
  121. * A4 V" y; c! ?8 y0 A, `
  122. select
    6 ^) S/ ~& g" W
  123. 选择一个数据库
    ' T+ ]! c- q- p
  124. move9 t0 e. `3 b  K, J# P; w
  125. 转移一个key到另外一个数据库* c+ Q8 P4 u. L1 Q
  126. $redis->select(0); // switch to DB 0
    1 n5 h2 K1 v' C! {
  127. $redis->set('x', '42'); // write 42 to x% e' k" z  G; c7 f$ D0 j6 {
  128. $redis->move('x', 1); // move to DB 1
      w6 P8 D5 x0 w3 s
  129. $redis->select(1); // switch to DB 1
    ! U1 G3 s- b5 B- V/ E: m
  130. $redis->get('x'); // will return 42, r2 b9 R7 m- _7 X; K
  131. - ~# p5 {. [4 ^0 o$ I0 @
  132. rename, renameKey( ]- }8 g, k7 v8 U0 f* ~
  133. 给key重命名% s) b% R4 Q" {( U9 T
  134. $redis->set('x', '42');  i+ a, v1 ~% K$ J5 S9 B& S  ~2 S
  135. $redis->rename('x', 'y');6 V: S, T/ {- |2 z$ f9 ^" n# T
  136. $redis->get('y'); // → 42# M9 H7 F  y- x& t* ~
  137. $redis->get('x'); // → `FALSE`
    1 J, Z. p" `: {# E2 L* U

  138. " }. k3 X4 Z9 e
  139. renameNx$ v+ G0 g5 E/ j1 x8 H. d# Y5 K! j
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    , B4 h- e$ _! p- P8 M; {
  141. # ?7 ?) t+ F' y' i4 M  P
  142. setTimeout, expire
    ' ^3 `* p: R8 y/ E( t
  143. 设定一个key的活动时间(s)# I: u, h* A0 [8 M' v
  144. $redis->setTimeout('x', 3);, y1 R, L) M- q* j
  145. ! l3 ~+ e  O7 }+ I
  146. expireAt8 a7 A8 P, {3 y) |( i* s0 k0 t
  147. key存活到一个unix时间戳时间
    3 o. [6 n" q$ N' l6 @5 @, a. F
  148. $redis->expireAt('x', time() + 3);  i1 k. w2 E* r- l! p& ?

  149. 5 I- Z- m5 ], A0 W3 H/ U
  150. keys, getKeys
    - G, f- t  ^- l4 k7 W, y' N8 o
  151. 返回满足给定pattern的所有key+ e" B" B: E1 c6 R/ t; L% d
  152. $keyWithUserPrefix = $redis->keys('user*');
    : I' E% v6 c$ E. e9 ?* A
  153. ! P. P; r8 D9 H; W5 D
  154. dbSize! f: h' [5 |+ i
  155. 查看现在数据库有多少key
    8 k" {, ?9 h! i' D& v1 t* N
  156. $count = $redis->dbSize();
    ; p# ^5 j( q4 j" |
  157. 9 f, C: ]8 h9 m+ q% E" a
  158. auth
    $ m5 Q2 L" C  [1 y9 }2 D% u/ X5 E
  159. 密码认证
    0 v( g" c' k* ]3 y
  160. $redis->auth('foobared');
    ; h# I$ U8 C" T. R3 W7 r
  161. . l$ J; U8 B  f1 {
  162. bgrewriteaof; Y4 u" J3 i1 p
  163. 使用aof来进行数据库持久化
    3 U/ f: W9 j! q0 U$ f: A  t
  164. $redis->bgrewriteaof();
    6 {, g* I* o1 G. l8 ^; M+ n

  165. # r2 }, F& K- \% A4 ~
  166. slaveof
    6 J1 r1 \4 |1 p$ P6 h% y3 U0 i6 V
  167. 选择从服务器
    ( ~7 }  {5 p0 g& a" b
  168. $redis->slaveof('10.0.1.7', 6379);
    & q/ R% X) E9 i6 U+ D6 V
  169. 5 e0 \6 H8 \& |$ K$ q( H2 S" I
  170. save  K6 ~" l& _/ b) |4 I, [; h. F/ o
  171. 将数据同步保存到磁盘3 \" Z, S! z7 @- h/ Y

  172. 8 l+ i/ Q) J" D2 B
  173. bgsave& m9 s) j; j8 _% C
  174. 将数据异步保存到磁盘
    + N* @) y% }% w7 x

  175. 9 }& j6 l  J$ I% t
  176. lastSave: i6 X" u( o" T; S# ?1 t- |/ U
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    : Y5 ]5 l1 F, v  O

  178. / r+ V" w& K- z6 e5 p) h9 j& }
  179. info
    / S2 F8 w! d1 }8 K
  180. 返回redis的版本信息等详情
    3 c7 N4 U# Q- q: S; b6 c6 h

  181. 9 [8 i) v+ `  L- g  ~3 ^$ S
  182. Redis::__construct构造函数
    + @) M6 x" |4 r) D: L
  183. $redis = new Redis();
    ! O! J  K- p) O' I& i0 v8 I8 O, X) S: r
  184. . D1 ?  ?* h8 X- Q  _' B- F
  185. connect, open 链接redis服务
    9 I' j5 }1 G; x5 A
  186. 参数3 Y* b6 Y4 o! x/ ]  K  b
  187. host: string,服务地址
    5 r! p) z, o: t9 V- s- S& w
  188. port: int,端口号
    ( \' }  i2 Q( a8 K) o! @
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    % e6 `- w- Z) n: o% e8 D
  190. 注: 在redis.conf中也有时间,默认为3003 k& |) W0 H  V

  191. 7 O2 V* x- I( e6 `
  192. pconnect, popen 不会主动关闭的链接" M* T7 A! _; y& S6 Q4 `% m
  193. 参考上面
    8 ]5 Y$ p! s, p( D9 R9 [" q

  194. 1 a. ^2 w5 w: g% L& J
  195. setOption 设置redis模式$ u; ?9 F) ^- ?8 D' c! Y
  196. 6 H& J7 \5 u/ z  w. U2 @1 y
  197. getOption 查看redis设置的模式8 ]$ }. f; d* E, C! b
  198. ! Y7 l+ {1 W& A. h$ G6 l9 K+ a
  199. ping 查看连接状态
    1 X- x' e5 b# H
  200. ) `; ~. m; U$ r# k6 a5 _) W
  201. get 得到某个key的值(string值)
    ! w$ ]0 n0 M) L  k: B; M% u
  202. 如果该key不存在,return false
    ( w% O1 `7 m  c" H  E4 @  [1 y
  203. 6 g9 o. U# C) D# m
  204. set 写入key 和 value(string值)
    & m3 Z; W( E" _. H9 @2 d
  205. 如果写入成功,return ture. ?$ x8 m5 q$ e* c: L: Z

  206. * e- l  x. C- R6 A  R
  207. setex 带生存时间的写入值
    ) S/ T. X9 b, N- [
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    5 F6 P( d1 q6 N7 W

  209. % i$ f; X2 m  j7 p* h. r  n
  210. setnx 判断是否重复的,写入值
    ) y, _9 a# q, a! c2 ?9 z% ^
  211. $redis->setnx('key', 'value');
    6 O: y+ d, ~# |6 F( G; G
  212. $redis->setnx('key', 'value');4 f5 C4 `" ^) Y4 {& \3 V' Y
  213. : }$ G+ f: U: G, Y% T+ R$ @
  214. delete  删除指定key的值
    + w: M1 O# t( Q2 ~9 C7 K
  215. 返回已经删除key的个数(长整数), S& i/ t! |: a# [4 Q' @+ M
  216. $redis->delete('key1', 'key2');
    1 k) O! k4 ~4 \7 D7 B# i/ Q+ R% Q
  217. $redis->delete(array('key3', 'key4', 'key5'));
    4 A, n9 t& M, [9 X( c, g$ q$ c

  218. : V! @' n; A) B) d6 B% c  P
  219. ttl  B+ E# X% k  }
  220. 得到一个key的生存时间
    1 K. @9 i' Q$ @
  221. 3 V; E( P$ r' }7 S; l
  222. persist
    9 g9 G0 i3 W1 e2 M1 d9 B! E3 d
  223. 移除生存时间到期的key
    ; |. p) m- Z$ |8 x! R
  224. 如果key到期 true 如果不到期 false  o9 W# i  Y1 k' l& l9 K

  225. , w, W$ O  U. @$ T. G
  226. mset (redis版本1.1以上才可以用)
    8 e& c1 z/ p9 r3 D, M& Q
  227. 同时给多个key赋值
    , ^: f' c2 @6 i8 [8 J! o1 f+ q
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    " A0 ?6 r, w+ W6 S/ a
  229. 1 G% q# k, M" t& z. t
  230. 0 w% t: w0 z. W/ n

  231. ( h! C# \3 F' Q- R
  232. multi, exec, discard
    8 L" ~3 B' r9 z* g1 W$ f! o9 L8 |9 {
  233. 进入或者退出事务模式' w+ y% o/ t# M& M8 Z) |
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI( |6 |. B3 o* C% R5 T
  235. Redis::MULTI:将多个操作当成一个事务执行* V% m/ G1 O2 }9 v/ W7 J
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证. V9 s8 J& c5 P6 c/ a6 Y
  237. discard:删除一个事务+ c2 O: f. Z, A0 C( R
  238. 返回值5 R- R; ^8 r8 [1 q4 e/ ?' K
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    6 c- T1 @7 e$ T

  240. : T* o  m3 M& E# }% {4 `) i
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    ; a- t9 E" [% @7 s1 L
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false). v6 O5 r) Q+ Y, t7 U6 x6 o) r
  243. unwatch  取消被这个程序监测的所有key' E3 }% {  B, Y" b1 [
  244. 参数,一对key的列表; S3 z' Q) P3 ?5 U7 c3 s) g% D- q
  245. $redis->watch('x');4 p# ^5 I9 c: E" ^

  246. 9 o  R; A9 S; _) }) |0 _9 {2 Z+ {1 E: {; \
  247. $ret = $redis->multi() ->incr('x') ->exec();
    . B8 p  e- G  W' z. f  ?$ v

  248. 0 T, k1 O; a' b7 ]5 h' q

  249. # I0 B8 ?4 p+ Y) \# w
  250. subscribe *  T6 z( U4 P4 _9 \
  251. 方法回调。注意,该方法可能在未来里发生改变
    + v* J) K0 ~$ n9 Q) ^
  252. 0 V3 j( X/ Z+ C
  253. publish *- V5 P" b6 }( R/ P) m4 p1 S$ h6 t
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    ( \! O2 s. A$ r! P4 C+ }- N

  255. ! u' Y- S( V0 z1 }, J
  256. exists
    1 L& O8 A/ q+ Y: n. J5 }
  257. 判断key是否存在。存在 true 不在 false
    ( G- ]9 P( p6 h, U, ~/ f+ b

  258. . p2 `+ s3 s/ a  Z; K7 O- o
  259. incr, incrBy* }" [$ |" p% {
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ' E% @% i: \# x  e: o' a, [, b
  261. $redis->incr('key1');! ?, }! K& ^! S- V4 j
  262. $redis->incrBy('key1', 10);
    5 E7 R/ |: N& g

  263. + s$ w) r. d3 t0 V* U+ S
  264. decr, decrBy- X6 z# d# D; L  ~; C) x0 k
  265. 做减法,使用方法同incr6 P/ n3 Y8 @/ ~* t& W
  266. : V% w9 Y, |* S" `  v6 C
  267. getMultiple6 Z& Z1 p- g: i7 p$ m  b' w
  268. 传参' O* y( {3 }/ n7 y
  269. 由key组成的数组0 g- [6 w4 c! L& I, K2 ?" d
  270. 返回参数* q! k) E5 D. V- A
  271. 如果key存在返回value,不存在返回false
    6 T3 g/ l: y) f& o& l
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ' w/ h5 s6 U8 t4 R% F, q1 G
  273. $redis->lRem('key1', 'A', 2);, T1 h1 t9 m5 N; J
  274. $redis->lRange('key1', 0, -1);
    ; j( j3 u, b+ y5 |, W, F
  275. - q9 \3 V, u4 R+ N6 m4 h4 D
  276. list相关操作
    * R; |# W( D9 u* A3 u4 i
  277. lPush8 q2 ]  `1 R1 ]# Z% i# _% \
  278. $redis->lPush(key, value);' \- r3 L3 C3 p+ \) r0 R( D
  279. 在名称为key的list左边(头)添加一个值为value的 元素. V3 v  J6 Q  Y/ c' C* ~
  280. ; T4 r; j) H7 L4 ?4 G- b4 Q# {
  281. rPush1 j* o& ]5 Q" t9 s, u  ?+ T. b
  282. $redis->rPush(key, value);3 m3 ?% W% V; ^1 X2 }
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    9 A5 n; P' J5 H! G% F

  284.   f! y- T0 l% Y9 h/ p' U2 L
  285. lPushx/rPushx, K' L/ N$ A4 ]5 E  ]6 |
  286. $redis->lPushx(key, value);) r/ `# h! Z3 \7 W2 |) ~
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    , y* i' J) k* K+ h5 T
  288. % p' Y- L: _) \; ]8 r. s. c3 m
  289. lPop/rPop
    7 i! \" s( @+ n+ E# q" w, U. q) ~
  290. $redis->lPop('key');  F5 r9 Z2 m$ k6 m% q- C
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    / _# X( v' w# J0 O1 n
  292. ; M2 u) u! l# Q4 }( S! U
  293. blPop/brPop
    : @% o6 A8 J  i' _
  294. $redis->blPop('key1', 'key2', 10);
    " ]- m1 S+ G5 X8 z" w
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    6 ]5 Z: h' }" d1 M, Y
  296. : K' a5 W; V/ x
  297. lSize  X6 R0 R) V7 F# N! U
  298. $redis->lSize('key');) q" p0 i7 M! i2 q
  299. 返回名称为key的list有多少个元素
    # k" y2 n- _( c0 L

  300. * `" [( |0 }6 }4 @2 d$ c0 p. f0 k
  301. lIndex, lGet% F' _, Z- K# r, z& Q% y; B1 f
  302. $redis->lGet('key', 0);
    ' L0 {& C3 G1 ^) ?# Z8 B4 p8 f
  303. 返回名称为key的list中index位置的元素
    ! ?9 A3 M: M8 X: Q

  304. 6 H7 j, J$ N2 J8 A6 Y$ Y0 m' P
  305. lSet' m; O. ~+ S: p9 x$ {
  306. $redis->lSet('key', 0, 'X');5 n# D9 }; a. x6 e" c6 j* R# c
  307. 给名称为key的list中index位置的元素赋值为value3 O. S/ O  h7 x( u$ G+ x: N

  308. / k$ N0 `! h: U) T
  309. lRange, lGetRange8 }) R8 `- ~' D2 z
  310. $redis->lRange('key1', 0, -1);' d6 [# \( f6 U; x* O+ i
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)% y# Y6 X/ h: K* P# @* E
  312. 3 U4 O7 K  Y1 }8 @
  313. lTrim, listTrim
    0 w4 S9 p( B, B5 n5 j2 C# e
  314. $redis->lTrim('key', start, end);1 F! t5 I% V. x, M- S: _6 T5 G$ h0 |& @
  315. 截取名称为key的list,保留start至end之间的元素5 L; ^6 Z. M% m: ~6 }! @

  316. . \/ R1 l7 C( y0 ?
  317. lRem, lRemove
    + o7 [6 b. P  N, e
  318. $redis->lRem('key', 'A', 2);
    - u- T+ d. X' I/ D
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    6 q* l4 ]+ ^  S' z$ L
  320. 9 u: j: Z/ |( X, D4 J
  321. lInsert
    2 t1 g. i) o) d0 p1 N
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -13 p- e/ u  }0 X$ D7 F- b7 l
  323. $redis->delete('key1'); $redis->lInsert('key1', Redis::AFTER, 'A', 'X'); $redis->lPush('key1', 'A'); $redis->lPush('key1', 'B'); $redis->lPush('key1', 'C'); $redis->lInsert('key1', Redis::BEFORE, 'C', 'X');
    ) S1 O. j7 f  c' n! Y# H* j8 T
  324. $redis->lRange('key1', 0, -1);
    0 A. x  Z2 P- i8 Y$ K
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    ; ?2 F% z$ [6 v; c5 Q
  326. $redis->lRange('key1', 0, -1);
    2 I0 W1 v  f. [; i( {& g
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');  P5 u/ q2 y0 g3 d' W
  328. 5 h1 n' q* Y: Y' L% U
  329. rpoplpush4 q) R$ M7 Q8 n: ^. g
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    : P  N; e4 m9 R3 V
  331. $redis->delete('x', 'y');; S: k7 Z$ y$ Y% |* A
  332. $redis->lPush('x', 'abc'); $redis->lPush('x', 'def'); $redis->lPush('y', '123'); $redis->lPush('y', '456'); // move the last of x to the front of y. var_dump($redis->rpoplpush('x', 'y'));; d4 T" x/ D3 i/ ]
  333. var_dump($redis->lRange('x', 0, -1));
    . x) t( N" z9 V) s! F* }
  334. var_dump($redis->lRange('y', 0, -1));
    # N6 x* M) ~2 a0 p

  335. 8 y0 G. I; D9 @9 y3 }6 o
  336. string(3) "abc" 0 P3 `: O% l$ h3 l0 m9 L( f
  337. array(1) { [0]=> string(3) "def" }
    7 K3 t$ Q' |/ L0 [7 |
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }, l4 d, K1 Y4 ]; L/ i
  339. & b, I1 Y# o& W/ _. q
  340. SET操作相关9 N3 e9 `3 w* g6 |9 }9 C
  341. sAdd
    - i' K* C& b$ Q9 V( M/ ]% i' y
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false: \5 s1 U0 X0 l9 ]; g( U
  343. $redis->sAdd(key , value);
    3 f: r+ h- G% l7 Y9 s

  344. ) A& a" x  ?% v+ \. c
  345. sRem, sRemove# R! p% v& E) k# N# ]
  346. 删除名称为key的set中的元素value
    9 m% G  n& O1 p8 C/ D1 t; p  a
  347. $redis->sAdd('key1' , 'set1');3 ~3 H1 \. h3 p5 \' R/ e4 M  C
  348. $redis->sAdd('key1' , 'set2');7 d. |6 G, U7 G
  349. $redis->sAdd('key1' , 'set3');
    # R" P: `- L2 G+ l$ v# D: L) K
  350. $redis->sRem('key1', 'set2');
    ( ^5 |3 k$ ]% e9 u5 c8 x
  351. 9 d  t7 F- p7 `( d
  352. sMove
    6 J9 s6 X: R8 D1 ]  y( h" |) n! U
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    ! [% s) |- q) c7 L7 M1 p: l
  354. $redis->sMove(seckey, dstkey, value);
    & O  F# A8 i: v  @

  355. 8 X( o' q/ C* H
  356. sIsMember, sContains
    # S  x( q* e- a: ]" v
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    & J- _# \9 b8 P* I; s9 k0 l
  358. $redis->sIsMember(key, value);; {' Y5 |9 [7 C

  359.   T% O( g# |' H" u; ?, \3 H1 d  T
  360. sCard, sSize" x5 a% e0 [# |& {  P% Q
  361. 返回名称为key的set的元素个数: F4 i6 m3 ]/ \  M9 A

  362. / d/ l, |7 x6 X0 M  C
  363. sPop5 f# c1 E% c) |, b3 R/ m, p% w
  364. 随机返回并删除名称为key的set中一个元素
      `6 I0 k' W  A' f# W* N/ s

  365. : l4 X  c* m4 x% @# H# q
  366. sRandMember5 }( R9 _; J* j# }% X
  367. 随机返回名称为key的set中一个元素,不删除3 \( j4 v- g" U6 i5 X" B

  368. , @% `* [3 H: {$ e! B% {+ d: k
  369. sInter3 [2 c. K" {& S1 Y& h$ z1 ?7 j0 e
  370. 求交集/ Y( d- C$ }& b( y& K

  371. % O2 D& o6 y' O! _$ y0 H2 K
  372. sInterStore2 C, D* z0 b( X( W$ Y3 X0 E
  373. 求交集并将交集保存到output的集合0 R& j7 }) y4 X$ l3 t$ }
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')$ E# P  E; [' Y9 T0 d9 X
  375. . B# o" v5 H3 _% ~
  376. sUnion8 i2 u2 K' V6 M; `' w
  377. 求并集' L( X6 u' E1 V2 [4 l! }% L
  378. $redis->sUnion('s0', 's1', 's2');
    * M. a% {  F! _  A# u5 H
  379. s0,s1,s2 同时求并集8 V! ^. P: u5 j' U( M5 X
  380. 4 B7 i1 {( m2 X9 }% w7 I9 B; s/ v
  381. sUnionStore
    0 j0 Y: E  k- U% O
  382. 求并集并将并集保存到output的集合
    ) h% T' Z8 ]2 ]" a7 r
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');8 S% q; i2 R$ Q; ?, b
  384. ) i% i: B! |; s3 j" ^8 M: p
  385. sDiff
    - R& @: O; Z1 @( I! n1 n0 F6 y" N% o
  386. 求差集
    # V: b; E, {* v" W9 k* V6 D" y

  387. ) \$ i$ x7 ?+ e
  388. sDiffStore; I0 L2 a: ?" N+ q, Z
  389. 求差集并将差集保存到output的集合$ n* g* c/ v. y8 u

  390. / c9 m/ |9 \% G* T' w0 Q; T' d
  391. sMembers, sGetMembers- a- P0 _1 E! V: ?! `3 q' Q
  392. 返回名称为key的set的所有元素3 a0 Y% C" s. X, J# y, o$ _2 n
  393. - l- {" z, V: g) a1 J; H+ `
  394. sort
    2 A5 ^3 f4 N  T: \
  395. 排序,分页等
    6 F/ m* ^. e1 f. D
  396. 参数* q- G" t0 R* i! a, U* P' u
  397. 'by' => 'some_pattern_*',( z9 B2 |0 M+ L$ {# v
  398. 'limit' => array(0, 1),9 w2 P3 s+ m6 F1 ~, {( i9 s- T
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    " t* W" S  X/ y- u+ \: F
  400. 'sort' => 'asc' or 'desc',- L9 ~0 q8 {- U# K. ]6 n
  401. 'alpha' => TRUE,
    / {. m+ V  w- N; n; s0 h2 v
  402. 'store' => 'external-key'
    8 m- V; Y7 b. a2 {0 X. _8 \. L
  403. 例子- |7 B6 j3 H# J9 P
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    - C0 ]* j: R/ x5 P% V6 r! b
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    . a; L5 b& r9 N- R/ M, X0 a
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    / L& Y1 i4 t: I- `( R- @8 O8 n
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    / k# Z! H9 _) E- j

  408. 6 b# a. B* n. u8 _
  409. string命令
    " I6 f: A  F7 ?9 ?# i( ?
  410. getSet% J9 w! f$ \# m! y
  411. 返回原来key中的值,并将value写入key
    & L2 Q7 I( G/ Y# y/ e) H- E
  412. $redis->set('x', '42');
    % O. C8 o6 p/ K
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'* x# D% R( T  z& ]0 I6 G
  414. $newValue = $redis->get('x')' // return 'lol'; }, a3 Y! A% p# `- W0 J

  415. ( C4 z$ B# ~& E1 t: M6 z
  416. append, N' I( H+ Q- Y; I3 I
  417. string,名称为key的string的值在后面加上value0 ?  y% X* J0 ]/ `+ z6 f! E
  418. $redis->set('key', 'value1');7 I  O$ r/ r! D! n, d  u
  419. $redis->append('key', 'value2');
    8 V6 N7 n- U2 `
  420. $redis->get('key');
    5 g9 g6 ^- P" a$ n5 F
  421. 8 y* ^4 t) b- L" i0 J5 }* B. Z% v
  422. getRange (方法不存在)
    ; Y: c( W( r* O2 F$ |3 Y% S. @7 ~
  423. 返回名称为key的string中start至end之间的字符% B" U, G3 k9 I1 R' D) N1 a) ?
  424. $redis->set('key', 'string value');
    1 v# G. E8 x( S* D/ `) D2 o
  425. $redis->getRange('key', 0, 5);. P3 O" Z+ |# A1 D7 D' h2 ~$ v0 C
  426. $redis->getRange('key', -5, -1);
    : v" _; v) o% y- }
  427. 3 y# N6 i" T1 x+ a
  428. setRange (方法不存在)
    - H0 k% u! m2 P5 x
  429. 改变key的string中start至end之间的字符为value
    : G: h1 q+ J; q7 [+ ]8 \
  430. $redis->set('key', 'Hello world');
    4 l, b) j& h" w8 I  D4 K8 }8 K
  431. $redis->setRange('key', 6, "redis");
    8 b) d; g; F, S" G
  432. $redis->get('key');* U" S; ]" z! M0 e( y% f  }3 @

  433. % L9 d! S* e: n7 X% S/ _' w
  434. strlen
    + y* }; F8 z4 q3 B
  435. 得到key的string的长度
    4 m3 A& u! @0 ]# L; @) ]5 p( q1 @
  436. $redis->strlen('key');
    3 s& q% p4 F6 S/ g

  437. $ I0 v3 F2 h" A" r9 ?: K2 R7 s
  438. getBit/setBit" Z: s# P3 d4 N5 F1 I" {- e" D
  439. 返回2进制信息  Q+ A) w, g6 Q3 |) ~

  440. 9 ^! D8 l1 V7 M% Z
  441. zset(sorted set)操作相关
    6 w1 U$ @- ?# S; ^! l( g
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
      y9 p8 s: V: ?6 }5 h7 V
  443. $redis->zAdd('key', 1, 'val1');
    - E, ^2 w# |) X/ O7 M3 e1 ^
  444. $redis->zAdd('key', 0, 'val0');+ R, B5 w$ x; O
  445. $redis->zAdd('key', 5, 'val5');
    8 I8 }/ C7 ]! M# y
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    8 l  L8 s% Y$ x9 @+ K

  447. 5 t0 G7 I6 l7 e
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素( ]+ l) s' ?& {& D
  449. $redis->zAdd('key1', 0, 'val0');
    3 J* g. ?* g7 E7 F
  450. $redis->zAdd('key1', 2, 'val2');& Y/ @& e6 o. h7 E
  451. $redis->zAdd('key1', 10, 'val10');
    . [$ E+ l$ ~3 P% r, z" m
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);) p6 ?- j0 b, M
  453. ' ]5 ^  P' a  \
  454. zDelete, zRem: J; R& M7 Z' s" D( ]; c
  455. zRem(key, member) :删除名称为key的zset中的元素member
    3 [) j. m6 d3 u" v$ t* y
  456. $redis->zAdd('key', 0, 'val0');' c. {( X8 f6 `9 a) R
  457. $redis->zAdd('key', 2, 'val2');# U: H6 m: }, i3 y' D# P2 @$ ^0 A
  458. $redis->zAdd('key', 10, 'val10');
    0 F2 P/ T5 O4 @( H$ _- g/ v
  459. $redis->zDelete('key', 'val2');
    2 |# W! S2 ]# ?# J0 x% G8 @
  460. $redis->zRange('key', 0, -1); 9 `2 j% D1 @1 ~; d# s# p5 S
  461. 5 D7 O- Q/ F+ J8 s
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出  G6 f6 L; y& C& V6 S' g) A, {. k- l& R
  463. $redis->zAdd('key', 0, 'val0');8 d! @9 e/ I: D9 P; ~5 D" h
  464. $redis->zAdd('key', 2, 'val2');
    & C" V4 H( c' @! y; @
  465. $redis->zAdd('key', 10, 'val10');
    # P2 h) D  i8 _! u1 _  ]
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    : x3 B& c! m  y/ \/ t4 m, I% T

  467. ' y5 M: h: A" B& @
  468. zRangeByScore, zRevRangeByScore
    ; U4 _# o3 i( A: y( @- \: D
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));6 P3 v" L: B2 f( t; R
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    ! a' b# |1 t$ ^% @  y
  471.   M+ {5 [9 Z$ `3 U1 Q
  472. zCount
    3 v$ L# C  l% S1 |* a
  473. $redis->zCount(key, star, end);
    ' R. y; U/ B' L: M) Y+ J; n
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数2 i2 w# P6 u5 x$ x9 T  |; n/ @
  475. ( w1 C: M; G" C
  476. zRemRangeByScore, zDeleteRangeByScore
    9 L" _$ j1 }) ?5 |# J* h( }
  477. $redis->zRemRangeByScore('key', star, end);
    . _* Y. _* A7 E& Q# L, y4 c
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数) o* x' g) `( z! a
  479. % m: t# V9 o$ @6 B5 `  U
  480. zSize, zCard
    / z+ l: s! O: q3 q5 p
  481. 返回名称为key的zset的所有元素的个数% f  z# n; V* y/ a' p% M( Y- z

  482. ) S0 _6 C( G+ d
  483. zScore, I. {6 E9 M; h# j( U: T, Q
  484. $redis->zScore(key, val2);
    . J8 z3 g' ^# }9 C
  485. 返回名称为key的zset中元素val2的score3 M' r$ y5 K1 p  K6 p, ^
  486. / ]( p; i, i0 G2 j8 ?2 m
  487. zRank, zRevRank- k8 X8 G8 q% t' g: O
  488. $redis->zRevRank(key, val);; T) D( c6 u1 ]0 z% k
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    - k" i$ ~6 R1 L, v/ S2 p8 W
  490. ) q* R) w" l# F
  491. zIncrBy
      D' o8 k! A' @' m
  492. $redis->zIncrBy('key', increment, 'member');
    ! @& ~) ]* o$ z/ S( B' t  G: l; _% n
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    " P& y. ]/ r4 a: a# k3 j

  494. % L, G* u" I' \* r/ S" w
  495. zUnion/zInter
    : ~) P( A, i$ w- C# D3 b5 P& y& b) I
  496. 参数. v" ~" d+ |. B, T6 N1 M
  497. keyOutput# j/ X( L8 M) G$ m+ D, x' ?
  498. arrayZSetKeys$ b8 {- ^  m1 S- b2 V
  499. arrayWeights( n4 Q+ [& J9 v& T# c; ]
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.% H8 O6 h  ]8 S- z- k6 J) K
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    3 R" o9 O9 {4 j0 ~3 U1 ^  C' }
复制代码

, z( O) ~, R$ t  I6 j4 _: o( T7 G/ k1 M0 q

9 d0 }5 h! V) ?) L. S' ^$ _6 j. R9 ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 6 |  I, e3 w) e+ g$ a
  2. //连接redis服务器 ( d, \  _6 n- |. y8 T
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 20:36 , Processed in 0.083912 second(s), 18 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!