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
    : H6 z6 v, Z+ q5 x3 G6 }
  2. $redis = new Redis();  
    # m7 {+ @6 [' K, A
  3. $redis->connect('127.0.0.1', 6379);//serverip port1 G# G  P3 h1 o/ v
  4. $redis->auth('mypassword');//my redis password
    - `  S. U) \  D$ D7 o) B7 B  q. i
  5. $redis ->set( "test" , "Hello World");  1 h. O: {' @9 U" ^0 a) _$ P# z
  6. echo $redis ->get( "test");
    5 x, h# U: l0 O' n2 |  `7 G9 ~
复制代码
php操作redis函数封装
  1. /**
    5 r1 Y1 o8 e2 s" o3 b
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数$ _: ~- H" e5 T4 V& _
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi% e# u+ d) Z4 J- ~1 Z# x' T
  4. */. J% d, m# k( d2 u: E8 R
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){2 q  s; h1 [/ P5 H. b6 f- Z5 H
  6.     if(!$key||!$value) return false;. w* r; ~2 K* f; Z4 {1 H& s
  7.     $host = $host?$host:getenv('REDIS_HOST');& Z! T8 @7 v/ ~' P3 Q* r2 n8 v
  8.     $port = $port?$port:getenv('REDIS_PORT');
      r% {% \% ~- C# X! Z' b& I+ f* O: f
  9.     $redis = new Redis();$ y7 _& X- s) a$ ^8 u
  10.     $redis->connect($host, $port);" X) r) m3 V; ~  l
  11.     $value = is_array($value)?json_encode($value):$value;; ?, L6 `4 r( T6 Q' w
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    7 j, y# H( y# P9 O
  13. }
    ' r' Q. R! d! L
  14. /**
    8 l6 Z5 N! @# `5 N
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    + [+ c3 C' |. h8 p) ]
  16. */
    " H2 f: n& R( m$ j6 N; R
  17. function RedisGet($key,$host='',$port=''){
    0 y; A2 S% P+ }& G
  18.     $redis = new Redis();
    ' `  d* {: w( }' I4 g5 F
  19.     $host = $host?$host:getenv('REDIS_HOST');
    9 n2 R  Y, _' C$ M
  20.     $port = $port?$port:getenv('REDIS_PORT');
    ; _+ j. S1 k4 G7 @! Z, S
  21.     $redis->connect($host, $port);; e) l- h) ^. A) J" }, [
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);) m0 h- k: U  U& r) X1 a& u) ~1 y# R6 i; V
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);0 q0 p, T  N, X; F. G* m, \
  24. }
    # ~$ l+ |  r) `& I8 a
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
5 b9 K4 c  |' @9 x; [0 t
  1. setex 带生存时间的写入值
    & |$ |; t, y. U% [/ s
  2. $redis->setex('key', 3600, 'value'); 4 e' P# ~; [( \! t+ I7 z; H
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1# I. V1 |- R" r/ j
  4. $redis->setnx('key', 'value');0 e# {, t4 p+ e, S; M' e
  5. 返回已经删除key
    ' T! m$ \6 M2 r( C& E. ?
  6. $redis->delete('key1'); 成功返回1失败返回0
    8 ?- b0 b0 Z4 T: k8 J
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    0 \) ?; Z8 x; F: a8 z
  8. 查询生存时间
    # o3 I3 C) l% B! B
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)' u7 ]3 m: O  k. m' V3 k. I
  10. 同时给多个key赋值,同时设置key0和key1' R) p! H  F. ~: o  f+ W
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));; ]% j! N( k% A1 o5 g1 \7 P2 W
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值8 Z, B  _+ ?% B# k, o) h
  13. $redis->incr('key1');9 I3 e+ s3 B. I' J. e- K! ~# O' b- i
  14. $redis->incrBy('key1', 10);
      S+ @) X$ m0 m; o" J
  15. 减法跟加法一样
    " \+ A; e# F5 m  K+ [3 H8 L4 d
  16. $redis->decr("key1"); 减少1( X, p$ W. u) N  F8 N. {
  17. $redis->decrBy("key1",5) 减少5
      ]' H, \* k- s$ s7 U3 F0 j
  18. , R& I0 P" x$ z
  19. list相关操作,连表操作
    - _0 d& h( s/ Q$ [5 ~
  20. lPush
    " X% p' e) T1 C5 F% u! Z) r
  21. $redis->lPush("list", "888");
    4 |& ~  i( \2 Z5 K
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数9 v8 J+ \0 l+ M8 z
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式0 u, |. O- t7 A' D% \6 X9 z
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素+ u% S) W) R, x* A
  25. lPushx/rPushx  D( [; r! R: P/ @9 L9 u
  26. $redis->lPushx(key, value);
    . y9 E' @0 F# T
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加$ g( b% W- x/ d3 o& \

  28. % g. ]9 d! Q1 ^; z
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    ) o- L- y9 w& m% |; e
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    1 v5 U& A( @; ?
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    ' B8 I0 i$ V1 ^" @+ `
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序2 K  [8 O7 Y+ D6 a
  33. sadd s1 zhangsan
    2 g- i" l! u1 e* }2 k- e2 B; ?
  34. sadd s1 lisi
    & k0 U: V1 z9 a' W9 h( M+ c
  35. sadd s1 wangwu! v* q9 ]: c3 j8 _  ?& R6 c1 I
  36. sadd t1 yangxingyi2 o5 Z# q, t4 u3 D6 T5 [
  37. sadd t1 lilei
    ! Q* q! C# Y/ p( b( g1 K. v" S
  38. sadd t1 zhangsan% ~/ X3 V* n- O) X, T
  39. smembers s1 s1的所有集合内容8 i; w8 |3 F- r. a. j
  40. sdiff s1 t1 s1有的,t1没有的,差集  R2 Q: B1 E( l' F% H7 H
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    " v) O+ W) H% x
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    * J* z+ l# X1 R
  43. spop抽奖场景,返回集合里面随机的数6 M5 R$ B" C4 ~& {+ c! ]
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了, m! R( ?( E+ q3 |3 k
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    ; `8 t; B- r3 D* u" V; z8 X- I2 Q0 S) v
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的7 S% ^  n1 H7 }
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    + p5 O. a* Z( V. ?# J
  48. $i = $redis->srandmember('s1');echo $i;& C1 ~. S! ~/ e: n7 O7 N, H3 s
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    + }  U, R0 ~5 {" t+ }
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    & X# M6 E3 C# M& ]  ^4 `# v
  51. * y3 @( M7 e. i! _. T
  52. zadd key 2 value 有序集合; G' R' x. f8 \* E% [: H
  53. zadd y1 1 zhangsan;
    " h2 C' j* Z2 \& w, A. p
  54. zadd y1 3 lisi;" d( {2 x7 a* _& }9 K* N  ?
  55. zadd y1 2 wangwu;
    ' s; w- D4 {5 i: m/ D  b" ?' U! _# K
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi3 J$ w  p' `( @  l5 I# K# Q
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    9 _4 b* ^# u: E8 `8 X
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键  Q3 g/ F/ ~$ G
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先, I* a' G( w) {6 V# [8 `
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    6 M2 s7 U% J. o
  61. 无序就scard,有序就zcard,有z没有s0 {; I; A) y( V  F  ~1 N( H# B
  62. sInterStore
    ) x2 j1 C8 J) `0 D
  63. 求交集并将交集保存到output的集合
    4 H# b9 o& M# O
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')7 ^( w% O% C4 r( |) c

  65. - q  V' W" _3 I! ?! N
  66. Hash操作( O" c2 @- c8 M( \/ N% V9 e7 e2 _
  67. hSet# \* M# s3 D2 w
  68. $redis->hSet('h', 'key1', 'hello');/ o+ V+ P; y' s
  69. 向名称为h的hash中添加元素key1—>hello( g8 j  Z3 C; @7 e' i
  70.   m8 O6 f; k8 D5 k: P" u
  71. hGet8 B7 A$ s* i9 r. h/ l9 a
  72. $redis->hGet('h', 'key1');+ p7 p* W$ b4 |1 c! I7 N
  73. 返回名称为h的hash中key1对应的value(hello)
    7 D7 o. S4 _+ o+ b

  74. 6 F8 Z$ c# t: p& k
  75. hLen3 }8 ^$ a: V$ O+ [
  76. $redis->hLen('h');
    - k; z. ?5 y$ n: d4 Q6 q5 F
  77. 返回名称为h的hash中元素个数5 K1 l7 Z; ?  j7 W% C) V! E

  78. 5 b4 c  ~) B% a1 R1 G
  79. hDel
    8 U( T! X5 n" u, e! V
  80. $redis->hDel('h', 'key1');
    0 o- S4 E; u/ {& {
  81. 删除名称为h的hash中键为key1的域' M6 X, Y/ c  Q

  82. $ m7 r. f! @; R+ e
  83. hKeys  T* J3 R! U) g( ]1 r
  84. $redis->hKeys('h');
    8 q5 f, M0 z! [! b9 k* n1 d
  85. 返回名称为key的hash中所有键( S) t$ C6 n0 p6 ~, }4 `1 \0 q0 w

  86. 1 I. S" ]& [' t
  87. hVals
    # p% V0 u7 m: ?1 n3 h5 k( F
  88. $redis->hVals('h')
    7 ~0 }3 g5 o/ Z, k
  89. 返回名称为h的hash中所有键对应的value
    ( B9 o8 R3 B7 k

  90. % E  k4 M/ c  s; q6 u0 I
  91. hGetAll
    , G3 k0 S, T0 l  c5 B( x" l
  92. $redis->hGetAll('h');! H9 [) L5 a1 u
  93. 返回名称为h的hash中所有的键(field)及其对应的value6 n' ~& O5 U3 [6 p9 G

  94. & ^# l, d5 ?& y; e% E* i
  95. hExists
    $ @. N) N3 _8 l
  96. $redis->hExists('h', 'a');2 \! n" O- q5 O. I
  97. 名称为h的hash中是否存在键名字为a的域4 ]  M& H6 ?+ K1 q
  98. 6 d# x9 d3 T7 j* `  ~
  99. hIncrBy# s: `$ f' p& B9 n2 K
  100. $redis->hIncrBy('h', 'x', 2);
    , ~3 M7 ?5 d! M1 T& I. E# \
  101. 将名称为h的hash中x的value增加2. D5 s+ O  q$ D& s, d) \- ?6 u; H
  102. 8 h9 C: x$ R: L5 y& i$ L
  103. hMset
    ! D' ~/ ]3 Q. ]: k7 B/ f
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));. R+ K3 A1 b  t
  105. 向名称为key的hash中批量添加元素3 U2 I, ~! u8 |* J0 d9 C% k

  106. % R- o8 h; {1 _4 n" X; b$ S
  107. hMGet
    $ I& G) t- b( y. T7 v
  108. $redis->hmGet('h', array('field1', 'field2'));
    1 O$ d) S( k) j/ D
  109. 返回名称为h的hash中field1,field2对应的value
    ' P9 R% }  o. t$ h' y! F8 k' l6 k; q
  110. # \, G5 _! L& R( O# [9 t5 c
  111. redis 操作相关
    0 l. Y7 u! Y' N  `
  112. flushDB$ _$ W% S6 T9 P) w" V
  113. 清空当前数据库
    8 `- i( H7 h4 S& }2 b) i9 Q, f3 i

  114. 2 W$ g$ D7 x$ x2 K; A
  115. flushAll
    7 q1 l4 a- Y4 B5 k; y
  116. 清空所有数据库) U( p" I- M% R
  117. 7 j4 a- U% V" @( n# l
  118. randomKey+ v. b) D6 I; d0 s2 l# q
  119. 随机返回key空间的一个key
    6 a3 |# G3 _' y2 ], q
  120. $key = $redis->randomKey();' X/ n5 C6 g* a
  121. 8 _; Z$ B, Y; O
  122. select
    " T5 Y- j. s+ G7 m
  123. 选择一个数据库
    . g3 b2 C: z( L% a0 b& c
  124. move
    % Z7 f3 |- l7 ]& f. o
  125. 转移一个key到另外一个数据库
    : v' S2 P5 [; f7 @# {& t# O% \
  126. $redis->select(0); // switch to DB 0
    0 Z" t8 L2 T- |: Z
  127. $redis->set('x', '42'); // write 42 to x! H( e* S9 r5 e% L2 v
  128. $redis->move('x', 1); // move to DB 1
    ( D+ ?) L7 ~8 C9 ?" D
  129. $redis->select(1); // switch to DB 1
    - b$ |6 A/ l2 Z
  130. $redis->get('x'); // will return 42( F4 Y7 c. ]' T4 z1 Q0 F& r
  131. ) P* E- J  v0 x* ^/ K7 i4 V
  132. rename, renameKey
    # Z( S* J( z$ J3 n1 g; k/ z
  133. 给key重命名
    $ T1 |$ T4 z. p, j0 W' J# G- h
  134. $redis->set('x', '42');8 ^; c- o! l1 w( Z4 r% T* C
  135. $redis->rename('x', 'y');
    : O9 I  y4 t2 O% C1 x
  136. $redis->get('y'); // → 42/ g( O7 ~+ j) ~4 J" I3 F+ `+ B. w
  137. $redis->get('x'); // → `FALSE`  P' Q3 r5 n4 }+ s" m" b

  138. * r. J. g, {. l) A8 G
  139. renameNx8 |3 M( l) l2 e8 a/ Y
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功( {5 w, z2 _3 X: Q
  141. ; P5 n2 m8 E2 W2 ]& E( H
  142. setTimeout, expire
    ; V6 R2 G& ]) B: h) V
  143. 设定一个key的活动时间(s)
    + V: P2 ?# u; u9 Z3 o  x+ C2 W4 Q
  144. $redis->setTimeout('x', 3);
    ) k# e9 d' k7 c2 C7 V

  145. & i7 [) |1 P4 n; {
  146. expireAt
    8 W# H: G. O$ W+ a
  147. key存活到一个unix时间戳时间# h$ D4 X0 M8 M/ z# v% {6 k' l
  148. $redis->expireAt('x', time() + 3);) \2 ]  p% B" O5 p! ~0 f" |" y4 p
  149. ; L5 ~$ |5 B4 k' Q# [$ O
  150. keys, getKeys
    ) u- h8 S) u9 H) E
  151. 返回满足给定pattern的所有key2 E/ p+ B5 H- h) y! @) }. ~
  152. $keyWithUserPrefix = $redis->keys('user*');
    # A+ [8 T$ w! h* v% U  Y

  153. - l; g+ O+ _( U: a3 K+ s
  154. dbSize+ P. w: Z* N. j9 ?+ m! G0 @2 c0 c
  155. 查看现在数据库有多少key8 I! u+ `7 I1 o2 o" o9 K3 F
  156. $count = $redis->dbSize();
    2 C, n$ P5 d, U9 v

  157. + Y2 L+ I2 r" x9 d  u7 J
  158. auth
    : s& ?3 d$ E" E2 h$ ~* y9 ?
  159. 密码认证* A; V% o% k2 A' f, _
  160. $redis->auth('foobared');: F5 z4 Z% C; {
  161. : A7 I( M4 ?$ B  |# l
  162. bgrewriteaof, Z, }! _" N5 I; c8 j: j
  163. 使用aof来进行数据库持久化0 F9 r1 u  D: |; l( Y! w
  164. $redis->bgrewriteaof();8 ~6 M2 f  e+ n* x

  165. % N/ G8 A+ T" F; w- S. `, Q% l4 `8 x7 X
  166. slaveof/ c' b' ]( B* T+ n& J
  167. 选择从服务器
    ( v. v( B: ?0 v% R1 {0 o) ~: }0 ^* b
  168. $redis->slaveof('10.0.1.7', 6379);
    + [  X$ s* L6 k
  169. 6 F+ r9 k- D3 D3 ~6 l
  170. save
    4 a% k) f" ]. y3 D
  171. 将数据同步保存到磁盘
    * I3 s3 A& v+ H/ p8 ~& E
  172. 9 u' g3 W( `, |2 s- m4 q/ a
  173. bgsave& b+ R, T8 x0 s- m$ b3 V' `# b# C
  174. 将数据异步保存到磁盘* N4 l" K6 `' S9 X9 s3 Y

  175. 0 z8 i/ s" r1 S1 Z
  176. lastSave& }! a) B3 Q" R7 H8 {8 D4 f
  177. 返回上次成功将数据保存到磁盘的Unix时戳2 q2 g, z9 j3 m4 J# y) B

  178. 1 _( C3 b+ a; ?' ~4 o3 X8 E
  179. info
    7 f, \9 y, P$ C6 _2 q
  180. 返回redis的版本信息等详情
    " V+ c# u4 Z+ w5 f6 \$ k: Z# x

  181. 0 M! x% K5 A# ]- l' {: _
  182. Redis::__construct构造函数  e/ r. p$ T: s7 ^
  183. $redis = new Redis();
    3 ~' N& W: V- u* C

  184. 9 h, _# A% h2 N' s9 W; s# K
  185. connect, open 链接redis服务+ Q: I. h" C3 U. w6 E" z( d
  186. 参数  X  ?' A$ G0 t6 R& V
  187. host: string,服务地址0 {. M, ^8 Q* w) H
  188. port: int,端口号
    0 q# s- {( c  a1 k) ?7 `* ]2 d& w
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)  H5 X; p" y0 {( T( l% V8 |9 n& g
  190. 注: 在redis.conf中也有时间,默认为3007 N7 k) f. D* f% |- _& c, T

  191. 0 S; z& K: a( i2 |# n
  192. pconnect, popen 不会主动关闭的链接, Y1 t- u9 Y9 Z0 c/ Z6 r
  193. 参考上面) Y/ j0 S/ q) F$ U+ z1 t
  194. 6 u5 J+ g$ M6 }3 U4 n: V
  195. setOption 设置redis模式
    1 q5 r' ]7 W) m( W8 ^
  196. : W; t, G+ O2 R$ L
  197. getOption 查看redis设置的模式
    ' v1 S  ^4 p/ O

  198. & ^, q- i' \% v
  199. ping 查看连接状态) S8 H7 D: D0 k& T; |. {8 {

  200.   [8 v' i: w% J0 B9 [5 A
  201. get 得到某个key的值(string值); K% r5 |: E9 g7 V) i
  202. 如果该key不存在,return false
      g9 v+ M' n3 O! r  n+ h
  203. . y( _2 K6 v. `
  204. set 写入key 和 value(string值)* J# h: V' Z3 l& l- z
  205. 如果写入成功,return ture2 W4 f4 b/ I& C3 |
  206. $ }7 I3 R! V& e9 F" v
  207. setex 带生存时间的写入值
    # v' ^( m( q9 K6 @- \' B/ Z
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    5 u7 T& ~  B* b1 {- }% j
  209. 6 R& r8 J) F& k6 @. g* v
  210. setnx 判断是否重复的,写入值
    4 j8 ~% e8 [4 H  d
  211. $redis->setnx('key', 'value');
    # k, {* {# i0 j( o
  212. $redis->setnx('key', 'value');
    1 ?# q* q: D' J# j. }- f$ Y
  213. 2 [6 w9 c( t  U; F* G3 m
  214. delete  删除指定key的值
    7 g, q1 j0 @5 j7 E
  215. 返回已经删除key的个数(长整数)
    8 Z3 S: f  v7 c! o4 d  u
  216. $redis->delete('key1', 'key2');
    . K- E5 r  g* @  s2 J8 }) b
  217. $redis->delete(array('key3', 'key4', 'key5'));
    : E5 [, e5 E2 ~

  218. 9 e, n0 C  M2 f4 h" w* s
  219. ttl0 E0 J4 W0 G$ `! c
  220. 得到一个key的生存时间
    % G- y8 J1 W0 M. g7 b* T* z) k0 i
  221. ( e" o2 W# |9 E
  222. persist$ l7 j7 D. d2 N3 T0 A4 t
  223. 移除生存时间到期的key
    $ i) C; T7 u2 y  ^* N
  224. 如果key到期 true 如果不到期 false
    9 }( L$ d% l2 A8 ~* q  u7 N

  225. ( o; D7 t# `+ j$ h+ D( x$ b" C
  226. mset (redis版本1.1以上才可以用)
    $ J/ ~) v# Z$ o  u" y0 n
  227. 同时给多个key赋值
    6 f1 I) [+ N% R6 t
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));9 o* G0 Z! m$ X" U0 ]3 v$ P

  229. $ v3 S- a  R, h8 I/ O8 ?3 R4 w
  230. * O/ \9 W( }- X8 P! f; k! P0 @
  231. 9 U9 M# M0 J3 p0 b) a
  232. multi, exec, discard
    % S+ R2 v# e5 m* J
  233. 进入或者退出事务模式( o* a" h  q9 d( Z( o7 `1 D
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI* ^& O: S' g/ a5 [; c& L# |6 G# s" g5 j
  235. Redis::MULTI:将多个操作当成一个事务执行9 I: ?' Y% M9 N& A, j
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    . [- X9 E! D* d3 c, I% U
  237. discard:删除一个事务
    / T8 u+ j' l, U4 s; j  B
  238. 返回值( C/ G, s% ]% Y! a! d/ q
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    + b7 A7 H% Q  V4 j  }
  240. # P, ]- g; ?" b$ f8 R9 f/ c
  241. watch, unwatch (代码测试后,不能达到所说的效果). Q* C4 E$ N# U; ~) x0 T
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)$ W% s. u% Y0 l/ @1 v/ Z  |
  243. unwatch  取消被这个程序监测的所有key# o: c$ C- V4 G7 R4 N' [
  244. 参数,一对key的列表/ J  O% W7 n8 p7 S4 l
  245. $redis->watch('x');
    6 v2 p2 }' _4 b6 l; E! H, k
  246. ! E3 @/ _; W! J1 z
  247. $ret = $redis->multi() ->incr('x') ->exec();; C: ~6 c) J0 m: {0 i2 O" {

  248. 9 n8 U" U, B9 D& _% x
  249. $ o- r7 p$ }  t& v% ^' M4 M# z0 R" Q! c
  250. subscribe *( ^. w1 E6 R: C) h0 I
  251. 方法回调。注意,该方法可能在未来里发生改变
    / Y% t4 X/ @1 q0 G  F- h* L/ M

  252. 3 e" G/ L9 v( w2 B1 U, X. w
  253. publish *
    0 j2 {- `/ E  {* P$ }) N3 A
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变9 y& N: g7 y0 h( j" f3 E
  255. 5 e: `. q% t5 }9 K4 Y9 @9 }2 ?/ F
  256. exists
    / Y  p0 f! b* Z- V9 S
  257. 判断key是否存在。存在 true 不在 false
    $ m- V, \$ \8 B

  258. 9 O, N: I% {6 d% r8 i6 x0 b
  259. incr, incrBy
    * H8 }7 X4 c  M
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值' r5 ]+ {. L% \7 z9 X" B7 [4 x
  261. $redis->incr('key1');
    4 B7 k8 T& i% K+ C3 L
  262. $redis->incrBy('key1', 10);+ q5 n2 W5 ]  O5 Q! P& e4 W

  263. - B4 Q) x0 t: U7 ~: a
  264. decr, decrBy" g1 g/ G. i" S, u7 U
  265. 做减法,使用方法同incr
    ' k. |; {" F9 n
  266. ! M! g- |1 {4 A: [1 t7 I, ]
  267. getMultiple
    - V. Y" m) e; \
  268. 传参
    5 }2 }# o# d! u3 v8 p, X
  269. 由key组成的数组4 ]; B! F- R% d
  270. 返回参数
    & D& S  h) H6 [5 l
  271. 如果key存在返回value,不存在返回false4 v; f" O/ Z. T4 y
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));  I) l; B, x+ v' b7 o2 k* K* L
  273. $redis->lRem('key1', 'A', 2);
    4 p( g: m5 i3 E- V. Z$ r
  274. $redis->lRange('key1', 0, -1);9 V* R4 L+ B8 S0 v
  275.   h6 ~5 ~+ l+ U* v; M
  276. list相关操作
    5 u' k0 H+ q+ M  @8 q2 F0 a1 z
  277. lPush3 Z( c: i; G3 R1 x' h
  278. $redis->lPush(key, value);
    ' z$ R7 _: o" F. [1 c( _
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    " y3 W- a1 f/ [0 v
  280. 0 V( h8 z, k) a: ]/ a1 ~' D1 ?/ g
  281. rPush
    4 w, w1 x$ L3 H9 b
  282. $redis->rPush(key, value);5 c# l" f  S0 ^4 s
  283. 在名称为key的list右边(尾)添加一个值为value的 元素- G3 y# j$ o6 |! P& j( V
  284. ( q% h6 y$ ^0 _1 K% C
  285. lPushx/rPushx
    0 ^) L/ r9 u8 |3 l
  286. $redis->lPushx(key, value);
    7 l  R9 p5 c  c3 f
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加) a. V; v* W4 w% j
  288. 3 ~; ~4 e; r' l0 K$ g
  289. lPop/rPop1 @7 V1 w+ v8 E! F" \
  290. $redis->lPop('key');
    ) j/ K8 N4 z! C( r" K
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    - @8 w1 G3 Z! j0 @" k% T
  292. & w" X* p( f( r* @) }" E" S0 e! e
  293. blPop/brPop
      Y" y" T& H# z9 N9 g1 B- X
  294. $redis->blPop('key1', 'key2', 10);
      A' x7 s: L4 F2 J) A! \! C% B9 E
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作" r$ d! P7 h. G: d4 E' _3 O/ c

  296. . R7 p2 M3 Q. u! W
  297. lSize
    ' o  W9 N4 R5 @3 y' Y3 h2 E. j
  298. $redis->lSize('key');5 `9 k8 v6 l" f( H+ O. n
  299. 返回名称为key的list有多少个元素
    ; f. H/ b' H, P& Y7 C

  300. & p2 i2 ^! h  e' x) r; U' T" p/ c" c  \
  301. lIndex, lGet  S' A0 l* r" Z
  302. $redis->lGet('key', 0);
    . F) ~2 t1 @( ~0 i* m2 W
  303. 返回名称为key的list中index位置的元素
    6 Q) \+ W( H" \2 v9 Q8 y  i
  304. ' A3 R0 ?' U  [6 x5 c
  305. lSet, s' E' x9 R; Y  _
  306. $redis->lSet('key', 0, 'X');+ J4 [2 f9 ?1 T# W
  307. 给名称为key的list中index位置的元素赋值为value8 q* l2 t8 b. k3 ]
  308. 4 I# G! P6 [) N0 o/ @2 l
  309. lRange, lGetRange
    - {) T) C# L6 a) t1 E2 J# P" |
  310. $redis->lRange('key1', 0, -1);
    6 B1 ]* k; a# D1 j
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)9 p' ?) ~1 x2 H! O3 ?
  312. ( Q; m* @+ p1 q8 [0 d# j
  313. lTrim, listTrim
    : Y& M& q* _; v, n# ^1 P
  314. $redis->lTrim('key', start, end);
    * t! Y* Y: W# t5 E
  315. 截取名称为key的list,保留start至end之间的元素
    # g- t+ f4 F7 x
  316. - Z2 B$ I/ i. Z, T! ^* I
  317. lRem, lRemove
    . `" i' G, D& ?8 {; b$ w5 I9 T- o
  318. $redis->lRem('key', 'A', 2);
    * r1 r4 @- _6 J: H' G
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素$ K# F% ~+ t6 p* @
  320. 8 [5 V9 r5 T4 |
  321. lInsert9 |0 {8 P. W9 [; G: z
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    + i; E# {: V" y
  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');) _  l: q0 W& x! d' Y, [( X
  324. $redis->lRange('key1', 0, -1);. o; L0 t3 r) [* m6 W* B4 ]4 `- ~6 p
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
      Y" W$ |: n( o! a( B- @9 c% A6 A
  326. $redis->lRange('key1', 0, -1);" ?. G, w1 F3 a) t0 ~! K/ o
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');' A: M8 L& Y, }

  328. 4 P; l4 u% d8 w7 s/ s
  329. rpoplpush$ V+ P/ R0 n* }' G0 N& w
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    & \: {9 {) r. s
  331. $redis->delete('x', 'y');
    " ~8 l7 n5 e  V, v
  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'));. ^3 k) i" M0 T% s" y
  333. var_dump($redis->lRange('x', 0, -1));# I2 T& L) K4 R
  334. var_dump($redis->lRange('y', 0, -1));
    # G! M8 h' l6 V9 v7 Z. U; s

  335. ! s6 \! R6 v6 l$ [8 V/ A+ |, m3 v3 D
  336. string(3) "abc"
      Y+ ]! n% F2 l  H
  337. array(1) { [0]=> string(3) "def" }   `. G9 H. E8 Z$ O# b) X
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    2 e# C" g6 o3 {& c
  339.   j9 Y4 }2 v7 Y1 R- ^
  340. SET操作相关
    7 m1 e. D9 m# K3 S$ _; a" M' P5 `
  341. sAdd0 f) @. M5 M0 a8 @% D$ `" W* r
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false% }& O( B: \- U8 N6 x& s; g
  343. $redis->sAdd(key , value);
    : `0 H& p# y3 W7 C% L

  344.   F2 p' s3 ^4 E. D# H! T8 l/ [
  345. sRem, sRemove
    , z* c3 Y5 x' A: R, G
  346. 删除名称为key的set中的元素value
    3 [8 L, h6 h9 x0 M( G# z
  347. $redis->sAdd('key1' , 'set1');
    , [/ y7 ~7 C) a' e/ [. M
  348. $redis->sAdd('key1' , 'set2');
    ) @  r$ F* ?/ v/ a' S2 c2 S) W& J
  349. $redis->sAdd('key1' , 'set3');
    ! l  _8 o1 }. E5 f
  350. $redis->sRem('key1', 'set2');
    ; I( K) I: b8 D) U2 X& e3 X

  351. & ~% j5 T9 T, o9 Q( J# B
  352. sMove# J" S+ C) h4 r, w3 R
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合' I- C# \7 f- X. J
  354. $redis->sMove(seckey, dstkey, value);
    0 k: D+ ?+ Q# [* h# d- I$ A5 _

  355. 7 F( C) v6 ?) l% b& L
  356. sIsMember, sContains
    $ S0 {0 y* T: b( j
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false( ~' N, O- v& W: N5 l1 _0 u
  358. $redis->sIsMember(key, value);/ ^& \8 [& Q- c' o
  359. 7 `# p3 x  K. u/ a9 ?4 e0 c
  360. sCard, sSize
    0 Y# v% O" R/ [  }5 J' r; g
  361. 返回名称为key的set的元素个数
      |6 I+ w0 w! l3 e* Q, a

  362. ) U5 N# I# F5 c0 c! l! X
  363. sPop
      o3 L( s: I/ h: x6 y5 K2 [1 E
  364. 随机返回并删除名称为key的set中一个元素8 }( z1 m9 `6 {" z
  365. 7 T" S& ^& U5 h; ]. u3 U: ?
  366. sRandMember& R7 [) I) l* [
  367. 随机返回名称为key的set中一个元素,不删除
    1 G1 v1 H" }: ?* l/ ]* M

  368. 9 Q$ Z8 z1 L" m( R+ e
  369. sInter  _+ b( m, T. f& ^7 q
  370. 求交集3 ]- X  K4 ^& ?$ M' W

  371. 2 c. t9 {. F+ @. n& y  A+ \% @* _
  372. sInterStore
    8 y$ K) q8 R% D+ G& w6 M& P+ X+ o
  373. 求交集并将交集保存到output的集合' U' `/ a# u& V* j. E1 k
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')+ Z& Y5 c; Y6 j

  375. " X/ {4 `  u9 `! F2 Y7 A( M- E; I
  376. sUnion1 L7 e" J: d9 H2 ~  W  r7 Y
  377. 求并集
    2 o# u& ^1 C5 X  U+ X$ ~
  378. $redis->sUnion('s0', 's1', 's2');
    * u2 Y7 z$ Q1 q- }2 c+ b7 h
  379. s0,s1,s2 同时求并集* t- D/ A  T5 Q, o- ~  K; a% E

  380.   G% W7 P" @1 w4 K
  381. sUnionStore1 S* R4 Y6 t/ S% g1 b, }
  382. 求并集并将并集保存到output的集合
    % E9 n- Z7 f" g* X- w' Z' g) x
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
      F0 p4 a8 Q, Y
  384. % F* b5 T* f' `
  385. sDiff
    . _2 Q9 ?: \* X  `; C6 b5 g" D' |
  386. 求差集, B, T8 I. `; ~

  387. 8 Q+ v$ x! t# }; j0 \% o
  388. sDiffStore+ Z( x( x* M5 C. @2 m$ y
  389. 求差集并将差集保存到output的集合8 V. b9 c" b8 y2 L
  390. 9 ~3 y+ n' t; g5 F  ^3 @
  391. sMembers, sGetMembers
    & n6 x. r8 t0 K+ [0 S4 X* X1 ^
  392. 返回名称为key的set的所有元素
    - x# Q' _* \( X% M% R5 f

  393. $ S, u7 a" m  a- j) _* Z3 i) Z
  394. sort
    # k& r4 |$ a& `! V  z3 A
  395. 排序,分页等! L+ \; V3 \2 `- z* T1 O6 B6 t
  396. 参数/ B+ g4 u: v5 e5 z. q# r" j
  397. 'by' => 'some_pattern_*',  |$ C2 Y8 ~4 k0 v
  398. 'limit' => array(0, 1),3 V8 a3 k& J, e. p7 Z6 z
  399. 'get' => 'some_other_pattern_*' or an array of patterns,8 `1 p+ Z7 B7 {
  400. 'sort' => 'asc' or 'desc',
    . S6 k' K: ~& @% N0 R+ B+ m
  401. 'alpha' => TRUE,9 `+ F. `( e3 L, S
  402. 'store' => 'external-key'- e, i8 D7 S0 d
  403. 例子9 a  V; ]! c+ r8 e  c* f
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    * P1 G  _5 w: W, J0 A9 B0 I7 [, ]
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
      c8 {- ^; q6 V2 v0 P& ?
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1& c/ q3 ^8 @0 R& k# c7 e
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5' @4 Z: K7 Z% m( r: y) t& J
  408. ; k+ l7 w) u) t+ q3 }0 q
  409. string命令3 q" H* Z# B9 o
  410. getSet/ u9 [- }5 _/ z/ Z6 U
  411. 返回原来key中的值,并将value写入key
    0 j3 x9 [- Y* ?, j' H
  412. $redis->set('x', '42');  F+ v9 I  ]6 b* s3 R
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'  B1 i& P: b7 A: ^" q; {9 D
  414. $newValue = $redis->get('x')' // return 'lol'3 |/ S5 `3 ]2 E: [/ G& _
  415. 3 h" ]! ?1 V2 Y3 n* n) l5 D
  416. append# @* M2 e! K7 s8 H% ?
  417. string,名称为key的string的值在后面加上value
    4 v% _6 k6 e1 k& e  [
  418. $redis->set('key', 'value1');
    / x2 R6 \+ _! f4 @8 C6 ]3 {; Z
  419. $redis->append('key', 'value2');
    ! \! p7 Y0 Y1 s" h  _* B& E% `
  420. $redis->get('key');1 j+ i9 Q3 I) R4 ]8 S# s
  421. " D+ _/ c7 @# @
  422. getRange (方法不存在)0 E* ]* a/ U& q' O; M
  423. 返回名称为key的string中start至end之间的字符
    1 `4 x* z. E& t' O4 f
  424. $redis->set('key', 'string value');
    ' k; S  l4 k- r  G. {
  425. $redis->getRange('key', 0, 5);
    ! B' B" Z; a5 g% G! l
  426. $redis->getRange('key', -5, -1);
    - ~+ M! l$ d3 g6 g
  427. : k" E8 P' i' H& t
  428. setRange (方法不存在)
    " v" U7 \1 i1 y& e& }' z. C* o3 Y
  429. 改变key的string中start至end之间的字符为value! }7 n  `/ I+ m- y
  430. $redis->set('key', 'Hello world');
    8 u9 ^% F; k2 k+ b& d5 |! A% |
  431. $redis->setRange('key', 6, "redis");
    1 y) W6 Q$ }* b( ]- T, s
  432. $redis->get('key');  V9 P3 q+ \! q* ~7 z
  433. ) p% n2 w/ s4 B7 ?
  434. strlen7 L  m1 K# j( }
  435. 得到key的string的长度
    / s0 g. S! P" A# J
  436. $redis->strlen('key');. [' n4 l0 x& e( y/ F5 F7 }; }
  437. 1 {% D, s4 ?8 E- T% s. H$ H9 W
  438. getBit/setBit* K% U2 d3 L3 r% E$ u
  439. 返回2进制信息
    4 P! l% w! Q: {" N
  440. $ I3 @) h) S) E5 ]+ Y7 M6 T, P
  441. zset(sorted set)操作相关" ]" E$ W: ]- ^' [9 i, G
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。0 r- s" x- O4 q, |- w
  443. $redis->zAdd('key', 1, 'val1');- J0 `. P2 g+ |# _# u  s/ v
  444. $redis->zAdd('key', 0, 'val0');
    6 U2 x( D  Z% `" _: z
  445. $redis->zAdd('key', 5, 'val5');
    0 l% `) W& K6 ^" O
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)8 ?# M+ k( l0 s
  447. ! m/ Z( z4 \1 T
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素- V: I1 m& n3 x5 Q$ E% n" i4 C
  449. $redis->zAdd('key1', 0, 'val0');
    / u! O9 `( B% h7 L% d
  450. $redis->zAdd('key1', 2, 'val2');
    ) c0 D5 P3 [( n# u# X! j
  451. $redis->zAdd('key1', 10, 'val10');& ?8 B2 e6 X3 Y: {
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);# |3 E1 c4 I! Z

  453. 5 D' o1 ?3 m0 p- g1 R
  454. zDelete, zRem5 E5 _2 K. {: b+ _! ~: V+ G) g2 L, D
  455. zRem(key, member) :删除名称为key的zset中的元素member) o) Z- n; R1 F8 k: R' ]
  456. $redis->zAdd('key', 0, 'val0');9 m' [6 d( Z  v6 A+ G
  457. $redis->zAdd('key', 2, 'val2');- q& e. o" D; `% N/ Q7 X! Q
  458. $redis->zAdd('key', 10, 'val10');
    + J5 q0 u. D9 g! z4 q3 D
  459. $redis->zDelete('key', 'val2');
    ' L$ s- Q; Y6 C; H
  460. $redis->zRange('key', 0, -1);
    1 V4 ^2 h; p3 q7 o
  461. / {7 v0 H2 {5 d$ s- v" e, r4 u% P9 ]
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    3 k3 l# k3 N7 b9 s) g2 t
  463. $redis->zAdd('key', 0, 'val0');8 H4 h- X7 r+ d, @
  464. $redis->zAdd('key', 2, 'val2');
    1 y6 H/ s3 Z5 N& H  @  Y, ?
  465. $redis->zAdd('key', 10, 'val10');
    8 b: }; {, S! V
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    2 V0 X1 T- Z0 k- }

  467. 9 K3 Q# j8 o( }7 ^
  468. zRangeByScore, zRevRangeByScore
    9 ^  ~0 e) `6 A  m
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    * a8 p% Z0 u3 h$ v" j4 p# D. x
  470. 返回名称为key的zset中score >= star且score <= end的所有元素$ X5 c. V- k& g6 h9 t: o6 V

  471. ' [5 ~$ V3 D. T# V. F3 R
  472. zCount% l/ p4 M$ k" M/ D9 G$ I6 c
  473. $redis->zCount(key, star, end);% C+ [1 }* X; z% E
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    - d  M( x7 i' P2 C" k7 I% ~6 @
  475. 3 J0 y4 q7 b, J$ H8 g7 y  g
  476. zRemRangeByScore, zDeleteRangeByScore
    0 {. R% x4 K, Y, [1 C# o/ x/ {
  477. $redis->zRemRangeByScore('key', star, end);
    ! o! h9 a/ Y5 E  I& ^# M9 s
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    % l; |  `2 ^: b0 C# w
  479. ( ^2 ^! [) f, E, y' j! S5 `
  480. zSize, zCard
    / k" W% c: N; D: z* i
  481. 返回名称为key的zset的所有元素的个数
    + u; _( ^5 E  _
  482. / o3 T- B1 k& h/ G
  483. zScore
    5 c: \5 Y7 j5 f! w& J0 H0 [
  484. $redis->zScore(key, val2);
    * M2 H+ s3 ~; W# }
  485. 返回名称为key的zset中元素val2的score- H5 T- c$ B: s+ t

  486. + ?# S) e5 @7 V% D$ i" z
  487. zRank, zRevRank, ?2 m- Q% f, q# `, r
  488. $redis->zRevRank(key, val);
    ; J. D% N- b6 J+ i/ l3 d, N8 h
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序6 [0 ?1 C# ^) d! P6 \
  490. - Y( l, I4 f- L: ~  s
  491. zIncrBy' e$ f0 G* ]' m( d- p
  492. $redis->zIncrBy('key', increment, 'member');. |/ R" x9 _1 e3 J. V6 c
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment9 ?9 h& g+ k) T  h$ v& L1 k
  494. / @% R0 J- e$ D3 H# L
  495. zUnion/zInter
    - T. |. q5 j  Q. H& l2 x$ s
  496. 参数3 M; [9 z$ E; ^6 x7 w
  497. keyOutput
    ! O; P$ Z9 w& p! I) i" n1 W
  498. arrayZSetKeys2 H1 t% b) b- u
  499. arrayWeights0 A6 @5 z# F" w9 X$ K
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.. V4 g& K& a: R+ p5 W% {
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。3 C+ m% S! d: R( J- l/ N
复制代码

; O1 ?- t/ K: R! _0 p2 P5 K% m- s( Y; f9 p; C
4 E" B& ?" p$ F, I$ n5 B7 X$ }
4 v, g. {+ L. C

作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis();
    ' i' {2 g2 k$ ]& T) U
  2. //连接redis服务器 ) t- Z, m9 {$ G9 [
  3. $redis->connect('127.0.0.1', '6379');
复制代码





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