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
    ; o( f. M2 O1 T+ l4 Z
  2. $redis = new Redis();  ' h  x5 _& e% _) S- N0 t/ p3 J
  3. $redis->connect('127.0.0.1', 6379);//serverip port0 ]7 o: V; E) t( t: f
  4. $redis->auth('mypassword');//my redis password
    8 Z) b2 c, o, T/ d- [
  5. $redis ->set( "test" , "Hello World");  
    + ?) F5 U$ `1 |4 d" v
  6. echo $redis ->get( "test");
    0 _7 b( ~1 }; l1 _4 G
复制代码
php操作redis函数封装
  1. /**
    # U5 L6 O/ t% i! D0 ?' E1 v
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    $ P2 u9 H/ |' E( A# j
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi% b  g  {2 a) e# k- j! z
  4. */) p9 U3 w# W- J  }7 c9 l3 |8 t# e' V* K
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    8 l4 ?- w0 m1 `" o  H2 Q. ^% b. B; G
  6.     if(!$key||!$value) return false;
    6 u( M" \; l! E4 s# b. l
  7.     $host = $host?$host:getenv('REDIS_HOST');
    2 A' |2 X3 Y) o$ `
  8.     $port = $port?$port:getenv('REDIS_PORT');
    0 s, X& b7 V; }
  9.     $redis = new Redis();: u2 o$ t7 ~7 Z% Y( n: X
  10.     $redis->connect($host, $port);, F1 \9 j5 D) u/ |
  11.     $value = is_array($value)?json_encode($value):$value;
    ! l4 D( l! s, Z9 N  E/ |
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);+ C1 `% ~+ ~# v
  13. }
    % u, `. ~6 N  ^
  14. /**: [0 B* [% K' y
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi/ z4 U8 ]5 @" p, r
  16. */2 I7 }2 l( q1 e* {
  17. function RedisGet($key,$host='',$port=''){1 I* \9 n# X( B! v1 w. h5 W
  18.     $redis = new Redis();
    & ^* W( W8 B6 I* t  g
  19.     $host = $host?$host:getenv('REDIS_HOST');- e5 w6 o& i1 c/ _6 @5 V& D
  20.     $port = $port?$port:getenv('REDIS_PORT');
    # `& r3 b# h1 o  q
  21.     $redis->connect($host, $port);- h  o# F- v, t' W/ M; E9 g7 H
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    : O, @( l! p( x0 K6 ^
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    ' X1 _- X9 X, v! O- u
  24. }# K* x, x) U1 y8 K, {& G: G4 K& C
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
: R, |( G/ t3 [$ Q0 y; E. R  D
  1. setex 带生存时间的写入值: [9 F6 w  y3 K5 I
  2. $redis->setex('key', 3600, 'value'); ; C- i" Y5 \! ~
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    2 @9 u1 F! W( Y: X, h; U
  4. $redis->setnx('key', 'value');+ N& E7 _1 R% w0 w1 h
  5. 返回已经删除key
    * e9 J: O- h5 x' V: ^
  6. $redis->delete('key1'); 成功返回1失败返回05 V' Z" p. R! P# Z( p5 ~8 H7 d
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    6 ]2 B4 _1 o* U
  8. 查询生存时间) B% C5 m& k3 p$ N4 \3 c- k
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    9 L7 z9 v6 V& S3 S
  10. 同时给多个key赋值,同时设置key0和key12 _) c$ {- W2 W7 S3 I1 T9 M: _
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    / S  V) l3 e0 H/ _; c4 W
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值1 L( N5 z5 v6 g
  13. $redis->incr('key1');! q  O* X9 x' o/ h& R2 u
  14. $redis->incrBy('key1', 10);6 N7 f- d7 M, L2 I; T8 n' m
  15. 减法跟加法一样
    + @( V0 w' J% R
  16. $redis->decr("key1"); 减少10 V$ s1 V" N# d6 e' L5 v
  17. $redis->decrBy("key1",5) 减少5# D$ ~& O, E. ?3 u
  18. 4 |5 W  J$ C' }$ f
  19. list相关操作,连表操作6 l' u+ i' b; v+ u, P5 ^+ Y
  20. lPush1 Z+ i* u+ ^* n9 g5 j0 D5 z
  21. $redis->lPush("list", "888");
    + ^/ S( W# p* c; T
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数7 L% J+ i$ ]! h) \
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    3 N( M, Q* Z: h* U9 d$ L! p
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素5 o* _1 Y' P% T& J. W
  25. lPushx/rPushx
    - z1 J6 |( E) d( Q! i6 J" A- s
  26. $redis->lPushx(key, value);$ R2 T4 h6 Y- D
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ( K2 t6 J8 u/ n0 Y$ T: U

  28. 0 K% ^% Z4 P" u" O8 M
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key0 H& L8 d- y2 R) T3 l) ~7 ]
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key+ S7 I5 A# W9 s1 U( O8 u4 I5 J
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    $ U" Y  N' A8 j: |# \8 M; C
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序/ {3 M% Q3 r8 C( x" f! C
  33. sadd s1 zhangsan
    , D8 @7 X; ]) }/ v2 @2 N- |: b% c
  34. sadd s1 lisi
    + `% ]0 q; w+ `* ~
  35. sadd s1 wangwu6 t8 C1 U- z' h4 r6 j/ l
  36. sadd t1 yangxingyi
    & y" N0 W  G5 K9 h2 \3 t
  37. sadd t1 lilei
    * o. S' a0 g+ {0 B, }7 W' g
  38. sadd t1 zhangsan
    , r4 U8 H' [5 b) s
  39. smembers s1 s1的所有集合内容+ K, [/ K) Z* ]# m: i8 H
  40. sdiff s1 t1 s1有的,t1没有的,差集
    + o( S- z$ K3 g3 M& z# l3 o8 j
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    4 |* h4 ~% w/ t+ f, {8 Q
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的& M8 n6 i5 Q8 Z8 G. O
  43. spop抽奖场景,返回集合里面随机的数
    & E' O( `: l3 @; B* W" H0 d- z5 U
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    . U# ?5 Q, B# Q
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数2 a: q8 K5 d( h, s
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    . T; _; G4 f, q
  47. 随机返回集合里面的一个元素,但不删除,重复中奖) d6 z! G* D% s! E2 i
  48. $i = $redis->srandmember('s1');echo $i;
    $ u: n! t. {! b- I8 Q( m
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    # j' F$ V  O/ L. n$ x
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    , E+ _! u; n: c+ |2 H
  51. 0 b+ i% i( G7 D: }* n- d
  52. zadd key 2 value 有序集合
    , r2 G: }# ]2 V& V" O9 K) d1 P
  53. zadd y1 1 zhangsan;! V! v3 ?: Y, j7 R
  54. zadd y1 3 lisi;
    3 w7 D; U9 `+ Z7 {9 |" ~
  55. zadd y1 2 wangwu;% c! p  b5 A+ n9 N
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi1 b8 r( P! Q4 r6 x5 N
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    ! r  X4 l4 C& E$ x3 G! P2 h. @
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
      E# ]; D" u' D% Q# }
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    " j0 V# s4 j- l: `( G& d1 q( L
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的+ b# d/ p) x6 Y( Y( s
  61. 无序就scard,有序就zcard,有z没有s
    - J8 z: z9 F' h# V+ T4 c
  62. sInterStore) L3 ?" S$ v1 q1 o# U. D* b
  63. 求交集并将交集保存到output的集合
    1 n& V: D$ ^5 H; p4 z
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    2 V2 j3 \! ^4 H. s7 T( n  U: O
  65. " J( g' F# `& y5 c7 M) u
  66. Hash操作
    7 D' o: M) n! G2 }) k4 j
  67. hSet) H5 z: C1 J2 l( v" J) P1 Q- D4 d
  68. $redis->hSet('h', 'key1', 'hello');
    * F$ J. c( j  q% G9 K
  69. 向名称为h的hash中添加元素key1—>hello
    7 `5 J* M: M9 ^4 r+ ]' b; C5 \

  70. % V) z5 b% {: g( E- y. b
  71. hGet7 i# X% w$ u2 ?7 U1 y( H3 @- K, i
  72. $redis->hGet('h', 'key1');% W0 o6 K  i* ~9 [$ D% {
  73. 返回名称为h的hash中key1对应的value(hello)
    , W! P2 k7 c! Y! e- h
  74. 7 w0 `' x, j3 x% Y" @* N
  75. hLen
    0 `$ l- i9 r% V5 h: \6 I
  76. $redis->hLen('h');
    2 h: y2 ^. W) R1 t7 {/ Z
  77. 返回名称为h的hash中元素个数
    # |9 ~7 Q6 R! ^. E

  78. * E0 k0 A" F- ?8 H
  79. hDel# F# n6 F2 `' N; a# s6 l* n
  80. $redis->hDel('h', 'key1');
      D/ i. d/ G0 y, @, {
  81. 删除名称为h的hash中键为key1的域- p, @+ S% X8 Q; ]/ u1 d

  82. * Z3 m, P' J. B. F9 \
  83. hKeys
    : {2 j, @" ^6 m
  84. $redis->hKeys('h');
    % ]% S1 C+ d5 p& y( ]& z
  85. 返回名称为key的hash中所有键7 Y- |! ^7 ^% O6 n' \1 P/ ^1 f

  86. : S, T$ C2 r! G
  87. hVals2 F" {* h2 A1 [
  88. $redis->hVals('h')0 ]! Y6 s9 T$ ?
  89. 返回名称为h的hash中所有键对应的value8 X" u( ~2 @" ^, B  f
  90. $ D, U* w8 Y$ W. w8 v% I
  91. hGetAll+ K6 u+ E% S# \1 h  l- C
  92. $redis->hGetAll('h');
    2 z2 _3 A1 P& K; w( h7 z+ |! q
  93. 返回名称为h的hash中所有的键(field)及其对应的value# D5 u7 L( c7 V, B: j
  94. 0 m5 x& F/ D1 I8 Y1 ~# C, @- e& Y) e# @
  95. hExists% w  W, T; T1 I
  96. $redis->hExists('h', 'a');
    3 `0 }" q9 w0 e% O9 [* O/ z! a
  97. 名称为h的hash中是否存在键名字为a的域
    # C1 f( f+ E, w% C) _

  98. ! S! G9 {6 D4 C( X4 X
  99. hIncrBy8 p# O& f/ [$ Q7 i
  100. $redis->hIncrBy('h', 'x', 2);
    , x& r; p2 h  S2 h; |* N' }% y
  101. 将名称为h的hash中x的value增加27 W; M+ z5 x% y! `$ R+ w) a
  102. 8 f# v, P- J* g5 l! n, n
  103. hMset( n' G# S) \$ f; \' s& Z# @: I; c
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    * m0 ?6 `! t- v# u& @; D
  105. 向名称为key的hash中批量添加元素
    9 Q/ d4 f4 C/ O: ^  ?! E1 r
  106. * L( _. R+ d9 ?3 P- Q% P  @  Y
  107. hMGet
    ( U4 x0 n: P6 P: {) `* p
  108. $redis->hmGet('h', array('field1', 'field2'));4 Q7 N; d& O0 o+ V
  109. 返回名称为h的hash中field1,field2对应的value+ V+ s: Q% E1 {( d& a- h' h+ X

  110. $ N8 K7 H1 k/ _6 Z7 B# Y
  111. redis 操作相关% Z' Y! {8 R1 Q" r3 j
  112. flushDB
    3 x1 V. [& R. Z
  113. 清空当前数据库
    6 t$ E9 L. g4 M
  114. & f: n2 N) v4 w4 ]' o: k1 w
  115. flushAll
    . ]# |$ w) M$ a/ G) U$ p6 V
  116. 清空所有数据库
    & |; f/ s$ ^8 X
  117. $ {# @$ @9 E) V% W' @9 I
  118. randomKey. ?! Y- B, R3 C; e
  119. 随机返回key空间的一个key
    * ~& ~  c0 v2 m$ T% d6 S
  120. $key = $redis->randomKey();
    & j/ w- S2 t/ X0 K
  121. * b3 ]+ ~7 D1 K
  122. select
      `5 s( S# Z. ^; @  ~+ `
  123. 选择一个数据库: _- R- _' O- M; Y+ U
  124. move, ~1 t+ R. V. c2 d
  125. 转移一个key到另外一个数据库
    4 l* K6 d0 j* K+ l/ G
  126. $redis->select(0); // switch to DB 0
    1 A. X- x3 Z) Z/ W& d: w# `5 p
  127. $redis->set('x', '42'); // write 42 to x
    * q9 x  K# n5 k* a6 O9 J2 v( X
  128. $redis->move('x', 1); // move to DB 11 E+ z$ h3 @: `! L6 Y
  129. $redis->select(1); // switch to DB 1
    - B3 {, I  O" ~% C6 L
  130. $redis->get('x'); // will return 42
    0 ~  T" Y2 _% U" X
  131. 5 l; s$ m  F- X6 l5 I
  132. rename, renameKey% ?# p- N5 U/ j* D) b
  133. 给key重命名
    8 Y2 E7 `! E2 ~6 G
  134. $redis->set('x', '42');
    " v: L4 E& U& }; r9 @/ i6 R. @; @
  135. $redis->rename('x', 'y');1 a4 h' P2 S: v8 r9 w4 l+ v
  136. $redis->get('y'); // → 42
    ) u' h* r: f4 s8 W! Z3 ~
  137. $redis->get('x'); // → `FALSE`1 Q( E; K4 O4 S2 w
  138. 5 }' ^7 R. [2 J# N5 Z" [
  139. renameNx
    + S9 L  n" C" }. v1 D+ x
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功0 L7 l  U. A# Y; o
  141. ! p3 A& W5 Y' B$ ]1 H' t6 D/ Q
  142. setTimeout, expire# p8 d7 A% E- ]  t) c3 v
  143. 设定一个key的活动时间(s)* C0 w- V$ J, T& K1 B6 |
  144. $redis->setTimeout('x', 3);
    8 [: E, q6 S: ^8 s
  145. 1 ?" ~$ k! p7 U8 B: F  V# m" T  L8 C
  146. expireAt
    5 G+ p1 @8 E" p
  147. key存活到一个unix时间戳时间0 R  ^; e$ B5 l' K( b5 M4 }
  148. $redis->expireAt('x', time() + 3);
    0 {" @, V* d. q5 @% ]& B
  149.   \) g# T- K6 l1 G0 u$ [
  150. keys, getKeys3 u: ^; I# g" q& @: G: o
  151. 返回满足给定pattern的所有key
    , g  {/ d+ W' \+ d
  152. $keyWithUserPrefix = $redis->keys('user*');
    5 ?" j, J$ u8 B6 Y0 S

  153. 1 |9 u6 v  i1 `* l: C
  154. dbSize* u# A5 L! Q+ {* b0 @; D& i0 y6 P5 f
  155. 查看现在数据库有多少key5 H0 e: s: d: F% J) _0 l
  156. $count = $redis->dbSize();
    $ _% K; f  a' y8 v7 W" R: X

  157. ( A9 }3 M, r2 ?4 l3 c- m
  158. auth) O% Z& ?, b! u9 E( C* K% K
  159. 密码认证9 z" M  d3 C6 S
  160. $redis->auth('foobared');' k5 j6 L; J6 o: S( D' g

  161. / o6 K) o; ]- `. g$ c& A! s5 _0 P
  162. bgrewriteaof6 G+ I$ C/ ~2 P, t
  163. 使用aof来进行数据库持久化8 ]$ K5 o8 q* \$ Q: R1 |
  164. $redis->bgrewriteaof();
    3 n3 U' v; ?# J5 K) J9 o

  165. 0 q- C0 m, z4 p% n% U  Y' M
  166. slaveof: t7 h. {+ K9 P- o+ W
  167. 选择从服务器
    ! @% c( w2 R$ C( s
  168. $redis->slaveof('10.0.1.7', 6379);
    . s+ _) q/ _, \5 Y$ z, F6 d
  169. ! Z% u6 i- u* x4 ~; T
  170. save
    7 H: z7 U" o2 d; d8 ~% i: F. m
  171. 将数据同步保存到磁盘; e0 D1 p$ A, @# S
  172. " x1 f5 g/ y* Y( I' u! j
  173. bgsave
    * X  l" A* c# W! \1 L
  174. 将数据异步保存到磁盘! L( |5 c' J9 o8 o9 l; t6 V

  175. " X9 K3 f* t; F( s" ?, Q% m
  176. lastSave3 i4 ?" J$ ~9 W5 v5 c+ }
  177. 返回上次成功将数据保存到磁盘的Unix时戳
      U% ]# Q% }0 c
  178. 4 R# l8 G: c( {  {" q
  179. info
    9 {* C) j4 P2 Z, C. P
  180. 返回redis的版本信息等详情
    ( x- ?1 Z) c) u& X3 S

  181. / J+ `. z, [4 f' e8 }
  182. Redis::__construct构造函数' o+ Q& b( E$ C1 ~$ d( k
  183. $redis = new Redis();
    6 G' E3 `4 C( n( ?0 _

  184. 3 x/ p4 I+ C! R5 q/ q$ q  n7 Z
  185. connect, open 链接redis服务& m" i" Y# F" A/ S- [6 G. e
  186. 参数
    + S( ], n% N7 _2 t
  187. host: string,服务地址0 q& x6 ~6 S% F
  188. port: int,端口号
    ( [& `. r$ `4 G6 r5 Z8 @. k% k
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    5 w7 C" `3 Z9 H4 G6 L% P
  190. 注: 在redis.conf中也有时间,默认为3008 a$ C$ k! E( `1 Q, h

  191. * t# s+ T! s8 p. y
  192. pconnect, popen 不会主动关闭的链接( G. W: e% J9 J7 h, z% T
  193. 参考上面
    ' T* R4 Y! L! D; M% T
  194. * i; p/ P7 q. T. T$ `
  195. setOption 设置redis模式
    3 s: c4 y# L7 _5 l

  196. , B' p  y- }; z
  197. getOption 查看redis设置的模式
    6 l' l* L* r* |0 j
  198. 8 O9 P) Y& h9 x7 V- |+ w/ a1 V
  199. ping 查看连接状态: G, Y! k1 x4 Z/ f( N+ ^! Y

  200. 1 V- H: R- C/ d
  201. get 得到某个key的值(string值)
    ! q# H" y3 c$ A! k# p5 e6 _( _
  202. 如果该key不存在,return false: r" z0 W% f4 [

  203. , c( I3 S8 u' {( i+ {; t6 G3 s
  204. set 写入key 和 value(string值): v! _# p5 {; i6 p$ o0 @
  205. 如果写入成功,return ture$ R) {$ }! y/ N) W+ L* s
  206. ' Z# x# W! o* v! D; N  Z6 m
  207. setex 带生存时间的写入值. B+ J( C7 d7 l- B9 h) j) {
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL./ K, v: c6 a1 u7 G

  209. + @# I" ^7 r# C: A6 E9 w
  210. setnx 判断是否重复的,写入值
    ; l! @4 Q9 P  e7 ^) u* [( r) J7 m
  211. $redis->setnx('key', 'value');
    + r4 c" A$ U% ^& X% q
  212. $redis->setnx('key', 'value');" f# V6 v" T" }5 m; ~- A
  213. & I; P* o# G4 M; P
  214. delete  删除指定key的值
    5 V$ u- L6 K& ]1 c- [
  215. 返回已经删除key的个数(长整数)
    . m$ C+ e2 ]( |1 h- k% s
  216. $redis->delete('key1', 'key2');
    + J5 q% Q1 p9 p/ }- A' Z7 s
  217. $redis->delete(array('key3', 'key4', 'key5'));
      V* y& F0 z9 j" K" t

  218. 9 g, H( ?2 \$ F' w% M$ o' Y
  219. ttl
    % z, h- Y1 R7 A$ Z
  220. 得到一个key的生存时间
    6 i' p+ e+ C2 c4 S; Q2 ]$ c% @. z! Z: p
  221. 6 U$ f0 ?9 L0 p/ _
  222. persist; ^9 i3 D/ V6 X8 G1 D* x/ q
  223. 移除生存时间到期的key# ?- X! G+ d. G& l; _4 {% _0 Y
  224. 如果key到期 true 如果不到期 false
    , p8 w0 x, T- v9 K; j

  225. 4 B: n( u$ [' ]$ i: {
  226. mset (redis版本1.1以上才可以用)
    & I7 I$ e( W. ]. w
  227. 同时给多个key赋值
    ; J! y. i! @( _( n8 J: p
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));9 q6 l2 F9 J) @
  229. & i( W: U% W/ s1 A2 V- }

  230. 2 @2 W+ B/ P* X% e, n+ S: H
  231. ; U* N8 [7 X& T1 O; t  T5 y
  232. multi, exec, discard. G! G9 r4 P; m+ `
  233. 进入或者退出事务模式$ P# b: s9 Z3 C( T& e, o% }
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI. ~* N# x+ P$ p* @) ^
  235. Redis::MULTI:将多个操作当成一个事务执行
    8 c0 j9 y2 T  U7 I2 n) V- c
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
      q: `- h2 g+ ^9 B" k5 T
  237. discard:删除一个事务
    2 V5 n* h/ q8 J' I0 h7 t4 z3 N
  238. 返回值
    ( j0 ], d$ C8 o- N0 n3 }
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    ; [% z  _# J" z6 ]. x
  240. - O% D, N, k$ m
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    4 O& @$ h  l9 ]+ Q3 g+ p, R; H
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    ! ]3 @# c6 i6 e) q8 e, G
  243. unwatch  取消被这个程序监测的所有key. `3 d- |5 l, L" Z; e
  244. 参数,一对key的列表
    2 \6 ?; [. H1 _. }
  245. $redis->watch('x');, {+ [! ?7 ]$ Q

  246. ! K6 r( M4 S' J! B; @
  247. $ret = $redis->multi() ->incr('x') ->exec();
    # ~7 G* D' D! W# b- r8 Z) s7 j' S. A
  248. ! ]% \& E  y5 l( C% e7 @
  249. - @+ N8 I4 q2 i- m) k
  250. subscribe *' W6 k& P6 n6 o  c0 B- _. @4 w
  251. 方法回调。注意,该方法可能在未来里发生改变
    & M. ?& i9 u' |9 @: G2 N6 l  i
  252. ' ?* Q, Y8 _  C; W( S
  253. publish *8 {; `+ t' |# v' q9 B
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    # G8 w. R4 K; m0 f
  255. # m7 U& Q8 B, Y8 J. r
  256. exists( y% N# }) Q8 r4 f
  257. 判断key是否存在。存在 true 不在 false
    ; \- `) M5 }8 c6 _

  258. 7 f" g) X2 V- `: ?  F
  259. incr, incrBy( y0 }4 F3 d5 v" i
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值3 Z1 n5 s1 h* {3 r5 j
  261. $redis->incr('key1');
    ) [7 k/ E9 E$ S- J" t
  262. $redis->incrBy('key1', 10);
    8 j. c5 Y) ?4 L& [# u7 V+ l* O

  263. 3 q) n: q0 I0 r; H
  264. decr, decrBy
    0 |" I/ S' h1 |* w" Z8 O
  265. 做减法,使用方法同incr: D" F' Z8 K* K% @( P* X9 t% ?
  266. $ n- v# A9 t( _& {! r7 f
  267. getMultiple# H% O' F, @% K) d( `) e
  268. 传参' I- Z+ f9 W( x6 {8 v+ a
  269. 由key组成的数组
    ) F9 h2 J/ H% _* U
  270. 返回参数$ }2 H" k6 f' K8 b
  271. 如果key存在返回value,不存在返回false
    , b9 B& o8 J2 E% Y! P
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    , A( `3 |0 ~! h( X
  273. $redis->lRem('key1', 'A', 2);$ y; R, C  I9 ]5 U3 _6 J
  274. $redis->lRange('key1', 0, -1);
    0 ^3 h5 H6 Q$ `2 B- t3 e1 Q) m

  275. " d' n  y2 C9 S0 |+ O% Y9 v
  276. list相关操作
    5 s* W, S6 _% `7 w" }4 H( x4 p& V
  277. lPush
    ! L& A& S/ V4 m7 l0 h
  278. $redis->lPush(key, value);
    " V: e" s2 N, N& M& c- U# H
  279. 在名称为key的list左边(头)添加一个值为value的 元素- T9 d$ i. R& ]
  280. ' y6 z7 E( ]# t' J, q! c  T) b  E9 S8 I, q
  281. rPush  Y% t7 i! {+ k! X8 n1 Z
  282. $redis->rPush(key, value);
    ) j7 A( S$ M' h- C3 y
  283. 在名称为key的list右边(尾)添加一个值为value的 元素: Y/ V, s( N/ B. ~2 N
  284. # v. B* W' V" f
  285. lPushx/rPushx
    + J  i4 T; }# d/ D4 |# I" ?
  286. $redis->lPushx(key, value);
    ) v7 B1 L% B/ [4 e5 n+ v
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加3 P% Q9 g, Q8 f
  288. 3 B! z) A( r$ }+ G7 W" L
  289. lPop/rPop, V- ~7 e9 z4 M# r5 I8 q, i9 S
  290. $redis->lPop('key');( U- b# B, q1 h  Z; b( G; Y
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素6 g6 v6 O$ n6 N7 R$ I; Z, Z% U

  292. : e4 `* C! }8 m; E9 Y
  293. blPop/brPop
    4 D' I6 [* Q' F  P4 K/ I  F' _9 e
  294. $redis->blPop('key1', 'key2', 10);$ w9 z& K" e# W7 R7 b' I, D6 Z; Y' l
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    $ ^3 V$ |+ ^2 c; G

  296. 0 H' w3 W3 f2 m2 g( ?! Y! N* n9 m: K
  297. lSize3 q9 y6 H5 X0 H% h' \. e
  298. $redis->lSize('key');% ^5 @. ^/ ]7 j& s7 n9 u& ^, X
  299. 返回名称为key的list有多少个元素  B3 W, q' U5 s" p* r

  300. - x8 W& m6 `) Y0 F4 [
  301. lIndex, lGet
    ! E" X0 M) M0 v# N7 P0 S
  302. $redis->lGet('key', 0);
    # A2 j. w' D! }7 a/ U  J
  303. 返回名称为key的list中index位置的元素  t$ T8 d8 y; s8 b

  304. % `2 F' v! }* z! F; }- W$ v
  305. lSet5 T& B+ C& r5 U. p6 e& p# q
  306. $redis->lSet('key', 0, 'X');5 P( R( r' x/ ^$ `
  307. 给名称为key的list中index位置的元素赋值为value
    ! I1 X! B9 K! K; \/ O& K

  308. 2 `8 R7 O6 ?" ]( C% S! O$ h
  309. lRange, lGetRange
    5 w+ U! I7 H( u. z# W/ l
  310. $redis->lRange('key1', 0, -1);& u. Z* Q+ ], S
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有), l0 }" I% w7 N) n
  312. - `7 e; s! I* C* H1 h% i" J7 V8 A
  313. lTrim, listTrim# W$ ~; f' `/ g, Y& I
  314. $redis->lTrim('key', start, end);
    ( A3 T9 o* F/ m+ {
  315. 截取名称为key的list,保留start至end之间的元素7 _$ J- M6 l4 j: d
  316. . X) `$ F2 Z. P/ Q: t1 c  _& @
  317. lRem, lRemove
    " U* `! E8 b+ q
  318. $redis->lRem('key', 'A', 2);
    0 ~- l2 m- n( X
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素' K7 D; z/ w, G3 r

  320. , |# A3 ?5 V# _: S8 ~7 U5 C9 j
  321. lInsert$ X! S: k: d  N" Z+ }& ?( y: V
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -18 v( S, P* z+ K2 {! 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');
    ) c; e) p: G! k
  324. $redis->lRange('key1', 0, -1);
    0 j" U* K. p$ \8 R* s, D( O
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');; {$ \) A" \9 l3 b5 |
  326. $redis->lRange('key1', 0, -1);
      T5 D; w7 u) ^* `; r' T9 M. P
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    6 H& j9 L0 r# w# b- s; p+ k

  328. ' H4 [* c% Q; d' ?
  329. rpoplpush
    ( r: [0 s- [7 X* T. V* s, j/ k
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    # j/ U1 m2 c3 \, y  H( n! b
  331. $redis->delete('x', 'y');
    # @1 l8 `5 S' a- i8 Q; a
  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 C' T! U% }9 N) D* g; z/ E: h9 h
  333. var_dump($redis->lRange('x', 0, -1));
    1 e8 ?4 z2 G6 o! Y! X1 r& s+ c: [
  334. var_dump($redis->lRange('y', 0, -1));
    : K! g9 Z% B& N) @
  335. " R" I9 m7 f& K% J
  336. string(3) "abc" 2 P* ~, q& R& \$ z
  337. array(1) { [0]=> string(3) "def" } 2 s! Y$ }1 Z; _4 ?  E# o7 X
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    ! F* }3 d" ]. [+ X3 S/ @2 W

  339. " u" G# e& s% u& {( J( _
  340. SET操作相关. \! T& @- |( r8 T8 ~  K
  341. sAdd8 t- s# Y5 O# g, s) a- x
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false. v1 f6 n1 W9 R& x2 U3 n5 s2 d
  343. $redis->sAdd(key , value);/ o; L, j# v3 R' J; f0 k
  344. 3 a$ \: [% B, u# ^* H
  345. sRem, sRemove
    8 @5 L* }" _0 ?* W5 v! @* F
  346. 删除名称为key的set中的元素value
    1 ~- E- j2 D0 ?0 U$ `
  347. $redis->sAdd('key1' , 'set1');
    3 _) s3 ^" j9 D! H' Z  D
  348. $redis->sAdd('key1' , 'set2');/ q& [2 f  l8 o
  349. $redis->sAdd('key1' , 'set3');6 w% x1 F& U* y) ^) f3 V/ S- t
  350. $redis->sRem('key1', 'set2');
    5 e7 g# e" e1 E# l' c

  351. ; Z; S# |. s, V( k1 s
  352. sMove6 {8 e) q4 Q; O7 X
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    * V  D+ O( ~; y3 o' x" D/ A$ T) s+ D; w
  354. $redis->sMove(seckey, dstkey, value);
    . L: w) i/ J1 P  Z0 a$ V0 ~" I; H7 ?
  355. $ p6 N1 ^* G8 S2 _9 d5 d
  356. sIsMember, sContains& J5 W! {0 T3 y9 q" s" S' p& k
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false( {/ X" y8 Y* T8 B4 r' l" n- D
  358. $redis->sIsMember(key, value);( v( v0 g: d( g

  359. , ^+ R0 f; o( d2 T
  360. sCard, sSize
    ; S! z2 k  A1 Y2 b$ p) A
  361. 返回名称为key的set的元素个数
    / ~. Z, O4 o' G/ `; e
  362. % u7 l& e* H6 }( c4 B$ U2 R' j
  363. sPop
    / J; k1 B; f8 e$ x8 \2 x
  364. 随机返回并删除名称为key的set中一个元素5 l2 f! L4 I% a& j0 L" R, C! Q- v
  365. - C! b, A8 w" A8 _% |2 S5 M
  366. sRandMember& @; Z/ ~  n& P9 i! y7 H! _8 X
  367. 随机返回名称为key的set中一个元素,不删除
    " d) T/ p8 {8 H  x
  368. ' ?: F0 z" {/ S. [8 l( P3 ]$ h
  369. sInter
    , m+ o. E& X/ F* ?6 @; Q% e0 w
  370. 求交集
    ) ]3 |2 z- O; x7 }9 o8 F
  371. ! i  g$ V3 R# Y, u
  372. sInterStore2 h/ n6 h1 k; ^! }
  373. 求交集并将交集保存到output的集合
    - B; H/ p5 E7 m' p4 w
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')5 Q# m+ J+ |( q& h  }4 q3 |
  375. 2 o' o: r/ @; ]6 ?. {) ^' S
  376. sUnion% v* |0 ^. a( E( a
  377. 求并集
    : f) r  e7 j( Y4 L: A
  378. $redis->sUnion('s0', 's1', 's2');
    0 v6 T8 W( J4 ~( \: j
  379. s0,s1,s2 同时求并集
      T( e3 {) N/ L4 l  F: u8 Q, g
  380. 6 e2 }& z) H. |6 h( _  E
  381. sUnionStore
    3 _& E. C2 o* G* z) a* |! z+ \
  382. 求并集并将并集保存到output的集合
      t" D! z1 Y1 o: V% R$ z4 u
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    ! O1 ~( S: y9 U
  384. ; H5 d) @+ p4 K
  385. sDiff+ x! k8 ]1 B' T
  386. 求差集
    ! e2 l3 |8 _' H* r
  387. $ ]: u8 d- L0 A& }
  388. sDiffStore
    $ I- {* X, D, @& [
  389. 求差集并将差集保存到output的集合
    * m% M7 k  {* c+ H1 T/ A$ i

  390. / t/ u1 \  j) G" F- J( z- S# H$ ?! U
  391. sMembers, sGetMembers
    * J! J/ c/ B0 G3 J
  392. 返回名称为key的set的所有元素$ r5 A7 j  @4 }4 P: t
  393. 0 k% _& |1 n  \
  394. sort
    * l- h/ {6 n% x3 ]8 J" e. D( H0 K
  395. 排序,分页等5 C1 ^: p. n7 S! G' ?
  396. 参数# e9 L/ a" |% X1 }
  397. 'by' => 'some_pattern_*',
    2 N8 v$ {5 k  c; N9 E
  398. 'limit' => array(0, 1),1 a( d  y( e5 |2 Z# H9 D
  399. 'get' => 'some_other_pattern_*' or an array of patterns,, j& S) e, N! L
  400. 'sort' => 'asc' or 'desc',
    " j! \1 p4 {$ ]/ L+ R& o8 ~2 ]- X3 R4 q3 G
  401. 'alpha' => TRUE,% L9 L( v( q+ Z* X0 A' R6 w. I
  402. 'store' => 'external-key'5 y9 E4 {! x+ x  a, y9 P' s
  403. 例子
    ' u" R& `) t  h
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    # {5 k5 Y7 t( N3 F
  405. var_dump($redis->sort('s')); // 1,2,3,4,5& u# _3 e( U8 p0 E9 u  ]
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,15 {  B2 Q) Z( k. f
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    $ X  q0 g5 s8 X+ b9 n
  408. 9 k8 g$ v7 A- C3 I- N7 m" J
  409. string命令
    : v( {3 d2 G$ V
  410. getSet
    % T# ~/ C* }  p% ~1 i
  411. 返回原来key中的值,并将value写入key9 J5 G& U# V4 x
  412. $redis->set('x', '42');
    # {; E# Q/ p: m; ]  _
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'. C; ]/ {( a" R
  414. $newValue = $redis->get('x')' // return 'lol'
    & q' O% p. B8 e+ |
  415. * P" y# u" |: e6 a5 |' Q
  416. append6 _1 d. v6 f8 r" `/ k* ?3 P
  417. string,名称为key的string的值在后面加上value
    6 H* G6 y7 Q. R5 F0 X
  418. $redis->set('key', 'value1');
    8 L& {/ l) y1 u+ D1 V3 G# d
  419. $redis->append('key', 'value2');' b" [% U; F2 ?+ i4 C! I# Q6 E
  420. $redis->get('key');2 U0 q: l2 g( ?8 Q2 l

  421. 5 r: s' ~  b$ u6 z) P; u  f; e5 z
  422. getRange (方法不存在)5 E8 M4 J) D6 I: `
  423. 返回名称为key的string中start至end之间的字符
    $ ^5 m% E, C& t- v) B2 S
  424. $redis->set('key', 'string value');) S5 s; r; V1 {6 }  h1 E# `+ Y% G
  425. $redis->getRange('key', 0, 5);% `. `* o% o: ?! A7 k
  426. $redis->getRange('key', -5, -1);! B8 W5 D4 X1 Z2 d8 ^) `
  427. " F) F% ?# L7 u' R' ~/ Z
  428. setRange (方法不存在)
    , C0 ^) x$ H( ?9 [
  429. 改变key的string中start至end之间的字符为value
      _8 Z8 Q- b4 n, A6 a$ m
  430. $redis->set('key', 'Hello world');
    , K$ p9 o& W  j# }
  431. $redis->setRange('key', 6, "redis");) H& z* k% B* ?" t3 W3 v
  432. $redis->get('key');
    4 q0 n) w/ Y& K; l$ D
  433. 8 g$ u4 ?+ a6 P: o2 ?
  434. strlen5 f% n3 c3 ]5 ]6 U
  435. 得到key的string的长度
      }7 t+ f+ l- y# z1 K: F( V
  436. $redis->strlen('key');
    ! V' M6 ~$ P- X2 m! N
  437. $ b$ F7 `7 c& P# g1 [
  438. getBit/setBit- l$ e$ _* n) w$ ?, g
  439. 返回2进制信息
    - W! ?% o1 R7 U
  440. " A0 o' h; A- H
  441. zset(sorted set)操作相关0 D2 ?% n$ V; V- R0 z
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。* k8 p! _! K  k6 I1 _  Q6 T
  443. $redis->zAdd('key', 1, 'val1');+ n) U% X8 g8 O+ K  G; j3 {+ A1 @
  444. $redis->zAdd('key', 0, 'val0');& S( O" \" H3 q4 Q& x$ n
  445. $redis->zAdd('key', 5, 'val5');! O2 I7 a( O  \5 ^& i" p$ r
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    & ?/ \8 e+ w/ n  i+ _

  447. " r* W% M5 P4 D! X7 b
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    & M$ }$ v/ }# \( _/ Q2 c" J. c
  449. $redis->zAdd('key1', 0, 'val0');& `9 u0 r1 `" O" C3 N
  450. $redis->zAdd('key1', 2, 'val2');; G- c! k# M" J! l
  451. $redis->zAdd('key1', 10, 'val10');% F: W4 E* w! c9 Z8 @- Y& O
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    # h. P1 I7 b$ H

  453. 3 \* e) b3 g7 L- o1 E2 s# u/ T* B
  454. zDelete, zRem
    6 R6 f. C3 W& D0 U1 C" V
  455. zRem(key, member) :删除名称为key的zset中的元素member, y6 A  h0 {( n
  456. $redis->zAdd('key', 0, 'val0');* @! Q" [: G2 U6 t& m
  457. $redis->zAdd('key', 2, 'val2');8 P  {$ x2 e* c  \
  458. $redis->zAdd('key', 10, 'val10');
    , P. o: i0 r1 f3 |7 [
  459. $redis->zDelete('key', 'val2');
    ( q8 `3 _' T$ k9 R
  460. $redis->zRange('key', 0, -1); 4 p$ K- X. }% j9 e, t
  461. % q% W3 B* F; L  k% `. J
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    9 B  G. }1 O) X! A1 q7 I; k
  463. $redis->zAdd('key', 0, 'val0');$ K7 W( s% P4 ~4 x0 ^& p8 \, ]
  464. $redis->zAdd('key', 2, 'val2');0 @* {# M1 c+ B/ U" }
  465. $redis->zAdd('key', 10, 'val10');
    ! {8 \* z' B0 H7 ^
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);! t3 _4 s) ~( A1 Q- C1 {
  467. / w* v. ]4 ]- M, |8 `
  468. zRangeByScore, zRevRangeByScore
    * T0 Q- }4 `' `. |; i- e
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    * y$ K- i& C$ A! s: Y
  470. 返回名称为key的zset中score >= star且score <= end的所有元素( {( L& k5 u( F
  471. 3 P6 d3 E2 [8 V7 m6 P2 a2 C
  472. zCount
    8 G' q6 _# v0 T
  473. $redis->zCount(key, star, end);' c& s- q8 v: ]1 S
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数  h% i3 d  U+ d9 D# l0 q, p: P
  475.   d" P0 g, O# n  P; E
  476. zRemRangeByScore, zDeleteRangeByScore) _' m" g; L% G% Y
  477. $redis->zRemRangeByScore('key', star, end);: S/ e: U, y" B: A* q
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数' Y" `/ n( j/ M3 o* J+ A, i

  479. / H9 C. R" L( s+ q) L0 m
  480. zSize, zCard# J! h3 ?4 v  ~6 Z8 W+ }9 _
  481. 返回名称为key的zset的所有元素的个数2 z# T5 B8 s3 P# v% y

  482. 4 Q- Y4 N: x. c' ?+ I
  483. zScore
    ; ~+ {+ Q. d' K% X+ @2 ]4 i7 F( t
  484. $redis->zScore(key, val2);& z7 h: X7 o$ C# T. A  x
  485. 返回名称为key的zset中元素val2的score, A0 |2 k5 ^3 s  f4 Y
  486. 7 Q* s8 {4 i8 N7 R
  487. zRank, zRevRank, D/ K9 p4 ~0 K) N( p& x
  488. $redis->zRevRank(key, val);
    8 {$ ~+ |# j, ]3 Y+ j9 D
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    . U/ j0 @8 {9 A5 i

  490. ' R$ J5 r" s6 e
  491. zIncrBy
    / ]: h" {2 Z! u1 M
  492. $redis->zIncrBy('key', increment, 'member');
    ) J& b# V* b% Z, H; M  q7 W
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    ) c7 X% ]8 |, H8 x( K3 I8 R
  494. : ^* y8 m2 |# i8 K0 N4 o9 r
  495. zUnion/zInter
    # r5 o7 b  s7 B" O
  496. 参数+ _6 K1 ?& b4 U( v
  497. keyOutput# K; [7 @, B1 F4 [  }6 o
  498. arrayZSetKeys/ h1 M' L6 v4 R. `& N! e, J
  499. arrayWeights
    2 N/ n6 [2 m) l
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.! t9 M: b' @8 ~  x& j
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。* f( T4 ~2 k/ _# M
复制代码

$ t, c9 o/ i# H% C5 x9 C6 l$ R  `4 Z: r' h: Y2 S
. @, M* m4 f: E/ Q
9 x+ a- d2 k# N& c$ u4 e) P1 a3 q1 T

作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis(); 4 w; Y2 M" K! W
  2. //连接redis服务器
      N6 M! S$ h' h1 \+ i
  3. $redis->connect('127.0.0.1', '6379');
复制代码





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