cncml手绘网

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

作者: admin    时间: 2019-11-26 16:58
标题: php操作redis大全
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php2 f+ o2 _0 A  |3 R+ ^1 T9 E& F
  2. $redis = new Redis();  
    . }7 g$ \( q$ t
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    0 I2 M* e/ T) X( x/ k- ~+ L: ]
  4. $redis->auth('mypassword');//my redis password ' f1 w: f& l4 ?5 m2 `7 L
  5. $redis ->set( "test" , "Hello World");  
    . h6 y% S2 B, s( p, r/ I7 t- R
  6. echo $redis ->get( "test");$ g, U3 Z6 |( d- z" G! _
复制代码
php操作redis函数封装
  1. /**+ F4 ]% Z$ M& t6 ?& y
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数7 }( e1 w- Z- O3 s( y
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    5 }1 a6 E7 ~$ j8 d! A
  4. */& B1 a' e, }5 \; z- `
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){" z5 v0 a. W' Z8 s. q9 K
  6.     if(!$key||!$value) return false;
    7 r4 ?/ |& I7 u5 s; P6 [
  7.     $host = $host?$host:getenv('REDIS_HOST');
    5 k# y8 _: o! O& y
  8.     $port = $port?$port:getenv('REDIS_PORT');5 l  A% |( u( x" l. C
  9.     $redis = new Redis();$ }5 }1 b/ r; P  c
  10.     $redis->connect($host, $port);$ r+ T$ W# B2 Z; q2 A# Z
  11.     $value = is_array($value)?json_encode($value):$value;
    $ }: \& N  x9 o2 |3 Z# a
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);2 V5 e7 r9 Z! U! t
  13. }
    8 d2 D$ c3 E4 V1 U% ?
  14. /**
    1 _- M( T+ d2 l; ?1 ~9 U. f9 |! `
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi) Z/ _5 |+ U+ l' M/ `# A6 E) w; o+ ]
  16. */
    . B5 R2 u. d5 T/ K2 k4 A0 p/ ]
  17. function RedisGet($key,$host='',$port=''){% l1 U9 q4 M/ Y0 q. F1 u& q, D' X
  18.     $redis = new Redis();. B% ~+ g9 F" v- R  E4 i; e  i% x& k
  19.     $host = $host?$host:getenv('REDIS_HOST');
    ! v7 m3 K3 R% u/ Q
  20.     $port = $port?$port:getenv('REDIS_PORT');8 V1 H; i: }) F( E) T! a3 r
  21.     $redis->connect($host, $port);/ f9 @) S/ r& Y& I3 j9 H, I$ Y: H0 t
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
      C) ~9 k0 W& ~3 _  \3 c1 O
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);" o5 q& w/ @( b4 d0 n1 T
  24. }
    * Y5 N% M5 T4 a5 ~$ W: C! ^
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
8 Y' @: g7 L1 n9 M" N
  1. setex 带生存时间的写入值* K) n/ {/ u+ [
  2. $redis->setex('key', 3600, 'value');
    ! {4 }- l; ]- K  L
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1; b7 r& s! k' Z' Z
  4. $redis->setnx('key', 'value');
    9 j: I; t/ I* R
  5. 返回已经删除key
    # m8 M' @1 A0 i. K6 Q
  6. $redis->delete('key1'); 成功返回1失败返回0! A: Z5 P4 H# ^# ~' [
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0' X/ l0 G& w/ l/ {; {( s
  8. 查询生存时间
    - n  L7 A$ E3 v6 d. `
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    , h5 |) e1 \: P6 g
  10. 同时给多个key赋值,同时设置key0和key1
    : c! m* ^: a; _4 i7 f0 N4 g8 o( F
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));( U1 Y5 k, ^0 \0 [8 v, h
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值) h0 i" z0 l' p. W9 F
  13. $redis->incr('key1');
    ; [$ |3 l' X# m( X- T
  14. $redis->incrBy('key1', 10);
    0 I1 s  z2 F2 F
  15. 减法跟加法一样5 w* m6 R" |) b1 {7 o2 B1 R0 ~
  16. $redis->decr("key1"); 减少1
    & i3 {& M/ q2 E* S2 G4 E
  17. $redis->decrBy("key1",5) 减少5# C: {6 @7 R8 V  E+ G/ ^
  18. ! i8 M/ n: H$ W( u; ^  R
  19. list相关操作,连表操作2 n: s8 B- c6 h
  20. lPush
    9 h2 l1 g; F/ F. m4 L8 R  M! V  Q, w
  21. $redis->lPush("list", "888");' E6 a% f7 }& \3 J
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数' d' y7 G. x' g& f' x; Y1 M4 {
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    3 Q1 T& l3 V  ]% ]- F/ Q
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    3 P; `$ w8 j- e
  25. lPushx/rPushx3 u( \- G& E# ]( [  n
  26. $redis->lPushx(key, value);
    8 c; k" y9 p; @+ ]5 L
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加' G* p3 w# O. j# q

  28. - k. ]5 W1 M$ ]$ r8 ^$ `9 `
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    ' @: Q' m8 w! ?) o9 q
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    # d0 U6 a$ E  U; o& h
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    1 W7 K( r3 _1 r1 X4 \0 @
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序- q6 f9 y: j7 C, |0 x
  33. sadd s1 zhangsan! H6 E  f  t! H/ x$ A
  34. sadd s1 lisi/ b4 v& M. D( D/ S- V! _
  35. sadd s1 wangwu
    ' k3 v5 ^1 ~! I2 r  X. B, c7 X4 R( q
  36. sadd t1 yangxingyi
    3 h6 r6 E8 m# \7 D6 W2 d
  37. sadd t1 lilei
    ! C$ @* S" T2 q. Y
  38. sadd t1 zhangsan
    0 P4 {' o# Y. ~- ~# G
  39. smembers s1 s1的所有集合内容' _9 ^1 S- `1 {' u3 n! r
  40. sdiff s1 t1 s1有的,t1没有的,差集
    # {: j5 L( A- Y5 b# v( k$ J+ l
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    0 Q' x$ d/ W& v% F; Q( W7 i" t
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的: l- R! T' x* b3 K: O5 x+ O
  43. spop抽奖场景,返回集合里面随机的数1 w9 H1 k% G4 E$ k5 L
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了7 E3 _3 r1 o/ R, G2 x9 s
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数2 x" Q$ @% p2 l- L9 o
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    8 {* a+ F5 ~1 e# N
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    5 S# I3 g) p1 O
  48. $i = $redis->srandmember('s1');echo $i;
    9 e" f0 }8 x! I1 @
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false  I1 S; i: i6 l! D: ^6 M5 k% J, F
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    " i$ l, O  u" `
  51. * u6 I, }% s4 i: ~- s
  52. zadd key 2 value 有序集合
    5 P+ w5 X, g1 W4 a3 ?) B" B
  53. zadd y1 1 zhangsan;
    / p: R" J) K6 U; Z) Q5 R
  54. zadd y1 3 lisi;8 N3 |" }9 ^0 B& c, K
  55. zadd y1 2 wangwu;( M, w' N: ~7 ]$ j
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    / G% n# L2 A) b
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);# j' n# m$ f0 _( h! U
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键# E0 U* x1 l* ^) S# x- l% z2 ?
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    ( r' K5 K$ `/ h, M: F
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的* f2 y, d% @) g
  61. 无序就scard,有序就zcard,有z没有s* f; `  G* s4 w6 P
  62. sInterStore
    - v& n, N% f8 U- V! ]
  63. 求交集并将交集保存到output的集合
    $ B2 M! j# ]& V
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    2 s9 n; O/ i. R2 J: K  \' V
  65. ( I) ^  N: n" s* `/ P  r
  66. Hash操作# _; v' x/ D: V$ A
  67. hSet
    0 g! t3 |1 M4 V" ?, U% O
  68. $redis->hSet('h', 'key1', 'hello');
    . s4 p: b. j5 a# h1 o! y
  69. 向名称为h的hash中添加元素key1—>hello
    ) ]3 d0 Q, N" x: _
  70. ' W& _) Y4 X% b- o
  71. hGet& q( U3 V  k/ L- T
  72. $redis->hGet('h', 'key1');$ f1 e& r3 q- n
  73. 返回名称为h的hash中key1对应的value(hello)) ]' J. t9 I7 I0 `. r

  74. " l& r0 O# S2 a7 L
  75. hLen% G% z8 q/ |* ^; G1 |
  76. $redis->hLen('h');0 S; L$ F6 u) ]$ @5 J2 ^  Y
  77. 返回名称为h的hash中元素个数
      G8 V8 ]% O  q0 m1 A

  78. 3 g( b  H' s: l' E  h
  79. hDel
    $ q2 J* Z4 o5 ?2 F1 [! C
  80. $redis->hDel('h', 'key1');; _! h2 A. d, H
  81. 删除名称为h的hash中键为key1的域
    : `2 F' t- j3 `
  82. * g/ X* \7 Y2 o# k0 o$ [
  83. hKeys
    ) u* G7 O4 ]. t2 `  p
  84. $redis->hKeys('h');
    # a. y% z: b* }  x* L4 p% Y
  85. 返回名称为key的hash中所有键
    / v) j7 Q* A" d8 O6 y

  86. % w- R: s- U0 w! _- I. J9 Q
  87. hVals
    " u4 n. Q+ S0 j* {  G
  88. $redis->hVals('h')) M7 y! ]3 l; s: g
  89. 返回名称为h的hash中所有键对应的value
    ) S1 K- `+ y& i; ]; x& U8 m

  90. 8 X7 Q3 T! m" m" x. G
  91. hGetAll# F2 C4 ]. G/ N7 P7 X. f
  92. $redis->hGetAll('h');* K. \" j9 j$ h: ?- {& i, {
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    9 o2 _/ s" k- ?* x7 t4 w

  94. " r  g# p4 N1 w. Z9 @8 Z& E
  95. hExists
    " |- r6 M+ o* W# O% Y( H
  96. $redis->hExists('h', 'a');: \" C+ ~0 Z/ B' Y- Y  R& ^
  97. 名称为h的hash中是否存在键名字为a的域9 c: O0 v8 O6 d( n
  98. ! y( w- `8 [0 B( J1 c; t, s! F
  99. hIncrBy
    ' r# W" C9 B! Y. ]6 H: j6 N6 V
  100. $redis->hIncrBy('h', 'x', 2);
    $ H5 x) X& L; @, N
  101. 将名称为h的hash中x的value增加2
    $ ]' Z0 t4 a7 V3 E: P+ A( }& a! U, z
  102. ; [# e9 m/ h8 C: B- N+ G
  103. hMset- T0 l; f0 w7 ]; h1 b9 x
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    " l% d8 c5 d$ v
  105. 向名称为key的hash中批量添加元素' X( v, w% ^/ T1 O$ a) j$ s
  106. 3 [) s" |  \9 z+ O* }
  107. hMGet8 b( @" Q! t0 q% n
  108. $redis->hmGet('h', array('field1', 'field2'));3 ]* l2 I1 I4 s" h% @! \1 y1 R
  109. 返回名称为h的hash中field1,field2对应的value
    5 S+ z; R; P/ @/ O% d  E

  110. 3 f$ |5 A; B" W8 F  J9 y. `
  111. redis 操作相关: z" Z! v9 F, i7 D2 {
  112. flushDB
    1 x3 {' ?: d+ A6 Z
  113. 清空当前数据库6 s6 f0 l( {- F+ x

  114. 8 U' y: a. p; H3 q4 u4 u" p
  115. flushAll1 @2 d9 d% Y3 [( }; R; s
  116. 清空所有数据库- z8 J/ A% Z& l* @5 i# V
  117. : }! a' c2 a1 k5 D
  118. randomKey  u! z! G% Y$ Q7 Z: `
  119. 随机返回key空间的一个key
    , u. R& x! q, [; U$ o3 Q
  120. $key = $redis->randomKey();8 Q, `& i% d/ ^

  121. , R# x; _0 G2 `4 t8 X
  122. select. B9 }& u& }" ^
  123. 选择一个数据库
    2 [, K: i" M+ e; b: M% G) v: ]
  124. move1 N4 a( U; [: T& o
  125. 转移一个key到另外一个数据库
    : H) d9 m9 I1 A( R
  126. $redis->select(0); // switch to DB 03 S- J4 @; |  t# Q$ Y% X2 d6 _, v1 U
  127. $redis->set('x', '42'); // write 42 to x
    ! W+ F: d5 S7 N$ K$ x; x+ x
  128. $redis->move('x', 1); // move to DB 19 d$ h/ A' `' L) R$ V5 M
  129. $redis->select(1); // switch to DB 11 y) w& s! P2 ]$ [; }# {  O
  130. $redis->get('x'); // will return 42- D$ f1 R: j$ R8 V8 H! C* M
  131. 9 q8 [& U3 A' B1 |  a5 m5 I4 M
  132. rename, renameKey9 ]. M+ i; \5 d4 n: Y3 x- q
  133. 给key重命名
    : a, n9 ]' C% s4 P+ P% n
  134. $redis->set('x', '42');
    : ^, \1 Y7 h4 r7 o# B0 D" w9 G& s. b
  135. $redis->rename('x', 'y');9 A8 U) h4 k0 g6 h
  136. $redis->get('y'); // → 42; X5 O" H& t$ O  m# |3 r! d; z# t  s
  137. $redis->get('x'); // → `FALSE`: `  t) P( Q' F; N( I

  138. 8 Z7 R7 y$ |8 q6 }1 D! N+ R9 O
  139. renameNx
    ) n' R2 X5 j( [; K; G: a( s0 F: o+ h
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    3 W3 }- R0 J1 }2 S
  141. ; {: h* Y* a3 G
  142. setTimeout, expire9 W0 r+ ?4 u' ]' O7 N9 O3 n
  143. 设定一个key的活动时间(s)
    % r# h# T* C9 N
  144. $redis->setTimeout('x', 3);
      O' b; i+ i# Y, ~

  145. 5 y0 |7 E# o: ?% h$ x
  146. expireAt) k, |3 Z# J5 |5 R( H! i6 F
  147. key存活到一个unix时间戳时间/ q$ h" T0 L" ]
  148. $redis->expireAt('x', time() + 3);
    5 n3 m/ K5 |& h/ y0 s! v9 l5 {
  149. - p0 V9 m) h# S1 M
  150. keys, getKeys
    1 ^# s$ f( E- W$ ^- \5 T5 C( W
  151. 返回满足给定pattern的所有key& E) Q/ b9 Z! o4 q* l
  152. $keyWithUserPrefix = $redis->keys('user*');" e0 }4 V9 g4 ^/ e

  153. 1 F6 E3 _5 t/ F8 v
  154. dbSize
    $ U; A2 p+ H- J$ S' |5 q
  155. 查看现在数据库有多少key
    ( L( Q4 C0 [; t$ w; ~1 E+ n/ I
  156. $count = $redis->dbSize();! n  W& r" Y3 t( s

  157. 5 i+ i& V7 K: ?# s! s
  158. auth
    , t- i' e8 d. U# C/ W2 C
  159. 密码认证  Z( w1 m% C! G. A  m
  160. $redis->auth('foobared');" a1 B3 M7 j! }% `- Y
  161.   Q) l2 P2 W2 \4 \7 X4 X9 j3 y1 D+ n
  162. bgrewriteaof6 T. C7 ]# u7 w  |" v7 E: H
  163. 使用aof来进行数据库持久化9 E5 R* R+ O' [; f% p! o
  164. $redis->bgrewriteaof();
    6 J  i3 }2 b) |9 [( u0 R

  165. * g+ b( d5 x  V
  166. slaveof; M* g+ ^! A2 E1 `! a! R
  167. 选择从服务器& f4 A- r) R$ q
  168. $redis->slaveof('10.0.1.7', 6379);: ]8 b$ b% r9 I) {
  169. # K) r( Z3 w% a8 i! F
  170. save
      |8 V0 \# b7 J" m+ M$ N
  171. 将数据同步保存到磁盘
    & ?* I) {# F( J0 O) A: V" t

  172.   k- x' ~: s7 l1 d: w
  173. bgsave. b: b' W$ e9 l) ]4 m0 e% @
  174. 将数据异步保存到磁盘0 m1 F2 ^% x' v+ @3 J

  175. " p* F8 t/ w+ Q# u7 {: r+ b% Z
  176. lastSave
    # [# V/ m- S% ~! A* J( x
  177. 返回上次成功将数据保存到磁盘的Unix时戳) B( X# D& `3 Z) G+ v, Q& j' ^

  178. 3 ~( t+ y6 r0 q0 N
  179. info
    2 O6 ^! n) ~' G
  180. 返回redis的版本信息等详情
    # k$ R  Y0 U8 M9 Y; c9 @$ X3 [
  181. 5 L# x" k/ K2 Y+ K+ T) L( R0 y1 ~
  182. Redis::__construct构造函数6 G# c0 A0 u9 a
  183. $redis = new Redis();
    + b7 s# V) Y+ m' l$ g
  184. 1 z1 V- V: q* F$ r
  185. connect, open 链接redis服务; Y* D) [6 ^8 l; p# q4 o
  186. 参数
    5 ?  b1 h3 i; g
  187. host: string,服务地址
    * ]) d: N( w# U' k" e: t
  188. port: int,端口号
    $ x1 E" i! t0 K3 u
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    - s2 j7 s5 }1 n% K8 m% Z* }2 Z5 _  y2 [
  190. 注: 在redis.conf中也有时间,默认为3002 C1 K3 z; L" n  d. f8 t! f. b2 T' T8 e
  191. ) U& E8 [# N: g, x* l( p
  192. pconnect, popen 不会主动关闭的链接0 {7 a! D  F  z- R
  193. 参考上面
    ( D3 |+ \; l- y$ T7 A

  194. + Y9 v# }& c2 c) Y( a% p, r
  195. setOption 设置redis模式
    + F* ~) J2 o3 q- H0 ]/ P

  196. 2 z+ Z4 a" G1 e
  197. getOption 查看redis设置的模式
    5 W# J$ t5 v2 A# s2 [& p% m0 o  _( t
  198. ' t8 r- L  ?+ D3 Q
  199. ping 查看连接状态
    5 m( a% f9 J9 |; T! I& u1 v

  200. * s( C1 s1 J; d% J0 B1 ~( u
  201. get 得到某个key的值(string值)% a3 E; }! s3 ]7 u
  202. 如果该key不存在,return false
    ! ]2 B9 ~# ~4 Q8 g2 {
  203. 9 t- w9 E( Y" M( o8 S8 J2 D
  204. set 写入key 和 value(string值)
    8 m1 {& `# C+ l  s( J/ c/ C* |5 t6 ^
  205. 如果写入成功,return ture
    & b* {! W9 s. r! _1 ~' G; B; a

  206. 9 X0 d) `' U  h! [
  207. setex 带生存时间的写入值
    , L) W$ G. E7 _8 z) j
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    0 `) F$ B8 o$ @

  209. . S% V4 T. ~$ i$ k7 S1 Z- F
  210. setnx 判断是否重复的,写入值
    2 j% {7 z- Z# ^" a/ _/ B* D% i
  211. $redis->setnx('key', 'value');
    / h( ?& B2 H  O4 ]$ T9 H
  212. $redis->setnx('key', 'value');; J, j$ f+ W& e# \% ]5 U- E2 e

  213. 0 i: A: G; d( M4 n9 Y3 M
  214. delete  删除指定key的值0 g% s. `  r) j9 u3 {- U
  215. 返回已经删除key的个数(长整数)/ v, M% v8 h' V$ z' |1 A
  216. $redis->delete('key1', 'key2');
    # `8 A. t& \% S3 [; w& T( J
  217. $redis->delete(array('key3', 'key4', 'key5'));9 Z+ z2 ^. v" z# Z/ ~
  218. ( S% D5 ?4 Z1 _' H9 }3 @
  219. ttl
    : E0 ^" d2 x4 b) O" U, w
  220. 得到一个key的生存时间/ D+ i9 N2 l7 \# l( R$ _6 e

  221. ( D1 w7 f* r: ~; s0 z
  222. persist* H& v- m4 ], y, D, A
  223. 移除生存时间到期的key
    $ ^5 x# u$ c. x& ^% T
  224. 如果key到期 true 如果不到期 false
    $ D1 \6 y: q6 }

  225. & t9 V) I+ ~7 N5 \
  226. mset (redis版本1.1以上才可以用)
    5 `% V$ }) u8 r4 d
  227. 同时给多个key赋值
    / Z" r$ y' A, u6 @1 ]; ?0 b" a/ c
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));0 c1 j' n- N' @1 e

  229. 6 [: R% N# b) ]$ F; r( n8 Y

  230. # R5 {7 {! \  d  B$ x. P
  231. 9 W/ n9 w% W4 @  D4 G
  232. multi, exec, discard
    , x% z( \" w. }# g- u0 C3 F& l
  233. 进入或者退出事务模式
    & E) d0 X. }, C9 O% c4 J
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI5 K1 }2 m( C0 q5 T5 W6 h- Y; `
  235. Redis::MULTI:将多个操作当成一个事务执行
    8 N' W& e8 R, A; j) r" d0 I  [, ?3 n
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    " ~2 b7 ]8 V1 A6 |
  237. discard:删除一个事务# g+ o( N  J+ f7 P
  238. 返回值3 A' C8 j$ |$ m8 u, T, l4 y' p
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    * [, r% L& F2 g5 g7 C

  240. ! y. A# P# p- j: i; z3 n
  241. watch, unwatch (代码测试后,不能达到所说的效果)  S5 f" Q9 ?! |$ U% _3 l6 ^) N
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)# J( q: e: V/ S) c/ v! B7 C
  243. unwatch  取消被这个程序监测的所有key
    ; z3 q/ v3 ]2 F# e: M1 P7 c
  244. 参数,一对key的列表
    & y) f5 y. q. F9 q
  245. $redis->watch('x');/ A7 D# ^% j% }9 T" p+ W( |) f
  246. ) g3 V+ L) |, V8 h' l! [
  247. $ret = $redis->multi() ->incr('x') ->exec();' _  A9 W: h3 d# G

  248. ! u4 O1 L& D, T( S# w9 y- @
  249. " c  i9 H. M( o, L
  250. subscribe *
    3 Q7 D+ }0 ~7 {. J
  251. 方法回调。注意,该方法可能在未来里发生改变
    8 U! B) [1 A# O1 M

  252. ) C$ m( j. M9 ~! `6 n/ U
  253. publish *& }: V7 Q% L, s: ]: i. [
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变+ m. k6 G2 M& u
  255. % A  e" R# b) F* F2 V
  256. exists
    . W% o, j0 l& o
  257. 判断key是否存在。存在 true 不在 false) k, J8 u4 P& d/ ?& U5 ], r

  258. : H( N7 r/ ?6 `3 ~( y, B7 F4 ~
  259. incr, incrBy9 _& Y$ T. L4 G" U. C  Q4 l
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    , Z" W$ I- w6 h9 _( N5 O
  261. $redis->incr('key1');3 Q6 {2 x& V! o- e6 l0 }
  262. $redis->incrBy('key1', 10);
    " X( v/ P, m& l4 d3 T. \7 J/ c' J

  263. 5 @5 o, Q3 R' r8 l2 w
  264. decr, decrBy
    + }2 H5 D# T6 x  T0 H1 d
  265. 做减法,使用方法同incr
    / w) `0 U, l6 }1 J
  266. 2 {7 v' h7 N' h+ b* f
  267. getMultiple6 T. A4 i( C$ D
  268. 传参+ }( j. t- ^; Q$ Y  e4 q9 a6 }( G  j
  269. 由key组成的数组) p5 F, V3 _5 E
  270. 返回参数
    . E* r5 T5 H' k
  271. 如果key存在返回value,不存在返回false
    $ U' t/ N( e+ o0 H
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));* C# |$ b8 L7 L! O: d6 p2 N
  273. $redis->lRem('key1', 'A', 2);2 R2 O& Z) t$ b) t2 s% e) e
  274. $redis->lRange('key1', 0, -1);
    6 M: C/ s$ [2 e

  275. + x. s# W5 c  ^4 ]$ S. u, `
  276. list相关操作
      W0 y$ s- p8 |& c# g
  277. lPush8 V, S  G) V, X
  278. $redis->lPush(key, value);
    ! e$ P' A3 Y! y, b
  279. 在名称为key的list左边(头)添加一个值为value的 元素4 i0 S$ h/ S/ }: U
  280. 5 r( S( I0 i$ |
  281. rPush
    8 X" L0 A5 m0 B4 I% E) a
  282. $redis->rPush(key, value);
    / K4 d+ N3 R& ]; ^5 j+ p* r
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    2 T! X, x% j8 ^% k/ L) |

  284. $ {* M! i9 G- K7 m, p6 p
  285. lPushx/rPushx# ^' [& [1 T: r
  286. $redis->lPushx(key, value);, y$ U1 g$ U: E7 C! P
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加; H9 K  {! j& |  N
  288. 2 F" R" b) \/ m1 m) n, O
  289. lPop/rPop
    . Q# v2 y. ?' r4 `( L
  290. $redis->lPop('key');3 M6 X8 U8 h5 _4 H
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素- u5 U" a# D4 u+ u6 ~  H! s& ~& ?
  292. + {9 Y- K% g( g' a/ `
  293. blPop/brPop
    2 t" F- ^. P0 [0 `5 D% r
  294. $redis->blPop('key1', 'key2', 10);0 h' K# y& K4 G/ W
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    . V% X4 K& J. S; \( U  W; v. K

  296. + v8 V" Z% O7 d  g# N; B
  297. lSize
    . `& v  ^# N( B" E! J5 t+ w6 K% L* r
  298. $redis->lSize('key');' y5 j4 |; _' g# d2 ?) m: j
  299. 返回名称为key的list有多少个元素
    ' h4 S) j2 P$ F7 s% ]
  300. 6 o2 I0 e0 I, I
  301. lIndex, lGet5 u2 z) F; E8 E6 F# r6 w
  302. $redis->lGet('key', 0);+ ?1 Q. M4 O* b8 F0 d* A+ L
  303. 返回名称为key的list中index位置的元素
    4 I* Z7 m7 S& X& G. r
  304. 8 }: J  M! |7 R# |1 n
  305. lSet) u, A0 l) q( ~) O2 |( k5 \
  306. $redis->lSet('key', 0, 'X');
    & w% X  ?* y  n9 O7 ]
  307. 给名称为key的list中index位置的元素赋值为value: R& e1 A8 g; a

  308. ! K: u% J, k, R
  309. lRange, lGetRange
      D( y( s1 e: U2 M' _! D# {
  310. $redis->lRange('key1', 0, -1);, ]. m  O: p- z! H
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    6 D2 f/ T3 e/ Y: |% I
  312. ' ~' R* H. F% M
  313. lTrim, listTrim
    0 d* b0 I8 t$ U9 q
  314. $redis->lTrim('key', start, end);
    8 J) L" A0 Z- p: m
  315. 截取名称为key的list,保留start至end之间的元素4 J2 A) u; i: v# Q) \4 C. e
  316. 2 E; }0 G4 b" _  N& Y& G
  317. lRem, lRemove  k- E2 \0 t6 X4 Z2 H
  318. $redis->lRem('key', 'A', 2);5 O$ Z, g9 Y- e: Q
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素9 A2 M! q1 i7 }% j% F. N* n6 e

  320. + C: H& s" v- X, Y4 G( f
  321. lInsert" _/ U4 A) ^# b5 l* a
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    5 J# \# h/ J7 I
  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');- x% k( a" `9 y  \1 z
  324. $redis->lRange('key1', 0, -1);
    , J, O( B! @7 {) K7 G( S$ u
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    0 i# t, g# y/ g( m$ j2 m' @
  326. $redis->lRange('key1', 0, -1);6 C. W2 A3 ]) ~) }/ z$ d
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    8 s3 Y2 U; {" a! N
  328. + X* P: o- f: k/ c1 x
  329. rpoplpush
    ' q$ R" ~( B: E7 _5 L: u* p& A
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    / n% K8 ?8 t0 q
  331. $redis->delete('x', 'y');
    ; Q/ X! _/ x7 }% R8 F9 M1 W0 p
  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'));) ~# E% ?9 }# L" E9 i
  333. var_dump($redis->lRange('x', 0, -1));
    % H6 _4 J3 H7 b2 C3 v3 y! x: v
  334. var_dump($redis->lRange('y', 0, -1)); ' O3 l" r0 \" o1 H' w$ ^

  335. 4 D9 Y  ^& z: f1 Q  i  d/ G
  336. string(3) "abc" 7 l0 Y0 }# k* x  E
  337. array(1) { [0]=> string(3) "def" } * c4 D* t  J1 N4 ^5 @8 P
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    4 [( J9 n/ h0 l) |5 ]
  339. # H0 n! S' d0 A4 Q) D
  340. SET操作相关/ h0 c4 B; e! I5 c
  341. sAdd
    + ~# ~7 |% c. i
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    9 S& l% d, @1 o; _! T& S
  343. $redis->sAdd(key , value);$ x' S" [* n8 ]) G
  344. $ M" |5 N2 i$ P6 @- i; Z
  345. sRem, sRemove
    % C+ ~# L1 Z& r3 B- y0 ]
  346. 删除名称为key的set中的元素value
    " `# L' h# y- K# \4 Y9 k' O
  347. $redis->sAdd('key1' , 'set1');0 p- R, P: ~& C) W0 Y3 H
  348. $redis->sAdd('key1' , 'set2');' [! v- o" Y  Q2 v* T7 J/ D' |% d
  349. $redis->sAdd('key1' , 'set3');3 }8 ~3 W8 T  `" ]
  350. $redis->sRem('key1', 'set2');
      v5 t4 w  k8 y- K0 i

  351. 4 G% t+ e$ T+ M3 [' T7 m
  352. sMove
    ' _) g/ J) `- n4 Y& S! K
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合6 L) k, E; f7 w: p$ I9 H
  354. $redis->sMove(seckey, dstkey, value);
    1 a1 e# o. V* ]# R* A3 }: [

  355. 5 w  Q0 J& W: L9 o" ~
  356. sIsMember, sContains
    % @) I$ |" f6 g5 X- ~
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    8 ^# a) y% V* `; [. u# M0 y/ E
  358. $redis->sIsMember(key, value);
    9 Q  |% m+ z& f; }: I
  359. 0 L8 {' O* \8 x* ~& G
  360. sCard, sSize8 m9 Q1 U  W6 k. M2 z* T8 l
  361. 返回名称为key的set的元素个数
    * o) ~8 U6 W8 h, o2 g" `

  362. . H0 U; Z6 Q$ C8 B+ }% K) S
  363. sPop
    5 F3 N3 }) f' f& _& v. M: c
  364. 随机返回并删除名称为key的set中一个元素
    ' P7 k) Y% ^* \2 J: S5 N+ M3 D

  365. 9 S" R) h) `, P
  366. sRandMember  x4 \) K' p/ R, l$ `2 q' ^
  367. 随机返回名称为key的set中一个元素,不删除, e- R+ s: @) Q: q
  368.   U" L0 {$ o7 w0 M! D- T6 N$ r% y
  369. sInter
    / e8 n, \/ Y! M; A& P5 |( \4 S, I+ F0 E
  370. 求交集9 l* t' W4 \, q3 P- C' @

  371. . m0 t& D0 E; J. e: |6 a
  372. sInterStore) l/ t5 h9 `( x8 D  V
  373. 求交集并将交集保存到output的集合2 z) v& _0 D: J
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ! h( t- I! p7 q4 m. e4 x

  375. % `& {5 ]. f  `9 h. U5 Z" i7 ~( y4 f
  376. sUnion; v2 H- L( z& \0 t" r1 k
  377. 求并集; C4 |5 p4 r$ v
  378. $redis->sUnion('s0', 's1', 's2');/ H# {+ I8 `6 t" a
  379. s0,s1,s2 同时求并集, R  j8 {- n# l* w

  380. # A$ f2 H$ P* y8 \+ U% Y3 u
  381. sUnionStore  H/ S" x1 [" g8 c
  382. 求并集并将并集保存到output的集合
    . Y$ n( J2 S, Y# o
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    7 |6 v. j) I4 W$ Q9 V
  384. - H, f- R# M% ^" O7 e( E
  385. sDiff
    9 D( x+ q3 s5 \. A4 i% Q" v% d, Z
  386. 求差集/ d: {6 f0 R, Z  k) R5 @$ D
  387. ; a/ S5 u3 H1 @/ p
  388. sDiffStore
    - E2 A4 ?; }9 z3 h
  389. 求差集并将差集保存到output的集合
    4 J" `% X8 k! _8 Y1 N

  390. 2 ?% W) M) W- o, G# @2 m* T# |$ O
  391. sMembers, sGetMembers: z: o5 B5 ]7 L# }: A* [4 T+ D
  392. 返回名称为key的set的所有元素
    3 J9 f9 ~% A* Q. v; c

  393. 2 n7 R  t$ d/ t4 X/ X  g5 W1 ]$ T
  394. sort
    % e. w' O) Q7 O, J4 N  i; c* D
  395. 排序,分页等
    . F% L- M: }4 m' c+ a3 S
  396. 参数
    $ e+ ^3 u3 |* E; K. H
  397. 'by' => 'some_pattern_*',; A7 h  y2 a8 n+ U. q, p
  398. 'limit' => array(0, 1),+ t" z" V$ r# {& a; U
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    5 i" G) g4 f7 _$ \8 I
  400. 'sort' => 'asc' or 'desc',: v) K9 J) d' W. l6 }3 Y: V
  401. 'alpha' => TRUE,8 K# G8 h4 l5 O! H8 s
  402. 'store' => 'external-key'
    ! m% o: n. y8 v; W, E
  403. 例子) ]. D6 j2 m5 p# P1 i, J4 d
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    ; f* L$ O# s5 F* \( v8 r6 b
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    ; G5 Q, e8 r8 [7 D( N8 S* [
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1. N8 o. T+ }  ]9 [: Y& T
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5" f* A* k* y  }4 u% o

  408.   b" x5 F6 x: \
  409. string命令* {5 \3 z! b# ^$ Y& N  L8 `
  410. getSet
    : _& p% p" H- \* s% U
  411. 返回原来key中的值,并将value写入key
    - a4 _! z# N/ a! ~1 p" e& Q  i# E
  412. $redis->set('x', '42');2 O5 Q$ ~, a: U# f
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
      r( F& u+ ^& n/ x. g
  414. $newValue = $redis->get('x')' // return 'lol'
    , C$ n( F) j5 Z3 i: U) o1 ?: I7 [

  415. 1 x5 b( K# k7 j7 d2 M: Z1 f
  416. append" }- C2 W# `% z* l
  417. string,名称为key的string的值在后面加上value: h) V! J: H$ o1 K# ?. b& a
  418. $redis->set('key', 'value1');
    3 M! e1 F0 ]. Z  P. [2 t! x) t
  419. $redis->append('key', 'value2');1 ^! K  S+ X$ J. _- M) X
  420. $redis->get('key');
    . w1 d& F# x, v  }1 Q

  421. , `$ P1 S2 C% I. o3 N# V
  422. getRange (方法不存在)( e% p! |' ~6 a' @% k! \0 W
  423. 返回名称为key的string中start至end之间的字符- V: l7 i9 C: f: }& |* M
  424. $redis->set('key', 'string value');  d- Y0 F9 Y: j( m' ]& i
  425. $redis->getRange('key', 0, 5);1 M$ G/ E5 [1 F& ^
  426. $redis->getRange('key', -5, -1);
    5 m8 i# M! _" E1 K; N  w- a

  427. + F# n1 ]' W: Q
  428. setRange (方法不存在). d2 }4 ^1 [" x/ I
  429. 改变key的string中start至end之间的字符为value
    7 |7 J) [$ V* G% f- t) [
  430. $redis->set('key', 'Hello world');
    ! e  U! L, I' w, Z
  431. $redis->setRange('key', 6, "redis");
    # }& t) z3 {* N0 G# {* h5 ^  y
  432. $redis->get('key');
    % g5 l% M3 }# n5 C1 y& _  {* s
  433. 9 e5 a4 G2 a0 ]6 q! M+ o. m3 [
  434. strlen( v, I5 ~2 _& ?% o
  435. 得到key的string的长度% J; I- f, ~& f" x$ u( h
  436. $redis->strlen('key');
    " o3 ~1 d& @% }. [* D
  437. 2 v7 C6 {( ?% l1 S4 y
  438. getBit/setBit
    % N+ K7 ~" ?( q; ?* \/ I- C
  439. 返回2进制信息6 e) h( R6 s6 j1 P
  440. ( d: f$ x" ]/ x; A; _  A4 X
  441. zset(sorted set)操作相关
    % |+ B1 L9 m! K8 Y( K
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。. C! g( k0 b1 t/ R
  443. $redis->zAdd('key', 1, 'val1');
    - X$ u( |  ~! X3 |* z
  444. $redis->zAdd('key', 0, 'val0');) b1 A- k& N0 ~0 ?! N
  445. $redis->zAdd('key', 5, 'val5');* P" P( J4 e( |% k! I: I$ s
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)$ S* Q8 j; m0 l* M! M; |
  447. ; k+ m3 \- Y6 q. a  C- r0 K3 F. z
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    / r: V" H+ \! B( |  M' ]; V
  449. $redis->zAdd('key1', 0, 'val0');0 @! G; p' ^5 O! R9 C; L
  450. $redis->zAdd('key1', 2, 'val2');, J& p: ?8 |! F. J6 S6 p
  451. $redis->zAdd('key1', 10, 'val10');
    ( _: @! Y; O4 ^# g' A0 |% u
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);- Y3 i& e! ^6 c: h
  453. 7 H) B+ a( b+ ^+ u
  454. zDelete, zRem: U* A( O* L/ g8 W( s' q  o
  455. zRem(key, member) :删除名称为key的zset中的元素member+ P( q1 ^7 `( o' l
  456. $redis->zAdd('key', 0, 'val0');  A2 J  C; V  I3 F8 u
  457. $redis->zAdd('key', 2, 'val2');
      e  n% N# N% _' {2 j
  458. $redis->zAdd('key', 10, 'val10');9 b4 W6 w2 J5 d( Z, V, ~' C3 B
  459. $redis->zDelete('key', 'val2');
    8 C: M" N8 d) ?5 m
  460. $redis->zRange('key', 0, -1);
    4 O* }5 m1 o4 M% _
  461. ; b: ]0 w8 p% a
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出2 H* R7 n# D0 y/ L, H' U$ u# b
  463. $redis->zAdd('key', 0, 'val0');
    ' d" U  W& v* {. J/ I/ ?
  464. $redis->zAdd('key', 2, 'val2');
    ! t& `4 u* f# L  |5 C
  465. $redis->zAdd('key', 10, 'val10');  ^) o- G0 `2 H3 l8 c( [! x, Y8 Y. I7 ~9 Y
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
      @5 \/ B( k% F' N" h
  467. # A' M/ Y! ], h) |9 P6 J! J8 C$ J
  468. zRangeByScore, zRevRangeByScore0 g/ `3 \3 c5 A, o4 {
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));; E! @  G2 G+ I$ I4 z0 H6 `
  470. 返回名称为key的zset中score >= star且score <= end的所有元素0 @' K2 `* ?# X8 Q
  471. 3 P5 K9 U/ e" w& E
  472. zCount! G6 Y9 ~" ~6 r  T
  473. $redis->zCount(key, star, end);
    : T8 a0 S' ?7 ~  R* j; L0 H9 j
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数, T; ?8 o; Z# }# u

  475. 0 h4 R. Z5 q# a# ?
  476. zRemRangeByScore, zDeleteRangeByScore+ _9 J$ n2 e9 r6 b  B4 H* g! Q
  477. $redis->zRemRangeByScore('key', star, end);2 Y- O( U+ s: m; o: Z+ M+ m0 q
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数$ S" T9 C5 F1 E  _% L& ^* i

  479. $ z" R3 Z  I- [0 A1 R
  480. zSize, zCard7 Q7 v2 G; u; M6 h1 t- V5 l  j
  481. 返回名称为key的zset的所有元素的个数! d  n3 B3 |+ w: D: a. Z- }

  482. 0 v: t: K) n8 v
  483. zScore
    # D& {4 h- \' U! h1 d* e
  484. $redis->zScore(key, val2);4 l8 g9 m4 v! K" Z* J$ ?
  485. 返回名称为key的zset中元素val2的score
    1 h: [6 k- A& X+ Y' k

  486. * `# w/ n! C" d, A
  487. zRank, zRevRank
    % C2 d8 f$ }2 i
  488. $redis->zRevRank(key, val);
    1 r+ U8 Y0 |! o. H6 ]0 }+ Z9 ]
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序5 b, U& u$ _& U9 R8 a& W
  490. / D% m) Q; Q8 J+ X% D
  491. zIncrBy
    % }0 \( Q+ ?! G7 T% ~: o* z
  492. $redis->zIncrBy('key', increment, 'member');
    " _6 Q# N$ B+ n' a6 t! B
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment- t% [/ b  A- X. O- Q6 s
  494. 0 a! K# e! A' B4 |/ W
  495. zUnion/zInter
    7 k+ _9 K8 u' ~, K
  496. 参数
    * r# z  k: x& _
  497. keyOutput
    5 D; J% B9 a+ s: M0 Q
  498. arrayZSetKeys& Y' c+ G% v3 B* X8 ^$ Y) Z
  499. arrayWeights% H( H8 I  z, }& {* j
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    3 z/ F) A8 `$ P# c  B
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。& S; K' B. H% Z7 K5 S, S1 G5 y% I
复制代码
1 x: b" s5 s3 @( `7 t

0 q8 l% r; J% O. [6 ~$ ~
  Y: P5 ~! U9 A- N4 h8 P! S: s3 ~: ?

作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis();
    ) u# ^$ m( i. ^- G7 X
  2. //连接redis服务器 9 O9 ^  G& l6 u. \+ W
  3. $redis->connect('127.0.0.1', '6379');
复制代码





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