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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    1 H% K: `  f, ~; V) H9 F" D
  2. $redis = new Redis();  
    * @9 t8 {% q& A% V: F1 a
  3. $redis->connect('127.0.0.1', 6379);//serverip port: U  m2 U- E, b
  4. $redis->auth('mypassword');//my redis password : T9 V3 k. o) D0 x, l
  5. $redis ->set( "test" , "Hello World");  6 i, }- g9 u/ V
  6. echo $redis ->get( "test");
    + h) K" F8 n/ D) x4 t8 F  i+ ?
复制代码
php操作redis函数封装
  1. /**( i7 g8 I: T0 k
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数  d- I* c( L- O" k- o% d
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    * m/ r' I/ R, @3 W+ k9 _
  4. */
      {* Z" U8 T# G1 c' @& w+ {
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    . f& r8 ~7 l2 t( C( a/ x- B
  6.     if(!$key||!$value) return false;
    % v! G/ d4 w' a: B# l
  7.     $host = $host?$host:getenv('REDIS_HOST');
    # Q) {; o) `/ E
  8.     $port = $port?$port:getenv('REDIS_PORT');! _" ~0 d; e! j0 D9 X) Y9 }
  9.     $redis = new Redis();
    1 A. v) d5 m9 W6 w4 i
  10.     $redis->connect($host, $port);
    ; _: p2 g5 b% j9 [  q
  11.     $value = is_array($value)?json_encode($value):$value;
    0 r6 v% x3 D4 J- w5 \
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);) I, X8 }$ \) ?
  13. }
    ) t, _1 @, E8 B3 L& [; z
  14. /**. E: j* m/ L9 X4 \) M
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    8 j# O: n$ D, \$ @* u0 [
  16. */! z  Q9 S0 W+ h
  17. function RedisGet($key,$host='',$port=''){* j5 p6 X4 p/ L/ d' K* y4 z
  18.     $redis = new Redis();
    ; W: e& A2 X/ i! w
  19.     $host = $host?$host:getenv('REDIS_HOST');
    # ^3 b$ |4 z! Q* S; w
  20.     $port = $port?$port:getenv('REDIS_PORT');
    " ?- U4 V% u  R
  21.     $redis->connect($host, $port);7 T2 D, @1 P1 [+ e; c/ L" n
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);- C( d2 [1 q. P4 v
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    / \0 m# ~! d/ i; q2 x  C
  24. }
    : C. l4 K+ F6 Z, U4 W
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了- y: d) T& H. N5 ], t
  1. setex 带生存时间的写入值" w- {. Y" [  ?& U
  2. $redis->setex('key', 3600, 'value');
    ' k+ l" }9 [8 l  t4 e) x0 {- m
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    $ C4 M, d1 U5 q3 q* r7 ?- {. k/ ^
  4. $redis->setnx('key', 'value');3 ]5 U, P- s/ d" b
  5. 返回已经删除key5 I/ W  t, f7 z7 p
  6. $redis->delete('key1'); 成功返回1失败返回0
      P- w3 e) U) j
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    / C9 S0 R8 U' H. _5 i( ~1 Q% D
  8. 查询生存时间$ d1 d0 B  b! `! z, T# L' ~& {
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)! @# t+ |- U# L; {( d
  10. 同时给多个key赋值,同时设置key0和key1
    ( U' {  g% C8 E+ E* ?0 i
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    * D, Y# y" q% k  \
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    . m4 O! ?( ]8 H' ~: @% I
  13. $redis->incr('key1');1 k* \* f5 v* M4 O
  14. $redis->incrBy('key1', 10);" s4 _: e3 q9 j. H4 K+ j7 e" h
  15. 减法跟加法一样
    5 e1 _$ u: k" B- l1 b
  16. $redis->decr("key1"); 减少1
      O9 e% }2 X3 P- X
  17. $redis->decrBy("key1",5) 减少5( }9 b6 i5 j# R

  18. : c- u. _" y8 |2 q8 N
  19. list相关操作,连表操作
    ) V0 v- r: Y+ V$ b3 A* q
  20. lPush( J9 B: U  X2 z; L9 r# }
  21. $redis->lPush("list", "888");3 h; o5 @  L; a$ `4 {$ @0 d! ~
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数  |* |! w9 `/ @1 t9 O; c
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    : j6 {* L; f# G) y8 n) ^, F, O4 Z
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素. S; A+ l1 ?; o5 |, s2 D
  25. lPushx/rPushx
    # X  B3 S  G, i5 s% x5 _, I
  26. $redis->lPushx(key, value);
    6 @! _8 N! i) C! w- A: I) ^
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加4 O) l1 L3 c7 a4 b) C
  28. 7 W& e. B5 j  n( L
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key/ W; E5 w) U6 s2 j2 m
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    ( P& Z( a  O* Q5 F
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    + x1 b$ i( ^" Q) M- o
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序& U% j: X. Q! e, T, u
  33. sadd s1 zhangsan
    & p0 f+ r8 k' H" o! M
  34. sadd s1 lisi
    ) }4 n0 g) T2 U
  35. sadd s1 wangwu* q- a1 [% C. Y3 o- b+ p' ?* |
  36. sadd t1 yangxingyi
    + P/ l1 |+ O4 _2 c
  37. sadd t1 lilei
    9 {6 ]+ |, ]: G/ d& c- E8 r% @
  38. sadd t1 zhangsan7 J, P4 s3 y+ G$ E: k
  39. smembers s1 s1的所有集合内容
    3 t: q* Z6 ?3 m( Y4 D( v; R6 L: z
  40. sdiff s1 t1 s1有的,t1没有的,差集
    ( a6 {! ^9 d$ `, H  \1 D3 k
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式: I" E; f' e8 G, ^1 `
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的2 N( W4 H+ e5 x1 n. n5 _1 x
  43. spop抽奖场景,返回集合里面随机的数3 R; {7 d0 T/ D* ]
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了' p9 O8 {) P8 J, _" ~! j: ?$ K! g9 }
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    ' F1 i) c4 |3 P7 S2 i; a
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的$ _% E9 N4 A, n$ ]: A; W
  47. 随机返回集合里面的一个元素,但不删除,重复中奖/ c8 C) V/ g  D4 c2 Q% y) \
  48. $i = $redis->srandmember('s1');echo $i;
    / Q/ g: ?% J! K% T. c" o+ n: n
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false: V( f4 t/ F: E( a
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false8 x; u: U% d6 T- A; D$ w& E- g3 Q* b
  51. & D, E" r* H; ^$ ?0 K: H" R
  52. zadd key 2 value 有序集合
    : K1 p5 \# c/ t  M9 E8 z
  53. zadd y1 1 zhangsan;
    ' s+ G9 R0 e' ?1 X+ ]& S$ }# [
  54. zadd y1 3 lisi;
    9 P/ n% P5 O% w( I( D
  55. zadd y1 2 wangwu;
    7 `* V( [! x' k$ K. V
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi" y) ~( S( t$ O' \  ^* K' N
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    " R6 F+ A- |' e% D
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键. c" {+ w" L, I, l
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    ( F( b4 {8 H  _" F( C
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的  m$ f' K7 e2 {
  61. 无序就scard,有序就zcard,有z没有s
    # u! D$ N: t, T  U
  62. sInterStore
    2 P& [+ M) r* I; Q' b. z. @5 Q
  63. 求交集并将交集保存到output的集合
    . m, D6 t; [% N0 k  e
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    : D' W2 V2 `5 f5 B4 f) N9 N! u, x
  65. $ P7 C! x8 z% e: H
  66. Hash操作
    & a* h0 f1 D/ c3 A8 }' _" F
  67. hSet
      t( v0 h+ ?  M) s
  68. $redis->hSet('h', 'key1', 'hello');
    7 c( _* I0 ]2 Y( p1 o1 u1 X2 g
  69. 向名称为h的hash中添加元素key1—>hello
    8 G+ e$ L. a# S: o+ C. S# w6 z
  70. % A5 Y3 l5 y2 Y$ A3 k1 P
  71. hGet& g# @$ I- j- B7 c! q* l
  72. $redis->hGet('h', 'key1');
    - G5 [2 O7 Z2 ^- B) W; A
  73. 返回名称为h的hash中key1对应的value(hello)
    5 M' U) {0 w, B1 Z) k

  74. * k. y$ e  p  Y, N& v& H: w
  75. hLen
    6 a* J3 f. |+ X) Z0 s# j+ n  \
  76. $redis->hLen('h');: ]- \3 Q  Q9 o* |
  77. 返回名称为h的hash中元素个数
    & R% e  r( P* {/ j* n. c
  78. & p" L! X1 m* \  j. J2 }8 r$ c& Y
  79. hDel. O" `, ?5 y5 ^
  80. $redis->hDel('h', 'key1');
    - V- y9 {/ C, B& g* j% T' @$ v
  81. 删除名称为h的hash中键为key1的域" f1 E" j# P# T
  82. 7 H0 ~5 f! t) i9 k8 X9 o
  83. hKeys
    # y  {- q% e6 A( a* f, p9 s$ [1 w
  84. $redis->hKeys('h');$ ]! `; d+ }! t' `/ y
  85. 返回名称为key的hash中所有键+ D; j2 A5 p1 O2 K+ Q/ M2 v
  86. 3 ?0 H# m# R5 o( I
  87. hVals
    % q( K: y. w# P8 a* s: b$ n
  88. $redis->hVals('h')  w+ Q( M: s* N: |8 z  f
  89. 返回名称为h的hash中所有键对应的value/ l5 w- G/ A* p6 z  J% b+ S
  90. , F6 N* z7 P( p
  91. hGetAll
    ) E( y: {. A7 u- l# g; ^
  92. $redis->hGetAll('h');
    % Y: @$ G: m! ]! E3 W, ]- _# M
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    $ S, P! R4 j3 U) l: I6 J3 _& a

  94. 7 L1 G  f" v; w" `1 H% @
  95. hExists
    . o9 S6 j/ P+ Y6 ], }* B* E( _* y& ]
  96. $redis->hExists('h', 'a');
    9 B/ w9 j) S7 {$ A  g/ `
  97. 名称为h的hash中是否存在键名字为a的域
    7 J, x8 z5 k; f) t1 m! s0 R/ w; E

  98. 6 G" S" Y- g0 H3 X$ ~
  99. hIncrBy* P- w4 O2 S' Q& j# X, F9 O  s
  100. $redis->hIncrBy('h', 'x', 2);
    $ [9 G& B1 f8 c! e& S, }: }
  101. 将名称为h的hash中x的value增加2
    4 u2 V* J  \4 ~8 j

  102. # E  v1 z$ _! h4 ^4 Y
  103. hMset# s3 `* w- y0 B6 {6 C
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    . H3 `3 B) c% E+ g/ p  e; {' f
  105. 向名称为key的hash中批量添加元素# l( i) r* O8 H! E) [

  106. 8 S1 e/ T1 u6 h/ r" ?  c( y* e
  107. hMGet
    $ r2 X1 K- a" Q
  108. $redis->hmGet('h', array('field1', 'field2'));9 t" E. }4 s$ k
  109. 返回名称为h的hash中field1,field2对应的value
    9 ^$ O: \: d3 x

  110. * y# J/ C% E- b
  111. redis 操作相关
    6 s5 [6 A! G: e* b& e' F& T
  112. flushDB
    0 z7 m% M6 r- r  O# u
  113. 清空当前数据库
    % n" P# y4 |! m' `% ?) S6 F0 k
  114. : X" M7 R5 q/ h0 C9 M
  115. flushAll
    " t9 `* s- Z( A: Q* i* _1 ]
  116. 清空所有数据库- L3 ]7 g: x7 R: A7 |

  117. $ j- L/ D3 Z# i  b9 q; U2 C7 j
  118. randomKey* w- R% e+ ]8 f0 O5 I6 \2 e
  119. 随机返回key空间的一个key
    6 |, A, w$ {, A% B. w( z7 _1 H
  120. $key = $redis->randomKey();9 S' |9 U$ P& T1 b! X4 u# i

  121. 8 h% P: n/ Q5 y' T, ]. ]) N3 X4 V
  122. select
    ' \: Q* q3 S( [
  123. 选择一个数据库
    ; I: x3 W( v8 Y# [4 U4 I
  124. move* S  Q) @: \5 m& B6 I! d
  125. 转移一个key到另外一个数据库
    ' g& x% v$ k4 N) _) L' d: C
  126. $redis->select(0); // switch to DB 0# H  V$ U; W8 X4 t0 t
  127. $redis->set('x', '42'); // write 42 to x
    4 n0 O+ {9 }1 M7 O0 x4 w0 H: ^8 @
  128. $redis->move('x', 1); // move to DB 1
      {2 p  x2 c8 n1 q* L
  129. $redis->select(1); // switch to DB 1
    8 h, E5 \; ]6 E. ^
  130. $redis->get('x'); // will return 42
    $ v4 v9 E  r1 P8 T
  131.   S- B! Q' z* i& y- y
  132. rename, renameKey& {! h; p* ~# B) M& [
  133. 给key重命名1 K, f4 A" ?/ S3 W5 a  d) L
  134. $redis->set('x', '42');
    + H( N$ P2 ?1 m  I* m8 {& v
  135. $redis->rename('x', 'y');
    % Q0 Y4 f* \' W
  136. $redis->get('y'); // → 42
    ' d0 i: `1 l, M' g6 C6 @
  137. $redis->get('x'); // → `FALSE`
    ) `7 R. a1 f6 W; w0 ]

  138. 8 a3 K0 Y* y# z9 i# l+ _: v' W
  139. renameNx
    0 i! K6 q4 v4 J+ F" p
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功! H: P3 u- r/ ~2 v* U) Z4 R( V" }1 D
  141. & j2 [' ^7 M9 W/ H. e& s2 ^
  142. setTimeout, expire0 v% k3 j$ z1 Q
  143. 设定一个key的活动时间(s)3 Z, x2 M( v1 H
  144. $redis->setTimeout('x', 3);
    $ v! K$ B. A9 [+ @

  145. - @. k: K, P# W8 U  C" x# Y" R
  146. expireAt$ B0 l9 V! f* o' n8 P. |  C9 P. B
  147. key存活到一个unix时间戳时间
    % ^, M) e. S7 r2 q& k6 x$ U
  148. $redis->expireAt('x', time() + 3);
    ' D. m) q7 p2 ~# U1 K3 L

  149. $ u, T+ Y8 I- J+ T
  150. keys, getKeys! z; [& @0 R% L' o# N& y
  151. 返回满足给定pattern的所有key/ m& v9 r5 u. C( J* S8 L: Z. K0 n2 C, I
  152. $keyWithUserPrefix = $redis->keys('user*');
    7 R8 e+ Y8 e, F" \; |
  153. + q  Y! _  Y- q! E+ T" R
  154. dbSize0 p, v) `' q2 V+ d; M# X
  155. 查看现在数据库有多少key2 ]3 b4 O8 f; W; a" X! P% y
  156. $count = $redis->dbSize();0 U' u" V% ]# T6 e) [% M
  157. " _2 P. Z" v. V' E! u7 b- s0 E! Q
  158. auth. ~! |8 U9 G1 S2 j- e- ~
  159. 密码认证' q7 t4 L' P' y& ]/ R
  160. $redis->auth('foobared');: P5 |6 S! b5 X: A$ y
  161. 5 w* C& |. b. V% U9 e; @$ P
  162. bgrewriteaof$ I9 `' O( F  g0 Y8 S2 V6 e
  163. 使用aof来进行数据库持久化
    4 c3 \6 x% f% w$ Z$ r
  164. $redis->bgrewriteaof();% l$ |. a- a, ^% n7 z

  165. 5 }7 F3 I* k3 s" n1 H
  166. slaveof
    ; c) N/ v9 y6 ~- }0 K7 s, _' L
  167. 选择从服务器
    : `! J1 Q7 ~" A4 \
  168. $redis->slaveof('10.0.1.7', 6379);2 w8 K& }5 Z1 u; [6 K

  169. & _/ u4 c. ]% |2 }7 S9 }8 M
  170. save3 C: z3 ?. a  T" A7 l. y. Q  Y
  171. 将数据同步保存到磁盘  q" S; }# H0 ^; m
  172. ' q7 M5 r; u4 o
  173. bgsave
    3 d, |$ n" N2 [$ U& x4 i7 u
  174. 将数据异步保存到磁盘
    2 `9 B) a7 a0 C( v

  175. ; A. K1 V" x. H. Z0 Y
  176. lastSave
    , S5 f/ f: i/ u: _
  177. 返回上次成功将数据保存到磁盘的Unix时戳- t4 u( U% q7 H1 [6 X; Y/ E

  178. 6 R9 q" N2 o' u: N
  179. info6 v2 O) f1 |, @& x5 |* M6 W
  180. 返回redis的版本信息等详情9 P( T( i' u; u" K3 u6 W8 Q2 N
  181. + H, v# V% ], h: k1 }& d0 A9 F) i! E
  182. Redis::__construct构造函数- E( S0 ~) {/ X- a6 p/ @5 \
  183. $redis = new Redis();
    4 w# T/ ]- u" a

  184. " M( u  v- C2 ?( d/ v$ w6 \
  185. connect, open 链接redis服务$ K3 |# ?# ^$ o+ i  ]; o/ F1 u$ i
  186. 参数  x% o% H8 y% Q! D6 Y
  187. host: string,服务地址
    " @) H! C# A; c( k& `
  188. port: int,端口号
    & S) `* }& ]  J
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    4 M2 ~6 I- `! i. G) F% R( |
  190. 注: 在redis.conf中也有时间,默认为300
    5 ]% l& D# Y( [, p3 h3 y* w

  191. 1 f" r/ l4 p8 {+ h3 ]
  192. pconnect, popen 不会主动关闭的链接( t) n! W3 ]$ f6 Z( x
  193. 参考上面
    , O1 Y, y% V% M- B. @9 V3 J8 R

  194. # X5 p! l' \( r
  195. setOption 设置redis模式
    + [8 ?/ [" ?6 }
  196. # p- p6 a; q6 r, q5 P; A
  197. getOption 查看redis设置的模式
    ; a0 N- p/ r# O. Q( M9 m, P

  198. 9 J, J' b, b% E! R! S6 ]
  199. ping 查看连接状态
    2 _$ s4 Q* E! x

  200. $ {3 f0 T6 \  ^2 m+ \) F3 |# R' V! q
  201. get 得到某个key的值(string值)$ O7 r6 ?$ M2 [* s7 C: n. M# @1 O% `5 d- {
  202. 如果该key不存在,return false2 n) i! I; E2 d* z; t3 m
  203. : C( g+ n! {  z+ M8 ]
  204. set 写入key 和 value(string值): d3 E% D& v  F3 Q7 c" ]% d. I
  205. 如果写入成功,return ture
    2 ~. d- K" K, I+ A
  206. 1 w/ s/ I# P6 j& }( j' w
  207. setex 带生存时间的写入值
    - M( Z: o2 l* p( R6 X
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.% k# j: d# e3 b; s. f" v& g

  209.   s2 c. Z( p" B/ w
  210. setnx 判断是否重复的,写入值
    % X* b# Y- y9 P, J# Q/ k
  211. $redis->setnx('key', 'value');( s1 T# Z4 x/ G5 C) q9 ^+ q# q
  212. $redis->setnx('key', 'value');
    ( p8 O; r: `' u8 T/ i/ P' ?9 @
  213. 4 F$ x( w# q( e) b( q
  214. delete  删除指定key的值
    1 ?* o1 ^# y/ w6 H+ v: @
  215. 返回已经删除key的个数(长整数)# Q1 s. h8 j! o! ^
  216. $redis->delete('key1', 'key2');3 [. G+ L& [' e% |
  217. $redis->delete(array('key3', 'key4', 'key5'));
    6 o' t& f: g* J1 G  ^

  218. & }9 M3 A0 v" ?7 r5 W: d
  219. ttl
    & W* q+ \+ \3 ^! s0 _
  220. 得到一个key的生存时间
    ( P. @& }+ n6 j' _% z
  221. 4 G+ x; L; r: F- Q& U
  222. persist: s: B$ o. Y. x2 Z9 t: _& _
  223. 移除生存时间到期的key
    $ s( @4 u' J: H0 J. a4 d5 a
  224. 如果key到期 true 如果不到期 false
    & N1 |" x/ W6 x2 G8 q
  225. ; t4 W. X* f1 {5 M7 C! S0 {# x  v4 P
  226. mset (redis版本1.1以上才可以用)9 n" A% r& ^4 _9 m$ r; J8 }
  227. 同时给多个key赋值
    ! i4 k( Z- i( ]; N: d( p: K/ x9 P( F4 F
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    2 e* L( ?; c9 \* X( \; l$ F$ M
  229. : k* q7 N+ f; O6 S

  230. 3 _( L, `  @& L; H" Y% c
  231. 0 k3 L& _  A4 I
  232. multi, exec, discard
    ! L! y. x+ e& a& G. Z1 ?
  233. 进入或者退出事务模式
    * y& O, I5 O) a- ?3 q3 i% w
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI2 h0 K% x2 \8 p( T. u
  235. Redis::MULTI:将多个操作当成一个事务执行
    $ ]1 Y0 Y. F5 ]- F, A
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证2 h9 _% k: ?# p4 u
  237. discard:删除一个事务
    9 F: w  S# D& ]* S* H0 }
  238. 返回值
    : `/ j3 L4 m/ A2 B& B1 q
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    - P/ A, B# u1 c8 E! ]! y" Q) D) G

  240. 3 i) ^; a$ d2 \2 V% p. m$ F- O
  241. watch, unwatch (代码测试后,不能达到所说的效果)* _  P7 M. H) c4 ]: G+ o
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)' {% t8 A/ f! U2 V
  243. unwatch  取消被这个程序监测的所有key+ L7 @$ i# t% ?; y6 _
  244. 参数,一对key的列表
    % w! }* a7 Q4 v! c. f1 R  O! f! _
  245. $redis->watch('x');
    - p# o. n, n! B; U) K
  246. $ q: |5 I1 n5 b: ?
  247. $ret = $redis->multi() ->incr('x') ->exec();1 E  a! f+ }- ]  R  n+ L0 e
  248. 0 B) j( D3 h5 b6 t# m! V

  249. " ^) ?/ B! L& Z3 `6 `" t- K. |4 Z; y
  250. subscribe *
    ! }  g) n: u% n, e' s$ ~) D, v
  251. 方法回调。注意,该方法可能在未来里发生改变
    ( k+ i3 A/ l9 ]4 d$ ~9 h7 Y6 V
  252. 5 p2 o- L4 m- w- x- L- \# v$ K0 r
  253. publish *9 S9 z$ `! O# N# Q4 W
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变! `4 v" D& T! W% T* e0 Y4 ^

  255. 9 u& p4 P; }' a- Z5 h2 ]
  256. exists
    - y! N2 y! G7 K/ s
  257. 判断key是否存在。存在 true 不在 false
    0 y7 Q* b, L9 k  E- h# p- B4 n

  258. & i' N0 C! g# ~9 R- K" h' U9 ~
  259. incr, incrBy- c/ \- \. x3 O+ B9 k: F
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    5 B4 ^+ V* I% B  W1 d: p
  261. $redis->incr('key1');/ @' d0 X' a3 ^% l3 g
  262. $redis->incrBy('key1', 10);
    7 r/ ?# g) R7 ^

  263. " b! G4 z" R; k1 m3 V
  264. decr, decrBy& @; c6 J: U3 c$ t& A
  265. 做减法,使用方法同incr9 C  A5 \; p9 D8 |4 C/ P9 t

  266. . n- _  m2 B& I1 K# H
  267. getMultiple
    ' p7 O, o1 z  x0 P' Z% _
  268. 传参9 l4 L  }$ X7 L! f  u+ s+ ]
  269. 由key组成的数组
    ! _8 o. T& }! j% j0 t
  270. 返回参数- ?0 e/ U6 k" }
  271. 如果key存在返回value,不存在返回false7 o5 Q; a1 a0 E3 f& s* u4 ?
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    * k/ C, d3 Y: f/ J" n) c$ [4 @
  273. $redis->lRem('key1', 'A', 2);" u1 x# D( d7 ?& P, p! k$ u% S" X' n
  274. $redis->lRange('key1', 0, -1);
    ! S2 S8 d4 v' \/ C! V
  275. 2 ]3 w  z! K3 t
  276. list相关操作
    6 [8 R- z7 T& Y' `- z
  277. lPush- r: C3 ]* u9 a
  278. $redis->lPush(key, value);
    4 c7 Z1 K1 f3 n5 i
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    - R- k: M  \- H* s8 ]* R

  280. ) C% t  N" L. |" \" E, }
  281. rPush
    1 J. C, X$ W. ~
  282. $redis->rPush(key, value);
    & g& @3 i6 p& L' |, V
  283. 在名称为key的list右边(尾)添加一个值为value的 元素. }. b) L3 Z9 U' N+ `9 [

  284. ( ~3 u" b/ i% \; r( B7 q
  285. lPushx/rPushx
    ' x, o3 G& r$ W& l
  286. $redis->lPushx(key, value);' s+ j, |1 R- a& u* T
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加# G- q' t/ M( g. p9 u

  288.   M6 P! ~+ g2 l8 s! d! }9 b2 [
  289. lPop/rPop$ `/ R" Z2 z1 Y
  290. $redis->lPop('key');
    , E" V4 ?$ j+ o7 _0 m5 D
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素5 y$ o, j9 o% g1 R1 ^' p

  292.   @! `$ E7 u$ t
  293. blPop/brPop) l) T+ Q2 K: g5 w
  294. $redis->blPop('key1', 'key2', 10);  v8 _) Q( y  a4 T) B4 ^6 |6 r
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作2 c3 \2 ?$ @$ i* n; X

  296. , D' R; d' D/ [+ p
  297. lSize
    5 o) m9 h6 ^0 H6 y& n2 O6 Z8 n
  298. $redis->lSize('key');7 ^# Y( B8 _3 B7 j) r5 E
  299. 返回名称为key的list有多少个元素
    6 @0 ]- w  V9 w) b* y- o8 z
  300. ' `" c/ \' [3 [! N
  301. lIndex, lGet
    0 Y; i+ i0 b: ~/ T
  302. $redis->lGet('key', 0);
    9 }1 `) T4 T' Y% @+ f( L' X
  303. 返回名称为key的list中index位置的元素
    0 N7 t3 x; v# ^- V9 f) d
  304. - q" M$ \' A9 N
  305. lSet
    5 ^3 d" \2 N' {% H
  306. $redis->lSet('key', 0, 'X');
    + {0 @) Z2 m% T0 i: N. v; v( o8 m
  307. 给名称为key的list中index位置的元素赋值为value
    5 C3 `5 m% H# r, e- R; p+ W) Q0 c

  308. 6 [8 a3 r$ t- K# B+ d8 N/ i/ l
  309. lRange, lGetRange
    & d3 ^6 q# Y* ]" X$ F/ T
  310. $redis->lRange('key1', 0, -1);) @1 x* B  B1 V3 o8 ]6 f1 ~! f
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)1 U( }9 e% p# I+ Q5 V7 I$ `3 P

  312. # I# p! |% |, c4 @
  313. lTrim, listTrim# ^5 @& }3 u* b% q2 u% ?1 ]
  314. $redis->lTrim('key', start, end);
    - {# ?* J; `7 p; d0 g6 c
  315. 截取名称为key的list,保留start至end之间的元素
    8 S: F" k' N8 i" V0 Y1 r
  316. ) O3 B, {6 A8 s4 A- a5 P  `
  317. lRem, lRemove* A( K- J* t* {- {# g1 v
  318. $redis->lRem('key', 'A', 2);
    / v) J1 Y* k3 I0 ?) p& Z
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    % n* q+ |, O$ G7 w: M, W/ v  }

  320. , X" u7 Q9 K( E" f5 b3 X; F/ P+ S
  321. lInsert
    # B% U" F% F1 [+ v8 |
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1# p- s: m& C4 a" k! e7 q; M
  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');
    7 |) M7 e; [: U7 J
  324. $redis->lRange('key1', 0, -1);
    3 y$ z0 {* S. r
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    0 b' ]. P" W; ?* q4 {$ b% l  n  y
  326. $redis->lRange('key1', 0, -1);
    8 m  W$ @8 `# a' H9 ?" V/ j7 [
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    8 C$ c4 J2 q6 e) a
  328. & h, }7 i3 l1 ^0 }
  329. rpoplpush3 P' E+ u+ X, F% Y! [5 z% ^) ~# d
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部. n8 B# a2 X  c/ y
  331. $redis->delete('x', 'y');
    , S, X8 z! C6 N4 a+ R! j7 y& N
  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'));/ S/ u+ J) s* a1 m& k; p% m
  333. var_dump($redis->lRange('x', 0, -1));
      {' ^  T, P* U, W! q0 {9 h0 \
  334. var_dump($redis->lRange('y', 0, -1));
    ) @/ R$ Y6 u  X! [; K/ y: ^
  335. 8 }0 Q% }' `% H3 J7 g+ s& F
  336. string(3) "abc"
    " @* T+ e+ T( L- X
  337. array(1) { [0]=> string(3) "def" } . p% v. ~7 w* o$ N8 U4 S
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    ! @: \* p" u; u) }* R" ]
  339. ) z* ?8 f* S4 w, }4 @9 o* C
  340. SET操作相关' k* |; `2 r( i# d) B; `
  341. sAdd
    + f3 A3 i( C, m, M$ P. l
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false3 E7 P4 ^6 k* x& c8 m9 B
  343. $redis->sAdd(key , value);  ?  q; X5 Z7 R6 m6 `
  344. ! U& |- p4 w) U( X$ ]$ c
  345. sRem, sRemove* x: l& t& v" B4 \; ~( y2 E
  346. 删除名称为key的set中的元素value
    7 r7 o! V+ n1 X2 I6 Y$ v: g3 i
  347. $redis->sAdd('key1' , 'set1');
    ' H& h+ W! E0 y+ f9 Z8 s4 S
  348. $redis->sAdd('key1' , 'set2');
    4 V% x8 S; i0 k! t7 ~
  349. $redis->sAdd('key1' , 'set3');6 g' ?. L7 h, H
  350. $redis->sRem('key1', 'set2');
    ' ~9 K  {2 y0 Y9 E7 I  w/ o
  351. ' @6 k8 M7 R+ l9 \+ ^1 d
  352. sMove
    0 f; w9 |, b: l9 ~: Q8 a: l
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    & f# O# f/ a  F
  354. $redis->sMove(seckey, dstkey, value);/ b* s; K  m' Q2 ]& v% P+ s

  355. / S3 X0 l% ]' E' f. F& W" g( h1 W1 E
  356. sIsMember, sContains
    4 |% A" N+ Y$ |8 v
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false1 n: U7 l* J+ m
  358. $redis->sIsMember(key, value);3 D8 L* p2 l( w, ^# A4 G

  359. 7 f. @+ J# a1 m8 d1 E+ d: _
  360. sCard, sSize1 d+ N( F. O- c7 s/ h4 }/ C
  361. 返回名称为key的set的元素个数& S- N8 Q  f7 K% q+ k

  362. ; e3 Q- n% G4 b# ?
  363. sPop8 s7 w' _/ R8 \( c
  364. 随机返回并删除名称为key的set中一个元素
    0 a- t2 ~8 j+ a- j/ V1 P
  365. * b2 K4 `  Z- M% V6 n) w4 V; [0 `
  366. sRandMember7 r0 z- m5 b) a* G
  367. 随机返回名称为key的set中一个元素,不删除& a6 c- ^, U, Y7 X% Y

  368. % I& s# k; W7 I5 ]* ^/ _( F* g
  369. sInter4 n- b- Q4 |# e
  370. 求交集
      o! a$ ^6 @0 M& W6 q$ H& y4 F
  371. " L6 L0 P& j5 n' n1 M8 e, n
  372. sInterStore
    ! h- b9 u1 N" d7 B6 m2 O& t
  373. 求交集并将交集保存到output的集合
    2 A5 @8 k% k! ]% L: o
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    # p1 N( @( L3 p, |  y0 q
  375. ' @# s9 ^. u. u% t) _/ _# U
  376. sUnion) a% G" A7 f' @4 h$ m
  377. 求并集5 G" W2 }) r- \
  378. $redis->sUnion('s0', 's1', 's2');
      _2 F8 @5 \6 |+ v  b
  379. s0,s1,s2 同时求并集. e' J& t( m- K& u

  380. 6 _2 K2 ?! T' k6 _  _  E
  381. sUnionStore6 I: t# M; m: Z) h! B! g* P8 f
  382. 求并集并将并集保存到output的集合! K7 e+ a4 S; F3 C! B
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');  O" R7 O$ b; e6 b

  384. 6 S- j) j7 F) e  _$ c8 Z
  385. sDiff- ^0 b% @: q6 e! G
  386. 求差集6 i) [7 j( O) S4 O; l* G
  387. : J$ H, s8 V" R' j
  388. sDiffStore
    $ {' U" ]4 W- B6 u+ }
  389. 求差集并将差集保存到output的集合$ ]* t( m# o9 d' ^7 N1 A
  390. ; r6 k6 Q3 l4 n2 |$ v  [
  391. sMembers, sGetMembers$ C! t$ n+ a. U
  392. 返回名称为key的set的所有元素
    7 \& E/ p0 Q: D' i% ^: h9 R7 F9 i
  393. 9 @* e, ]4 }: W5 F- I
  394. sort
    + n. V  i" o' J6 {8 i# P
  395. 排序,分页等
    - ?  G+ L& w; L# Z1 p! n. R
  396. 参数
    ; U1 v1 `- }. T
  397. 'by' => 'some_pattern_*',
    3 N7 [0 v7 S# `$ k
  398. 'limit' => array(0, 1),. B  L9 S* _# j9 `; l
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    " ]6 c; J, z( Q" x0 R# S
  400. 'sort' => 'asc' or 'desc',4 K8 ]) k* y2 c9 c: g
  401. 'alpha' => TRUE,
    $ `5 _+ P, i9 U" ?; ?; ~, W
  402. 'store' => 'external-key'
    ; t2 `6 h' n! }9 A. V
  403. 例子: Q1 K: {% P7 k  N( \6 G( \
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);7 g. ~: ~& F: P
  405. var_dump($redis->sort('s')); // 1,2,3,4,55 O3 D" f8 I2 }. z3 J  |
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,16 y* N6 Y/ _. _* ~- a  K+ d' w) r# e9 H
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)55 G' T1 N' w7 Y
  408. 1 |0 e3 s: d5 Q0 Q
  409. string命令
    ) S+ h6 @! E2 v; f0 b8 ^4 L" s
  410. getSet8 _( \% X. A6 @( K  A
  411. 返回原来key中的值,并将value写入key
    , U) x7 V+ J# S! H$ {
  412. $redis->set('x', '42');- x# }9 w7 [( _
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol', L- K: p: Z8 B) L+ Y
  414. $newValue = $redis->get('x')' // return 'lol'  V* |" N+ w& _* B& ^# a4 [
  415.   _. O; k, \/ p/ p+ W* R2 t8 a
  416. append
    5 W* q* G" l6 h$ u9 k9 V$ D
  417. string,名称为key的string的值在后面加上value1 J1 n4 X" @! T, p' T0 Y
  418. $redis->set('key', 'value1');
    8 Y( d# |# N# P! F( D* D
  419. $redis->append('key', 'value2');
    1 T/ @4 F( [' m
  420. $redis->get('key');
    7 ]9 A! @% L6 B( i6 ^
  421.   ?; V4 I3 g8 c- |' }
  422. getRange (方法不存在)# y1 e: C0 n; r) a1 y6 Y) p
  423. 返回名称为key的string中start至end之间的字符
    1 P$ B! n& ~8 d
  424. $redis->set('key', 'string value');4 ^/ Y& g5 {+ m; ?. s8 d
  425. $redis->getRange('key', 0, 5);2 F% |" t$ A/ q" s) d: Y( D4 y0 l2 g
  426. $redis->getRange('key', -5, -1);
    - v& M' O" ~' R3 Q  ^
  427. ; C$ Y. u: c0 k- m9 {7 a6 w
  428. setRange (方法不存在)
    ( l$ i% x" m" l% z4 H' w4 Q
  429. 改变key的string中start至end之间的字符为value
    9 X- ^- r+ W: w6 _. [5 g3 K- B4 a
  430. $redis->set('key', 'Hello world');" l3 N8 V% i, U, ]4 |5 n4 h
  431. $redis->setRange('key', 6, "redis");
    3 V' L5 \+ A# N% S6 s
  432. $redis->get('key');2 r( U, V8 I5 j# V" ?8 Z' C, ~

  433. . v. Z3 |+ n$ {! a3 I; o
  434. strlen) h2 ^' z- g6 y5 c
  435. 得到key的string的长度+ w9 s7 v. d" ^, v, Z$ n
  436. $redis->strlen('key');
    ! _3 e# |6 }4 s$ \& b7 P. E
  437. $ A" s" @/ ~9 x% ]! ]$ _6 H) Q
  438. getBit/setBit) s" R+ }1 u% K1 T
  439. 返回2进制信息
      a) O0 P! e  s
  440. - o; N$ s$ C* S# H
  441. zset(sorted set)操作相关4 @3 U4 p& l8 Y2 _3 u  W3 S
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    1 q/ p' P. ?! n4 _% I
  443. $redis->zAdd('key', 1, 'val1');
    6 \  Q0 ^3 @# a, d- z
  444. $redis->zAdd('key', 0, 'val0');+ ]+ W; S4 O* ]* E- d
  445. $redis->zAdd('key', 5, 'val5');
    ) s  Z9 O2 j5 k, p$ I3 p; ~
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)- n5 a8 t# M4 ]1 M7 H

  447. & s( R5 A" q2 a5 C# B+ e
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    + k1 [2 a5 t8 r7 w
  449. $redis->zAdd('key1', 0, 'val0');5 m% q5 y) v% b* C9 N
  450. $redis->zAdd('key1', 2, 'val2');: V" A$ h. [$ O
  451. $redis->zAdd('key1', 10, 'val10');1 ]! D" k5 b  e. @& U5 j% h
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    1 h  R; X0 L( P, `* m7 ]+ _
  453. $ N4 r: F1 N8 }1 K
  454. zDelete, zRem- u+ w6 c. j. K) O
  455. zRem(key, member) :删除名称为key的zset中的元素member
    & Q" ?; I0 v1 {: ^+ i  u
  456. $redis->zAdd('key', 0, 'val0');. ]0 X5 S8 Y& O8 _! J
  457. $redis->zAdd('key', 2, 'val2');
    7 l. f/ I2 J  ?' m5 H
  458. $redis->zAdd('key', 10, 'val10');
    % Q- u& f2 O$ G" f7 R: R; Z6 c7 Z
  459. $redis->zDelete('key', 'val2');! Z; K8 B. V7 d# ^# O
  460. $redis->zRange('key', 0, -1);
    ! E; L- F! z' ^. X9 J

  461. 6 v; d6 h$ C# j$ ?# q8 j. |
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    * J0 `+ ?4 _5 h4 B
  463. $redis->zAdd('key', 0, 'val0');
    ( p4 C  d) B) C$ ~% x! j1 c% P+ p: m# F
  464. $redis->zAdd('key', 2, 'val2');  @) X. z8 t- u9 ?  E% D# Y, |' M
  465. $redis->zAdd('key', 10, 'val10');) C6 F$ z* i2 c6 C% h6 V; V' a
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);* Y% X: E) b3 k$ g

  467. ' X, z3 y. G& V6 f9 \
  468. zRangeByScore, zRevRangeByScore
    / n! Y& I/ q. H" D. y
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
      H, g; i3 N: A# c- {
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    9 G8 N) p( D' \$ ~# a1 e

  471. # j5 y" ]! e4 l+ J- m
  472. zCount
    , @8 @! h5 x3 @, s
  473. $redis->zCount(key, star, end);  f$ `4 v0 J- K- `. U) {; i
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数: J9 I% c3 {7 I

  475. 2 X4 J7 X: |: a  j  a! b7 J1 G
  476. zRemRangeByScore, zDeleteRangeByScore8 F7 u3 s* a5 |$ C; j3 j
  477. $redis->zRemRangeByScore('key', star, end);& w$ w3 {8 z; _! V4 L" q9 @
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    8 x, E( ^& d5 p7 n. @
  479. # I4 a5 @5 M0 y& a2 ]
  480. zSize, zCard
    0 o' O) @1 o* y* v
  481. 返回名称为key的zset的所有元素的个数3 Z) J/ c% x# Y9 h: Q2 n" A+ u
  482. 9 ^6 Z* p, P. c8 Y$ Z- c* Q
  483. zScore
    $ [& U% E: r4 S: ?- W. w$ a
  484. $redis->zScore(key, val2);
    . f+ I* L- p' H; |  w& [
  485. 返回名称为key的zset中元素val2的score
    ) i7 m* i2 {( ?5 g* A7 T

  486. 2 X) Q9 ^$ F9 A3 m6 N
  487. zRank, zRevRank
    2 `! _3 w( K. O. j% g9 M" o6 n9 F* Y
  488. $redis->zRevRank(key, val);) ^% P& l" l8 M
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序' D& s, _- e0 B6 M& f" m/ V

  490. : q' A; S7 v, |- J" m
  491. zIncrBy" ~) u) |, x0 U$ \7 a9 S5 q
  492. $redis->zIncrBy('key', increment, 'member');
      G& f1 h* L. g2 {7 f- Z; _
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment% [3 B0 i* k& a7 K5 V6 K9 H, _' }
  494. . @* }+ w3 M; K8 [
  495. zUnion/zInter! ^- n" w! h* |
  496. 参数
    & A3 l* m9 e3 z  k
  497. keyOutput
    1 p" Q, k0 ~3 G! _0 s
  498. arrayZSetKeys" ~1 s6 _: I* ^7 m
  499. arrayWeights* W- t, c2 c' e8 D
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.8 m. D4 [' _! i) k* z" d
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    # P* G# m6 S9 Y* C5 z
复制代码
2 }  O4 v% e* n5 X5 ^6 t6 ]

: q  f! L; `1 ?( L/ G1 r* f1 d1 g2 X+ d0 W. H2 [: `
6 d# J6 s9 W% o9 @: y3 Z# k# s% e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 3 c+ @7 t, X+ t3 [+ E
  2. //连接redis服务器
    & ~+ n4 N" g, v; J
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 14:09 , Processed in 0.066104 second(s), 20 queries .

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