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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php7 c& Q/ M; f6 h. |5 x6 a/ ^# }
  2. $redis = new Redis();  
    , N0 _* Y. D* w" ~( X4 T$ Q
  3. $redis->connect('127.0.0.1', 6379);//serverip port* D4 [) J4 D/ a7 G6 w
  4. $redis->auth('mypassword');//my redis password
    7 M/ c/ ?1 N. K, G: P  ~5 p
  5. $redis ->set( "test" , "Hello World");  
    ! e6 h0 K$ U6 T
  6. echo $redis ->get( "test");
    - k( P3 Z0 ^+ k- B
复制代码
php操作redis函数封装
  1. /**
    2 J4 C- `1 Y* r& {" E- c2 H; l
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    $ p2 l0 j( @7 m9 O0 m0 x1 x* Q9 D; {8 t
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi( T" ^, O2 z5 x' q
  4. */& I5 C- p$ M( T0 H5 X$ }
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){$ c; l8 e+ a! j, t) ]) [0 S& ?* F
  6.     if(!$key||!$value) return false;
    4 b: R) K0 O4 [1 f$ \
  7.     $host = $host?$host:getenv('REDIS_HOST');/ `, Y3 N2 C- |$ W( ?
  8.     $port = $port?$port:getenv('REDIS_PORT');. N6 W4 i9 t5 \" G
  9.     $redis = new Redis();
    0 T6 U2 @. [# ^1 m. L
  10.     $redis->connect($host, $port);
    / s6 V: |. w1 t- B) w7 q8 k
  11.     $value = is_array($value)?json_encode($value):$value;
      O1 k  \; E; {1 u
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    3 l9 I* ]2 h$ h
  13. }# K2 o8 A) s, f% ~- ^# V
  14. /**
    8 C# ?1 C* |; R5 |* s
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi0 H6 L, P7 B- {) D0 {+ N
  16. */
    0 W7 P, S7 d# k" Q1 |$ W
  17. function RedisGet($key,$host='',$port=''){+ j2 X7 }& F7 a2 y! v- l0 Q
  18.     $redis = new Redis();
    ; Z0 M  D  F. e8 H9 A
  19.     $host = $host?$host:getenv('REDIS_HOST');
    1 O& T/ U3 K1 o& I$ [
  20.     $port = $port?$port:getenv('REDIS_PORT');
    1 U+ ~# p2 N% j2 x+ X9 f
  21.     $redis->connect($host, $port);
    ! R- F' y+ i: D2 D; K
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);# j" B' e% K' H5 X
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    7 j# R7 M" P/ t
  24. }5 I. n" U! i  T- h3 s1 U
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了! v, A6 R( q% }- S5 G
  1. setex 带生存时间的写入值
    . ?! A. e/ Q0 \+ \6 x
  2. $redis->setex('key', 3600, 'value');
    . _( h% F, `9 k  I$ n
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回10 Y; H  z7 l: U) M
  4. $redis->setnx('key', 'value');0 B( q+ Y% s* m) ^4 T% E: I/ y& d
  5. 返回已经删除key' T: C/ V2 t+ u# R# y
  6. $redis->delete('key1'); 成功返回1失败返回0; i  b  ]5 D4 G) T- ?/ ~; ]
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0# w/ [  r! B. \( _
  8. 查询生存时间
    # s% U1 t. W! x0 F. k7 @
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    % v. ^6 g# w) J& {+ G
  10. 同时给多个key赋值,同时设置key0和key1
    ! P1 c) n& K* j7 c( A% D
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));! d' t! T9 s. p0 r2 i( t
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ( W+ E6 N7 t7 f/ q( M! x1 _& B
  13. $redis->incr('key1');
    3 R: d# k* l3 r9 B
  14. $redis->incrBy('key1', 10);' T3 A, J& X- d; N
  15. 减法跟加法一样
    4 Y* |5 i" M& x8 W8 g
  16. $redis->decr("key1"); 减少1
    * O# K1 b% I+ M# A  b/ _; O
  17. $redis->decrBy("key1",5) 减少5, z7 m; G0 L, _

  18. 4 V! ?) s3 B, p# m9 m
  19. list相关操作,连表操作3 A  R: _- O" l
  20. lPush: G8 _# E% V8 |) V
  21. $redis->lPush("list", "888");3 z5 A4 h/ T5 k. i
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数1 X8 V% u* g6 e8 w( O
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    & b; ^" K2 s7 s0 p
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    0 o- e4 b3 ?& L6 ]4 M% m
  25. lPushx/rPushx
    " @9 F6 [) G9 r! a3 j8 |
  26. $redis->lPushx(key, value);7 |" A7 d, i/ q) j& W9 @
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加: r8 T9 Z& K' V' L; X& F$ i; R

  28. % a  j7 s- e  `
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key7 }0 d& w. i/ n+ E2 A! o+ [
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    5 z9 y# p8 A, a) y# [( Z
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    , y& u2 Y6 {. y% y& o
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    * q- t! f. M6 `8 }
  33. sadd s1 zhangsan7 e) E0 F7 v  w; P/ J
  34. sadd s1 lisi& Z% i! n" D" ~
  35. sadd s1 wangwu
    ( o* v+ X/ \- g% a
  36. sadd t1 yangxingyi
    6 \( i+ S- O/ b
  37. sadd t1 lilei" x) P1 o' b' W; m3 X% v* z0 E) B; C
  38. sadd t1 zhangsan
    8 ^: {. k. }8 h# J
  39. smembers s1 s1的所有集合内容. q: i2 |7 a" ^# P. ~' x: a
  40. sdiff s1 t1 s1有的,t1没有的,差集
    ; m* F2 x' a, P6 ?
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式0 O; m# B* d. q$ b0 }
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的3 s% z* P  }2 @( i0 F3 B. y6 I3 E
  43. spop抽奖场景,返回集合里面随机的数- \% t+ \" \& m4 L9 r0 w
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了' n% T' _) M  r% L! |. [, G5 Q) t
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数7 F& P, @+ y: l/ p9 x
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的5 E/ H6 P1 w7 y; C, Y% H" P' Y) e
  47. 随机返回集合里面的一个元素,但不删除,重复中奖" M: D) c( x- m
  48. $i = $redis->srandmember('s1');echo $i;
    * E& r# S0 c: y& U3 i
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false& Z/ o+ i1 d# x; [8 J" ^3 ~  d& p3 N
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    ) f6 l  f! A+ d# [* {& S0 i& V

  51. % J1 a7 @  I2 j0 }' T
  52. zadd key 2 value 有序集合
    - b7 y) Y& x3 M4 t) e- w3 |( G+ j
  53. zadd y1 1 zhangsan;1 l3 x7 K) }% Q* j$ J
  54. zadd y1 3 lisi;
    . F5 u) W3 w6 d0 b+ R' Z5 c- d& W
  55. zadd y1 2 wangwu;' O. O! a4 S0 s( D
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    9 d  J: G; e: n, Z& ?1 I
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    : \( Y. ]9 x8 F' E+ v
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键. G" N; w' v! m; `% K3 E) E
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先# E3 J& r. K2 W  w" L, p
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    : n6 j) X: X( ]5 S8 u) T2 H( q2 g
  61. 无序就scard,有序就zcard,有z没有s
    % Z& k/ J8 y% X6 o3 {0 h' j
  62. sInterStore+ {0 c+ U9 k0 i( O, T
  63. 求交集并将交集保存到output的集合
    $ K2 @8 N/ P- E; K; X/ }6 D* ^
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    . H3 P9 o$ e$ ^# W& D$ u
  65. - t* D6 J; b4 h, S6 \
  66. Hash操作6 H; F. }' R  T3 ~( g0 i
  67. hSet
    4 [4 N4 H. j/ I. }4 v; b" A  z
  68. $redis->hSet('h', 'key1', 'hello');
    + w1 d/ ]' _( g. P6 `2 l
  69. 向名称为h的hash中添加元素key1—>hello8 `+ v! P0 P+ V0 F6 Q

  70. ' u( P; [) ]6 K0 U" P7 Y
  71. hGet
    8 G8 i3 E5 O2 r8 }7 r2 {5 N
  72. $redis->hGet('h', 'key1');: W, k) n  k: o2 X* J+ |. v
  73. 返回名称为h的hash中key1对应的value(hello)6 B6 T3 L0 @4 a6 E# E/ _* w

  74. . l# ]! A2 W2 T! ~
  75. hLen1 |" t- I! i9 |' ?5 D5 R
  76. $redis->hLen('h');
    * V" i# n0 ~- K/ a. |+ d* R! ^
  77. 返回名称为h的hash中元素个数
    + Y0 E) k) M  F
  78. . [+ R7 E. o2 U2 F$ h. ^0 |
  79. hDel
    6 O, t/ y; v% O1 Q1 ]$ m
  80. $redis->hDel('h', 'key1');
    5 R* y; V. L) b8 z3 _
  81. 删除名称为h的hash中键为key1的域8 A- v2 A, L' F. h/ U$ p
  82. 7 P) w$ l- e4 E( Y7 D+ K
  83. hKeys5 \8 U/ O9 W8 y* k. B) E6 \
  84. $redis->hKeys('h');7 C  l6 @8 @0 z* V: k
  85. 返回名称为key的hash中所有键4 f, M2 O) y9 i$ i
  86. " S* F: r2 F$ j' `
  87. hVals
    ( G. n0 Q1 ]  z" n6 L5 l7 e
  88. $redis->hVals('h')
    ; S- }  O; F9 R! W" c5 J
  89. 返回名称为h的hash中所有键对应的value; Y9 N) c: e1 c) Q
  90. - _' _% T( o) y; k* |4 V
  91. hGetAll
    , H% q& {9 Q& B4 v
  92. $redis->hGetAll('h');
    1 g2 ^& J/ g1 Y9 A  ^
  93. 返回名称为h的hash中所有的键(field)及其对应的value: G7 L3 l* r: M: r

  94. & V) x" y6 i2 Y/ P8 z5 e; S
  95. hExists
    % o7 ~0 o7 u6 I0 _* y* @; t
  96. $redis->hExists('h', 'a');
    6 k6 k6 x9 E& Z- f! d4 n: }, \
  97. 名称为h的hash中是否存在键名字为a的域* o2 O( w3 m% o# p
  98. 6 f4 b8 F- I" T& W- R
  99. hIncrBy
    2 J/ O# v. r0 m3 `8 d
  100. $redis->hIncrBy('h', 'x', 2);
    ' x0 }1 c' a& u- b* `( h1 d4 r
  101. 将名称为h的hash中x的value增加2
    $ P8 L; M. x& J/ J) {$ ?. m; ~( Y' `

  102. * F# C$ S2 K* v1 Z/ _  r
  103. hMset
    ! g" r0 q6 j! o0 Z3 U) F  J
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    # x% {, f* G# q- L' u5 |9 P
  105. 向名称为key的hash中批量添加元素
    3 q& P% x% M. r: x% Q

  106. " n( o' U' V, C2 [; ^& n" {
  107. hMGet& Z1 E. I2 P5 x( |6 Y5 W
  108. $redis->hmGet('h', array('field1', 'field2'));
    2 A1 k* X$ e! N
  109. 返回名称为h的hash中field1,field2对应的value
    1 T% M% {' Z6 ^  a
  110.   B# y, j- s9 v& f4 p
  111. redis 操作相关8 v/ w+ u* y2 m. x8 a( y' {
  112. flushDB4 K  j1 A+ G$ ~* \
  113. 清空当前数据库
    3 e, {* z' c, R( s" _1 Z- A

  114. 2 L3 T. d# E# z  [! V
  115. flushAll
    " t1 F$ ?( y1 S' \
  116. 清空所有数据库/ I! V5 v; v' s2 e: v: K- c
  117. + e: y1 i& ?- L" {
  118. randomKey6 R* T4 F- `+ |; o
  119. 随机返回key空间的一个key
    - Z0 L% P, O4 X( z% c4 v9 i
  120. $key = $redis->randomKey();
    ; W7 r9 S# s% P# U" O8 {

  121. . N' J: M: `  H+ u+ v, k/ w
  122. select4 x+ M+ @- T7 c" o9 G  N, x9 u
  123. 选择一个数据库' I" K7 o  r- d- H" X' r
  124. move
    $ B' q+ F% C/ g( |
  125. 转移一个key到另外一个数据库
    + A5 `, S# ]7 Z7 ]
  126. $redis->select(0); // switch to DB 0
    + M# u/ {# s( z$ v' X
  127. $redis->set('x', '42'); // write 42 to x' S  |/ B5 P% c
  128. $redis->move('x', 1); // move to DB 1# g, [' t$ n; r: `6 d7 E, L% A7 R
  129. $redis->select(1); // switch to DB 10 G2 l# `1 i8 g% q8 C, \1 T
  130. $redis->get('x'); // will return 422 N- O+ C% e# T

  131. . q8 K6 z* U  A  E1 Z' N, T
  132. rename, renameKey* Q  B* H) o6 a6 w6 Z+ p
  133. 给key重命名7 n9 w% b5 N* ^  {0 l% U1 W
  134. $redis->set('x', '42');
    * \" W! f9 ?1 g1 p: o+ F
  135. $redis->rename('x', 'y');% O) y) M  d0 A4 \$ m$ u
  136. $redis->get('y'); // → 42% m' M" P; ~# e4 L8 [( P, F
  137. $redis->get('x'); // → `FALSE`3 k& N5 \- X- M8 s- H9 F! d3 D
  138. 7 m2 {4 t' J: c" n: b
  139. renameNx
    ( n6 x5 ]  F1 {/ ~+ A* O  o% }
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功4 v9 ~  ~. K8 k2 O% k

  141. $ m/ p" k- T7 e) ~) V
  142. setTimeout, expire  U. d8 m* P9 \" X# A: e
  143. 设定一个key的活动时间(s)# T( {" D+ x# M6 L; e
  144. $redis->setTimeout('x', 3);! a* i* H: Y: Y8 b% e
  145. 1 d& x3 w+ O1 f( m, P- {# c% V
  146. expireAt
    . @. b( r& w, [0 ?. @) D
  147. key存活到一个unix时间戳时间, S2 N0 F2 ]3 `. Y7 d+ r
  148. $redis->expireAt('x', time() + 3);3 y* z* F: b* E- b" i$ m
  149. 1 W* Z1 F! }" \4 E$ f6 Q# V
  150. keys, getKeys
    6 F4 o; Y; Q+ N+ ~8 \, i
  151. 返回满足给定pattern的所有key& x, u3 ^7 k7 h
  152. $keyWithUserPrefix = $redis->keys('user*');, e5 a$ e; @; n% u8 F  b
  153. ' a* Z$ A3 E3 T; f) H! [5 W8 V
  154. dbSize% P7 A1 J5 o% v7 g  v
  155. 查看现在数据库有多少key
    9 C. o6 t! O2 Y7 L- O0 B# G$ I
  156. $count = $redis->dbSize();8 N9 {9 }, B, _$ b; `

  157. , t; g" a- a5 Y: [
  158. auth
    ' P# [2 n% }4 _% k
  159. 密码认证
    % `% C- l4 a1 B8 e' u9 v% {
  160. $redis->auth('foobared');6 r5 X7 u5 S( j/ f5 [
  161. ' J( s7 s8 [, N+ S
  162. bgrewriteaof
    + U! `" w# J. ^3 S( G0 V
  163. 使用aof来进行数据库持久化
    : w* q3 _4 Z- d! u& G  |5 @. h
  164. $redis->bgrewriteaof();! A3 k9 b1 g% S; i' M( L/ I7 P6 S

  165. ' {- @- I; i2 F( d5 q0 n
  166. slaveof
      ~- R0 s0 Z$ l" @) \
  167. 选择从服务器
    % Q/ }: h5 u6 V! _7 G& g+ ~- o! X
  168. $redis->slaveof('10.0.1.7', 6379);
    . Y. Y8 w% e% w, n' {& k) Q; J

  169. 2 \, x5 F+ x# l( N6 N1 ?
  170. save  L' ^0 j( t: k" \. z) D: p3 x
  171. 将数据同步保存到磁盘
    # A, x; H% e' q9 v1 U% }( N) i: e

  172. 1 |0 _, ~% I) `; X
  173. bgsave; q7 c& |+ f  T. b& Z* Z5 H
  174. 将数据异步保存到磁盘
    , f, n1 y* S/ p0 {! t' V$ K
  175. 0 ]& ~8 b' Y) B) i0 z2 T, ~: E/ P# ?
  176. lastSave: l  Y/ w+ B1 P7 m% }# x
  177. 返回上次成功将数据保存到磁盘的Unix时戳/ a3 O( L/ a0 ]! |0 r. ~+ |/ g

  178. ( j6 e7 T! B+ W, N0 a7 Q
  179. info& B  X) K$ C( [" L3 N8 E
  180. 返回redis的版本信息等详情
    ) Q/ ]  K* ~( X5 V- f
  181. " q5 ?: b6 w! [
  182. Redis::__construct构造函数% S: p+ i1 C" X; i$ A, L2 h6 `
  183. $redis = new Redis();+ r" ]# u) R- e- I$ V
  184. # Q  g& \7 U9 w
  185. connect, open 链接redis服务
    9 ^% N: j: O5 W# ~# ?
  186. 参数
    & l9 O/ p' ]4 B$ I" V! x  F. p7 Y
  187. host: string,服务地址1 L% ?3 ?% P- k% C& f' U$ o
  188. port: int,端口号- @6 U  E. l+ K- y
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ) m: B2 z$ M) Z  F2 C9 q, ?
  190. 注: 在redis.conf中也有时间,默认为300
    0 }6 r8 d# D3 u

  191. , a3 w7 [5 k, q  B, ^
  192. pconnect, popen 不会主动关闭的链接, r8 M* E+ ]( [3 S+ T
  193. 参考上面
    8 z9 g% O% S0 y9 o) U. w2 U- B3 d
  194. 5 r" B. I7 o2 e* j" ]' X
  195. setOption 设置redis模式
    + R+ q$ p. M7 z1 ?

  196. & r4 f" z4 l- ^) ]! r, L
  197. getOption 查看redis设置的模式4 Q) w' t: l* J2 b3 D% L2 a
  198. - n& X$ M6 g) D, \* ]/ N
  199. ping 查看连接状态" U% @6 p; |/ u: c4 J
  200. % C( @4 @- ]! |
  201. get 得到某个key的值(string值)% s* X  o& ^! h8 {
  202. 如果该key不存在,return false
    8 S7 a( }' @1 u, `

  203. 1 Q$ J3 ~/ L( x% T- B
  204. set 写入key 和 value(string值)& w$ ]& V) @  w! R# ~/ y
  205. 如果写入成功,return ture
      L% B( m1 D3 y

  206. : q! H9 b$ S0 W1 |
  207. setex 带生存时间的写入值
    / P) \# n. n" O6 i2 t. _, ]4 Y
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    : X3 @1 h4 @$ ~& u( j4 S
  209. & |& _5 Z- t" D# K" i7 E: C( V
  210. setnx 判断是否重复的,写入值
    : P% S. N6 F% S) _6 R& w
  211. $redis->setnx('key', 'value');
    2 T& d5 e1 f( J# P
  212. $redis->setnx('key', 'value');+ s$ N& D# f- `! i6 c, h8 U0 K
  213. . G) X8 Y6 O# ?( ^4 X
  214. delete  删除指定key的值
    3 V% \9 @4 m" O- h$ J. I3 v. J
  215. 返回已经删除key的个数(长整数)
    * l$ w0 y" \# n6 f$ ]* w5 e
  216. $redis->delete('key1', 'key2');
    ' z; I7 ~' D. s% g0 ^5 k' F' ?; _
  217. $redis->delete(array('key3', 'key4', 'key5'));
    1 Q2 b/ e: I( c. W+ s9 a6 W
  218. 3 `3 q1 S; S; ]  s5 Q3 C
  219. ttl
    9 ~" x. E; v1 r5 M; z; O
  220. 得到一个key的生存时间7 `9 L" y- v7 C8 v: W7 l- t/ n
  221. - I; C# P; Y4 h- d+ k" c5 j
  222. persist
    3 J6 y/ J0 G4 C# H3 Y% l. }% F
  223. 移除生存时间到期的key
    9 y! g: B. P) l9 W8 M; d
  224. 如果key到期 true 如果不到期 false2 M2 f: Z3 d, F7 N% k
  225. 3 T( b4 r( T& g2 i) h
  226. mset (redis版本1.1以上才可以用)
    ) k  Z- f0 X9 x% A0 V9 y
  227. 同时给多个key赋值
    % _" m6 ?8 |8 J
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    8 X' I& a6 l( F- R
  229. 8 Z4 g; a, N! x+ n

  230. 4 F" Y0 ~" G4 ], O7 }# V
  231. : _$ ~  {8 _/ i
  232. multi, exec, discard  r+ \2 G+ Q  @3 N% [- A/ j
  233. 进入或者退出事务模式
    ! {) U! l" s, l" ?$ X' x# W: v
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    ! U% O5 c  l' N. `7 u9 ^
  235. Redis::MULTI:将多个操作当成一个事务执行; e# E: l& o+ o5 B, R
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    4 Y* t1 q/ G( U7 d! I2 o' V/ m
  237. discard:删除一个事务
    6 H! l( m  e, X/ v% W9 s1 N
  238. 返回值
    2 k% m! T# {, ^" |$ A. C3 F
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    ! y  r* \" x+ d& p2 k% H
  240. : K; ?1 \) b7 _0 P  i2 X
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    / g+ e3 v8 A' w4 K/ A$ f! O
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    * Q5 i& [( o3 ]+ M1 o
  243. unwatch  取消被这个程序监测的所有key
    & j/ }, _) p: V( C) q5 I- ^; P
  244. 参数,一对key的列表
    7 ?0 E( h# J4 w. G
  245. $redis->watch('x');5 I. A8 [) [9 r3 `

  246. ' K. ]4 R% `8 B) O* k- E2 M4 h
  247. $ret = $redis->multi() ->incr('x') ->exec();- G5 `2 b" y7 L% \; `

  248. ( n" W" |% k/ u! z' B6 E. R
  249. 9 P3 A# `6 N# x+ W5 ?  I
  250. subscribe *
    2 k) `9 r* ?) W% Z) ]
  251. 方法回调。注意,该方法可能在未来里发生改变) V. b9 A6 Z6 u2 l4 S2 V' }
  252. 2 Z: D7 W6 b) O* P' k! z* U# P
  253. publish *2 `  h( Q8 w& D# n* `! z- R8 s4 [
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变0 P7 y7 v5 \& W6 ~9 X
  255. % V; R+ ~# q  A8 H1 t% P
  256. exists
    % D% N! u3 ^. }4 y0 R0 `+ ~% J
  257. 判断key是否存在。存在 true 不在 false
    2 \/ ~- _9 [& b5 y" `* R, _
  258.   ^& p, Y) \% e+ a& [" T. g* |
  259. incr, incrBy/ \) E/ T* S( M- ^# u
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值0 v3 d9 k9 p: T) I! e  R
  261. $redis->incr('key1');
    1 g( k/ |3 f$ Q+ _1 c. ^) S
  262. $redis->incrBy('key1', 10);9 ]1 O3 ?+ J2 D$ M$ _/ q
  263. $ A. e. t5 s7 A& Q2 s( ]
  264. decr, decrBy: h5 m& x/ Z' Q! j2 r# q" q. `
  265. 做减法,使用方法同incr/ C& l6 S+ }+ [/ U: u
  266. 1 ^( W+ d, m& r* T/ V
  267. getMultiple
    $ _; `+ j. A/ U4 B
  268. 传参7 `+ S% N$ b1 l* g- o6 _. G
  269. 由key组成的数组) ~2 @5 s7 F3 X  U
  270. 返回参数
    * w( K4 T7 v1 c" K0 P! j4 |' H
  271. 如果key存在返回value,不存在返回false
    / V# `: X! q1 c/ f3 Z3 y
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));6 s: A# y+ L: ^1 N. ?/ {
  273. $redis->lRem('key1', 'A', 2);. c( W' [! G+ x* q* ]
  274. $redis->lRange('key1', 0, -1);2 A1 A) I7 T$ ?9 G. p$ i

  275. + x1 w! M! @; M+ m1 G$ C/ W  s- n
  276. list相关操作
    ! [( s- S6 q. Q8 P& @1 U& c7 i4 S7 w3 ]3 ]
  277. lPush- R! p# m& T# y$ W
  278. $redis->lPush(key, value);
    0 T( A( W! X$ A  N" E) e- I1 u
  279. 在名称为key的list左边(头)添加一个值为value的 元素$ \$ I1 o, L/ w
  280.   |+ r: q2 V" V  z3 q$ Q" A
  281. rPush4 z! n" W) H* r, ~7 c+ W2 j) I
  282. $redis->rPush(key, value);
    # J7 e/ ]2 p* q' C4 \. X6 e5 L. P
  283. 在名称为key的list右边(尾)添加一个值为value的 元素7 y$ l7 R7 o9 c4 z% ?1 I1 w) M

  284. : S  _( z7 d) `; K
  285. lPushx/rPushx1 X5 D* d" R5 T+ N+ G
  286. $redis->lPushx(key, value);& ?/ q0 S0 s, E3 @
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加( `' T2 I1 Y- q4 s/ S

  288. 6 S7 z& R% {7 r5 W+ K8 l- m
  289. lPop/rPop
    . c; e5 F* Z! _% g( H4 a
  290. $redis->lPop('key');
    . J1 A1 |! u' o! h( n7 j
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    % O& \* g) @0 f9 Z. V8 ?
  292. ) a, G0 f' ]  M6 c& K$ D# B6 c
  293. blPop/brPop* Y7 ~2 T4 ]9 o* W
  294. $redis->blPop('key1', 'key2', 10);
    . Y  q( Q4 v7 z0 t& r9 T( Q
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    % T8 q, V% J) A3 r5 t

  296. # R  G- |9 ^! r* H" ?
  297. lSize
    5 o6 y6 f3 V$ p" a7 b
  298. $redis->lSize('key');' t/ ~, x# I! O4 v8 Z' {
  299. 返回名称为key的list有多少个元素
    % [6 `: w2 f7 r! ]' k3 `

  300. 5 ~+ ~- g, D' R" M$ K: Q
  301. lIndex, lGet6 ^' b# \( U9 L9 q' V) H5 {4 r- {
  302. $redis->lGet('key', 0);
    . G6 Y% s) W4 \' Z
  303. 返回名称为key的list中index位置的元素; y) a( X/ J& G

  304. 1 B$ l1 h( b7 s9 A  S  k/ w# |$ }
  305. lSet" x1 b5 v+ U0 R0 o" O2 T
  306. $redis->lSet('key', 0, 'X');
    " ]. X1 O) D9 q5 u- d
  307. 给名称为key的list中index位置的元素赋值为value& d: q4 \8 ]2 M9 S$ c3 e. f

  308. 5 w) i6 l2 _7 S6 y: b, q
  309. lRange, lGetRange
    2 }& h, F& E% i* h( k0 s
  310. $redis->lRange('key1', 0, -1);
    & I5 b& ]" }5 {- C- a. c
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)% v. S# ]4 \& i, M3 ?
  312. 9 i$ k( t6 ]* `2 q1 v& ~1 J
  313. lTrim, listTrim* W2 F& [; b* S$ s1 s# _" C
  314. $redis->lTrim('key', start, end);
    / K$ _8 i; g' u! G% B4 X
  315. 截取名称为key的list,保留start至end之间的元素
    2 M. x4 w  y9 r5 E1 \) A

  316. 5 ~6 c* q, x4 ]( c( _5 |+ F& c7 S
  317. lRem, lRemove
    - \. _% i9 ?% v: m1 p7 u
  318. $redis->lRem('key', 'A', 2);4 w4 k5 L, @4 b. j! J. g2 g- o% p4 Y
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ; G- s4 }5 T6 V$ ^( S. c  @3 ?

  320. 2 s6 r, w( J/ p  g
  321. lInsert! \+ {! R) x4 Z: H# U
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    5 g5 \5 B1 o5 j% T+ P$ |: U
  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');
    6 q; d8 Y$ w2 f) |9 |+ u3 `
  324. $redis->lRange('key1', 0, -1);/ w& S8 W3 s5 ]' z: G
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    # u7 G# x1 _$ k! z+ W) h, P
  326. $redis->lRange('key1', 0, -1);
    1 _5 E4 r- L+ G" E
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');% S) _3 a$ n! K
  328. 8 q3 k+ J7 k' ^9 y4 c
  329. rpoplpush; k6 G" x) l- c" G( q. O
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    % W6 |% Q) a4 d5 Y2 `, q+ R% I, |
  331. $redis->delete('x', 'y');
    & c  Z4 P1 v7 x, O* _. f5 ]
  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'));
    # _# D, t7 k) E. B2 m  H/ n& x2 a
  333. var_dump($redis->lRange('x', 0, -1));
    ! Y% P: s. N2 \( n
  334. var_dump($redis->lRange('y', 0, -1));
    6 F8 p+ h/ K' u, ]1 }! w- T

  335.   V+ r7 V, W) H7 a/ T* O5 ?
  336. string(3) "abc"
    3 L) `9 \( p1 i9 u8 k0 G: o7 R
  337. array(1) { [0]=> string(3) "def" } 6 B0 B3 _  T/ \9 y0 ], b
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    8 s6 I/ u" B$ E) j
  339. 5 n  H/ T) {8 Y  Y
  340. SET操作相关" g9 U/ `2 p" @( d( s
  341. sAdd
    / U4 M7 l/ w2 ]; n& g
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false# s8 P7 e# s( H* _9 L( L
  343. $redis->sAdd(key , value);
    + p  y: _1 S" Y; x1 Q2 T; V2 F0 G' ]
  344.   p( e8 o3 `7 W% q4 i" {
  345. sRem, sRemove
    & s4 g( n5 d( m
  346. 删除名称为key的set中的元素value
    5 ^3 h, F. x9 C; a( _; W8 W) W
  347. $redis->sAdd('key1' , 'set1');& c$ _$ Y5 G# c3 ?* @) L4 p% E
  348. $redis->sAdd('key1' , 'set2');
    # R0 Q" O' S+ I, e) h
  349. $redis->sAdd('key1' , 'set3');. n$ H3 v6 i, D! B/ @$ q1 d
  350. $redis->sRem('key1', 'set2');
      C  g, l4 u9 e0 e

  351. , D( e, Z- ^3 c: r
  352. sMove6 I3 _5 W/ X6 m
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    3 Q) w; y# {2 p- V: u8 H/ I8 a
  354. $redis->sMove(seckey, dstkey, value);
    * n, Z3 Z& |) z. w$ [
  355. 4 G% |% v; L$ q' Q* J, E
  356. sIsMember, sContains, M1 k5 P* m) X0 w' E
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false& T2 T" O# K( P' m5 O
  358. $redis->sIsMember(key, value);
    8 C* u6 j3 j5 h3 R/ ?
  359. ( d& F! s- y2 O  }
  360. sCard, sSize0 i1 H9 g! l! {
  361. 返回名称为key的set的元素个数
    . V' a% H  u! @  j) ~( b" [

  362. - K; |% M1 S5 S
  363. sPop
    - u3 t3 K8 R  X6 d4 |: d8 a
  364. 随机返回并删除名称为key的set中一个元素
    0 G' M# Y; p2 Z! j

  365. : w+ g9 O! B2 A  d
  366. sRandMember) o9 m" M- }2 f
  367. 随机返回名称为key的set中一个元素,不删除. W0 o/ h7 O6 ]' C( l( _
  368. ! _# K5 I8 @5 A$ {3 c/ T' z# Q
  369. sInter& Z% {+ p/ U( V
  370. 求交集- G1 z3 y8 C) ?4 Y& P

  371. 6 d' O' _; B( B) v) p) G) c
  372. sInterStore5 F) H% Z$ }" g/ g+ n
  373. 求交集并将交集保存到output的集合  e0 Z& s7 X/ [* o% R7 H5 F9 @
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    0 S: I$ Z- }% Y! q1 x

  375. 9 |! W. @; H( s6 C8 I
  376. sUnion3 x) t. h4 k5 b) g1 B5 Z9 G5 e& m
  377. 求并集
    : C$ T, z$ @( m: O  G7 |, ]
  378. $redis->sUnion('s0', 's1', 's2');
    9 ~( B# f9 C, B
  379. s0,s1,s2 同时求并集
    " o, W. y: @3 n* b9 G$ k: |* ~0 V

  380. : U7 a3 Y$ a0 {3 P# ^0 W0 H
  381. sUnionStore
    0 F" M5 l  D; J- u& k
  382. 求并集并将并集保存到output的集合; p, c) c9 R( b: S" G
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    ; X5 I, j  h/ H. x

  384. $ L; a/ v. T, \% `6 c
  385. sDiff
    0 V# o# n. J9 L) g
  386. 求差集) V+ x: V- F% t/ z5 x6 D; n7 I

  387. 0 Q4 V* O% ^8 x, P
  388. sDiffStore
    3 b2 p, D/ U: E4 p
  389. 求差集并将差集保存到output的集合6 M/ l" r% x" b$ L2 I5 J2 x
  390. & D; B6 J) m3 \9 ~5 B
  391. sMembers, sGetMembers
    3 s: D3 J* j# m$ _# T
  392. 返回名称为key的set的所有元素9 R- k6 `# j! ?: |: [8 E- m. u
  393. * G4 j8 w3 U- v& C0 P( W
  394. sort! R. \, A; k8 [
  395. 排序,分页等) d$ u; N0 ~3 x, ^' d/ K9 z! a% J
  396. 参数0 f/ |+ \  N. G4 p( s
  397. 'by' => 'some_pattern_*',
    , I5 Q! v0 i; {5 V* R
  398. 'limit' => array(0, 1),* K0 P5 x2 V. ^6 ^
  399. 'get' => 'some_other_pattern_*' or an array of patterns,( g* U2 ~% J; e( u  S
  400. 'sort' => 'asc' or 'desc',
    + A, o) P+ _" G0 w1 s
  401. 'alpha' => TRUE,
    8 w+ @. m. R1 q, e
  402. 'store' => 'external-key'
    * `; f1 T% ?: x3 T% N
  403. 例子
    / Z  N/ Q. s" K# ^& `# _$ t
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);" M' @, t$ b% m
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    ; F; Y; o. {( N) y" z
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    4 u( n9 e& ?9 @( E* m/ N$ p
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    ! f+ t+ M6 a1 X1 m

  408. + k& S  O7 _' E
  409. string命令
    7 J  \0 D8 {0 C' |/ `, N/ {" }
  410. getSet
    ) j7 L3 }3 g! M( p
  411. 返回原来key中的值,并将value写入key! s) q- P. V  z$ g0 b0 f
  412. $redis->set('x', '42');5 }7 {! S( Q( z- l2 e
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    $ F) l( s6 J# P  t; v4 [% l7 Y
  414. $newValue = $redis->get('x')' // return 'lol'8 [  r- w0 \, e, y* o; P
  415. % ?% y8 P  a- [- O0 j' M
  416. append
      V( t! a) _$ J/ y0 o; {1 R
  417. string,名称为key的string的值在后面加上value
    * ?- Q  }- K1 X! \7 D/ w
  418. $redis->set('key', 'value1');
    0 u# F7 k- }( L( [
  419. $redis->append('key', 'value2');
    9 V7 H/ g5 f* r( E& c" W" T
  420. $redis->get('key');
    . u- x  K* y5 ]% M8 H
  421. : N8 M7 a+ l5 R6 i4 E
  422. getRange (方法不存在)4 n8 R3 d2 S6 F" K; @+ u
  423. 返回名称为key的string中start至end之间的字符: @( ]% m( c+ }6 T' K, B$ @
  424. $redis->set('key', 'string value');4 U3 b0 |; g  `& Z
  425. $redis->getRange('key', 0, 5);
    7 S# L" W1 N* t  d
  426. $redis->getRange('key', -5, -1);( V) E9 `/ Q/ G+ o
  427. / X3 d9 ^2 ~) t: s0 {+ V6 B
  428. setRange (方法不存在)
    . s6 n: m' [# h
  429. 改变key的string中start至end之间的字符为value6 ~9 U# ^: u/ a4 ]" ?; p1 X
  430. $redis->set('key', 'Hello world');
    ! a- D; x! E+ @/ t( R. C3 ~6 o
  431. $redis->setRange('key', 6, "redis");# h" q/ f# ~8 h8 W1 l6 D4 `: q( L
  432. $redis->get('key');
    : Y3 h+ h$ q0 r' n
  433. $ M- L% }6 K! W1 b5 ~1 Y
  434. strlen
    3 K* n) g0 v7 o% Q7 e: s
  435. 得到key的string的长度% P; `+ x1 H- w3 g
  436. $redis->strlen('key');; O8 e$ C; k8 O; I
  437. " p- B4 O& R# I$ m# a5 w8 n% }% ?
  438. getBit/setBit
    & w$ T; t2 d) }" y
  439. 返回2进制信息+ Q. A- ]' a# ~2 m

  440. - a/ s* \% X' i( i, V, Y6 F8 x* C
  441. zset(sorted set)操作相关
    ) k- H& i0 \; s, t" N
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    ' j7 B: t8 k+ y: E
  443. $redis->zAdd('key', 1, 'val1');
    * Q9 H3 p7 _' O: m
  444. $redis->zAdd('key', 0, 'val0');7 U" A' |( F3 y$ ]3 d9 a' c
  445. $redis->zAdd('key', 5, 'val5');
    ) w. a! v3 H  B3 d5 i
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)3 c$ L+ c- F! v

  447. $ {  R% l  y4 c
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    : M& k! y, j- z' a) K+ J8 ~% ~
  449. $redis->zAdd('key1', 0, 'val0');# F, [+ O) c2 t% R9 v
  450. $redis->zAdd('key1', 2, 'val2');
    % n: v" c5 x" v( x( K
  451. $redis->zAdd('key1', 10, 'val10');( P& F! Z, U/ e) o, i( h
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ( J8 O( e  P( o4 |# P+ K  h

  453. ( q. _4 r$ Y/ `1 R9 r+ Z& ^
  454. zDelete, zRem, r& s0 |& `3 J# O( O5 t
  455. zRem(key, member) :删除名称为key的zset中的元素member. R& N- F* ~. ~6 u( R* |% }2 {6 K' ^2 i
  456. $redis->zAdd('key', 0, 'val0');# u; p( |3 y" P" N. q2 Z2 {, p
  457. $redis->zAdd('key', 2, 'val2');
    , P& z/ k( q! a) @1 S' j8 W% e# @
  458. $redis->zAdd('key', 10, 'val10');+ {4 `4 s* [" ]. n: v4 J, Z
  459. $redis->zDelete('key', 'val2');/ x' b. F& w. u8 ^1 i  o
  460. $redis->zRange('key', 0, -1); 1 j. W, i3 E7 F* k
  461. ' p& s) a0 m7 H2 X5 \
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    ' Q% O* k3 @0 }0 i) O& {& h
  463. $redis->zAdd('key', 0, 'val0');8 Y2 `8 K1 N" Z# A7 G# v5 N& B0 h
  464. $redis->zAdd('key', 2, 'val2');& Y/ G. o2 n& C( X" ~! q
  465. $redis->zAdd('key', 10, 'val10');
    & X9 t8 o: ^! s9 a; S
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    4 v& y* h  F/ a& x, ]8 R
  467. 4 t& u0 U& p% R% T  o" L2 I" I% s/ n
  468. zRangeByScore, zRevRangeByScore
    4 Q( V. ?. L, J: a9 G' Z! L
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    2 z7 R" X6 m% H  ~! l) n+ G
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    " N; k5 J: P6 u& D0 N4 m7 H6 T+ V9 l
  471. 3 z/ o% t' i8 i. o' J4 ]! g
  472. zCount
    $ k% A7 x' w+ q- i; n
  473. $redis->zCount(key, star, end);
    ) v+ }1 E! \$ g$ ~. |& _+ [5 |
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数# B* x- G+ f; N: p

  475. 9 P# [* {2 ^' G* Z1 d0 S! E3 f, \
  476. zRemRangeByScore, zDeleteRangeByScore& t) U. ^! O0 \& O
  477. $redis->zRemRangeByScore('key', star, end);
    ! t; {4 _( e. A- }5 B* C
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    9 v$ L0 Y& a0 r. n' i8 [; Z

  479.   v* @) U; }/ n4 e% p! M  V1 ^
  480. zSize, zCard
    ) j- D1 ~$ h" t9 Q2 S
  481. 返回名称为key的zset的所有元素的个数
    : T/ M. n1 S! W$ d' _* y

  482. 7 Y" s' n% b/ @9 L6 O+ N$ j
  483. zScore
    ' D$ H+ C5 ~0 @7 \4 M
  484. $redis->zScore(key, val2);% ^8 Y0 V' x" H. z' @) ]
  485. 返回名称为key的zset中元素val2的score8 D# `, y2 P. ?7 Y9 r
  486. : k! V0 W  _+ s& T* }
  487. zRank, zRevRank* t2 a% b3 @" `+ e
  488. $redis->zRevRank(key, val);
    . T! ^/ E1 \. D% b/ O/ v: m
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
      C4 j# _7 @; A8 X: q9 _4 f

  490. - X7 z( Y  Y% b1 y1 P: C
  491. zIncrBy5 c$ f! @5 d6 H* i# z8 @
  492. $redis->zIncrBy('key', increment, 'member');
    , b! L5 r# i* i# D0 w3 k* x$ k' M. h
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    # g1 q1 M  `# l4 _( p$ q4 ?5 a3 L8 F

  494. $ ~  s  H/ C& C. n6 F
  495. zUnion/zInter
    # m* r- b9 p1 _+ V$ G) D7 j
  496. 参数* n! V% ^3 }$ T+ z/ O" L; a
  497. keyOutput3 }0 }! S) |: e* _8 P0 ]" M' \
  498. arrayZSetKeys
    9 `9 k0 X5 q4 h3 n# z% U
  499. arrayWeights
    : ?9 N/ P0 R$ X- X, t! m8 m; ?- U
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.% ~: l1 d1 T  G$ @7 a- p: [2 o
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    & |2 Q" R; B2 s' c5 f' A' ?6 C2 M
复制代码
3 V# i; B1 \! D* V5 H) g- z
; s2 a' u* [0 G
/ r! M& n4 J: I* K& L5 X! @& f; ]  [
/ k6 `% G! {* D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 2 u; c/ o! M9 B
  2. //连接redis服务器 6 e% t1 {8 w! m% g
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 10:58 , Processed in 0.088377 second(s), 20 queries .

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