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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php2 k; D; Y4 Q6 ^3 n
  2. $redis = new Redis();  " J5 d& l" L0 _: P7 g, e2 H
  3. $redis->connect('127.0.0.1', 6379);//serverip port5 y, h, L5 f+ T& N& J
  4. $redis->auth('mypassword');//my redis password 1 i+ s2 T- D# j' ^4 T6 C* L9 G
  5. $redis ->set( "test" , "Hello World");  + v3 v$ e& _, m0 X! k7 U( T; P, r! o
  6. echo $redis ->get( "test");# d) T, l9 |/ b/ t9 }( U) }
复制代码
php操作redis函数封装
  1. /**
    / f  e2 C" l* t6 L
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数2 N5 d/ @/ F0 y1 a  B; T) F9 e
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    3 ]1 ]# i( Z; [3 U% n
  4. */) a3 K5 c* a. z7 V+ b3 y( _8 m
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){) ^. l* i3 o8 x5 n& P
  6.     if(!$key||!$value) return false;5 _5 [4 J; J! C' u. {
  7.     $host = $host?$host:getenv('REDIS_HOST');3 \/ m/ _0 B6 a) F# q% X# b" H* L8 `) C
  8.     $port = $port?$port:getenv('REDIS_PORT');; Y- D: M4 H2 K7 w& {
  9.     $redis = new Redis();
    ' u1 [, M" h" L* F
  10.     $redis->connect($host, $port);8 [$ s3 _8 u' ^, O5 `; f# M
  11.     $value = is_array($value)?json_encode($value):$value;
    0 j  V) c1 r% g- s
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);% V8 `. X# |. ?6 F* H# w
  13. }9 F' Q0 e  _2 r
  14. /**. Y* u3 ]9 U6 n& Z
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    6 Z* t5 i+ ^  F* F9 O! h& u3 O% u
  16. */. c0 t# R  q4 g7 D4 N/ z9 Y
  17. function RedisGet($key,$host='',$port=''){
    5 D4 h9 X) B! _  W( K4 N; d- o" n1 d
  18.     $redis = new Redis();! H; [  @; h1 p' v1 P1 M
  19.     $host = $host?$host:getenv('REDIS_HOST');
    6 G6 h- s$ x( J0 F$ D. ~
  20.     $port = $port?$port:getenv('REDIS_PORT');
      }) P1 l' t3 A: U# m- x
  21.     $redis->connect($host, $port);5 t" O2 i/ k% A! h' p# k
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    ; ~5 d  }7 ~9 a
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    9 M/ J! X/ S) T; r
  24. }
      [% G" `" [" P% F- r7 R, X
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
; P0 C  ]6 @+ \. f& |& F
  1. setex 带生存时间的写入值* Z: j4 r8 n, |. A1 N9 ?
  2. $redis->setex('key', 3600, 'value');
      z: B$ U: P, K
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    9 y% |+ |- d) ^/ T5 [% ^
  4. $redis->setnx('key', 'value');
    % o. d  l  c' h# H6 o3 N2 x; n  o
  5. 返回已经删除key
    & ~) H+ m( h) S  g' T
  6. $redis->delete('key1'); 成功返回1失败返回0" L6 c. C; {- L* H  U7 C# i9 d
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    # \) H' R: W9 ]8 U1 y" r8 m( t
  8. 查询生存时间- w# f& \/ {) P) ^
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    , v8 Q1 ?) r/ J) F! v% ~
  10. 同时给多个key赋值,同时设置key0和key17 a+ K3 @  V# m
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));# Y$ g+ d0 R6 a1 g
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    4 K9 [& m* t3 j( z
  13. $redis->incr('key1');
    9 y& N2 z3 N6 R9 R
  14. $redis->incrBy('key1', 10);
    9 n2 D$ V) W6 a, |% Z
  15. 减法跟加法一样
    " u/ F! |1 R. j) g$ m- v! j. e7 D
  16. $redis->decr("key1"); 减少1: B8 k% F/ q8 U
  17. $redis->decrBy("key1",5) 减少5
    3 Z* t( e8 V$ E; q
  18. 6 Q  i# v. G- M
  19. list相关操作,连表操作- S- \) O* f) x) }% C: G! U
  20. lPush2 V) C1 q6 A- E+ }5 s/ `
  21. $redis->lPush("list", "888");2 W" T+ U/ ]* q5 E6 ?* Z  |
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    ) e6 S: j) u! k5 w5 x
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式2 x1 o% F3 k* F: q9 O
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    / V* w) ^4 ~: ^
  25. lPushx/rPushx, R) o  w6 |7 D9 u" u6 J9 N
  26. $redis->lPushx(key, value);
    # Q) U; n! f: G
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加0 O! K3 X/ y' B* P

  28. 8 m8 ]# v1 d0 z
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    : M' A$ R+ r! R. O% q0 W
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    . o4 @5 I+ h% d1 d! G( }" |
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    8 X9 c0 `1 l2 k$ g" _2 `
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序2 H- x: d9 n9 d" n6 I, P
  33. sadd s1 zhangsan
    6 V1 D2 s8 T+ b) ]! H
  34. sadd s1 lisi5 K" M0 |3 Y7 F4 Q/ s
  35. sadd s1 wangwu9 l& k6 \: k) Q& T" q) w4 y+ G
  36. sadd t1 yangxingyi
    7 ]" F* s3 g5 T: |) {6 ]6 \& a! D
  37. sadd t1 lilei
    9 B* S% h  u  u2 a. l5 h7 h0 v
  38. sadd t1 zhangsan
    4 ]+ n: E' @$ ^; k' T8 A- _
  39. smembers s1 s1的所有集合内容) X1 M1 X# D. j( {
  40. sdiff s1 t1 s1有的,t1没有的,差集
    & c$ a, L. G  |7 v; r1 h
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ( k- Y0 Y" E. T# T" F
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    9 n+ L# x' N6 y% l" f
  43. spop抽奖场景,返回集合里面随机的数
    9 Z" k# Z& R9 g' Q
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    7 W+ a, @* I$ f: I' o' j1 l& I/ t' L; y
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数8 y' R+ @% h/ ~; o
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的" x1 {! E3 g+ h0 N  H( U+ X" y( ~8 U
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    ' N$ [4 W9 U) Q4 M2 l6 x
  48. $i = $redis->srandmember('s1');echo $i;
    - C4 B7 ^9 D: M/ U9 j
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    * l; ?# C" D" F9 ?2 q
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    / H, g- ^9 N. P& m: A- ]
  51. $ p/ L2 Y6 i# c/ x8 ]4 V6 ]
  52. zadd key 2 value 有序集合) U, t$ Q% Q) l9 j' _
  53. zadd y1 1 zhangsan;- a+ ?2 I  h6 x6 k2 V5 _0 w5 G& E! ~
  54. zadd y1 3 lisi;
    8 L& E+ f, F" H
  55. zadd y1 2 wangwu;; W2 o: C" _2 C& F5 d+ \" M
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi% j6 D& g) P3 j+ E8 n5 Z% c
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    ! h% Z2 ]7 f  {: C5 G0 ]
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    / w0 F0 Z/ x1 d* r2 D( \0 F
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先' q) ]) i" m; `; d2 c' W* X
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    4 [! c. y( t( h, U% q% ^) Y4 s5 ~7 C
  61. 无序就scard,有序就zcard,有z没有s
    7 J, O4 _$ g) G" u. ]
  62. sInterStore
    3 L( @! k# ]) F6 |8 `9 t
  63. 求交集并将交集保存到output的集合
    8 p3 I1 O( n0 N$ v: [
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    7 P. b, O. A3 J/ ]0 G
  65. ) R+ R( Q( o) v, |1 s8 B
  66. Hash操作) B" v; G) O6 _
  67. hSet
    6 m' J' q, d/ y. e0 V
  68. $redis->hSet('h', 'key1', 'hello');4 [! G: }* Q$ V7 w: _- g" N+ v
  69. 向名称为h的hash中添加元素key1—>hello
    - n' A4 B( N) }$ t8 W
  70. 5 C( ?- @4 `( r! q+ J. X
  71. hGet
    : a) P1 J4 e; A  n2 j
  72. $redis->hGet('h', 'key1');7 k+ M5 J% @5 H
  73. 返回名称为h的hash中key1对应的value(hello)2 O5 A+ V  k5 y" E( M

  74. 2 P' u9 X) S" P+ L6 B6 _
  75. hLen5 o4 k4 D. q' ^) ]5 J8 T' x
  76. $redis->hLen('h');% |9 [3 v7 z& R9 S, {+ L
  77. 返回名称为h的hash中元素个数
    ' n, G6 Q! T4 j# M: O& w! b, _

  78. 5 _( Y9 v# K3 q4 P
  79. hDel) N" X( s+ d9 n9 B0 A
  80. $redis->hDel('h', 'key1');* p- r7 C, F( X3 s- W
  81. 删除名称为h的hash中键为key1的域$ b( Q# ?/ F! P6 e. ~

  82. & U  o! i, O. W1 i0 u
  83. hKeys/ Q9 m; I" r2 }$ {3 I2 L6 N9 |
  84. $redis->hKeys('h');
    ! V( h0 m! T+ c. @
  85. 返回名称为key的hash中所有键
    2 [6 K$ L7 \. S: u0 b& t9 G
  86. " I  d7 F' X7 d( h6 d' z/ [
  87. hVals7 Z! ~! n+ e0 A" P; S
  88. $redis->hVals('h'). l, u. Z" b/ [& Q, t- h
  89. 返回名称为h的hash中所有键对应的value
    7 @+ W: F5 f1 \/ H( H2 V

  90. 4 R$ a9 l+ O" r6 E- ^
  91. hGetAll0 k6 P) R: K4 z7 g4 x7 q& \9 w" r
  92. $redis->hGetAll('h');* N2 b: }( W5 z; b- J, i) g
  93. 返回名称为h的hash中所有的键(field)及其对应的value- g5 D' v% j0 K! m- K0 ~6 T! G5 b" A' E
  94. / j, {; I5 ]$ F) p( k2 E
  95. hExists' l' ]* U- D+ w) d7 w# [4 L8 P
  96. $redis->hExists('h', 'a');. ?  @% c- k9 m. [. r+ e
  97. 名称为h的hash中是否存在键名字为a的域
    . ]3 ?& M3 u2 I

  98. , i4 M% b5 ?& y( }/ ?' h
  99. hIncrBy
    ! A. n  E4 L: `; R4 V
  100. $redis->hIncrBy('h', 'x', 2);
    6 i$ W, U5 M' b4 z" F
  101. 将名称为h的hash中x的value增加2; d3 ]2 @9 ~* h4 b* J& d7 G
  102. 4 K3 r5 R& K7 b- n
  103. hMset
    # j4 r1 D' N! O" ?0 z! O# n- k
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    0 y( V" g7 Z' L0 _9 {% ]: f4 x
  105. 向名称为key的hash中批量添加元素% P2 d$ l: O6 S; V
  106. 0 K% d" l/ b0 E+ Z$ Y- @
  107. hMGet1 T0 \: |. Z4 r1 \3 Q8 H! j( `
  108. $redis->hmGet('h', array('field1', 'field2'));
    % j, O& H7 e; B7 m5 C' a3 o# ]+ `( I: g
  109. 返回名称为h的hash中field1,field2对应的value
    $ G+ F& A1 ~" o, z3 D8 c2 @

  110. 3 W. {2 d, }  O& U0 U. L
  111. redis 操作相关9 D" o! g0 n4 m5 e
  112. flushDB; I5 t! B- ?* }4 P+ C
  113. 清空当前数据库: C; F. g8 L# }! c2 r: ]

  114. . C8 M- c% \9 p; j* X3 @
  115. flushAll
    : o4 ?6 [- W" ^: D  N" s, `# f
  116. 清空所有数据库: ]7 _/ t! L2 R* F7 n, u0 b2 ?$ Q

  117.   k5 _/ o6 Q1 q/ V2 a0 n# x( e
  118. randomKey
    % X! `9 |4 K" Z& w. n
  119. 随机返回key空间的一个key2 W9 k  Q1 J/ y6 N2 f
  120. $key = $redis->randomKey();) D' |/ `6 [8 I8 I, ~0 `
  121. * w2 C, C$ X5 m5 a1 `) F6 S2 P! {
  122. select% X1 c7 [  ^3 i
  123. 选择一个数据库7 |2 D; ]4 V) e" a- Y5 p! s
  124. move9 I3 c& {7 [( F  p8 x- V- Z% d
  125. 转移一个key到另外一个数据库+ k: s, g% _/ p% t6 {, B3 Q: k
  126. $redis->select(0); // switch to DB 0
    % p8 `& e4 O4 G" ^# U( Z! ^
  127. $redis->set('x', '42'); // write 42 to x+ P9 c( T6 e" X7 c
  128. $redis->move('x', 1); // move to DB 1
    3 \+ p& A: ?! Y4 b5 _- s, k( R
  129. $redis->select(1); // switch to DB 11 ?5 {& Z$ U9 S
  130. $redis->get('x'); // will return 42! }6 s* t2 A1 X$ q+ X2 \" e

  131. # ?$ j" w, |, k
  132. rename, renameKey
    7 v) n% [6 |9 M. \
  133. 给key重命名, t9 e1 b. z$ R4 @. K6 y7 G, [
  134. $redis->set('x', '42');; A3 l% V' x- @6 }
  135. $redis->rename('x', 'y');1 d1 ?9 o( D. {* w! Z7 Q  N0 ~) a
  136. $redis->get('y'); // → 42
    ) M+ s$ ]! o! c
  137. $redis->get('x'); // → `FALSE`2 K% }% j, i/ s

  138. * w/ V- F. I( d( o
  139. renameNx! T" X3 D! `! O& c/ P# A1 r
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功( a, {$ D$ G3 ]$ p3 e

  141. 7 V0 y, w: m0 W. ?2 i. t  K4 `$ \9 g
  142. setTimeout, expire
    4 Q5 B/ {$ O5 e% B1 \. `+ e
  143. 设定一个key的活动时间(s)/ C) K* W2 O: d! V4 z* Y
  144. $redis->setTimeout('x', 3);/ O4 n" Y. _; h# \

  145. 7 M* i8 G) N  z. f
  146. expireAt2 M- |7 m  Y/ p) v* Q
  147. key存活到一个unix时间戳时间
    5 y) P7 A. u2 u+ @
  148. $redis->expireAt('x', time() + 3);
    : b9 n5 b, k# K' J! Y; x

  149. % r8 }5 X6 Y6 [6 j3 t" C7 N7 C
  150. keys, getKeys
    5 u/ I; M  s$ h" Y( F  P
  151. 返回满足给定pattern的所有key7 x( H& W* `' }( N9 ^
  152. $keyWithUserPrefix = $redis->keys('user*');7 v+ I0 e% |  H- M5 e

  153. 1 s3 w. |- @" O" j  d
  154. dbSize9 q; D0 c- B  F) O
  155. 查看现在数据库有多少key  K( f) l% i4 ?! |5 ?* n
  156. $count = $redis->dbSize();
    # [+ s0 U/ l9 X  ], d: f, a
  157. 1 @( X" \5 {( _. ~# P
  158. auth
    2 T- o5 c& N% R
  159. 密码认证
    * H; d  i: Q: q3 J; y/ @
  160. $redis->auth('foobared');
    2 Z( L0 f! v+ N2 R+ p

  161. $ Q1 @1 f% n  M/ W/ h
  162. bgrewriteaof5 i! ?/ f" Y4 O, C# Z  @, r  C' t
  163. 使用aof来进行数据库持久化
    ) m9 K# m! A& U2 y1 H
  164. $redis->bgrewriteaof();
    & f- `3 o% d9 }/ H1 [& a! Z
  165. ' k! K7 c9 g1 A& I+ ~9 N
  166. slaveof2 k9 p' @4 K2 L
  167. 选择从服务器
    / u2 ~" [% X6 a" F5 C. y
  168. $redis->slaveof('10.0.1.7', 6379);( @% O  ~' a# y7 _0 Y

  169. # I/ X4 `  J# v5 m9 k4 W8 g, Z
  170. save
    8 U' U7 o" r" U0 f0 \2 s
  171. 将数据同步保存到磁盘
    4 f) h1 L6 q+ J5 Q$ |( A% f' F

  172. ; F: s* F8 k6 y3 v
  173. bgsave
    5 u9 {/ F6 n) A" y
  174. 将数据异步保存到磁盘
    : u, t& J3 W- h" {$ X8 A
  175. 7 c7 T% v# A1 [3 [* j8 Q, o: t7 X9 z6 h+ Q1 A
  176. lastSave
    - U9 O) r: U- D( v, Z
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    8 v* n; m. r* b$ O: A# U0 Z: @  D7 W
  178. - Z* ]. C4 z1 k" T
  179. info, c  z) i  X) p, [) M- U& I, K
  180. 返回redis的版本信息等详情, G- m) I. N8 Q' b3 Z$ q' H

  181. 0 ^  O7 j$ I( U
  182. Redis::__construct构造函数' [* t/ j1 S: ~4 x$ }
  183. $redis = new Redis();
    ( }5 Z. p$ Y& o
  184. 5 _) [0 N5 R. |( C
  185. connect, open 链接redis服务& Q2 u  _  ~) |, m& U2 s, Z
  186. 参数" |4 u, ^/ }" ]  K; \
  187. host: string,服务地址: m" C3 Z" G. g9 S+ p2 s2 v/ j
  188. port: int,端口号, w3 }+ @" i$ h5 k4 M- w3 ^! S
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    8 F3 x9 b4 Q7 e( K6 H$ ^
  190. 注: 在redis.conf中也有时间,默认为300- s6 l. Q5 Y) i# A! [! }2 b
  191. 5 G8 N. B. v) R" M) J! a+ O  j* l
  192. pconnect, popen 不会主动关闭的链接
    / ~3 X% Y2 f' z
  193. 参考上面
    , d' n( a% d( i9 i# M# f. L/ e

  194. 5 k' @9 }! u4 n. y" e2 t
  195. setOption 设置redis模式
    / K5 X: u8 T1 |* ~( R8 f

  196. " P2 D) Z) O/ T# ]. t
  197. getOption 查看redis设置的模式. q5 q* y1 W/ \" K. u

  198. 0 P* E5 p9 b2 ]' f% ]; S4 X
  199. ping 查看连接状态7 N) |- m) _7 R' A, Z
  200. 3 K- J2 T" @: M1 @. }
  201. get 得到某个key的值(string值)
    , G( V. c( z+ N/ C( E5 _9 y
  202. 如果该key不存在,return false
    0 t3 O% w; Z% y
  203. ; P& p8 L# W+ N7 k7 [$ |
  204. set 写入key 和 value(string值)' S( n. w2 @* `& P& @8 i
  205. 如果写入成功,return ture7 A0 I% M/ ^8 a5 `2 L$ h& {) `

  206.   Z- ?& {4 ^/ d! [9 P8 o
  207. setex 带生存时间的写入值) d# P5 B! y) h0 p& e
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.3 A7 g* \, ~/ b! A8 c, G
  209. * G# h1 j4 E/ |( ^, w, }0 [
  210. setnx 判断是否重复的,写入值0 J2 z* }' \+ W# f2 {0 G& G" P
  211. $redis->setnx('key', 'value');
    9 a! I. r( r# ?! u$ e3 V
  212. $redis->setnx('key', 'value');& i+ |5 W* P/ J- A3 t
  213. 5 C! j- _. C( Z
  214. delete  删除指定key的值! T) O+ ~" _1 W: T! d7 N
  215. 返回已经删除key的个数(长整数)
    & E9 l' x1 m" f# ]$ i: w3 z
  216. $redis->delete('key1', 'key2');
    2 X0 A2 a! e% x( x- @" X
  217. $redis->delete(array('key3', 'key4', 'key5'));8 d; f+ _. @1 K- y: U
  218. 3 M8 h# u; `' z( v2 j9 [2 p
  219. ttl
    8 @: g9 C# _0 }4 A. ?! b6 [- j7 }
  220. 得到一个key的生存时间
    - }, }, _* o5 i, o
  221. # J- H: z! H2 f
  222. persist3 p8 v+ M" T3 Z- o. f; K# E
  223. 移除生存时间到期的key$ F6 |; q3 q, D: L$ Z8 e; G5 z
  224. 如果key到期 true 如果不到期 false
    , X  \% h% F8 H$ _8 E
  225. , Y) a# _1 Y* \! P, p
  226. mset (redis版本1.1以上才可以用)0 p: u" S8 V5 O8 @
  227. 同时给多个key赋值
    & m: d# _/ M( o, m- c+ X& S( G4 g5 E
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));4 x8 w2 w9 Q0 r1 N6 |# G7 q) |
  229. 3 t! ]) z& i" z! f! w# a$ o

  230. , e5 ~! O% V& D, j; z; U
  231. + B4 H6 o5 D% v  z8 c# `
  232. multi, exec, discard1 P. @0 z4 j! m  \, n- ^
  233. 进入或者退出事务模式  H; ^5 v* r/ v2 H) a( l, U
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
      I* e+ }$ |, h
  235. Redis::MULTI:将多个操作当成一个事务执行
    3 n" x( C, p) H, M
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证) |$ v; g5 f0 I/ a6 h0 ^# g
  237. discard:删除一个事务
    ( {5 U" \8 E: O$ O
  238. 返回值
    - L7 J2 o" k/ W
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
      |: d7 B5 M6 i/ K
  240. * b- d; E9 T6 a5 M
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    5 u+ ~! p8 p2 O% `( v5 Q
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    : A) K! t0 g6 l; J
  243. unwatch  取消被这个程序监测的所有key6 H7 W' z) v  `7 a
  244. 参数,一对key的列表
    ( r, M) c7 b- e" e! ?
  245. $redis->watch('x');' Y) f4 ]% d! s: c6 j$ C7 `

  246. % _! P! N) F  q2 p& j3 e% v) r  s/ z" D
  247. $ret = $redis->multi() ->incr('x') ->exec();
    " D" l! E  K+ I
  248. 2 t. z+ q. ]  a

  249. 0 J9 F3 z, v1 y
  250. subscribe *
    : y  V4 f. N) F6 ]! L
  251. 方法回调。注意,该方法可能在未来里发生改变
    9 b% Y0 T: Z, @  N: q9 L- E2 @6 {: K
  252. # w% B% q# o  d- j
  253. publish *7 i" s! w* m5 S6 u+ _9 h
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    5 {) t7 i$ R& w$ L8 h
  255. , s3 I( y3 x. K, t
  256. exists6 z" u# j8 s9 }- K% i& g" \
  257. 判断key是否存在。存在 true 不在 false( q  l" u$ S& @, |3 e2 P5 L

  258. ( _$ b. }/ q; C/ |: r- G  [' L; P
  259. incr, incrBy- L9 u* c# ]. u7 }7 v
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值3 K8 l& f$ h  f. c
  261. $redis->incr('key1');
    $ E1 \  L% t( {. m; d) |
  262. $redis->incrBy('key1', 10);
    : H" p: I4 ?# X

  263. 4 d7 K/ U7 y! |" V3 y4 ?& V& s7 W
  264. decr, decrBy
    - A6 L1 P. M& c
  265. 做减法,使用方法同incr) M" u  U9 w1 x" \, V5 H& V" R% e$ e
  266. , j6 r( _; {% Y
  267. getMultiple
    - p. Y5 y* K, J& J: W4 k& E
  268. 传参7 {3 |( t$ l; b3 `/ }
  269. 由key组成的数组: S" z+ U5 m1 a6 Z
  270. 返回参数
    # }' t: R! U1 b) x$ f6 t, L
  271. 如果key存在返回value,不存在返回false) N2 b0 D- x% {' L- s
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));* e% I' \# i- D& J+ y
  273. $redis->lRem('key1', 'A', 2);+ `: b0 B' F  z; G$ C% Y- a* k
  274. $redis->lRange('key1', 0, -1);4 c: L! U$ [4 a$ O! Z, ?/ [& U
  275. 9 x) }6 T( m, f: H0 o$ b
  276. list相关操作5 ?% g; z& i" u& g+ y
  277. lPush/ W9 V9 \. d" m, J2 r6 V7 A
  278. $redis->lPush(key, value);# @6 m5 M5 X( l2 ]- g" X
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    ' r4 b/ L+ _, n8 q1 s% }: c

  280. ' W9 ]8 k' {0 f
  281. rPush
    4 [) }2 y6 L2 B2 w0 v/ @
  282. $redis->rPush(key, value);2 N7 e7 [+ _6 V2 p
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    : t. E- C9 b, g

  284. . e5 L4 }9 {" a2 _
  285. lPushx/rPushx
    6 ~8 \" M4 m& z" x
  286. $redis->lPushx(key, value);
    ! P8 M# P" C4 T8 E1 P5 w) G
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加" F% {/ I: m7 c- @2 ?$ @
  288. - J9 p6 Y! F2 a
  289. lPop/rPop
    6 h, O8 s0 L9 }$ H  {3 P9 E
  290. $redis->lPop('key');
    9 R1 [$ u$ [1 l1 ^: M2 F
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素' {8 J7 _2 t' _

  292. 5 H3 Z1 q* a6 G) ]
  293. blPop/brPop! q! _! l4 N+ d$ d9 {& U, J/ O+ f
  294. $redis->blPop('key1', 'key2', 10);' e- o; e' Z2 `9 K
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作2 a, c) B3 {; J$ x$ n
  296. $ ~1 R$ f# Q) a) @: g$ B9 {8 a0 b, R
  297. lSize
    ! g+ d3 ]. o, v/ U, e
  298. $redis->lSize('key');
    % i6 ?2 q/ z/ l8 }
  299. 返回名称为key的list有多少个元素
    ) J9 Z. @$ \. g' S* U! {2 B3 L

  300. ! k8 b0 v* `. ?2 k, E& N5 d7 z
  301. lIndex, lGet6 k# p6 u* Y1 ]2 Z: X8 I
  302. $redis->lGet('key', 0);
    ! R0 S, e! u5 O: D! V% o' R
  303. 返回名称为key的list中index位置的元素5 i" j8 Y% E$ [/ ?& V
  304. 4 a/ G8 x$ g9 x9 B% \1 i* ]2 R
  305. lSet* o7 p% k/ m0 k: |6 Q9 E6 b$ r
  306. $redis->lSet('key', 0, 'X');1 ~/ Y/ }) A5 \" ~* ?
  307. 给名称为key的list中index位置的元素赋值为value2 k) x- D( T! H

  308. & [! {# V; `3 @- G. p: q
  309. lRange, lGetRange
    + Z. k" ~8 }, l5 ]
  310. $redis->lRange('key1', 0, -1);- b) ?/ a$ ~- |
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    ! f& ?2 b! q# W% H* @- {% b6 w
  312. 6 x2 l$ N7 Q2 }7 r4 j# p
  313. lTrim, listTrim
    6 S( W5 D. ^2 P: t
  314. $redis->lTrim('key', start, end);: e1 S1 `* V/ r
  315. 截取名称为key的list,保留start至end之间的元素% p! q. U+ k& ~$ T+ t% b7 J+ ~0 D  B
  316. 0 ]- i4 m3 h  J' |8 A" Z% N6 n
  317. lRem, lRemove8 k' F8 v, `7 c7 U6 W, u% }
  318. $redis->lRem('key', 'A', 2);
    - r4 ]# N5 W6 ?  v1 N+ D/ O
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ( s- y# d) M+ r

  320. * x$ z2 M: Z2 i3 F& w6 o
  321. lInsert
    $ t) A  \9 K2 p* X/ V, A
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    4 U! W! F$ B$ |
  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');) r. f" B5 u8 Z$ z
  324. $redis->lRange('key1', 0, -1);$ J6 p3 f  \4 Y' [" J7 \2 v( B4 V* |
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    , `- h  M3 o" A
  326. $redis->lRange('key1', 0, -1);
    $ ^% m( ~: X5 x5 o( C
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    : Y: I- K6 |$ X/ I' Z( \
  328. / X' H3 p8 X- O0 v9 Q6 @# l* q, q/ h
  329. rpoplpush
    - r. Z4 K9 u. C9 n1 r
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部' L0 N& Z% v$ A
  331. $redis->delete('x', 'y');( Q4 o( v2 C$ ^: j
  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'));
    ( G0 ], G# q; H/ m, \( ^! ?
  333. var_dump($redis->lRange('x', 0, -1));1 T9 P' @* \- I. h
  334. var_dump($redis->lRange('y', 0, -1));
    : D7 H, G0 v, a; N9 B0 N6 w

  335. ; X- N  p4 u, \( g. D3 G
  336. string(3) "abc"   E/ T, v5 i9 x7 u
  337. array(1) { [0]=> string(3) "def" }
    0 u( g' ?7 J: ]# {; L3 c5 E. \
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
      E" }4 ]$ B2 D0 n
  339. + w& c3 ]% D  f9 w4 V1 I
  340. SET操作相关' A0 c4 M: D, s% r* C
  341. sAdd
    : X0 t% F6 `# h& R* s
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    + j' r' @1 ]) `' {; M+ b. x/ i* A
  343. $redis->sAdd(key , value);9 P: N  [; p& g. C5 D
  344. & n0 V5 p5 r" o+ U6 @
  345. sRem, sRemove$ o3 y- x2 w8 O( P
  346. 删除名称为key的set中的元素value
    . n' [0 s% h. Z; l4 |* H. h3 p
  347. $redis->sAdd('key1' , 'set1');" t( P) ~2 R) W- S3 e
  348. $redis->sAdd('key1' , 'set2');5 ^, a2 c( L' a6 A7 u' E4 R
  349. $redis->sAdd('key1' , 'set3');6 q  [( h, I. y5 Z) d8 J; O
  350. $redis->sRem('key1', 'set2');2 t9 \4 s7 |6 g7 y( w9 s8 c

  351. 3 Q6 E- I# D% s  G
  352. sMove
    ( R2 `2 i/ \! ]+ \0 F
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    ( v! o1 z) A" G% S9 {/ U5 b
  354. $redis->sMove(seckey, dstkey, value);
    - X, Y2 W# l' b9 E+ l
  355. & s$ x  n+ [+ g- ?4 U
  356. sIsMember, sContains
    5 e! u8 y' P+ T5 s/ U* O
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false4 E7 H. P1 H" l/ P* z
  358. $redis->sIsMember(key, value);
    ) k: A  L1 |9 H5 ~9 M  G2 z2 c

  359. 4 G. e& [! }' X
  360. sCard, sSize4 |) f7 v3 H$ n& j/ K8 E, C% i
  361. 返回名称为key的set的元素个数( U% ?( l- a) c1 v4 @

  362. 0 [- c4 P' V9 n2 Z1 ?. b/ d
  363. sPop; j6 i7 m/ \! ?0 R2 d, |7 I% W
  364. 随机返回并删除名称为key的set中一个元素
    8 Q3 u) O, `$ i! _; U3 D8 t* N1 L/ O

  365. $ y& h5 m1 V; p2 d% u9 D% G
  366. sRandMember; U2 H3 z+ q  g# s3 y
  367. 随机返回名称为key的set中一个元素,不删除
    ' Q" m) z, Q1 s7 W! s
  368. . _" x- A4 A  R! U8 N" m
  369. sInter
    % t3 C) o0 X, i' _9 p9 a
  370. 求交集
    , k* H4 e5 w( V$ e# l3 o7 E+ f8 i$ c

  371. # Z7 n0 _- Z/ N# P( D; ^: P. A
  372. sInterStore
      e& U) L$ Z5 V/ J0 K/ q6 D* @
  373. 求交集并将交集保存到output的集合* J# t* |. r; ^# C9 e
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    $ N- F  B8 S4 V+ S8 q& o) Z7 |! D

  375. + m' [3 f3 y) Y4 Y9 a, b' e- T" ]) F% V
  376. sUnion
    1 d7 y) m! O' G+ r4 P7 j
  377. 求并集
    ( T, P; e% `; y- Z' z& H9 f% J  t
  378. $redis->sUnion('s0', 's1', 's2');
    % a7 B, k0 M2 @3 X
  379. s0,s1,s2 同时求并集. d" R5 e/ r+ J0 D. ~

  380. 6 `% G4 R: S5 |
  381. sUnionStore
    3 }8 l! v# Z! b
  382. 求并集并将并集保存到output的集合, y1 d% _* o# r: |( A/ C- X- N
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    ) ~+ H6 _  e) U6 J* a! j3 R2 Z$ j
  384. 5 s) F" ?6 f5 _$ C; D2 C( C
  385. sDiff
    . o4 N6 o3 f) J8 x0 b# ~& g4 T' I
  386. 求差集
    7 a) z( u! I- c7 }$ e" p
  387. $ c% O2 k" Y* q4 ]# ?# {5 H% s
  388. sDiffStore
    6 ^0 ^! E4 a4 v# P* `
  389. 求差集并将差集保存到output的集合
    ! Y  o- [5 s" |, K6 G6 g
  390. - U& @  a. ?3 V4 E" q3 w
  391. sMembers, sGetMembers7 w  R5 S! R2 E% t9 g
  392. 返回名称为key的set的所有元素* N1 Y% w$ P* v# F
  393. 1 `) O1 F4 w! I$ Y5 o, T
  394. sort
    # N% S' k! `/ d8 d6 \
  395. 排序,分页等6 R1 H3 r& s0 m$ _9 u
  396. 参数
    ; w% j" m- s" h1 J
  397. 'by' => 'some_pattern_*',
    ) t( ?0 K2 Z% r) ]; p; e1 N  f
  398. 'limit' => array(0, 1),
    0 [, |/ U  p  P7 v
  399. 'get' => 'some_other_pattern_*' or an array of patterns," q' G( t* Q, X6 q/ }% C0 h5 ?4 i
  400. 'sort' => 'asc' or 'desc',$ V" F+ L$ J. x& }; M1 _3 @* ?
  401. 'alpha' => TRUE,: a( f8 }: w5 x; A9 P! v4 V# q
  402. 'store' => 'external-key'/ I) |2 x; o( I
  403. 例子
    ( B" N. ]% b) W! N3 g+ P; L' i& U
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);0 N! }4 `, H7 u  \# `3 m
  405. var_dump($redis->sort('s')); // 1,2,3,4,5( e) N1 b$ l- P, M. _# ~
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1* j+ r# r9 ^  C6 C( u/ O% E
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5* {/ F" F' F# p# z+ h3 a

  408. 0 L7 l' _$ T/ h& U! A' G
  409. string命令# V% J0 l9 J/ C
  410. getSet' Q" ^2 |+ l. r  G: g* U. P9 K  [
  411. 返回原来key中的值,并将value写入key3 e9 \! L6 Y/ f% X) H
  412. $redis->set('x', '42');
    5 H" h/ T7 A2 N5 p; K, c# ]0 H
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'. m  V" J" Z: N4 T% X" d4 E
  414. $newValue = $redis->get('x')' // return 'lol': L. e, L! \/ h; K# c! e

  415. - ~7 O0 g: M" ?- d
  416. append
    % n& x7 f4 `7 y" w/ P  v* l$ Z
  417. string,名称为key的string的值在后面加上value
    ( c: [$ E1 c& c0 \/ b' S
  418. $redis->set('key', 'value1');! H' B% }' i! }5 b3 x
  419. $redis->append('key', 'value2');
    ) w+ t5 }2 X3 h5 X$ T; l0 T( l
  420. $redis->get('key');- h; o& a% c3 s( o
  421. , L' [" r) K. I, }
  422. getRange (方法不存在)7 z) r( v0 M+ |: g
  423. 返回名称为key的string中start至end之间的字符/ w0 Y; k! H0 F" Y" ]" s1 ]3 u! [
  424. $redis->set('key', 'string value');
    ' k! o2 A9 e9 `7 ]/ ]
  425. $redis->getRange('key', 0, 5);
    ) w8 Q/ `# I' {
  426. $redis->getRange('key', -5, -1);3 [) O  z- G; o# Y
  427. 3 i6 W; H4 l6 B4 ?* X! Y
  428. setRange (方法不存在)- B) E& U0 f: d' n9 E% S8 p2 O- h" \
  429. 改变key的string中start至end之间的字符为value) _& @4 E: p- K. ?4 Z
  430. $redis->set('key', 'Hello world');
    . S. L+ @- [' B/ ^1 H
  431. $redis->setRange('key', 6, "redis");
    + I7 e6 c( s+ C
  432. $redis->get('key');
    * P- g' z) b( ?; T5 g

  433. 9 z( E  I' ~3 D4 k1 R
  434. strlen
    ! J; b8 K2 @: E, ^1 t8 ^
  435. 得到key的string的长度
    $ l/ |  a9 [$ l3 a8 b
  436. $redis->strlen('key');6 B% s) \# i# g' F, O

  437. # I0 L! O/ f3 n6 o) B* }
  438. getBit/setBit0 z6 J6 v. Y0 @: l6 r
  439. 返回2进制信息
    6 R+ ]1 H- X6 X5 `5 u6 u7 v5 R
  440. 6 H/ W7 u  `# ^
  441. zset(sorted set)操作相关
    ) w, G6 [& N3 K6 y
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。5 L# p0 g; ]0 I( F5 Q
  443. $redis->zAdd('key', 1, 'val1');7 `# ?& U2 f  o! x/ L6 z5 P# F* t
  444. $redis->zAdd('key', 0, 'val0');
    / Y$ T0 m1 Z1 q- n$ W: r
  445. $redis->zAdd('key', 5, 'val5');# c+ ?( P8 m$ o0 ~% o
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    & ]- U1 h$ \) e" e

  447. 1 y" ~" L3 q- ?+ F
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    6 C2 X; J; c* j: {- X) z
  449. $redis->zAdd('key1', 0, 'val0');
    ' S- ^5 A4 Y  I0 c- [  G
  450. $redis->zAdd('key1', 2, 'val2');2 K) i6 P. ^- m5 ]: R
  451. $redis->zAdd('key1', 10, 'val10');! |* Y/ X4 f1 a( c0 g
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    2 b/ H- B& P/ F6 S; i

  453. ( A0 l: D  K" c/ `( J$ f
  454. zDelete, zRem, ?4 g1 l6 W% u: J, ^$ o
  455. zRem(key, member) :删除名称为key的zset中的元素member  D" @& R4 M  H
  456. $redis->zAdd('key', 0, 'val0');, t& y! u1 j7 D- r3 O1 R# j: n
  457. $redis->zAdd('key', 2, 'val2');
    ' r0 o" N/ n) p
  458. $redis->zAdd('key', 10, 'val10');3 y' \$ t9 v( P/ b
  459. $redis->zDelete('key', 'val2');: L; Y. i6 i5 }1 B' i3 n; l
  460. $redis->zRange('key', 0, -1);
    / J, x; {; u6 m4 w

  461. 5 b# n$ ]' h5 f$ L1 W
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出  E% C$ w) U) d+ s- M0 Z
  463. $redis->zAdd('key', 0, 'val0');
    $ D9 j1 ]' b) c- D" B2 \
  464. $redis->zAdd('key', 2, 'val2');4 |$ }  B7 C; o3 ]/ \% `
  465. $redis->zAdd('key', 10, 'val10');* n* ~* `$ g) i
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);- b9 N0 }: h" W1 o6 S

  467. ' W2 F$ v, u+ U, c* @8 T9 Y! B
  468. zRangeByScore, zRevRangeByScore
    5 ]" t: N! B' A- z* k6 \
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    / [$ L5 C+ `( G# M8 d
  470. 返回名称为key的zset中score >= star且score <= end的所有元素3 C; z: d) Y: y% L+ ]( M' k- f

  471. + z, a! d4 P2 l- b/ j6 o( b  C5 D
  472. zCount& n3 F5 S. Q6 W
  473. $redis->zCount(key, star, end);' y: r$ _9 Q! w; n  S4 s
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    : }+ b% I1 U6 p) c4 k2 b

  475. $ J& i0 a- Q: s% \& Z6 _
  476. zRemRangeByScore, zDeleteRangeByScore
    4 G; S" H# x0 ^' L9 G1 y( y5 Z
  477. $redis->zRemRangeByScore('key', star, end);1 F$ [, Q; i" c4 J2 n5 {6 m
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    0 a; e6 Y9 W  B$ \
  479. / g3 o! K6 h) v( s+ {* u9 s
  480. zSize, zCard1 ]4 a. @5 ]  b" s2 h
  481. 返回名称为key的zset的所有元素的个数( @& [, Y& A  P) a2 r  \4 n- Y
  482. . {! g: ?- n0 E+ F
  483. zScore6 b; E" E1 a& G2 s, |7 B9 F
  484. $redis->zScore(key, val2);
    . {4 _" {8 X" Z" W; g" `% x
  485. 返回名称为key的zset中元素val2的score0 l: i5 @( |# T1 s
  486. ' E' s: [* u) E% ?3 F
  487. zRank, zRevRank! A  R* b3 w* o2 k1 ~  M
  488. $redis->zRevRank(key, val);( r) q7 A7 }) I! P3 I/ C$ \& l
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    . }5 o9 ?! \. \# @7 g( l; s# Y- |
  490. & i  S- U9 A6 p1 v
  491. zIncrBy
    0 A7 o( v+ ^0 p* R. ^1 G
  492. $redis->zIncrBy('key', increment, 'member');& W. S9 d1 S/ z  E: @- n
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment" X. U  R6 L: _2 D' e9 C
  494. ; H' K$ X  T- v( L2 G% {) C
  495. zUnion/zInter
    : [8 U7 m& \8 _! S9 W/ q9 U
  496. 参数
    % w( v7 x* O5 x+ {
  497. keyOutput5 ?" @( l$ {/ g& t2 m8 s
  498. arrayZSetKeys% s" G+ E7 P6 `$ t: P
  499. arrayWeights. o8 Y) f- Y( z  t( }8 w4 w
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    ; F. o+ w& ?3 K/ m
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。( L4 ]: `% a# h+ t% @
复制代码

$ ^" x$ Z: {" `, k% `( c# I
, {5 z, y; K! F2 {9 S& E8 Q* u- G6 T9 y- l7 o2 j" \

; T# w  M( F5 K8 N& {! h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
      X& M" Q0 M. ^1 }- H
  2. //连接redis服务器
    6 G$ ^7 X" |) E+ x1 o" x- N
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-4-30 19:56 , Processed in 0.065063 second(s), 19 queries .

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