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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    ) l+ Y+ S+ R# o* u1 L) D
  2. $redis = new Redis();  
    2 ~4 I) J" V, u6 Y! g6 ?0 {# |
  3. $redis->connect('127.0.0.1', 6379);//serverip port1 j# q3 ~- D5 @3 i" D1 o. ]- X
  4. $redis->auth('mypassword');//my redis password
    0 o: }' x& c  T. |
  5. $redis ->set( "test" , "Hello World");  
    . l6 [; t$ v: a) Z& ?
  6. echo $redis ->get( "test");
    : h' X$ z+ s+ q2 t
复制代码
php操作redis函数封装
  1. /**
    3 L( m% m5 I5 |+ T' l
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数: z3 [0 P5 f( [
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi8 U" L& ?! ?( P) ^
  4. *// r4 F' R* Z9 F" w, A' `" g
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){. g: ?- h3 W9 N6 r: q
  6.     if(!$key||!$value) return false;/ s7 a* N' B/ A% l9 _5 \
  7.     $host = $host?$host:getenv('REDIS_HOST');! k9 j; s; E8 m) {
  8.     $port = $port?$port:getenv('REDIS_PORT');3 W6 c& e; ~; b; B9 U) p
  9.     $redis = new Redis();
    . H* _: [7 c/ d( O
  10.     $redis->connect($host, $port);
    0 j$ V6 k& ]6 y
  11.     $value = is_array($value)?json_encode($value):$value;
    0 A3 y0 ?- P- d- ]" v  }0 c
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    ) _0 C, L8 A- E* q/ t
  13. }
    + [' `# ~5 N0 d& d/ ]  I1 c8 S
  14. /**
    , x- C4 ^) s' L$ m" E
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    6 h: l0 m# i' E; N) _: i( Q
  16. */
    " h. A3 h0 I9 B6 ~0 J
  17. function RedisGet($key,$host='',$port=''){* Z) A6 a2 U* F0 w* p
  18.     $redis = new Redis();
    ; T, U2 c2 V8 L" u& {" p4 Q
  19.     $host = $host?$host:getenv('REDIS_HOST');: D. K9 c! M# Q: e
  20.     $port = $port?$port:getenv('REDIS_PORT');3 r1 T/ Z6 _! B4 i6 J
  21.     $redis->connect($host, $port);
    $ v4 ~+ b: Y; K7 Y
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);) }, F  G1 v+ K( G/ o- Z
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    ! N/ b* J5 c# _2 ^# \  `2 ]4 x
  24. }
      J. Z% d+ z3 B$ o, w/ ?
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
% e9 q' \& N- t  n6 a% i' P, X
  1. setex 带生存时间的写入值
    * d( o" w+ q2 u6 s
  2. $redis->setex('key', 3600, 'value'); ! a5 u$ l" L' m5 g5 l4 b
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1: i# q, U7 o% c3 l; Y) o: |, @
  4. $redis->setnx('key', 'value');* M6 q; R8 _8 N+ t
  5. 返回已经删除key. B& D8 ^# L% V) p+ p/ s
  6. $redis->delete('key1'); 成功返回1失败返回08 ]  z2 ~& z1 i  w' O5 ?& T
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回03 S7 l) j) N: ]! ~2 ~: A
  8. 查询生存时间
    * Q- S5 |& S2 E% m" K5 K0 {4 S3 r
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒): I: t; a; f& ^7 }. ^
  10. 同时给多个key赋值,同时设置key0和key1/ ~8 x) H4 S+ I  q- G
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));- ~! o- t  Q) u- Z
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    + X: P& z1 L! o( A) W; p: \* G, I" A
  13. $redis->incr('key1');
    4 ]# t6 Z$ q5 y1 c* L& o: b: }
  14. $redis->incrBy('key1', 10);+ ^- c: F: ?; |4 {
  15. 减法跟加法一样
    9 h1 f, X3 w2 j/ ], O
  16. $redis->decr("key1"); 减少1
    - ^) @( ^, d+ j+ N
  17. $redis->decrBy("key1",5) 减少5
    1 @$ v+ r( F7 T. E1 w6 r

  18. 7 ~' Z1 {3 o# b3 H3 T4 F
  19. list相关操作,连表操作; B! f8 B% S& l; y8 a7 l$ x
  20. lPush5 u: y/ h! D: ?
  21. $redis->lPush("list", "888");
    . Q" Q9 k3 @0 ^& u2 @+ A) i
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数" B5 g$ Y# Y8 T5 P* D% U' z
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式$ I6 V" f3 P0 r) H! n
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素7 B  S+ Q1 X0 r0 b- g; Y
  25. lPushx/rPushx4 z6 z2 b% z. z7 E  n
  26. $redis->lPushx(key, value);2 z9 m& g8 B2 B2 S9 P+ r
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    5 c6 b9 Q# O& S+ B8 C6 g
  28. & C% R' Q3 J, E2 ]
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    - S- y) {( m! K- ]- B
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key, W" I8 ^7 k/ H! A- h9 B% Q0 i
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    7 N6 i$ }. S6 B7 U
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序3 {4 K* k3 S5 n6 z- e
  33. sadd s1 zhangsan% j% J* V4 z( J. I
  34. sadd s1 lisi9 T1 B& z  `2 p/ a
  35. sadd s1 wangwu; ]( O" F1 |* ]1 K- f5 O8 U. p
  36. sadd t1 yangxingyi
    5 o0 k/ L/ p. g
  37. sadd t1 lilei
    % i5 V6 _( H: A% a
  38. sadd t1 zhangsan- H) y9 C- ?2 }: j% [" x7 V/ ]
  39. smembers s1 s1的所有集合内容! M- ~. P  K# i% q
  40. sdiff s1 t1 s1有的,t1没有的,差集# o& h, V" y! N7 V5 s( m
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ) j: O; _9 V0 c4 M
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的( ^# K1 ^7 g% D% Z4 R7 L
  43. spop抽奖场景,返回集合里面随机的数0 n# D6 M" ]6 j' C4 r
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    . H8 G8 m% L; Q. D: a
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    1 D4 h/ S7 p. b2 R0 ]" h) z
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    5 z' U- C! I& @4 h& ^
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    4 V8 [) F  F* H0 d- P9 @
  48. $i = $redis->srandmember('s1');echo $i;
    3 B: Z% C( N7 O" j2 }8 S& ?
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    + m- G; P( V5 Q: c: y3 s% j
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false9 S; V' `. n. h/ }
  51. , a, @7 y5 l$ g# U3 I( c& T
  52. zadd key 2 value 有序集合( \$ B  O; w) ~7 `/ H( Z
  53. zadd y1 1 zhangsan;
    + Y. I+ R! I- w+ ~! C9 Q
  54. zadd y1 3 lisi;
    ' M) W9 T+ K  {+ ~
  55. zadd y1 2 wangwu;
    ; _1 B% q+ |4 r
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi) P7 j, m% f: Y  j+ i+ q, j; L6 F
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    * U5 t2 E% r4 F+ C
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键/ C5 g9 N  y4 S9 k7 F9 m$ ]
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    0 f3 c3 z  z: p
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的/ S9 F- q0 _+ c) ?
  61. 无序就scard,有序就zcard,有z没有s4 e- X- {( [8 R, c$ s
  62. sInterStore
    6 O. q7 g! s5 b
  63. 求交集并将交集保存到output的集合3 L- i1 {! L/ u5 z" m- U4 x# h0 S
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3'); O0 n5 K$ n* k. b. M

  65. & B9 B" d% o. r3 Y; v* y
  66. Hash操作
    8 j6 P# c; f" \. u0 E- Z- H) f# u
  67. hSet
    1 @: X- u# }# R5 n3 D& o
  68. $redis->hSet('h', 'key1', 'hello');
    % L3 x# r9 \! o+ e# N
  69. 向名称为h的hash中添加元素key1—>hello$ S4 {4 t5 v  n4 g2 b; V

  70. * Z$ h& A+ |" r# M" H2 b
  71. hGet' w" h- ?% A1 `* V5 [4 x1 P% h! F
  72. $redis->hGet('h', 'key1');2 R) {7 {4 C6 @: j* i
  73. 返回名称为h的hash中key1对应的value(hello)9 V* [1 K/ m; b8 ~. v

  74. : z, ~$ s( |& i" _% y
  75. hLen
    1 S( f& z: }6 \2 C2 T
  76. $redis->hLen('h');) W+ `! u; s8 M  S, M. J
  77. 返回名称为h的hash中元素个数6 x) _+ Z  f" S, F; f

  78. 1 x* X% J! T: g; B
  79. hDel
    : G3 u$ ~: d5 x; {
  80. $redis->hDel('h', 'key1');: s2 \4 }0 P8 ~' h
  81. 删除名称为h的hash中键为key1的域
    , |  l0 U9 I( `7 c& C% ~! f
  82. ( m, M0 }0 J, v# D) J2 X
  83. hKeys
    / a8 A" ^# I2 j2 A: D, `/ y
  84. $redis->hKeys('h');
    ' T; Z( L$ j) h) |1 M
  85. 返回名称为key的hash中所有键; |  m7 A; N2 w. H1 \; G2 @

  86. ! r; B$ O- \8 f
  87. hVals
    . J3 N- G1 N, z
  88. $redis->hVals('h')
    : E8 {/ W' E* @8 c! M
  89. 返回名称为h的hash中所有键对应的value6 u+ w( }. ?6 t

  90. % V% i0 U  p5 U% h. `/ U
  91. hGetAll
    ; D' I: T6 k0 m8 o, J
  92. $redis->hGetAll('h');
    ' w; K0 X, w. b( Z
  93. 返回名称为h的hash中所有的键(field)及其对应的value1 W0 ?6 g2 L$ |, r2 \! s6 y
  94. - M" v( m$ J% m* O5 A
  95. hExists: q2 O6 {1 K! @
  96. $redis->hExists('h', 'a');) Y/ D" Y3 L3 U) |
  97. 名称为h的hash中是否存在键名字为a的域
    " q3 b( N) b+ Z6 A. t8 f! _( N0 r* R

  98. 0 y& h0 y' S- S  ~# Q
  99. hIncrBy! R+ W7 w/ W0 o# }, b8 y$ R- @  b# H
  100. $redis->hIncrBy('h', 'x', 2);
    5 ?) k9 a5 A  v
  101. 将名称为h的hash中x的value增加22 k3 W% I5 a; o. i; T* A
  102. 3 G' w' K% f$ N; p# _+ y( N0 `. D
  103. hMset
    + ^  Y- m/ |/ i& C. i8 `
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ( Q  M4 T6 K' c
  105. 向名称为key的hash中批量添加元素
    - D  J# B5 j/ x1 R
  106. ; W/ V  a! k- `( P6 l+ _; Q
  107. hMGet
    . T5 B' Z, `3 E* B* Y- D+ ]: @
  108. $redis->hmGet('h', array('field1', 'field2'));
    ' a, J& ^1 N$ ]+ z& M0 f5 `
  109. 返回名称为h的hash中field1,field2对应的value
      r) ]& E# d5 q1 p/ @4 z
  110. ! v8 P  S2 `. p6 a: M: F9 c2 M
  111. redis 操作相关6 z+ @0 a* u& M2 {, Z
  112. flushDB
    " j0 g8 \0 b3 g) b
  113. 清空当前数据库
    " b! B: c: p+ Q* {

  114. - |" ^6 x/ |2 ~  Y7 L8 V0 [* j
  115. flushAll
    : W) i0 m0 d4 j. X. X
  116. 清空所有数据库# b6 S( L7 ]& H9 `5 e/ q; f
  117. 4 Z; `# Z9 G5 u# y! U
  118. randomKey! o: V" t  o0 V
  119. 随机返回key空间的一个key
    , X5 p. N& m0 a$ i
  120. $key = $redis->randomKey();
    " V  h- `6 O5 N
  121. 8 c8 Z9 v/ ^* t' ^0 [, h( ~% a
  122. select
    4 [; a7 ~% N- H4 T0 r8 Z; Y) P
  123. 选择一个数据库
    6 `. e1 E/ n% E
  124. move
    * e' j. D/ {3 w/ i' b9 F: u
  125. 转移一个key到另外一个数据库
    # S9 X" }7 e1 U
  126. $redis->select(0); // switch to DB 0
    ( P! Z3 I' k3 \! A5 S$ j- a% O
  127. $redis->set('x', '42'); // write 42 to x- B) D: I9 ^5 `0 {) Z) R
  128. $redis->move('x', 1); // move to DB 1
    ; D) X0 Y4 r; X/ n  K$ G. Q
  129. $redis->select(1); // switch to DB 19 |% n% x" s8 U2 r: ]* \
  130. $redis->get('x'); // will return 424 e. t  m' ]& v0 ?3 X2 K

  131. 3 F! O* ^7 L& _0 B* Z- `3 R, Y" C* M
  132. rename, renameKey
    1 o6 D. \0 i2 _) \* R
  133. 给key重命名
    : m6 o$ n, }. Z( Q7 o
  134. $redis->set('x', '42');" ]" {/ R2 `3 U- v" X/ A( |2 j
  135. $redis->rename('x', 'y');, s, S; C0 s, v# m* n, S- n" Y# q
  136. $redis->get('y'); // → 42! D6 o  C9 A9 T
  137. $redis->get('x'); // → `FALSE`9 H+ K: M3 }  D6 V: e

  138. * c( l4 @$ Y7 v) P
  139. renameNx2 R" {- e6 B; B4 s
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功" X6 L# R- k9 @

  141. " i+ W  L' L7 `# c2 ?0 I# S: r( U
  142. setTimeout, expire
    ( Q# }# r/ l- r! \# Z4 c
  143. 设定一个key的活动时间(s)
    / `+ N$ ]% V" [: I
  144. $redis->setTimeout('x', 3);/ P1 o& Y( \# @& }& a
  145. ; c& \" A( U2 i0 D# Y
  146. expireAt- V3 w2 Q1 `( O7 _
  147. key存活到一个unix时间戳时间
    - Z( T) \# T* X% h, L/ p6 |
  148. $redis->expireAt('x', time() + 3);
    " ?$ k6 w- J5 v# Q( c4 r, D
  149. ) V) V; r* `" p" @, T1 Z6 m
  150. keys, getKeys' X  ]  g2 e, t0 u, ?9 K. K2 h7 A; ]$ c
  151. 返回满足给定pattern的所有key
    $ N* h" u. k- r) v0 K% Z
  152. $keyWithUserPrefix = $redis->keys('user*');) w) I' J3 S$ c

  153. / B' n# J) i6 F% B3 D/ Y" G
  154. dbSize
    : [% [# K3 Y% l3 z" |& @) ~8 H
  155. 查看现在数据库有多少key9 f7 y! t, I8 t- K. C
  156. $count = $redis->dbSize();  m* C# x6 l' G; }" g

  157. 4 d0 r  b% C$ n' H% j/ V! j; ^5 ]
  158. auth1 R, W# E/ i3 r: y
  159. 密码认证8 G, {% k/ T/ g6 d2 j
  160. $redis->auth('foobared');
    3 G; @! M7 N8 }7 u$ u

  161. $ P$ ?) y5 w7 ^, k+ O; D
  162. bgrewriteaof
    , Z: D6 x4 Q+ G. H* x3 e4 g+ p
  163. 使用aof来进行数据库持久化  C! K+ F' }% Z4 M9 _
  164. $redis->bgrewriteaof();$ |% b$ M  l( t+ w! \

  165. & l3 S: V4 d$ h3 C( C* X; {& o" k0 W
  166. slaveof
      o2 r1 A3 \# J& H  _: S+ m' a
  167. 选择从服务器4 X9 J6 J( u0 |5 W
  168. $redis->slaveof('10.0.1.7', 6379);
    : s- ^. u. d( N' q
  169. / D, ^: d# \8 ~! j* a
  170. save& y- U5 Z! f0 O! a& F3 U
  171. 将数据同步保存到磁盘
    . [7 A3 r  @- `1 ~8 j: o- }3 t
  172. ; Y. y7 o& t# {+ _3 ^
  173. bgsave1 x' a! q, C* z9 M& t1 \
  174. 将数据异步保存到磁盘
    6 v8 S% B& k% ?/ A+ o8 W2 |
  175. & A& o/ L* H  s+ B- G
  176. lastSave
    - f! u$ R/ d) ^* ~, b
  177. 返回上次成功将数据保存到磁盘的Unix时戳! s! ?1 A, s$ z0 B! \% o, b) L

  178. : i& _# m& E; E
  179. info8 M/ b' r% l6 ~) `5 Y
  180. 返回redis的版本信息等详情
    5 p- ^0 c) B8 x- w: K
  181. , y( X8 M7 h& _5 }9 j% x" B7 j
  182. Redis::__construct构造函数* t- ]. p& y5 O' v: k
  183. $redis = new Redis();
    % c# N5 j! h) L0 V4 b) l5 X
  184. ) t1 K& I8 B0 H  t  v2 [+ S
  185. connect, open 链接redis服务3 [! r- G1 y3 b& }" _- h6 g
  186. 参数  m' X- T7 |9 W3 g( G$ s  l/ m
  187. host: string,服务地址
    . [, k# i( M3 g8 C) F
  188. port: int,端口号
    : ^0 }1 s( J  O6 G
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    0 U/ m$ p5 X6 b# F4 T- ?( V! s
  190. 注: 在redis.conf中也有时间,默认为300. X# r5 C( X9 f) v0 M$ v

  191. : A2 A" K+ J" \! ^' n
  192. pconnect, popen 不会主动关闭的链接
    1 ^8 m' y8 y3 |$ s$ C
  193. 参考上面
    ) }$ n, |. @. l! w7 R- J' v
  194. 0 q& n3 G2 u( x6 m3 q" N# Z/ N
  195. setOption 设置redis模式
    + N/ {' F- _; X" ~- l; J- b

  196. 7 n; q  ]3 }% m- z; Q! y
  197. getOption 查看redis设置的模式9 Q" A# X2 u5 M* K

  198. 8 }6 `8 {2 v& y$ P; H( h
  199. ping 查看连接状态
    . D/ [* f6 Y6 S* ~" l6 d  p

  200. ) j6 j4 J6 ^" x- K. y
  201. get 得到某个key的值(string值)( l7 z) H$ ^$ a3 v
  202. 如果该key不存在,return false4 b7 a- v8 ~* k! K* I# S
  203. ; ]) r: S0 N& L& A# e
  204. set 写入key 和 value(string值)4 ^' }9 V. _" ~( A
  205. 如果写入成功,return ture
    & |2 E/ T) y1 ?4 r. z

  206. 9 ^, h7 N; H. ~9 V. d4 d
  207. setex 带生存时间的写入值: O1 d( E( z) Q  O
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.  i3 w6 ?% w& m6 h8 {+ Q" X
  209. - O# o! t- T9 e5 X* ^' R/ L
  210. setnx 判断是否重复的,写入值
    0 d4 y3 L* n. ~
  211. $redis->setnx('key', 'value');
    $ d1 C- V! j: I2 v% N- X7 N
  212. $redis->setnx('key', 'value');
    1 x! {0 |6 o0 v6 ?6 b

  213. " p$ a3 ~+ d. k% U
  214. delete  删除指定key的值4 T) E% n+ o+ s1 Q
  215. 返回已经删除key的个数(长整数)4 `" [+ k6 m! s8 E
  216. $redis->delete('key1', 'key2');( e3 y& S) r  _* y1 a% J
  217. $redis->delete(array('key3', 'key4', 'key5'));6 E! P2 M+ O/ j. g/ t7 |! C
  218. 6 _+ D4 i9 U! D; n8 g
  219. ttl
    8 V) |2 i7 L9 h" c, E5 @
  220. 得到一个key的生存时间6 z0 j8 j9 w; U% i
  221. 0 V7 G5 [6 z( G$ d4 F7 Y7 Z" n* ?
  222. persist
    9 o5 X- T( E, A, X; [8 ]4 [! r
  223. 移除生存时间到期的key
    8 o4 q) y2 `: U' ?% T1 g# ?, W! x
  224. 如果key到期 true 如果不到期 false$ J, y/ I! g7 c* G$ v

  225. " l+ s4 M5 Z9 r) W3 U7 r
  226. mset (redis版本1.1以上才可以用)
    + ~" C, k. ?! J+ ]
  227. 同时给多个key赋值
    6 }& e9 M! X3 u$ K& _0 n, a
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));6 J* A8 D, ]. r! \% _+ _/ a

  229. 1 G/ Y$ n; ]/ Y/ k

  230. ' R' u6 y0 V' h

  231. ' V! H& y& Z2 @- |
  232. multi, exec, discard
    - E, I9 Z" @7 I% l" f1 b" e
  233. 进入或者退出事务模式
      G- x' t9 T5 s5 E$ g% R2 O8 [
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    9 k7 T9 E+ T- ], p% S( \+ a; r9 }
  235. Redis::MULTI:将多个操作当成一个事务执行/ r% A5 ]0 F# V1 }8 k; {# p% W
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    ) m' e& I& S- M* W
  237. discard:删除一个事务" a" |4 A( K, t/ z( @
  238. 返回值5 V, T7 ^1 \/ B, O5 P; @* }" B$ \7 s
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    2 q, x! U5 J& C" \
  240. & @6 S1 L4 M+ K$ y- B7 E
  241. watch, unwatch (代码测试后,不能达到所说的效果)6 F( E1 d% \5 R* P
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    2 Q5 t5 o+ z3 Q$ P8 u8 b% V* o, c
  243. unwatch  取消被这个程序监测的所有key
    " R+ l8 L& W3 P: r
  244. 参数,一对key的列表
    ; \5 D1 O6 t5 B. ?* n  Z
  245. $redis->watch('x');
    / `+ v3 h* @" H$ o# i7 D
  246. & k6 K  a. W( X2 l  H9 n$ m
  247. $ret = $redis->multi() ->incr('x') ->exec();- E  `- r3 k% ?( _1 ?$ g

  248. 6 b- @8 I: V2 H+ i/ F: Q9 g

  249. ; b+ }( @4 W; v; E2 q0 s
  250. subscribe *
    : {& Y" M" B, Y$ X5 A4 B
  251. 方法回调。注意,该方法可能在未来里发生改变
    - Z6 Z  P. V" {$ i, c& q% i

  252. " N. l5 c" b! g9 W. I
  253. publish *) Q) |5 M4 A! m7 x( w- [9 G
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    ! X1 w2 z9 U- f. i

  255. + ~' {0 T* Y  U, N/ R2 j* F
  256. exists
    0 e5 H* y# l7 r6 @- X8 O
  257. 判断key是否存在。存在 true 不在 false; h4 d* Q; Z0 B& \( U: l

  258. 2 P3 ^6 \4 ^2 `) Q# \- E
  259. incr, incrBy) L/ n5 Q: \& @: o" j
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    5 t9 T6 I' t- ?5 D% d( ]
  261. $redis->incr('key1');% O8 J4 [$ `0 m0 o
  262. $redis->incrBy('key1', 10);4 }- l+ b  x) b* E$ |% v! \: j

  263. $ U+ L9 U* S) j1 V* b3 O9 m
  264. decr, decrBy
    5 O! B5 _# e, N# K, b  l
  265. 做减法,使用方法同incr
    : d) U2 F" r& r# w4 E

  266. . M+ K- H4 b7 I" o- {$ s
  267. getMultiple
    ; k* Y) r0 X2 |& J, O$ m
  268. 传参- O; E8 O+ u1 C, H% X7 \
  269. 由key组成的数组
    * h0 s& ^3 R: }+ X& D3 n  s& R
  270. 返回参数% f' C) s' B2 p
  271. 如果key存在返回value,不存在返回false/ m, ]) ?- V( D( G9 u
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));1 d4 y" f7 k# f' B- b
  273. $redis->lRem('key1', 'A', 2);* k3 ^0 l. O" G, ~
  274. $redis->lRange('key1', 0, -1);" \& j, [6 p3 q. T& {* E+ [, i

  275. & e" e/ m) F1 }* H7 b
  276. list相关操作
    " n1 @$ e. a! |5 R$ w
  277. lPush. k7 j; `" E6 p, A# v% ~5 T2 b
  278. $redis->lPush(key, value);
    8 R' W+ F& G2 x
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    0 l. Y& {1 ?( [
  280. 8 N, ]& i- }3 G6 i7 m
  281. rPush8 f1 a7 @3 K) G0 v- |) l
  282. $redis->rPush(key, value);2 f$ m( m6 i) _' w5 A& b
  283. 在名称为key的list右边(尾)添加一个值为value的 元素& O0 z' M& ~0 P' f; p
  284. " E4 u+ I% X1 m& t" G
  285. lPushx/rPushx
    ' ~% z3 D' o( X' B2 n$ ]# f1 b4 l
  286. $redis->lPushx(key, value);' y- |, p$ A4 a( v0 |
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    9 _2 P" v. \& x: n4 @% P4 M+ |
  288. $ A3 _' l+ I" j3 Y1 \) ?/ ]
  289. lPop/rPop- n, d; S, z. L+ _" D8 |" T. h7 w0 Y
  290. $redis->lPop('key');6 t5 W8 B/ s5 C8 O
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素8 q# P* Z! b. \) B! f% o

  292. # ]4 f( D! [' o7 _  Z9 s. n8 v
  293. blPop/brPop
    ) r% G  }9 _. v
  294. $redis->blPop('key1', 'key2', 10);
    : N7 T' _3 `8 n4 C2 E4 @, g
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    / L; C7 S6 `2 z4 e0 ~! c. x* A

  296. 9 R8 k" Q9 [$ _1 I5 C; R
  297. lSize
    ( }( l* B8 W" {8 A* P9 z0 x
  298. $redis->lSize('key');
    / j) ~. P- T4 j
  299. 返回名称为key的list有多少个元素
    8 V* ^6 R/ Y$ c- g% S

  300. 9 J. l+ ]% Z3 y
  301. lIndex, lGet( \( j/ ?5 U8 l6 W: E6 O
  302. $redis->lGet('key', 0);
    " U+ D2 n9 ~5 V! H- ]
  303. 返回名称为key的list中index位置的元素
    , ~' t) I6 J# r, N4 d) H5 z8 G

  304. % N$ r9 f! n. t' g) Y
  305. lSet
    " l" h; i" j+ r
  306. $redis->lSet('key', 0, 'X');4 X" s: I7 ]6 E
  307. 给名称为key的list中index位置的元素赋值为value( V. F, t/ N" u8 R( i" h" k; v

  308. 8 }$ w2 O( }1 d. M: y* t; N
  309. lRange, lGetRange
    4 a  u. W" e( r
  310. $redis->lRange('key1', 0, -1);% L/ d6 \, s- F* N) S
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    1 y% e, d7 z( W7 Q

  312. ! _" m9 [  M8 d  p0 X$ f9 R& R
  313. lTrim, listTrim3 W9 H3 r2 b) O; p
  314. $redis->lTrim('key', start, end);
    " B1 w7 m# E* u
  315. 截取名称为key的list,保留start至end之间的元素2 X: D1 F: r9 j  L

  316. 6 C2 ~) Z1 K# G4 E' d
  317. lRem, lRemove- P5 r8 m+ P: s: u1 s' s4 F
  318. $redis->lRem('key', 'A', 2);
    + M1 r) }0 X2 G* g7 W% J3 U
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    0 n, G3 ^& e" ?3 F8 X+ y+ ]
  320. / V# d2 M/ E# V0 Y6 @
  321. lInsert# L( t# d- e' N* ^5 }
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    % Z3 B' q! T6 T  Q9 D. s, @
  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');
    ) z1 i) [( ]$ t  y3 b9 o
  324. $redis->lRange('key1', 0, -1);4 w& d7 x5 e0 ~! c
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');# p6 o% V5 p- Q0 y- l# s2 T) D
  326. $redis->lRange('key1', 0, -1);
    . H! u2 [$ \" M- O
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');7 n& K/ o. X' I3 M7 I/ N# e" q
  328. 3 f* u+ B, \! {# J6 G: v
  329. rpoplpush
    " @; a. V# _5 m4 u. N( V
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    7 u7 ~7 L; i. |. T1 U
  331. $redis->delete('x', 'y');. p. N* D7 v& e* D0 ?- i
  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'));5 o% l2 J* a: q7 Q2 m3 H3 X6 R
  333. var_dump($redis->lRange('x', 0, -1));  X# A5 V! R+ g
  334. var_dump($redis->lRange('y', 0, -1));
    4 u! Z" d1 w* H
  335. & U# E' J9 A: n" F
  336. string(3) "abc"
    ! y* z# R& i/ r8 X; R5 V% Z
  337. array(1) { [0]=> string(3) "def" }   h8 @6 ~, I% o% ~& N
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    ) \: J- c6 z# @4 X. B4 S
  339. & C$ y& _; B% w9 m& _
  340. SET操作相关& q3 K+ `* \) y4 E
  341. sAdd9 _5 t2 {) U  ~' G( {' y% A! z3 S  v
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false8 G) \, g6 R5 X) B; Y5 H  X0 y
  343. $redis->sAdd(key , value);. K' N1 D: n/ n1 P
  344. " F2 E, s% x& M8 I# h) \9 s
  345. sRem, sRemove
    + N; K, D4 C6 ]0 @0 O- S7 F" O
  346. 删除名称为key的set中的元素value+ B- M0 y1 _4 v4 y* k
  347. $redis->sAdd('key1' , 'set1');$ O% }' u! D& w; i) e: a9 K
  348. $redis->sAdd('key1' , 'set2');+ ^; k, n3 m: g" ]( v
  349. $redis->sAdd('key1' , 'set3');
    % e  R/ N. a$ d/ N7 R
  350. $redis->sRem('key1', 'set2');$ w8 p2 `2 v7 ^

  351. % u5 i* a+ _( k( S7 L3 X
  352. sMove
    & k+ T) R# a, [" k
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    9 s3 p2 q1 }% B; m8 n2 B
  354. $redis->sMove(seckey, dstkey, value);
    2 g" c4 P9 V4 v' t9 l' c4 G

  355. 6 o6 D$ ?3 ?: d  r2 K3 m! L
  356. sIsMember, sContains
    $ s$ f. h5 g0 b- c4 `
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    0 B4 L+ d! ?- i. }$ r0 {
  358. $redis->sIsMember(key, value);
    * z; L# ]9 R( {7 }* b5 L
  359. 6 H3 B* z. ~) j+ M6 |
  360. sCard, sSize! J" \! _# x* j# n6 q3 Z
  361. 返回名称为key的set的元素个数3 M6 S$ q7 s: K, C7 w4 R8 X0 A
  362. % L: |+ `9 C+ R0 t  P
  363. sPop1 V  F) t9 V$ A7 o
  364. 随机返回并删除名称为key的set中一个元素
    : w' q; r" j. Y9 s& G1 w
  365. " e( D7 s! }, i* Q% ?0 ?
  366. sRandMember# Z5 d& U1 B5 B1 y" k# |) n/ |
  367. 随机返回名称为key的set中一个元素,不删除
    ) ~% L5 j8 X1 E3 A

  368. 2 U' x6 W  g# I0 e6 A
  369. sInter
    % k& J6 w$ k: `
  370. 求交集
    ) _# {- |6 t& d

  371. 2 _6 l1 u4 M# o9 V7 ]
  372. sInterStore
    9 e3 E0 O/ s" b7 o& j5 q
  373. 求交集并将交集保存到output的集合
    $ C& w0 [1 J; x
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')- @+ @7 c0 R8 ]. \; _
  375. 2 A4 W5 b& @0 b
  376. sUnion. T; `# j: U9 f4 t' e/ T
  377. 求并集
    7 G5 G  `1 n. b
  378. $redis->sUnion('s0', 's1', 's2');
    ; B! n0 V: X$ c- Q  a5 R" g
  379. s0,s1,s2 同时求并集0 n6 ^- s" \  F. A, N
  380. ; A0 p; c! U. y( O3 L1 O! U- Y
  381. sUnionStore+ {- {7 R9 l+ ~  e) N2 R! U
  382. 求并集并将并集保存到output的集合# f  u" ?5 r. [( V7 q
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');+ a8 A7 _/ X4 \8 `* l" a$ B6 p8 [& ?

  384. " w7 d: J( _' t/ u' m. v9 e
  385. sDiff
    3 z3 @) C9 `. z# v; e
  386. 求差集: |- J8 S) Y3 y  i3 O* X
  387. 1 X& j# Z) E- I" @6 Z. E
  388. sDiffStore5 `) x* Y7 ^; X! j6 A
  389. 求差集并将差集保存到output的集合! V8 w  L8 q2 g1 J6 V

  390. ) r+ j7 w) m# X/ l* G4 i% w/ [
  391. sMembers, sGetMembers
    " [: [9 }8 q. i9 I' W/ g) ?& y( G
  392. 返回名称为key的set的所有元素% \" n7 m* a6 n9 ^) d

  393. & W. `; \6 m, ]- B3 R
  394. sort
    , h* R% G+ U# K5 d2 @; ~: x
  395. 排序,分页等0 n# t+ }& y7 u2 t
  396. 参数" A/ v9 J4 p  Y' a' q! k+ S
  397. 'by' => 'some_pattern_*',
    / ]. o* ]; {5 J
  398. 'limit' => array(0, 1),* }2 `/ A; N- g4 j( U) @0 m
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    ' f4 f  q2 u5 F8 c: I2 e
  400. 'sort' => 'asc' or 'desc',  \& y% [0 r3 a. _
  401. 'alpha' => TRUE,
    2 A9 w2 R1 V9 |& C# `! P' I) x, f. M; v
  402. 'store' => 'external-key'; {" _; E. \! }0 g  h
  403. 例子0 m8 |5 p7 q. u1 w  v& 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);: v4 y2 [9 @. i( U& V  Q+ C$ [7 I
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    . b9 t; r. S4 W8 t6 M0 |6 \9 q
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1' S4 b% y: j2 v% g: {% m
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)55 z# v6 }9 h( @: h- C; ^

  408. 3 o+ ?' R5 E7 i4 N: O
  409. string命令) \7 `2 }* @' p% a+ G
  410. getSet
    7 n# s0 R- _  ~. c7 d6 s, p4 d! v
  411. 返回原来key中的值,并将value写入key
    3 Z& d) B4 m2 J& Y+ m- b- P& {& @
  412. $redis->set('x', '42');
    1 S0 X9 W- G  X9 z
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'  F# K  O* t$ P8 d( J+ v- s
  414. $newValue = $redis->get('x')' // return 'lol'! T" E. U( y, O8 q

  415. ! k1 {/ X. c6 m: b
  416. append" D: j; f# K  ]4 J, A
  417. string,名称为key的string的值在后面加上value: Z. z+ Y& j! X6 v! p) S2 r$ U3 z
  418. $redis->set('key', 'value1');
    9 r+ J/ b' a! v% p/ f% z- I' x
  419. $redis->append('key', 'value2');
    4 h1 f4 e" [* G% |  X. e
  420. $redis->get('key');
    9 V/ ?4 h  K4 m& Q3 k3 N1 l
  421. 2 I. B$ a9 I" K6 z
  422. getRange (方法不存在)
    ! w% O; m% E' C
  423. 返回名称为key的string中start至end之间的字符" Z& Q; y. m) C" [3 R4 C
  424. $redis->set('key', 'string value');( k7 ~9 U. K- y3 P. ]/ \
  425. $redis->getRange('key', 0, 5);
    4 B) {, c! f3 A$ z3 Q
  426. $redis->getRange('key', -5, -1);4 A' f, D5 o; |+ u' q8 R

  427. ; `9 M" C/ s6 w: ~, K
  428. setRange (方法不存在)
    5 [' g% c8 B: s
  429. 改变key的string中start至end之间的字符为value
    + y: S5 e& `5 }0 I- P" I! A2 B( x- s
  430. $redis->set('key', 'Hello world');
    . ]* n. O# u; V; l% c
  431. $redis->setRange('key', 6, "redis");
    4 B# d4 Z' v6 t/ }+ |; I5 H2 N; {
  432. $redis->get('key');& j! F8 N4 l3 D: z+ Q0 L
  433. 4 [# g6 @- R6 b% N7 o* L6 J. B& j
  434. strlen
    0 U, E8 D4 D+ V! e( b: U( ]
  435. 得到key的string的长度* e; o; L% I4 N( R: B6 X
  436. $redis->strlen('key');6 j5 j/ o8 J7 |/ G1 O
  437. - J% g' M* G* U& p% A
  438. getBit/setBit3 u$ Q3 |2 \6 m( Z  E! _5 T
  439. 返回2进制信息7 S/ L1 J- Y) e' }  z7 r6 [2 @
  440. # c" Q7 [0 ?8 h$ t, W! z; H2 l: \
  441. zset(sorted set)操作相关
    # s+ F: g7 p' q" h+ {
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。  Y4 B: g% `" b6 z( v+ q
  443. $redis->zAdd('key', 1, 'val1');
    6 @; S; t2 @% h4 k; g& o3 h
  444. $redis->zAdd('key', 0, 'val0');
    6 v/ ^8 y2 i- ~9 P5 z/ Z- K
  445. $redis->zAdd('key', 5, 'val5');, t3 \7 ?6 S1 M+ c& q
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    6 V$ E0 E2 @, }: Y7 v' z1 I$ B
  447. ) a* h/ q; y2 J1 @; ?% |7 U
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素  s) c9 n' m/ ?" o4 |9 {# d; G
  449. $redis->zAdd('key1', 0, 'val0');5 s" H! x5 l3 h5 L
  450. $redis->zAdd('key1', 2, 'val2');) \7 k- l" l# @' ?9 D  M
  451. $redis->zAdd('key1', 10, 'val10');
    2 u# w* a, G3 g' `
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    & I0 w+ o' u+ r/ N, {. s& R' `

  453. 7 U9 k; u5 K4 {/ U6 a* ?
  454. zDelete, zRem( c$ S( \, B& S  b- M% w
  455. zRem(key, member) :删除名称为key的zset中的元素member
    - d- g# ]3 P! d& S: _
  456. $redis->zAdd('key', 0, 'val0');" S0 X6 t4 b; q; k
  457. $redis->zAdd('key', 2, 'val2');: f; D  g& A3 V/ ?( ]2 t& d9 x
  458. $redis->zAdd('key', 10, 'val10');
    - \( D8 U. h, L% i/ g
  459. $redis->zDelete('key', 'val2');' A4 P9 Q2 ~5 G. ]/ I+ b
  460. $redis->zRange('key', 0, -1);
    % @7 u" [7 t4 e# Q

  461. # b" O4 B$ c, X( K( M) h" C& }, [
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出' E  L  [8 E4 g/ ^% N% Z7 c9 n
  463. $redis->zAdd('key', 0, 'val0');4 y' ^% T4 G: l1 |
  464. $redis->zAdd('key', 2, 'val2');7 X0 W7 s4 g; r$ s4 X
  465. $redis->zAdd('key', 10, 'val10');
    8 n- Y1 W+ n6 F7 y1 J# l# ~
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    $ t/ x1 J& r$ M! i

  467. , O& @. e8 ]: `# @/ m" ^: n
  468. zRangeByScore, zRevRangeByScore
    . j+ g* ~' ?* }
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));) q7 Q9 G+ G$ [4 D$ @( N
  470. 返回名称为key的zset中score >= star且score <= end的所有元素- h6 e6 A! [+ m$ S

  471. ' t' q+ |$ h' ^3 }
  472. zCount% c. X2 s+ B2 Z3 E" I
  473. $redis->zCount(key, star, end);8 L4 d$ D- c& K9 @, u# Q1 f4 h
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    1 l4 f( h$ s3 R; `

  475. , g# C+ P& X+ a0 L
  476. zRemRangeByScore, zDeleteRangeByScore
    6 V, @' l% Z) k0 {  d+ E& k
  477. $redis->zRemRangeByScore('key', star, end);
    9 X9 t1 p2 C# O1 [2 v$ [3 v
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数, I4 i. A( U7 c/ N; T
  479. & T7 Z: I  M- @$ _. D" F- V
  480. zSize, zCard+ y, F9 g. J' V1 c( n1 e* h1 O& ^
  481. 返回名称为key的zset的所有元素的个数' M" G+ {8 S% V
  482. ( P! Q4 B, a1 O+ g) x. H
  483. zScore' H: v) R5 b  T( t. a
  484. $redis->zScore(key, val2);* L7 i) z( Z! H0 }1 C8 l$ U
  485. 返回名称为key的zset中元素val2的score
    - G, W) l, I) s0 C7 M
  486. & i& ~1 W7 N3 ]- Z# Z( z
  487. zRank, zRevRank+ N+ E3 {. Z$ |+ Z, k. J7 f% Z
  488. $redis->zRevRank(key, val);- R, a3 J4 I  L3 b8 a+ o+ @) x! Z
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序, p8 x- z/ u" q# |, J6 C" i' X

  490. 6 U' {3 v  s) N; E% _" r
  491. zIncrBy% `- `+ u( c, L1 H0 f
  492. $redis->zIncrBy('key', increment, 'member');
    4 `, |9 N) s! A/ ?1 Y
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment, u. V: J1 m$ a0 v

  494. . Y! n9 E2 ]$ i
  495. zUnion/zInter
    ( r  G/ q+ d" [! v3 ~* U* ?: T
  496. 参数
    - b% t( x+ v) z- r8 p% p
  497. keyOutput
    # S: I6 l% [( r; n* P5 Q! i
  498. arrayZSetKeys
    ! ^/ P! ?" ~% M* a
  499. arrayWeights
    . B( d+ J, H1 V' U5 n) D- }/ \5 y
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.& f, ?0 Q$ U/ n; {- p. [
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。/ t* Q9 T  a+ j. W7 q
复制代码
* y( ^2 d2 v3 j4 ^: _3 m* i

7 c, N1 q  ~8 K/ O" x
0 y$ L* M9 j7 a5 D# H/ m' n& N! t( F- F) r5 i" Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();   Z7 a4 _/ [* w
  2. //连接redis服务器 5 U" P- o5 F/ N. ]/ J
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 11:33 , Processed in 0.168561 second(s), 18 queries .

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