cncml手绘网

标题: php操作redis大全 [打印本页]

作者: admin    时间: 2019-11-26 16:58
标题: php操作redis大全
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    . L3 [/ H% t: w5 T2 @1 L
  2. $redis = new Redis();  
    + J% ~) U1 c6 f& {* R
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    * n2 G( ?5 v+ ]# }
  4. $redis->auth('mypassword');//my redis password
    2 ^+ D- g, x7 r. ?7 i, t
  5. $redis ->set( "test" , "Hello World");  
    5 m7 h( Y+ e% g; k& n& R6 Q0 r
  6. echo $redis ->get( "test");
    8 B$ h( k7 ~' i3 u; v! q% E! ?
复制代码
php操作redis函数封装
  1. /**: V' k# N2 v. ?/ o* j$ [
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数, j% h5 m* q# i+ T2 G2 p( R
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi% _) w" b& I& J- s
  4. */+ Q* i& j2 d7 t5 Z8 }% {
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    * I- L6 z6 o0 K) G
  6.     if(!$key||!$value) return false;' H, S, r- E; Q2 ?" K
  7.     $host = $host?$host:getenv('REDIS_HOST');+ [; T* V6 m2 y0 m7 ^' i. z' o
  8.     $port = $port?$port:getenv('REDIS_PORT');, Q* Y" J, k8 ?& O
  9.     $redis = new Redis();( N7 C+ T) r, G
  10.     $redis->connect($host, $port);* g/ N1 k" f7 t
  11.     $value = is_array($value)?json_encode($value):$value;
    . [$ ^  k( t0 K. `7 F; T- ~
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    6 y) W" G7 e% R  k( U# }
  13. }
    " Q- X) _5 U" v, B
  14. /**: v+ A  ^' ?2 ]6 i* G5 v! |' ]
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi( E- \+ d- @4 S" u' |1 C( o0 P4 Q
  16. */
    ! |0 C6 e7 @/ ]0 Q* k+ ?
  17. function RedisGet($key,$host='',$port=''){) z- X9 W' t* m! t
  18.     $redis = new Redis();
    / x) v9 W9 z) H( Y0 Z: I
  19.     $host = $host?$host:getenv('REDIS_HOST');7 a+ ~8 a7 e( X7 \. w( ~* H% Z
  20.     $port = $port?$port:getenv('REDIS_PORT');# g9 ^% I! `+ A/ }( _# C+ n
  21.     $redis->connect($host, $port);
    & a2 y6 ~! J7 J4 s1 Q% \4 e& k: B
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    : `5 @9 j  c! N
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);4 o4 y  J/ W9 L9 w$ h
  24. }
    / @; L% {& p& N
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了1 J, A  D2 I/ _
  1. setex 带生存时间的写入值
    ; l8 L! n  t! h. a1 p7 v
  2. $redis->setex('key', 3600, 'value');
    2 Z6 V$ S+ i% F) B5 y
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    . O  p4 ^* z5 ]6 |3 S7 e
  4. $redis->setnx('key', 'value');
    # u9 @7 V8 x" |8 P: G! Y0 ^* b0 Q
  5. 返回已经删除key
    6 Q; [! E7 W) l0 Z4 n
  6. $redis->delete('key1'); 成功返回1失败返回0
    - Y1 d0 O% T4 }! T
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回01 P; r: D# k3 S2 X1 {& h
  8. 查询生存时间
    , u" S- V5 r* ^, x+ f4 y) v4 }
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    ! Q; |+ R- t7 B
  10. 同时给多个key赋值,同时设置key0和key1
    ( x1 e8 d; P. R* P2 n/ `3 S
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));6 V) r0 W0 Y7 Y$ Q8 [
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ) z4 a3 H! W9 N  L' f6 R
  13. $redis->incr('key1');
    9 e1 l: e( G/ X6 F8 H1 I9 Z& \
  14. $redis->incrBy('key1', 10);- R2 t- F) G# H5 J: U
  15. 减法跟加法一样/ ?' N& V6 M3 L
  16. $redis->decr("key1"); 减少1& b: X; i* N- Q
  17. $redis->decrBy("key1",5) 减少59 @8 J2 f& `4 K" O2 e& F7 _

  18. 1 k" D1 a  b# u, a5 w3 p
  19. list相关操作,连表操作
    7 J; Z2 a5 Z+ A4 J/ k  x
  20. lPush
    + @9 o7 w. S! a  T$ K3 }
  21. $redis->lPush("list", "888");
    $ N$ @5 ^# \4 U. s+ _
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数) _9 [5 H: j0 P+ D
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    7 W9 ~3 M9 e" L6 n1 y4 o! R
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素! l7 m4 m6 a& D3 S' R
  25. lPushx/rPushx
    ! ?( w/ [- a, W3 m
  26. $redis->lPushx(key, value);
    * M  D1 |; M4 `1 M+ X) ^: O; w
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    2 R( {/ M& P# o7 V1 F* n

  28. % n7 O3 c  g- [
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key4 O- T* {  L. T" q0 P% C
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key$ F5 E2 k0 b' ?+ }0 r8 M8 G1 f9 L
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    ( n# l+ Y& M6 i2 x5 z. P
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序4 }, t7 {. ?% \2 Q8 u
  33. sadd s1 zhangsan
    7 b( {9 ~0 `$ H3 @* s" s
  34. sadd s1 lisi( ^( h+ N6 e# c; h3 f& Y* E
  35. sadd s1 wangwu
    ' I0 Z/ L+ q1 s& m! ]7 h
  36. sadd t1 yangxingyi9 d, h9 w: t; w
  37. sadd t1 lilei
      r0 q( N) F: d" T1 P0 K$ j
  38. sadd t1 zhangsan
    + E7 v+ W4 B+ v5 c, ]6 y5 d
  39. smembers s1 s1的所有集合内容  v: e5 X; b$ ]9 V9 O
  40. sdiff s1 t1 s1有的,t1没有的,差集& N# P. ]# r  S
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ) s+ W2 R) W4 @8 N* c" I1 ]
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    : w) c8 M. ~2 |; l" L9 S
  43. spop抽奖场景,返回集合里面随机的数
    1 r: U) G+ q" S9 p
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了6 f" l" e' l; V0 d! a9 T3 _
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    9 h" z8 W% m2 V. E8 H
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    ) r- L6 ^" t6 @
  47. 随机返回集合里面的一个元素,但不删除,重复中奖; K0 @$ H$ T+ u6 }: T9 O4 }  A- s
  48. $i = $redis->srandmember('s1');echo $i;
    4 |3 R, s8 x: k3 V  |& L
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false# X- Z5 ~" m' t4 W
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false2 Z# e+ j9 ~/ ~+ b. F, Y% w/ G
  51. ) ]9 X: l1 L( [7 j" F6 d; f
  52. zadd key 2 value 有序集合+ i6 l$ Z( g. V0 R
  53. zadd y1 1 zhangsan;4 C6 Q0 ~# c0 ?
  54. zadd y1 3 lisi;0 r9 U, N+ z; y, T1 F8 r, P
  55. zadd y1 2 wangwu;9 P7 d5 [/ P. A1 ~8 P  g
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi/ ~6 c% A# `. y, t% Q7 ?9 n8 G6 O
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);) I6 x5 S6 [  p& D6 ~6 A
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键( _' D% f  {0 L/ v4 g
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    ( m! y; |/ L2 q1 T. |% ~
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的8 G! C4 A7 @3 U5 |1 F4 H
  61. 无序就scard,有序就zcard,有z没有s; D5 D' m& v9 d  T  p4 q
  62. sInterStore
    ' U% T! B0 N2 A9 y
  63. 求交集并将交集保存到output的集合" `) T, g0 E6 g4 }1 e
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    & b# i, |0 w- m4 t3 I

  65. ' R' I4 o- x% K3 Q0 ^8 m
  66. Hash操作
    8 L* ~# d0 T5 c9 s3 f  \7 r. y  M5 C
  67. hSet
    , M) {: N6 R( P4 d
  68. $redis->hSet('h', 'key1', 'hello');
    7 A* |! C7 u9 W, J4 M8 q$ x- n
  69. 向名称为h的hash中添加元素key1—>hello- ]# d; O/ b" x6 X: j

  70. # m6 H3 `2 q3 f5 n
  71. hGet# N1 D7 Q, c* n8 t9 X% @
  72. $redis->hGet('h', 'key1');) u/ c, n, z, f2 Q* N) L0 e
  73. 返回名称为h的hash中key1对应的value(hello)) b/ {0 D$ g4 Q( ^/ C$ l& A
  74. $ R) Z- a) ^" C6 y; ]: h. T! t
  75. hLen
    6 `) e# ~2 b. |' I% G
  76. $redis->hLen('h');! r5 ~! [5 w8 F$ n2 e4 t
  77. 返回名称为h的hash中元素个数' d# y% S, \: c% ~+ G. f! ^  d" J
  78. . i; R& W- Q1 h- p1 C4 m  D: P
  79. hDel
    8 ~( i, R  m. m& o6 y
  80. $redis->hDel('h', 'key1');
    1 q" r4 h0 q5 m9 O
  81. 删除名称为h的hash中键为key1的域' m  ^9 A/ B& T- @! a
  82. ) K4 j% e& n8 v
  83. hKeys
    8 i# v4 o& {+ T/ p1 K8 e% m
  84. $redis->hKeys('h');
    2 B. c( Y5 [& ?% R7 M! Y
  85. 返回名称为key的hash中所有键
      V+ M7 c1 @5 N0 U; {

  86. 1 k: O! h  a* c* e' R3 S# X: y7 j
  87. hVals: g( U- y* c) `) ~  M
  88. $redis->hVals('h')
    ; C$ t; z6 \3 E4 Q8 b, m  O
  89. 返回名称为h的hash中所有键对应的value
    7 h+ x7 X* a' D+ ^8 |( u, i

  90. ! o' k- E% z# C
  91. hGetAll6 q* b) A, O( y% o1 U( n
  92. $redis->hGetAll('h');
    ; g! u( f8 o: C
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    7 N' m" p5 _" ]

  94. 1 ]& O7 [. f* u+ ^/ P/ ?) N
  95. hExists
    9 \6 _& M% k9 U! \6 f" h  L
  96. $redis->hExists('h', 'a');6 \) E) X  ]/ X( V/ y1 l, n9 @
  97. 名称为h的hash中是否存在键名字为a的域
    ! Q. v1 `3 J* W: u8 @
  98. ( \3 f: N5 A( c, \0 E5 ?7 ?& \
  99. hIncrBy
    7 |4 o, i  P. D- e
  100. $redis->hIncrBy('h', 'x', 2);6 V# i4 h; g8 y1 Z: K. r" V
  101. 将名称为h的hash中x的value增加2  h6 P9 \) W$ j+ S5 }# X$ y# L; E9 M# m
  102. 1 a7 L3 J7 z+ q. w/ }
  103. hMset, Q6 O  Z6 a3 \) s0 c) Q
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    6 y- K3 `2 _* t  [
  105. 向名称为key的hash中批量添加元素
    $ y; V. h( V0 Q7 T/ l
  106. $ ^( _: f' S) E4 P$ `
  107. hMGet
    ! M& \4 z; }1 l' H" s
  108. $redis->hmGet('h', array('field1', 'field2'));
    ; q% B7 `( U2 y: O: ]+ X& s) ~
  109. 返回名称为h的hash中field1,field2对应的value# u2 b6 k7 b' p
  110.   K* r/ ]- h# ]; v$ ~5 c
  111. redis 操作相关  `% o! W5 j: Z" |, N2 w
  112. flushDB
    & T3 O7 t* {7 B5 g  I
  113. 清空当前数据库
    - m3 ?3 U) D3 V

  114. 0 O6 ~4 |  \# l) T) u& {
  115. flushAll
    5 u( h  B$ U0 W7 _5 P+ R
  116. 清空所有数据库
    ( d: `7 \& v% \1 Y
  117. 8 C$ o1 R8 q- Z, `2 v0 q
  118. randomKey
    ( r; U2 ]8 Z' F$ p5 E$ R2 y& h
  119. 随机返回key空间的一个key. m/ v! K! n  ^. `" J- ]9 E
  120. $key = $redis->randomKey();
    . S2 ~( g7 I4 D# c/ N2 V

  121. # Y& N, j0 A2 m3 O  q6 y
  122. select2 \3 K1 n5 Q" r! N( V, i! I! d
  123. 选择一个数据库3 N+ P2 P* q" W/ J
  124. move* r' e2 V1 g3 k5 v; \' V
  125. 转移一个key到另外一个数据库
    0 `" b% T/ G, ~' |  D+ `+ K
  126. $redis->select(0); // switch to DB 0! v; n6 J7 G2 a7 R* a$ ?! X
  127. $redis->set('x', '42'); // write 42 to x. P' ]5 L% N* _# ?  j3 K
  128. $redis->move('x', 1); // move to DB 1! ]: y5 j, g, T, p# e
  129. $redis->select(1); // switch to DB 10 C2 o! l( f1 \! s8 D0 K. H# A0 l5 H
  130. $redis->get('x'); // will return 42
    4 j1 r( d. _) ?0 w* k: u$ ~

  131. - B8 ~# P/ u/ t) X3 F5 Q3 @
  132. rename, renameKey* }9 p) j7 [5 f; e1 [' t+ q
  133. 给key重命名
    ) a5 {. e: i) r/ h
  134. $redis->set('x', '42');1 T. |9 z  o  B
  135. $redis->rename('x', 'y');
    # \6 y2 c8 \/ U- U+ x$ n5 N
  136. $redis->get('y'); // → 422 O# y+ ?- I) i2 Z  h
  137. $redis->get('x'); // → `FALSE`6 U+ u  d5 A5 K* s3 o  m! ]$ [/ B
  138.   @/ g9 @! M, V# P) ~
  139. renameNx
    ) [2 S8 \6 q0 ?$ S6 F9 A8 a: R; Z
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功; O4 i3 d/ r) s* B6 c

  141. / `4 W. |1 b4 H& x6 {; v) P
  142. setTimeout, expire
    : x9 J6 @1 ]2 u0 W$ k
  143. 设定一个key的活动时间(s)
    & p( I  H2 v; o8 Y
  144. $redis->setTimeout('x', 3);: Z$ a. V: f' k/ v) a, d

  145. " l7 w3 H$ C; f8 ?& k& U
  146. expireAt9 H( M4 k, m, m1 M, s7 }$ W' V
  147. key存活到一个unix时间戳时间& r6 B4 ]4 k& A/ \& m- R
  148. $redis->expireAt('x', time() + 3);% G, Z! g0 B$ B0 |* D

  149. 6 L& M+ f3 z1 u+ C* E
  150. keys, getKeys
    2 X$ D3 W, F0 z, H9 r$ v* n
  151. 返回满足给定pattern的所有key% [! c6 r3 y% r6 L' Z$ J
  152. $keyWithUserPrefix = $redis->keys('user*');
      T6 e. G: a6 H3 X/ n: G4 _
  153. ! \$ F) l* Q: U: X
  154. dbSize
    ! r( R" @2 v# c' l% i
  155. 查看现在数据库有多少key/ R* [9 t+ L$ e0 B
  156. $count = $redis->dbSize();
      I+ e4 H* |+ m  v: O8 }8 _+ Y

  157. 4 {- A8 R0 _1 V  ]
  158. auth4 Y5 A% t$ x' u* S! o& Z' F
  159. 密码认证3 L3 R( _# t3 F* v
  160. $redis->auth('foobared');) ]! ~6 |; J  v5 t

  161. 1 i1 C) C( Y- j1 n3 }
  162. bgrewriteaof
    4 ~9 g( q8 u; e
  163. 使用aof来进行数据库持久化
    8 I. M" R6 D! M3 W4 o2 C
  164. $redis->bgrewriteaof();8 Q6 A) C. m- R
  165. / d* P* w3 Q" c) B3 H9 e; j
  166. slaveof# W1 |' f* D5 Z; G
  167. 选择从服务器2 [/ m- i, \3 J: O
  168. $redis->slaveof('10.0.1.7', 6379);
    ! V9 U8 p- C0 J2 w+ t
  169. . v- d1 p1 Z* o9 z+ k3 c
  170. save
    ; n5 k( a0 P2 x  |3 {0 q3 f5 i% c0 _- N
  171. 将数据同步保存到磁盘
    . ?) }) D# @# K
  172. ; }/ e2 \* `0 }$ o) w7 ]' I
  173. bgsave; V" P- A" a" f4 k
  174. 将数据异步保存到磁盘  _0 Z  ^5 T0 l- ]( r0 e

  175. : m2 {( q& W! J  n
  176. lastSave
    - g6 R: E! m% F# X+ z# \
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    ( M# _4 e- i4 J- H5 T5 u  O( l

  178. # j9 }+ }. J6 `4 y$ Q9 ]/ \3 B
  179. info6 f  v  `0 L& Y/ H  A& }9 ~
  180. 返回redis的版本信息等详情+ E5 q6 f: t+ _* V: o
  181. : a2 V. Q) y8 S: p. N- G3 Z4 u8 ~
  182. Redis::__construct构造函数! u% l& b3 S% `/ D
  183. $redis = new Redis();
    ( M% ~! A# N" R; X9 b

  184. 7 l- Y9 _4 f( N, F
  185. connect, open 链接redis服务, A4 J9 v8 P% E3 L& s: N
  186. 参数
    : x7 M) @- ?/ w6 m) X
  187. host: string,服务地址
    " h2 }9 _- j, \1 W: |  o  a
  188. port: int,端口号
    9 k3 V6 r" {6 B! z4 X: B  Y0 D8 F
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)( \- S7 S3 j: \
  190. 注: 在redis.conf中也有时间,默认为300
    * @* @0 z5 h, c3 h( b

  191. - ]  n" w8 u; S* b8 x' T0 W
  192. pconnect, popen 不会主动关闭的链接' G/ V. s8 e3 [; ^4 ~; g/ G
  193. 参考上面
    . \# P. p9 L4 c1 j) f
  194. - P- g$ D: B  t5 l
  195. setOption 设置redis模式7 [2 t# m+ u+ i* a) @: l

  196. 4 \/ n0 r1 j) r$ a2 Q$ w/ j
  197. getOption 查看redis设置的模式& y: R9 O/ H# s$ g! U: f- b6 ?

  198.   @+ r2 d4 X, d$ Q" v
  199. ping 查看连接状态& O3 F. z5 M! z
  200. 5 a* X' [2 r! _' f+ D" y: T" R1 [
  201. get 得到某个key的值(string值)
    : l! m' m- B& ^3 Y
  202. 如果该key不存在,return false7 [3 {" b, p% P5 b6 z6 R3 _3 A

  203. & z# F4 T4 D; Y5 ~* B/ D" k
  204. set 写入key 和 value(string值)( m- g$ t7 E3 Z: I: P! B
  205. 如果写入成功,return ture
    : ]$ u4 W+ C' J% C, p5 _

  206. ; [5 `" z1 v! ~: d) c% E
  207. setex 带生存时间的写入值
    . s6 Y- r8 x7 [5 z  W6 o4 R
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.# b/ m% _, y' d  }& V
  209. 0 C( k# l7 U- s$ B: O
  210. setnx 判断是否重复的,写入值
    4 K9 X1 }/ C$ x3 i: z5 W+ v
  211. $redis->setnx('key', 'value');) Z+ z. R6 k; ?: Z
  212. $redis->setnx('key', 'value');
    $ i! h3 F5 X  _8 J# y3 v3 R+ Z& \+ l( O

  213. $ o. z/ ?, B0 `& t9 s
  214. delete  删除指定key的值  @( G, R/ y5 G
  215. 返回已经删除key的个数(长整数)
    , |$ C, a8 S  r0 M
  216. $redis->delete('key1', 'key2');+ F9 M# K3 D$ H( }% R0 j1 {
  217. $redis->delete(array('key3', 'key4', 'key5'));+ |7 T, N: p! M5 h3 W% v% w) X

  218. ; z3 k7 j- B2 G, k
  219. ttl- x* u, c7 C( ^* |
  220. 得到一个key的生存时间1 _0 c0 Z) a' W; {! C# e
  221. 1 D1 X3 I& p; H- o3 u
  222. persist
    5 Y) V0 r5 {+ W( M& T
  223. 移除生存时间到期的key
    ; w6 L& ~. U1 i  S9 o
  224. 如果key到期 true 如果不到期 false+ D, b' l( T  K

  225. / p8 e$ m8 [; K8 k1 W9 O/ m
  226. mset (redis版本1.1以上才可以用)0 t, ^) W4 Y( W2 p
  227. 同时给多个key赋值
    1 s! q5 `& ^2 d( d: Y7 I" m
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    0 Q) b5 m* R1 {* C: {/ d

  229. . y  f6 A( D# U4 S6 t% b

  230. % y, w, h5 B7 G
  231. ) L; d% n3 [" I. i3 {7 C6 \
  232. multi, exec, discard' i* j# t+ J6 m$ p: \4 A4 f3 Q
  233. 进入或者退出事务模式
      H+ M0 Q0 R" Q8 d1 H+ h
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    0 G& D$ T2 d# L( K3 H  e
  235. Redis::MULTI:将多个操作当成一个事务执行5 {% b$ P8 B: t3 m! ]
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证. m) Y* i0 H, r1 ]
  237. discard:删除一个事务
    5 Y9 d+ E, H1 d' u/ U% L
  238. 返回值2 k% O; S$ r$ g7 A
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    6 u6 B, J' M/ D! q& o* Y. e- b

  240. 3 S2 Z5 V$ a, N$ Q2 p
  241. watch, unwatch (代码测试后,不能达到所说的效果); l+ X3 U5 u4 \7 B, J% s8 |3 A. X
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)/ v7 z, Y: b* V6 ~: U3 N
  243. unwatch  取消被这个程序监测的所有key5 K2 N( H# w) ?9 E
  244. 参数,一对key的列表* v( }% f# ^8 p- E
  245. $redis->watch('x');
    & W2 g6 t( i  i
  246. * `- K9 b' y: r
  247. $ret = $redis->multi() ->incr('x') ->exec();
    4 M1 H# F$ e6 q% Q( M

  248. ; _: p) q& x- R+ ]; _: H
  249. ! d' m- O' n: O8 `3 e; g- N8 [5 {- L; C& U
  250. subscribe *9 W. ~" v/ ~2 E* c  Z1 `1 j# [
  251. 方法回调。注意,该方法可能在未来里发生改变: H9 y: K' Y! R; G/ l# y
  252. / @) b% R  e/ A" B0 W
  253. publish *) N2 w( U: _( V% ~
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    - ]7 `' p3 I. m6 s' S0 d$ \

  255. 5 X7 T3 `+ o7 z* j  B
  256. exists& L  M1 R" X5 u1 h
  257. 判断key是否存在。存在 true 不在 false, c' u( T$ J0 |
  258. / A8 \4 ~, S* R' s. K" k  O
  259. incr, incrBy
    : J  K1 b4 b- F
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ( w% N, ?% `: X1 p2 ~
  261. $redis->incr('key1');7 H- o. H' E9 P* i
  262. $redis->incrBy('key1', 10);# `- y/ U! \) x6 _

  263. * [) `3 `4 E' {) F( n  M8 }
  264. decr, decrBy
    - I; ^7 A4 m- I  x( {6 @0 T
  265. 做减法,使用方法同incr" f3 a& H+ T: F9 Y4 l# g# O( \  K

  266. . m% G$ R+ o) U- l
  267. getMultiple' H6 y3 b/ y6 z8 l4 F$ ^
  268. 传参
    7 W* [6 h9 e8 v2 U6 r
  269. 由key组成的数组4 |6 }+ U. ?7 [) z7 h' f$ z7 r
  270. 返回参数
    + ^# V' N3 H0 z7 t1 U/ B6 \
  271. 如果key存在返回value,不存在返回false8 c; T9 {6 D2 W4 Q0 Q; M. f% [
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));) e/ H% D! g. ?- ~
  273. $redis->lRem('key1', 'A', 2);
    ! g; f2 X3 r* q
  274. $redis->lRange('key1', 0, -1);  n3 c' d6 K* ]$ z( |3 c
  275. ( M$ _2 r0 ^0 E6 P! u6 Q# D  j7 K0 c
  276. list相关操作9 n6 ^: t: Q7 y
  277. lPush' k2 Q& W) D* r1 b. G* a, v, ~  I
  278. $redis->lPush(key, value);
    ! k$ K& e- c6 ~$ }* h+ s
  279. 在名称为key的list左边(头)添加一个值为value的 元素4 r1 ~! o- g) C" ~. Q) X

  280. / l& Q- Q! o8 k8 w7 k% m) V6 T
  281. rPush
    * P9 r2 ~% A3 h
  282. $redis->rPush(key, value);
      e  R# [2 M. N
  283. 在名称为key的list右边(尾)添加一个值为value的 元素: w  F, w+ n& Q- C( [- T" U/ ^

  284. 6 S. r* a& J2 V
  285. lPushx/rPushx9 W' q: K$ [- K! u" J
  286. $redis->lPushx(key, value);) k+ F, }- t( L7 z& Y; M' Z
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    9 m. \3 N9 z0 I; r$ A0 A8 [
  288. * U/ u0 |2 U( x7 e  p$ }/ x
  289. lPop/rPop
    + P' p6 h( I" ~- |: C, p( N
  290. $redis->lPop('key');
    & ^$ C3 }* F* w
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    : K6 b" P) B: N# C. y
  292. / N$ O7 s! j  U
  293. blPop/brPop7 ~( o: p$ q" S0 i8 h  T& g& n
  294. $redis->blPop('key1', 'key2', 10);- K9 ?! A6 h2 }
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    : O3 E5 w( J; I8 V3 B* L: Y9 ~

  296. ; ]" P. l3 X. j3 n$ [4 e& i
  297. lSize
    % f4 N& m- L8 |, {. c* {8 L
  298. $redis->lSize('key');
    5 D8 v# P: v2 {2 M& k' P( `
  299. 返回名称为key的list有多少个元素
    ! p9 Q  e/ d( E. c7 K9 ~5 @8 e6 l
  300. . |/ ~2 l8 X) i: r6 B, y
  301. lIndex, lGet) o! _. ^7 l3 y! p1 D
  302. $redis->lGet('key', 0);
    , q) }. h5 L, j( R4 l
  303. 返回名称为key的list中index位置的元素
    " M9 p; X1 ]: V1 ^4 |

  304. 0 r' N5 u& }3 r" h: N
  305. lSet: Z  |$ t2 i( S( k$ K$ u
  306. $redis->lSet('key', 0, 'X');
    % p( M0 Q& O- ~/ f+ o4 [: I3 `: K
  307. 给名称为key的list中index位置的元素赋值为value. h4 y' w" T' U4 {

  308. 3 v/ G2 c7 V) Q# g+ }
  309. lRange, lGetRange6 h1 b; t. u) u$ e
  310. $redis->lRange('key1', 0, -1);
    2 F6 B" U$ A3 H2 |8 g; J$ z; \
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)! n, \8 d$ ^  |

  312. ) z$ Y; q5 Z+ a% D5 U/ ?8 x5 t) a
  313. lTrim, listTrim
    8 j: V3 C6 ]0 X9 u2 T* V3 w+ W
  314. $redis->lTrim('key', start, end);5 a; c1 `  c( z# h& Z* ]
  315. 截取名称为key的list,保留start至end之间的元素
    " k2 ?0 A" z+ B0 Q1 }$ U

  316. , D: K7 |0 M% i- h5 ~7 b8 V
  317. lRem, lRemove
    6 c7 {& W1 i: W
  318. $redis->lRem('key', 'A', 2);
    / V' i2 T* t# e% I% ^3 b
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素2 t: s# E# l% Z9 y( I* c

  320. ( t( i9 N( ]* ^: |3 r
  321. lInsert' x# w# j1 z& [
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1& G* S5 t  d1 N( c7 a
  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');% a# O5 O; }( D2 X+ o" I
  324. $redis->lRange('key1', 0, -1);% h/ P# R9 h" C
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    0 F9 R3 i; W3 |0 P% p8 M
  326. $redis->lRange('key1', 0, -1);
    " N# F. b& `/ T" P  b* m0 c+ u( C% r
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    ( \  f3 e. a6 H7 i
  328. % F( o, C- b3 J" E8 F
  329. rpoplpush! I9 n3 [8 G7 Z: v$ M* d
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部* Z9 ~+ M( B  t! Z1 Y" l
  331. $redis->delete('x', 'y');+ F+ s  d1 P8 c) V0 y, c% y
  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'));
    ! j+ T$ g4 `9 t, }% ^, }
  333. var_dump($redis->lRange('x', 0, -1));8 v. z; S$ ~$ {) R: N4 F
  334. var_dump($redis->lRange('y', 0, -1)); ! {  b( P* E' v  S' b

  335. - i1 v# B; c5 T, `  V7 B* h2 ~
  336. string(3) "abc"
    , z% _8 x1 [6 m6 k  l6 f
  337. array(1) { [0]=> string(3) "def" } 3 z; g' n" ~- v% z0 l7 E; x1 O
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }$ Z, x" X# u$ p& n: e( a9 F5 c
  339. ( I+ O# p" b( _
  340. SET操作相关0 R3 Q3 ]$ |" z5 T
  341. sAdd$ Q' P8 _* ~4 t
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    & e7 L8 D8 s' c5 G
  343. $redis->sAdd(key , value);' `% k% f- ?) G4 [6 B0 V5 S
  344. 1 E% `+ B- y1 z3 l
  345. sRem, sRemove0 ~. f+ e2 _5 P
  346. 删除名称为key的set中的元素value
    + S3 E0 P( r7 U
  347. $redis->sAdd('key1' , 'set1');
    : z6 m" j  M- |; G$ i+ }) G
  348. $redis->sAdd('key1' , 'set2');
    " \, }. d: M, {2 z( x& C" K
  349. $redis->sAdd('key1' , 'set3');, b% ]  D3 ]6 J2 p) E7 a
  350. $redis->sRem('key1', 'set2');- b/ n* p% ]2 y' B! P$ i0 o
  351. 3 E7 B; E* |. Y7 g. [2 R
  352. sMove: h4 n( Y  T1 @) i% ^: ?
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    / w3 K; N, J. ^- g# a' `6 S
  354. $redis->sMove(seckey, dstkey, value);* [4 p( s8 n& W
  355. 1 u2 v& l5 d3 O1 {# U
  356. sIsMember, sContains
    - d( i$ a. f- O% I) ?$ ~7 d' @! ]
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
      s" [7 ?6 x( w: `3 D5 ~) C
  358. $redis->sIsMember(key, value);
    0 y, G( o  h9 {2 L
  359. 4 ]7 I3 n5 w- [& O# N
  360. sCard, sSize! {$ B. {% q+ w4 m8 a1 O
  361. 返回名称为key的set的元素个数
    + t/ K2 v/ f" V4 I9 f1 W. I+ a- ^

  362. % {7 S& @. Z* B
  363. sPop
    3 {8 H6 e- w& C6 v( Z; F/ P
  364. 随机返回并删除名称为key的set中一个元素& Q" ^. Z) g; s2 O. A

  365. & ^( t+ q3 q2 s# K
  366. sRandMember
    7 P9 n5 @% c% n- S: R
  367. 随机返回名称为key的set中一个元素,不删除
    & u9 p* ?* @  o1 _
  368. 9 h; E7 [8 ?6 K; g0 y/ U$ Y
  369. sInter/ o0 b% y( c2 V2 w0 o6 b2 ], S
  370. 求交集' F% |/ s7 d0 c5 `% m1 l$ \9 ]* N

  371. 1 n, [& W) t4 M/ t; v; E& Y+ B
  372. sInterStore
    2 Y" H3 K0 _" l$ J/ L4 H- y
  373. 求交集并将交集保存到output的集合
    ( O0 J% r$ c; A6 K* V' T
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    # F- s: d% P8 f1 g. D' c) Y9 I

  375. , s" D# D& G% E1 j6 a, F
  376. sUnion' [6 Q' [0 M) G1 t
  377. 求并集& v( y( \$ B; J: i* \! x
  378. $redis->sUnion('s0', 's1', 's2');4 `6 j/ o6 v2 {( }; }$ ]
  379. s0,s1,s2 同时求并集  g! P$ \! i( d9 E2 j3 E. Q
  380. 5 c: C, H- f) O( q
  381. sUnionStore
    ( q6 K# S6 S( m6 y2 H: b+ m- e1 l
  382. 求并集并将并集保存到output的集合
    + a0 |; g: b2 R* O# m9 u
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');7 j3 x& p) F3 d

  384. 5 w" M6 f" x* {5 M) i5 S: z7 `
  385. sDiff# x0 J. S6 R2 }
  386. 求差集) |) R9 w) ]; I5 h% \" H. L0 c) {9 Y8 h
  387. + ], i& L9 l0 P
  388. sDiffStore
    ! ?2 I$ v! d  J, \2 u- F: y
  389. 求差集并将差集保存到output的集合& u) b: j- Z% n$ g
  390. ; U6 \$ M; T2 }  p
  391. sMembers, sGetMembers
    5 E( d" Y. ?3 k- D( m
  392. 返回名称为key的set的所有元素2 B6 }* R! g" t

  393. 2 M+ \; I! i4 d# ?. A! |6 l/ m1 e
  394. sort
    $ V, W# P0 j$ C# X  v' [
  395. 排序,分页等- O& o$ o- x8 C3 W
  396. 参数/ b( ~% U. ?# i1 Y& D; P
  397. 'by' => 'some_pattern_*',, l6 j1 S, Y) l# Y$ r1 ?
  398. 'limit' => array(0, 1),* ~* R1 w2 }# x; ^
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    + g: a6 W- m) P1 b/ A" N) D0 c8 {
  400. 'sort' => 'asc' or 'desc',' x' F# b7 v- s. y
  401. 'alpha' => TRUE,
    " n5 H9 j4 m# `/ q
  402. 'store' => 'external-key'- i. G" a8 ^8 k
  403. 例子
    & E: K$ u& i8 l$ I5 }
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);. `4 b/ d) l% k- r5 T5 e5 U
  405. var_dump($redis->sort('s')); // 1,2,3,4,5* }- M* A+ J! k4 `" w" a- y" y
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    & R/ G$ {6 S( H8 R
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)50 r3 V+ |, j/ l4 ^
  408. ( a! O$ v, c, M7 Q( I, w4 J
  409. string命令, s* S: w8 `& ~  p9 |1 R
  410. getSet
    + O* I* b; A6 F, U! ?
  411. 返回原来key中的值,并将value写入key% z& {' ^# E1 Y. X0 k( M8 U& k% \
  412. $redis->set('x', '42');, O0 e) u- ?( x3 L- m7 \
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    + L# |$ t! K: X! H, j
  414. $newValue = $redis->get('x')' // return 'lol'
    5 d( i% n* z' ?
  415. + j1 ]4 J, }9 n7 F- g& W9 q
  416. append
    , p- K# k+ |( W+ l' s% o
  417. string,名称为key的string的值在后面加上value
    4 q% n, i9 {% }% h; L- Z: z
  418. $redis->set('key', 'value1');( Q7 p! h  C& M% |0 O! P  H' E' Q
  419. $redis->append('key', 'value2');9 {$ j. S: k* a% _' V
  420. $redis->get('key');" k+ S* q. i7 y/ U5 ^' C
  421. 3 ~6 f+ g& d) O, t* M  f
  422. getRange (方法不存在)
    9 z0 W+ G0 l3 i% ^0 @$ E$ m
  423. 返回名称为key的string中start至end之间的字符
    ; W/ F! Q3 R1 R- S0 z7 l
  424. $redis->set('key', 'string value');
    5 Q$ ~* h6 Y) o9 A. y3 ]4 }1 l& _
  425. $redis->getRange('key', 0, 5);
    . I) u8 z' I# J" @6 K% o
  426. $redis->getRange('key', -5, -1);- @4 m5 p0 R! I! k, G
  427. $ K# J( Z3 N* o- d& {
  428. setRange (方法不存在)
    * D' v  O, O+ M) B7 }! Z
  429. 改变key的string中start至end之间的字符为value' Q3 d" s& i* q9 V8 O
  430. $redis->set('key', 'Hello world');  {6 u9 V8 T  ]1 C2 `% J
  431. $redis->setRange('key', 6, "redis");
    + u$ L) L, r: s5 r+ N
  432. $redis->get('key');! x- H7 F" p$ M/ l+ b: q8 l
  433. - r. E7 \- T+ K4 ]" p
  434. strlen
    % U' a0 A6 D7 e$ E$ w
  435. 得到key的string的长度
    7 ^0 I& l+ b, @. Y! Y8 j7 w
  436. $redis->strlen('key');
    0 o) |) c, T3 m; D% ?  h) m

  437. 7 y" O# F" E; f( O6 w+ ~8 r
  438. getBit/setBit
    8 }) t3 R+ o0 m, n
  439. 返回2进制信息
    " C3 B. p1 X7 ~* J

  440. / l1 H8 _3 k. u2 p# v8 R% H0 B# H
  441. zset(sorted set)操作相关
    . _' [' Z5 _/ W0 E4 m7 f
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。& ~- z4 ]. ^- `/ X* |# y7 U  {
  443. $redis->zAdd('key', 1, 'val1');
    & H: h$ X) a; T  `$ E
  444. $redis->zAdd('key', 0, 'val0');/ k: C& _# E( u4 e; l
  445. $redis->zAdd('key', 5, 'val5');7 E% {" X, M; N8 L  X% k
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    % H2 {/ b5 \! k5 L( x+ l6 m
  447. 6 O2 P* g* M# u+ C0 q" P0 V+ I7 H
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    + D' m9 P2 I8 G9 N
  449. $redis->zAdd('key1', 0, 'val0');& L) M" L, y& N, h" G0 X
  450. $redis->zAdd('key1', 2, 'val2');
    " h* A1 X" ~: K% v: R' `
  451. $redis->zAdd('key1', 10, 'val10');
    % _: P3 x3 S& c4 A
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    - R' Z& ]/ j& e& c5 ]# A

  453. - o  q! Z3 ~! K& g/ a1 V, U
  454. zDelete, zRem# b8 C$ D; U% ]2 y
  455. zRem(key, member) :删除名称为key的zset中的元素member
    9 q; ]' ]4 L1 K2 M0 [
  456. $redis->zAdd('key', 0, 'val0');- d9 F7 F2 Z) v( ~
  457. $redis->zAdd('key', 2, 'val2');
    # ?9 z* i; D5 Y# J. |- ~8 [5 A
  458. $redis->zAdd('key', 10, 'val10');3 @5 z5 N& m3 I- ]4 c
  459. $redis->zDelete('key', 'val2');5 p* ]8 J; A9 R
  460. $redis->zRange('key', 0, -1); ; m- h: V  j; q/ V/ T$ C, m

  461. & G$ N: h/ s) n. Y9 l' }
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    % T+ P, R1 b4 y# v' b. ?' C, y
  463. $redis->zAdd('key', 0, 'val0');
    # [3 P8 {6 P) |1 H! w
  464. $redis->zAdd('key', 2, 'val2');
    1 |8 u. V% J2 G' q4 A+ S5 i- P
  465. $redis->zAdd('key', 10, 'val10');
      S* G# c8 P2 B- \6 ?' p
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    ! d( W6 I' N# h9 y0 k- {$ x4 Z
  467. $ w4 Z. F& `1 {4 c/ D+ c% z
  468. zRangeByScore, zRevRangeByScore, r6 K2 [3 L( T- a2 T9 \$ f
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));# g+ y9 n. {% F3 t1 a& Z# j
  470. 返回名称为key的zset中score >= star且score <= end的所有元素, m8 ]% n0 J) E7 ~
  471. 0 g  \8 s2 P% M. c! F! [
  472. zCount) r! d4 \& |& d' {9 i( P
  473. $redis->zCount(key, star, end);
    5 _. q7 d0 m# Z) l
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数+ S/ y$ a9 B& y5 E4 q
  475. + H4 v) `. X6 E9 T9 ~
  476. zRemRangeByScore, zDeleteRangeByScore& S+ L; x: h' n
  477. $redis->zRemRangeByScore('key', star, end);2 K% \; T6 x& p0 [3 I, j6 @% S6 Q' ?
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    3 d& i0 ?1 G, @4 g5 z+ @! V5 g
  479. - a' \+ M9 U2 S' z% r- W
  480. zSize, zCard
    ' S( n( q& o  i( F: k
  481. 返回名称为key的zset的所有元素的个数+ y5 L; O' x% m& F" Q/ q) T: @6 m
  482. 0 T& s" |$ l! q2 c) T5 t2 Q1 d
  483. zScore# P' u, u5 D" m/ X4 Y! C
  484. $redis->zScore(key, val2);/ W; ?5 s: c0 F# @) C& E
  485. 返回名称为key的zset中元素val2的score
    " R, R# }6 Z, f6 a$ `

  486. 7 {, G7 {- I) }: f: [
  487. zRank, zRevRank
    ! Y9 o  f2 D& ^7 }
  488. $redis->zRevRank(key, val);
    : d, T3 b1 M8 o. A$ u  v# e
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    6 J$ {5 Z& i$ e: ?( h
  490. - T3 t1 q5 y1 v% \  r9 D' Z3 N
  491. zIncrBy  L) C2 F: Q2 M! O
  492. $redis->zIncrBy('key', increment, 'member');9 ]* Y/ k' \. }' c4 \# {2 Y) B
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    6 }* r: c5 A; Y6 E, b; _, W

  494. 8 C1 D# i: j/ w- R2 \% ~
  495. zUnion/zInter1 L1 c/ u! o6 X/ X) d3 G
  496. 参数
    ) Y/ r' A: G7 r8 n. p' D1 J" k
  497. keyOutput& z) t: W3 U' j' [2 s
  498. arrayZSetKeys
    0 d& v: a  u. ?
  499. arrayWeights$ r) |, G3 R; `7 {" b
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.9 G! [/ C; d5 m6 t5 |
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。, [- Y: ]/ t7 W0 y0 i" B) I& A
复制代码

" w. ^# \- z1 O1 L+ J
  \( C- L- `2 ~0 X7 G% C/ _: |8 ], K

: g9 \* F) @2 J# ]$ A/ e0 C
作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis(); 9 r/ o/ @+ ~: c1 ~8 z
  2. //连接redis服务器
    : C6 s& X0 y# Z+ u
  3. $redis->connect('127.0.0.1', '6379');
复制代码





欢迎光临 cncml手绘网 (http://cncml.com/) Powered by Discuz! X3.2