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
    5 n( z9 O1 N$ n- a1 d- C; r
  2. $redis = new Redis();  
    5 b' ~  }0 t+ D) M+ T- O
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    7 g6 o7 t/ R9 l( H$ L
  4. $redis->auth('mypassword');//my redis password & M# J! h  O& ~, ^: t4 I1 T
  5. $redis ->set( "test" , "Hello World");  
    7 r: w3 R4 R; T* h9 `0 b3 m
  6. echo $redis ->get( "test");' v0 A9 |& y% m' M5 A/ h6 t' W% ]
复制代码
php操作redis函数封装
  1. /**9 w+ x5 T3 r  F$ Z
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    # S5 S- J8 V+ ]- H( v+ j9 j1 h- v
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    ( a- X5 E+ `9 N4 N( g1 W
  4. */
    " L% O3 |& C" P. K, t2 p& Q- d
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    * K4 p7 \1 \/ I4 g- X
  6.     if(!$key||!$value) return false;6 S: u9 ]# F' W7 S% V5 K/ ^
  7.     $host = $host?$host:getenv('REDIS_HOST');' n- K1 ?) ~8 n. J1 u. _+ D
  8.     $port = $port?$port:getenv('REDIS_PORT');
    * ]) D! p) L( Y- y$ O
  9.     $redis = new Redis();; q& t4 w( ]( O; S' F; O& h
  10.     $redis->connect($host, $port);2 ]7 i5 i7 K* ^0 ?4 J! \0 h8 N8 @1 Z7 R
  11.     $value = is_array($value)?json_encode($value):$value;
    0 [! z) `5 @: l0 M4 p! j* _: k
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    & `. |9 p& s4 o+ n8 ^& P8 [* Y
  13. }
    7 b2 k! t/ o1 b+ a; B  d- p& f4 t
  14. /**
    4 B+ S5 ^( t9 q) M" ~; a
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    7 U, O. \2 ]0 u4 M
  16. */
    1 b. j: C6 E& `  Q
  17. function RedisGet($key,$host='',$port=''){
    ) P1 {+ n6 f2 }9 {" r# ]
  18.     $redis = new Redis();  t6 H7 L: q$ b6 p- Z1 R4 ]; \
  19.     $host = $host?$host:getenv('REDIS_HOST');
    $ v1 K! G9 b' F, o6 d/ L3 f- V
  20.     $port = $port?$port:getenv('REDIS_PORT');( I. s3 z+ a& F) ]9 Q
  21.     $redis->connect($host, $port);
      \0 L( u) H/ G! E6 F
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    - V5 U7 w+ l  U7 Q' A) J; W; Y
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);3 f8 r* T: Q; O" d! p
  24. }
    % B& E3 ~$ s5 Z. f; q
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了9 K: A. A  |' E% F
  1. setex 带生存时间的写入值4 C- ~+ e+ R5 M, Y# H* m
  2. $redis->setex('key', 3600, 'value'); 9 l- o0 E5 R& x& r
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1  w3 t" M( A3 h1 K8 H8 B% T
  4. $redis->setnx('key', 'value');# y) C1 f" ]9 k# p
  5. 返回已经删除key
    ! V% l8 G7 n8 S# _, G7 ^) ]- c5 P- v
  6. $redis->delete('key1'); 成功返回1失败返回08 A/ `' |! _9 E* y9 D6 U5 b
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    5 g- i+ K% H4 p' H/ x: c1 ]9 o
  8. 查询生存时间
    * a$ Z- d2 d- ~3 A+ X3 H  E
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    3 _4 p8 X# v- N; B- y, _) s
  10. 同时给多个key赋值,同时设置key0和key14 X/ n/ r0 m  N5 n+ b4 A
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));0 p% k5 A% N. j
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ; [6 H* n! v1 V5 q0 s8 }3 i
  13. $redis->incr('key1');
    " h. b6 @2 i1 i* i+ g# i
  14. $redis->incrBy('key1', 10);
    & _/ T" N- f2 Q. H$ i6 T) U6 y
  15. 减法跟加法一样
    # ^0 B' _  {& U1 ^4 X1 [# n
  16. $redis->decr("key1"); 减少1& L! X% ]2 x& B) {$ ~
  17. $redis->decrBy("key1",5) 减少5
    % J' s( H; ~9 n5 r, j
  18. 8 P5 \. ?- f1 i' W) Q- d
  19. list相关操作,连表操作
    4 y. Y$ U' E: y* C
  20. lPush! l; b' }3 c9 }
  21. $redis->lPush("list", "888");
    " u) Y# c1 i5 T/ B; L6 ^! }
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数0 F. n% P3 ~7 T1 _  E
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式' M( g, O- E! E& C, [. C9 M
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素( j) t# X3 d4 N
  25. lPushx/rPushx( N4 k) |3 i8 j! [
  26. $redis->lPushx(key, value);& s& h/ M; G6 ]4 a
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加' K2 |, L2 C# \0 j6 g' w
  28. $ L2 {& `& h/ N5 G
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key2 A# k  ~/ q" ?! }4 \0 C: P- V
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    4 C6 F6 n% U! |0 y0 e9 m4 _- A; C
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    * p; P# ?; p% s5 P
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    6 t% o) [% K& [$ C
  33. sadd s1 zhangsan$ x+ c: _' H0 o& @: s
  34. sadd s1 lisi$ B! o# ]5 {. r
  35. sadd s1 wangwu
    + P- k9 a1 E7 }
  36. sadd t1 yangxingyi- s! j2 H* y/ c! t" @0 u
  37. sadd t1 lilei! K, N/ M& ?" R" |" d
  38. sadd t1 zhangsan
    1 n- A/ K% ?, [: M, Q" B, n# u
  39. smembers s1 s1的所有集合内容
    0 n5 f$ g! v' t6 B6 t+ g
  40. sdiff s1 t1 s1有的,t1没有的,差集" Y% E; P' T; V, L' ]  ?, i' H
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式. ^) c% E# v0 V" \
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的( n5 f; d4 F5 {2 S' D
  43. spop抽奖场景,返回集合里面随机的数+ }# {% L/ P, B* ?" P4 a0 L' z+ f
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了" D. [$ d* m* z* z" W  u2 U5 q$ ?
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数% l4 Z0 O' \2 i! O
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    1 \  \- K$ E5 U$ G( ?, g
  47. 随机返回集合里面的一个元素,但不删除,重复中奖  q0 L* [2 ~8 y! ]# G) X- W
  48. $i = $redis->srandmember('s1');echo $i;' {2 c' j. ]& g) G5 G
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false' M) O5 ^; J  J7 H0 X% S
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false1 r0 K% h6 B; _4 x: N

  51. ; \! N0 B) O  L# A8 ~
  52. zadd key 2 value 有序集合8 P- q" b* j* \$ q2 Y
  53. zadd y1 1 zhangsan;* C3 H1 _4 V( k! h1 H7 w$ Z
  54. zadd y1 3 lisi;% ~, y! ~/ T! i% s( `% @3 m$ h
  55. zadd y1 2 wangwu;: j' v% L$ a/ v
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi# |: w! D6 r( F, w0 Z9 J; R1 f: C2 a
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    9 ~6 Y) I3 }% L) q  b
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    ; E$ Z* z+ c3 J# J
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先& ?# d/ |" C4 i( S' D0 s4 D. O$ A
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    * D' w* `: T: P5 L! B' X( W7 r
  61. 无序就scard,有序就zcard,有z没有s  z( f8 N/ K* {9 U/ k4 r; k
  62. sInterStore. R1 n$ x1 u: d( G! d
  63. 求交集并将交集保存到output的集合
    5 h0 ~( v! `$ Y# r
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    6 F' t- l* {- \8 l! ?; {8 M

  65. 5 l6 g  B5 h& X  b; V% N# P( n
  66. Hash操作
    2 [+ n  {/ O0 e7 p
  67. hSet1 ]2 x3 X1 X4 z7 ?- ]. C# s
  68. $redis->hSet('h', 'key1', 'hello');# y* G9 q5 G# ?, X. O
  69. 向名称为h的hash中添加元素key1—>hello
    ; A% \- v; |" {1 V$ H& Y

  70. - }  U5 t$ Q" g. K
  71. hGet
    ( Q) F: W# ?, N
  72. $redis->hGet('h', 'key1');) Z2 I6 s- D/ f% u) D
  73. 返回名称为h的hash中key1对应的value(hello)
    " x8 }% W7 l6 k. n4 V3 P
  74. ' Y# q1 G) |# g  Y
  75. hLen
    ) |2 a" e) a. I( l# a4 q1 z' o8 u
  76. $redis->hLen('h');
    7 i% Y: o2 `# T! J
  77. 返回名称为h的hash中元素个数! V% I$ Q, m0 S/ e& \

  78. ) W3 G' e* Y( x4 `* m
  79. hDel0 p' `! m% V" v7 T- u4 }; B/ W
  80. $redis->hDel('h', 'key1');
    0 S) D5 f, H& L9 q% y6 C
  81. 删除名称为h的hash中键为key1的域
    : S7 K0 v" T% {

  82. 9 X1 r6 O. Q+ @2 U" M
  83. hKeys0 {: ?0 h% M7 T2 _' v6 G% i
  84. $redis->hKeys('h');) W) V5 b7 v4 I: X* H" m5 T8 q$ R" k
  85. 返回名称为key的hash中所有键
    + s: r' S3 Z/ j

  86. 6 X& w1 [- O$ L1 P& T1 U
  87. hVals& X; T" n/ ]  I% N5 I4 V
  88. $redis->hVals('h')" T  z- U' g. i' z
  89. 返回名称为h的hash中所有键对应的value. a( U; x: `+ Y

  90. : D$ Z) a9 e$ `2 U, X& K
  91. hGetAll- ]0 c# Z& S% b: S! [
  92. $redis->hGetAll('h');
    . M- }+ v1 R9 h' d
  93. 返回名称为h的hash中所有的键(field)及其对应的value/ q. r) d: ?' g
  94. 7 l- p; m9 t5 y# M8 i
  95. hExists* `: B; a3 Z; C7 }- p: V
  96. $redis->hExists('h', 'a');
    - X, h. C# e/ O$ i/ |0 j
  97. 名称为h的hash中是否存在键名字为a的域: y8 y4 r  \/ Y( L$ g6 W6 z; w' _
  98. 2 T- P: ?# D9 U( [3 a5 h
  99. hIncrBy; Q2 Z2 j7 C: W$ C* `! K
  100. $redis->hIncrBy('h', 'x', 2);8 h" [8 R& ^/ Z* f# e4 |* ]! {
  101. 将名称为h的hash中x的value增加2% o* f) Y( m9 n
  102. $ P" \5 U. Q; G  b( [* @6 y
  103. hMset
    5 e1 C( Q) _! L* F- e0 Q% t$ U) t
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
      d! V2 c  }* H- G) }2 {
  105. 向名称为key的hash中批量添加元素. ~- }$ N. k0 H4 |2 F, e" P

  106. 3 d0 x0 Q, G' b. Q
  107. hMGet" S# `( p* C5 j$ A
  108. $redis->hmGet('h', array('field1', 'field2'));3 y- w6 T3 K7 X; F8 L7 ^
  109. 返回名称为h的hash中field1,field2对应的value: D5 `4 b0 @6 @1 q9 J& u

  110. ) ~% Y. m9 F, `
  111. redis 操作相关. j  T  y- T$ `1 j6 t" A2 d
  112. flushDB
    " \" q; R9 N- S( c6 ~' L. j
  113. 清空当前数据库
    3 R* K, o; u0 u  n% D1 L/ _

  114. 4 A, m5 |2 X# f: v0 {7 E
  115. flushAll3 ?9 B! P* m1 S' J
  116. 清空所有数据库) u0 ~$ d9 ^7 ]: ~" U) b  k
  117. 9 }) r# m9 e" m. k
  118. randomKey
    8 j# ^: C& v: Y( Q
  119. 随机返回key空间的一个key2 |7 i- z* X. V& o+ D- v
  120. $key = $redis->randomKey();! D5 ~! _7 u) T4 D* G6 s0 l) ~

  121.   \8 R0 O  N& e1 a6 N
  122. select6 K* G& ^  a$ `# _9 `
  123. 选择一个数据库2 W( p# t0 R( B5 {6 i) [3 s
  124. move
    ' O% E9 \& Q4 G# G# y
  125. 转移一个key到另外一个数据库
    " Z. Y! t) P$ K, N+ Z
  126. $redis->select(0); // switch to DB 0/ I& H0 A% [+ r+ Y% x# H) Z
  127. $redis->set('x', '42'); // write 42 to x
    & l" l7 T! q  v, ~
  128. $redis->move('x', 1); // move to DB 1
    % s! N+ a# [3 v9 u& D& n1 V) w; \
  129. $redis->select(1); // switch to DB 16 F/ h3 p7 j6 G2 ~0 f
  130. $redis->get('x'); // will return 421 p* O( v. e* [% }

  131. 6 o1 p9 e) [6 k
  132. rename, renameKey
    4 U. \6 y0 M5 d) S  k( t
  133. 给key重命名
    + i& w2 {% J9 k9 o5 g8 F
  134. $redis->set('x', '42');
    * @5 ^% P1 G$ S$ Z4 q
  135. $redis->rename('x', 'y');: M2 }, N5 Z! C2 i( _6 W- }
  136. $redis->get('y'); // → 42$ \& ?' U7 _% ^8 i2 O8 G, v( z) C# ]
  137. $redis->get('x'); // → `FALSE`
    0 }8 b$ ?9 Q  d! w" D

  138. " j2 W% b% P+ ?: E' E. R+ j7 `
  139. renameNx
    . }$ X# {' t; P' `
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    8 C7 b! S6 b8 v' k( F* @5 w

  141. % S+ l5 P8 W6 k* k- `/ g: ?
  142. setTimeout, expire8 B, Q+ d. S' A( w
  143. 设定一个key的活动时间(s)
    ) f0 N& T! c1 w9 x* V
  144. $redis->setTimeout('x', 3);
    0 j6 H  T) Y8 `, b$ O; H1 v, w
  145. 1 k; D" x* U! j! L- M0 S# x
  146. expireAt
    6 V3 {6 [3 e% B$ @
  147. key存活到一个unix时间戳时间. ?/ B8 R9 T; f6 N
  148. $redis->expireAt('x', time() + 3);
      D" i& X1 N% X# E+ M+ F7 e# Y
  149. 7 ^9 h$ E3 X+ W) u: G
  150. keys, getKeys
    ' z* P5 Y2 s& A; m8 v" a1 K$ M4 n
  151. 返回满足给定pattern的所有key- E7 I8 L- [9 {" ^/ d
  152. $keyWithUserPrefix = $redis->keys('user*');
    1 L3 _# U0 q/ r* h; e4 l$ O- @; R4 J

  153. 4 u3 i, e9 s+ E8 P, G
  154. dbSize: B& [/ Q6 i. U% K+ ]
  155. 查看现在数据库有多少key6 k* K$ n5 x' T/ D6 I" A
  156. $count = $redis->dbSize();) F1 H, S: b$ m, M3 P9 ]* W

  157. ' }# F6 o4 I+ R8 x
  158. auth$ X. j1 k; W: w1 T( {" C
  159. 密码认证
    ; ^: F$ X! \: n& U+ m& D
  160. $redis->auth('foobared');
    / ~) ?9 h  `* _9 G. r3 [2 }

  161. # y( A2 p3 N- [/ f% \  d
  162. bgrewriteaof" J4 L7 n9 _" H+ h, F+ E5 z
  163. 使用aof来进行数据库持久化+ }0 j) O# o7 L+ h+ p
  164. $redis->bgrewriteaof();2 i" f8 m* d2 @: b* e

  165. 8 x+ K3 a6 X0 ?6 x/ l
  166. slaveof# L/ G$ M* ]3 T
  167. 选择从服务器1 c) S. ^% i0 L. x6 U; Z
  168. $redis->slaveof('10.0.1.7', 6379);$ E. `5 X: s+ e3 v1 A, p
  169. * v) c$ b: P0 }5 H
  170. save0 S: @& O# Y9 p4 G# G
  171. 将数据同步保存到磁盘
    0 l. J: r7 C9 x. E6 ]& E

  172. , }' O" E% s) f- D- O4 `8 @
  173. bgsave
    3 p" x4 `" n7 R* m; u. g
  174. 将数据异步保存到磁盘
    / E4 B- N. {! V; X# y7 D3 z: L

  175. & p6 L% L( l( S1 T4 r" d
  176. lastSave& X# b8 N$ @/ D2 X
  177. 返回上次成功将数据保存到磁盘的Unix时戳, J& E0 }# j. s

  178. : \, v3 ?) e" F; u6 B* H. i
  179. info
    5 V3 t" H& y: i  g$ @
  180. 返回redis的版本信息等详情2 e, [2 O4 Q  {. Q
  181. 6 \: I* {1 |5 f3 a! v
  182. Redis::__construct构造函数, k) d* f7 m2 E; o$ ^! x
  183. $redis = new Redis();* G  R4 N; {8 x' }& g& \

  184. , m* E& r! c' G0 u8 O8 J3 E
  185. connect, open 链接redis服务
    " ]8 |: j8 ]% n8 k0 ~" T+ \- n
  186. 参数
    ! C: n7 D% u4 c
  187. host: string,服务地址
    + y5 V! r/ f7 e6 g9 C. B0 Y
  188. port: int,端口号
    ' L3 `! S# q( ^5 ^! t' V/ j6 v/ g
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    8 q/ T/ h- {: l: t' h" p
  190. 注: 在redis.conf中也有时间,默认为3005 v# |/ ~" C1 A$ a8 |
  191. - o$ N$ Z$ |- k: @3 Y5 M
  192. pconnect, popen 不会主动关闭的链接% s) ^7 E9 q9 a. W3 h
  193. 参考上面( g! O  G/ U6 k9 v

  194. , T: S6 {5 K: O3 N9 P7 S
  195. setOption 设置redis模式
    0 K) M  o, ~, l  D1 S
  196. " s& H: h* D3 {2 F# e* i# h
  197. getOption 查看redis设置的模式
    % @6 ~# o' n9 t/ E2 _% s

  198. - b$ t' B3 T* I8 ~
  199. ping 查看连接状态
    ; ?) k4 Q$ G% ?, x  z# Z' C

  200. - `. R* P# X4 R; |$ k$ c$ w* L8 T
  201. get 得到某个key的值(string值)
    ) g. c5 i( U* z+ V( C4 Z; ?
  202. 如果该key不存在,return false, @& N+ h' S! A0 c3 p
  203. - g0 f; g% H- s4 z; ^5 a
  204. set 写入key 和 value(string值); n3 ~+ N+ v' Q( d+ I
  205. 如果写入成功,return ture% R$ c  g% Z; l4 M% {; f$ K
  206. : J3 ]! r" T3 W3 Z  o5 @! n3 [# p
  207. setex 带生存时间的写入值/ w; o, [" N/ F& u. r+ q
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL., d7 p8 P* k5 ^9 @

  209. 3 Q: v. u1 q5 H4 l
  210. setnx 判断是否重复的,写入值6 m6 [- |/ [8 S: U
  211. $redis->setnx('key', 'value');
    : `. ~8 s8 b  G1 c. s1 R' [
  212. $redis->setnx('key', 'value');
    & n+ X# L& j0 Q" G# s  l
  213. 2 T7 G: u+ k+ Z8 G6 G  k& e& t
  214. delete  删除指定key的值
    2 Z$ F7 @" z3 U4 N9 i
  215. 返回已经删除key的个数(长整数)' G$ z+ |: [6 j  l% ~$ r
  216. $redis->delete('key1', 'key2');
    " p7 K7 `# F. ^% G+ ~
  217. $redis->delete(array('key3', 'key4', 'key5'));
    ' Z- y1 W7 W' Y+ z+ I2 q! ?  F
  218. ! g6 S- O) W; f1 c! n
  219. ttl, x% Z+ G  i' A% E: r
  220. 得到一个key的生存时间
    5 n. b" E# l" G1 ^& w4 r! a' [0 _

  221. ' N& ~# J2 d7 |1 W. u
  222. persist
    * Z; {. f# P4 M. ~
  223. 移除生存时间到期的key- t9 s/ `' }# A. s2 `
  224. 如果key到期 true 如果不到期 false
    3 w6 b* V4 {( e- h2 M* o
  225. - K- C8 V- C% ]4 R- Y; ]4 L
  226. mset (redis版本1.1以上才可以用)
    ( \1 t$ W. e, r# }/ @
  227. 同时给多个key赋值
    " P2 z8 p, V& B" \
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    0 E9 }( I( B9 K: T2 H' T
  229. " l9 w- E: j4 k: Q

  230. 8 m1 j' R2 X0 Z5 H7 j% M+ A

  231. % r; V4 i* I2 L
  232. multi, exec, discard
    ( o! Z- T% T/ Z5 t! _7 g
  233. 进入或者退出事务模式
    2 E1 D; r* D7 A: A: q+ s4 G
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI' h, i7 ~! W+ f. ]
  235. Redis::MULTI:将多个操作当成一个事务执行5 W4 h; ~5 E0 H) A
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证3 c% z% i" p- Y/ N6 i3 k
  237. discard:删除一个事务3 Y$ H. \( j7 c% j+ b9 u* e
  238. 返回值
    8 Y' P) B. `- M
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
      H+ }$ `) |" A
  240. 5 X4 \% g$ ?+ n" p8 C2 i* G
  241. watch, unwatch (代码测试后,不能达到所说的效果)1 \" ]6 F2 T5 w
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)7 l0 v- ~9 y# d: M/ r  d3 I
  243. unwatch  取消被这个程序监测的所有key' n$ Y* \$ l0 X) y* f
  244. 参数,一对key的列表+ M. B$ f& M$ K& Q
  245. $redis->watch('x');
    , ]6 B: m6 b, t+ w
  246. 4 I+ u( w; w; `8 ^
  247. $ret = $redis->multi() ->incr('x') ->exec();
    4 H4 W" A3 f5 h# Z4 @4 S
  248. 6 L* ]! Q" ?: }

  249. 0 a& r; K* m2 Z* g* W
  250. subscribe *
    & f, J1 ~0 u6 n/ b( v+ x
  251. 方法回调。注意,该方法可能在未来里发生改变
    & I: X9 P$ B1 d+ p/ L

  252. 0 N4 @3 X2 |* W: h
  253. publish *" e! d% x; t$ }  T  `) U1 {
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    3 w: d" ~+ T7 i% g. Y$ U7 H

  255. ) M8 g2 q( z; H2 x) j( ]$ I
  256. exists
    8 e. q- n- L" S: `, r  B
  257. 判断key是否存在。存在 true 不在 false
    * o; T6 Z& Z  V; i' r/ ~8 I1 M
  258. 6 l" a- ~. Q& H
  259. incr, incrBy7 o7 l* x# ?) T5 l& Y
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    3 C7 w! H( b5 R% X7 T! e4 c1 X. g$ T
  261. $redis->incr('key1');. {3 v, H; W" I" N" U' }
  262. $redis->incrBy('key1', 10);
    # `( ^2 q1 a% `5 e. N

  263. " G" K6 [  T# C; X9 w: G
  264. decr, decrBy
    3 S9 ~( f. w- c
  265. 做减法,使用方法同incr
    + v0 u3 Q) O3 b- s* t' q

  266. 0 Y9 k. o& z5 d' j
  267. getMultiple9 l; L7 _. G+ `" C5 u
  268. 传参
    # d/ f) S0 d" E1 d# t
  269. 由key组成的数组1 j; T8 M8 J# [$ W2 K- g0 F/ Y0 u, I% _
  270. 返回参数
    5 g- u( f# y' v: u2 s  z
  271. 如果key存在返回value,不存在返回false: k) E% j' P$ I# s
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    0 Z' W! f) ^) N& }" W9 U, s8 d
  273. $redis->lRem('key1', 'A', 2);
    $ K# [! ]2 t- M4 _- L1 d1 _
  274. $redis->lRange('key1', 0, -1);8 k4 o; A. U3 C0 J' d. Q

  275. 3 x0 \9 ?" S, b8 d0 ^9 {# _( {% D
  276. list相关操作
    . F$ B5 M7 T. v, j
  277. lPush, l1 K8 M; a8 C9 Q' P
  278. $redis->lPush(key, value);- P5 }3 I  p! m
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    : R( h' C. p6 Z7 B

  280. : O7 ^& L: j2 r" I
  281. rPush" Y/ o4 I/ S2 k% x, W
  282. $redis->rPush(key, value);
    ( K  w8 v6 A' }7 G) e- K+ ]( a; d
  283. 在名称为key的list右边(尾)添加一个值为value的 元素, O% X; S  z: j( K
  284. ) q* T1 u6 M+ {5 v
  285. lPushx/rPushx& l- e: I1 J5 t, w! _1 ^/ @
  286. $redis->lPushx(key, value);
    . @# q- ]* g  X& G  y6 u5 g
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ) j4 j: K2 a1 S* p8 I
  288. ) g" g) J; n, x! m- e
  289. lPop/rPop
    0 E3 R' X" w) `
  290. $redis->lPop('key');$ D& t9 c0 U- j7 @& S  x) g; D
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素) F* _) `# p$ i' B2 o! W4 B2 s

  292. , ^) |$ |6 l7 i) f4 F. O$ [
  293. blPop/brPop& E9 D) v( x* m" `
  294. $redis->blPop('key1', 'key2', 10);; Y2 i; ?( O6 E
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    . x; z; ~" @; T# r% k* d# _4 \# k

  296. / ]  |0 B1 o* t3 `! \3 o
  297. lSize
    , K- T/ h* s+ R5 h( F
  298. $redis->lSize('key');; |7 `5 @/ Z' O. u$ B6 i, M/ }8 B; o
  299. 返回名称为key的list有多少个元素( g) x8 y4 M4 a' y- j! `, ^
  300. / W% ~- w+ @8 ?# v
  301. lIndex, lGet
    7 x0 k" d8 ~+ P  e) `' r8 n* O
  302. $redis->lGet('key', 0);
    ! U; q; I2 W$ v
  303. 返回名称为key的list中index位置的元素. h- E2 A5 S: X& Q+ h

  304. * N. Y- S- W6 d# \
  305. lSet
    7 c, @3 u4 G( p
  306. $redis->lSet('key', 0, 'X');
    - h! a# a' `2 ^% {" }
  307. 给名称为key的list中index位置的元素赋值为value
    7 x# q7 C/ }0 U6 b

  308. . `3 K) @1 U+ G
  309. lRange, lGetRange( l- B3 z. b) G0 x/ n6 M
  310. $redis->lRange('key1', 0, -1);
    3 Q! E  u- S; c2 F3 @: ^. F& e$ E+ Q$ r7 Y
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    " l8 n) R: M. }6 r3 H
  312. / {# u. f: z: B$ X$ \0 R
  313. lTrim, listTrim
    . U9 z" k( R5 r5 K7 w: p
  314. $redis->lTrim('key', start, end);
    6 X/ F, ~' [( j1 |" g& P3 u) o3 h6 O
  315. 截取名称为key的list,保留start至end之间的元素
    1 D# G* E% E) q2 i2 s- f/ u+ g
  316. 3 u6 F. H! s7 {
  317. lRem, lRemove* ~2 n9 b! X1 U: K. t1 Z0 Y- N$ m
  318. $redis->lRem('key', 'A', 2);! f6 V- ~; \$ [; l- g) e
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素" s! V" ?% Y! R4 G7 ~3 ~, a

  320. " i. H5 W1 y/ I8 l8 Y
  321. lInsert
    ; Q- e. R  F8 b0 Q1 J
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    8 K1 r' B6 m/ |" 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');7 |0 d& k# [3 [$ H: t& p( Y* F3 A
  324. $redis->lRange('key1', 0, -1);5 d! x* O4 A3 J* q4 q& |
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');* X2 I5 a# o! ]/ M- s7 [+ n
  326. $redis->lRange('key1', 0, -1);" c& ~" @+ U3 {. h& a
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');' h+ N' e6 t3 Z4 L* f7 ?; |
  328. : r" G. z* t, W% G0 F
  329. rpoplpush
    8 d( ?9 U# u" J
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    0 n1 g2 {1 u( K" d4 Q0 z  |
  331. $redis->delete('x', 'y');
    ; w6 B0 @  }. K" p6 |
  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'));& V( E/ V2 Y9 h) q! H
  333. var_dump($redis->lRange('x', 0, -1));
    / v6 ?8 w* S: u  o  D7 i
  334. var_dump($redis->lRange('y', 0, -1)); * \1 i! R/ {/ L% z

  335. : U* i. l* q7 ]/ K$ |4 C
  336. string(3) "abc" 8 [8 j5 E2 A# Y" W1 `* I
  337. array(1) { [0]=> string(3) "def" }
    2 N+ u! A5 C6 Q& L, a
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }  |/ O. G1 v$ n! G3 g3 a$ r+ _: N
  339. 4 _( [$ G- W) I0 ?* ]
  340. SET操作相关2 |3 r+ ~% g3 \% H& A! w& q* F9 E2 Y
  341. sAdd# a6 @* l4 X6 H; Y" H" C
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    - C+ h2 l/ i% ~$ [( y% K
  343. $redis->sAdd(key , value);; d: o$ ^4 ~8 j
  344.   K/ _  i/ l3 E& s
  345. sRem, sRemove
    3 `! o2 ^/ g0 ^" O; u- @
  346. 删除名称为key的set中的元素value
    8 s$ `, b4 d" q9 ?
  347. $redis->sAdd('key1' , 'set1');; j  T  ]0 H: s- V. q1 f
  348. $redis->sAdd('key1' , 'set2');
    * ]4 j. W. Y4 o
  349. $redis->sAdd('key1' , 'set3');
    2 `( x- J" J% W7 W6 C, {3 f& i# s) R+ v
  350. $redis->sRem('key1', 'set2');
    - ]: g7 V5 V% Q& s0 e/ n0 r

  351. 2 H- d( d. \: O; L, ]
  352. sMove. C% W3 B; Y! R  g# g( V2 |
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合6 c* P/ Q: p* W  j/ |
  354. $redis->sMove(seckey, dstkey, value);+ T# ~4 z' T6 U- K, ^  m
  355. , L. e; K9 s' y! H7 v9 D, S0 N8 [
  356. sIsMember, sContains
    9 ^0 v* C5 [9 b+ I# {9 [
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    + ^. q( O( M. y
  358. $redis->sIsMember(key, value);- k% D2 g: t2 }( B) p

  359. 0 e7 ~: {$ U4 B8 G
  360. sCard, sSize0 p( b6 y  ^- e7 a
  361. 返回名称为key的set的元素个数
    & {+ j$ R9 p+ `" H$ F

  362. 0 H) s. x5 q, X3 z8 c3 q& N, N" a
  363. sPop" ?8 B; S7 Y- W' o$ K
  364. 随机返回并删除名称为key的set中一个元素
    % X$ p4 a7 l( V6 p8 G+ [' j

  365. 9 Z( l, B0 J9 L, Q" L
  366. sRandMember
    3 V( f+ B' W; X4 v
  367. 随机返回名称为key的set中一个元素,不删除9 N7 g+ l+ k; O9 E* e
  368. # |  B. H! z8 w- K7 N1 m
  369. sInter
    $ {. R# X' Z+ `4 P- n0 @
  370. 求交集
      A8 D4 ~; `& @" V* k5 I

  371. ( s* F/ E' ]1 O+ I& h0 O" T) L
  372. sInterStore
    8 _; K' l4 d) {, ^, d* d
  373. 求交集并将交集保存到output的集合3 X9 F2 v: D% ~/ N. u' k; R' S
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')8 _: ^0 x6 j, a& a6 g7 h
  375. 0 M2 W0 d: W, ?1 N- Z* a
  376. sUnion' G) A" t9 W& @5 c) a8 C
  377. 求并集
    " T2 d  i* z) `- Q6 t: s: I/ Z
  378. $redis->sUnion('s0', 's1', 's2');% P: d! I1 a. H0 u' r0 `9 U
  379. s0,s1,s2 同时求并集
    % Q, o* E- H0 h- o1 d; d- b! N' Z

  380. 4 E# o, z* E$ i+ H6 c
  381. sUnionStore
      r+ C$ |. B7 I5 L
  382. 求并集并将并集保存到output的集合
    & c/ D/ y/ @( ?' N0 j' U
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');0 R0 D+ ~8 }2 K5 P% v& X' A
  384.   `8 x7 S- J$ e$ ], F1 C! r
  385. sDiff. R. e" k1 e  j% q) x( Y; F
  386. 求差集
    2 G2 g3 T! |0 }+ p% Q: h4 b
  387. ! {. i$ z( \8 ^( K) ~1 O7 n
  388. sDiffStore
    ! s$ K8 K5 g0 `3 G% G
  389. 求差集并将差集保存到output的集合
    ! s0 y' h) m3 r' O$ ]
  390. 7 ]  n* {2 s; J! B$ X1 J
  391. sMembers, sGetMembers
    2 r" Y' V8 J# e+ B+ H. A& Z5 E
  392. 返回名称为key的set的所有元素
    . D) [  S" q$ }; G
  393. 5 C. {0 y6 G) L; n: T9 U# Q/ T' ~
  394. sort0 @& O3 ~. [& s
  395. 排序,分页等
    8 U1 g4 X' ]6 I" n' Y# Z% t
  396. 参数! `- j2 F9 K, H
  397. 'by' => 'some_pattern_*',
    ! p" m+ q3 M- ^: G$ G4 ^3 ]' h; \$ e
  398. 'limit' => array(0, 1),
    + e: o- g. B) ^: x% N
  399. 'get' => 'some_other_pattern_*' or an array of patterns,* ?4 C1 {  A+ l
  400. 'sort' => 'asc' or 'desc',( j& Y. c; Y5 D. w' j% l0 S
  401. 'alpha' => TRUE,
    , N2 D. J1 x( [' k8 F  Z- \
  402. 'store' => 'external-key'% C- g6 _, @; U6 N
  403. 例子
    2 T  f& U: ?' m& `! k, A
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    3 `$ c$ V- k# y% v, E
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    7 w; a- _: Y0 C" m) W' u
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    / p1 z5 Y, A- Q1 a
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)59 N8 ]8 {9 T; f# R" ?2 Q% D
  408. 0 i' Y; }0 x( S- s: k+ R$ a
  409. string命令8 d$ `& x- i  j  v' Q5 d) B
  410. getSet: [3 T: x- w+ G/ P0 q
  411. 返回原来key中的值,并将value写入key! h" M/ j9 k5 u6 C5 [2 L. D
  412. $redis->set('x', '42');
    2 T7 x$ Z9 ~& n5 L
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    / f# A1 c! ^. w! k
  414. $newValue = $redis->get('x')' // return 'lol'
    - F8 N6 {) N2 v: g

  415. . t6 ^, W2 ^0 |) P
  416. append
    ; i; H' m$ G% E
  417. string,名称为key的string的值在后面加上value0 @8 `' H2 x) d' N
  418. $redis->set('key', 'value1');* h% m* |' F6 A
  419. $redis->append('key', 'value2');
    : S& @, `5 h& B  h6 A0 g8 \
  420. $redis->get('key');
    ) a# s* P' Q5 r: s+ a
  421. ; r3 Q4 h/ E) I) ]! W& n5 m" `1 T
  422. getRange (方法不存在)
    / b  A4 @- M5 L5 `
  423. 返回名称为key的string中start至end之间的字符; H4 Z) \& q) x8 O# M' [, _6 e/ W
  424. $redis->set('key', 'string value');9 h' ~0 {/ U3 Y  a2 Y
  425. $redis->getRange('key', 0, 5);5 T& ~8 S; @# b0 w
  426. $redis->getRange('key', -5, -1);
    $ @7 o4 ^. p+ O& Q
  427. 2 M$ Q* [. u4 D0 A1 f: [' n/ n  r0 E
  428. setRange (方法不存在)4 I7 U9 c5 p. m' g
  429. 改变key的string中start至end之间的字符为value9 v, t6 h* m* P2 Z) f( x& y. S
  430. $redis->set('key', 'Hello world');, P& o( _+ \) q
  431. $redis->setRange('key', 6, "redis");
    $ e5 k; n8 Z$ L0 p2 @* z
  432. $redis->get('key');/ G+ S. @% Q2 z5 ]; B
  433. % S+ X+ y) D- I# G4 D. h
  434. strlen
    5 |% y  ~* N$ C" e8 f
  435. 得到key的string的长度
    . T4 r! G: n' a8 j( C, A
  436. $redis->strlen('key');5 B; Z! z6 o* L; Z* ^

  437. 1 ~1 l. R% p/ b; G1 P' V4 y. {" G
  438. getBit/setBit2 d3 `9 F, N+ }6 F6 n" r( C3 e8 [
  439. 返回2进制信息" k/ [! F! w, ^4 B! J
  440. , s! W  d2 B& O
  441. zset(sorted set)操作相关
    3 C' a/ V5 N3 u& h& C9 ]
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。/ S! M7 j6 R3 ]9 P8 d
  443. $redis->zAdd('key', 1, 'val1');' h* X: s1 M5 D' c7 x, W
  444. $redis->zAdd('key', 0, 'val0');+ B  e, Q. B  Y
  445. $redis->zAdd('key', 5, 'val5');# M) L" `6 I+ L% U+ o& H0 n" l
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    5 f* v" q  x  i4 k
  447. 0 i3 t+ M: Y  W
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素3 L: Z' j. b$ I" f3 z( ?  c
  449. $redis->zAdd('key1', 0, 'val0');2 x( [# u8 N; m
  450. $redis->zAdd('key1', 2, 'val2');
    " G9 J& N) J- ]$ L" O' Z% n  ?6 h1 Y
  451. $redis->zAdd('key1', 10, 'val10');
    8 Q3 M/ l6 k) H
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    6 v( T2 K$ Y" f1 \3 M& n
  453. - _: `4 V4 h, ~" M7 U
  454. zDelete, zRem
    ! S' a& T! }# w7 b& P' I$ @
  455. zRem(key, member) :删除名称为key的zset中的元素member. }7 S* Q8 e9 B8 b: \
  456. $redis->zAdd('key', 0, 'val0');& e6 X, {: }! C0 m
  457. $redis->zAdd('key', 2, 'val2');. Z7 f# ]1 @& B5 \
  458. $redis->zAdd('key', 10, 'val10');
    5 K' _- E4 A& a3 t/ K
  459. $redis->zDelete('key', 'val2');
    # j" [8 n4 |. W& T2 |
  460. $redis->zRange('key', 0, -1);
    , z% c/ c% V# |* ?

  461. 7 v+ h, e7 t# Q) F
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出! U# d# X5 x* C# V  ^
  463. $redis->zAdd('key', 0, 'val0');8 Q% _6 E# x/ S6 \3 B" u9 S. O3 C% X
  464. $redis->zAdd('key', 2, 'val2');
    6 v& F' x3 b/ Z8 i
  465. $redis->zAdd('key', 10, 'val10');
    ; F9 P0 e; Z) O! V. H) y
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    / K' h) M7 K9 _$ J  J# k; \% }0 z
  467. $ T7 u8 L; \* `( [
  468. zRangeByScore, zRevRangeByScore  ^( c" G/ m( P% @: P+ a* F, [
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    7 s8 r/ c9 m$ W1 L  s/ K
  470. 返回名称为key的zset中score >= star且score <= end的所有元素! R9 m0 e8 ^4 y3 ]8 e7 W

  471. + H9 k% f1 v- w9 C. x- v
  472. zCount
    4 p" }4 u4 d- j0 F8 b
  473. $redis->zCount(key, star, end);
      Z3 o; e; n0 y5 o9 ^1 H
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数  Y# x6 Z  y. L" P2 s
  475. 3 O$ [6 Y' Q: e6 @
  476. zRemRangeByScore, zDeleteRangeByScore
    0 W! m5 |& _" ^9 y# F, c" n6 N0 Y
  477. $redis->zRemRangeByScore('key', star, end);3 d% x. T. E8 q/ C
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    9 {% c; W& Q/ t8 q3 x2 C" D

  479. ' d2 y/ V8 t% R+ M2 A$ Z6 V
  480. zSize, zCard
    ' R' ?: G4 _$ _- e# q/ Q7 T( t) I. n
  481. 返回名称为key的zset的所有元素的个数0 \" n% W8 O. l2 J1 w7 {* O  H& E

  482. & s2 E5 D2 d8 l9 H. l) T: Y
  483. zScore
    1 i( @, r" r8 x. `6 I( Q- K; _
  484. $redis->zScore(key, val2);
    ( U- M; b! M2 s) [
  485. 返回名称为key的zset中元素val2的score+ N4 I! N9 h- P5 k

  486. ' q3 y" P1 @: b  _# n( v
  487. zRank, zRevRank1 C& [, e8 T4 Q. V
  488. $redis->zRevRank(key, val);
    % [' }' f; @" X/ @1 D3 y- }$ T
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    # Z* H2 `' V6 H

  490. & ~9 Y, V3 `2 @) B
  491. zIncrBy
    & O1 W4 g) h3 @7 l6 `
  492. $redis->zIncrBy('key', increment, 'member');# z8 b( Q3 W, z0 g
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
      G1 G, W" M- B) ^) U
  494. * E7 ^; q2 O* F0 |
  495. zUnion/zInter
    6 [9 X! f) t" Y! d5 O
  496. 参数
    . R5 m, _2 d$ e! S8 p' N8 S  F# B
  497. keyOutput
    8 z* N; G$ w% X$ o+ O) n5 K
  498. arrayZSetKeys
    0 a9 F9 r7 j1 @. z
  499. arrayWeights# h- R( \9 @; ?% o6 t# ]' w
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.8 \" G; |* n* ]( X
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    5 {, ]/ v; D9 _9 I7 o6 ~
复制代码

& F, `% [! P( |* F, i  i7 m- X$ g

! C2 s- c) N; O: A. Y. C- N$ r6 R* i2 f

作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis();
    : Z; n, }3 ?+ h( o  q1 U
  2. //连接redis服务器 . g8 d5 b3 j2 V/ V* A' y. [
  3. $redis->connect('127.0.0.1', '6379');
复制代码





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