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% c/ q* V! r1 A7 ]: n! \% c0 x
  2. $redis = new Redis();  
    % E# L; Y# b) A9 ]
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    1 ~8 Q% B' n, l1 A
  4. $redis->auth('mypassword');//my redis password
    / `) d8 n4 H* D+ }  T: y
  5. $redis ->set( "test" , "Hello World");  
    ( f2 I1 F# M" V% E2 @  `& f7 ~
  6. echo $redis ->get( "test");* E/ q- o7 S' P  |5 X7 Y
复制代码
php操作redis函数封装
  1. /**
    + n/ R6 F% F: k$ X6 Y3 j
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    " O4 N  a: l: _" V( S0 W
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi: A- Y* d: |0 F# o; N- @
  4. */6 S( V6 _& t0 e. h" F2 z- Z
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    , H* u. f3 m8 X9 J) a' s9 @
  6.     if(!$key||!$value) return false;
    ( b! h4 ]( M4 C$ R
  7.     $host = $host?$host:getenv('REDIS_HOST');
    3 r' g: [8 e5 |+ h; b
  8.     $port = $port?$port:getenv('REDIS_PORT');
    * G' P6 M0 ]3 v- d& Q- B0 E, R
  9.     $redis = new Redis();
    6 \6 L# O0 j3 C  k& S8 L
  10.     $redis->connect($host, $port);0 c( Y6 A0 Q3 q
  11.     $value = is_array($value)?json_encode($value):$value;
    ( a: X4 a' U. E* i' V
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    0 F- F2 j. @% M8 U+ r' a
  13. }
    8 g; v2 S9 i4 c8 v; I1 \
  14. /**3 M/ d, U4 z+ m/ w' Q/ R; Q
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    / F% p& T7 p' f6 k8 Y" `
  16. */
    7 o1 d: O9 i6 X- _# L$ e! K
  17. function RedisGet($key,$host='',$port=''){" X3 b# l- H2 t
  18.     $redis = new Redis();
    - b! s4 |- A/ H& ?$ o$ x
  19.     $host = $host?$host:getenv('REDIS_HOST');
    9 ~# _+ r( |9 F# G' U  B5 i
  20.     $port = $port?$port:getenv('REDIS_PORT');3 g8 r- Y; @( \6 q' Q* `
  21.     $redis->connect($host, $port);
    ) E" {( e1 s5 m5 l6 _+ }$ P1 N
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    5 U( c$ z3 I4 ?8 K6 R
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    - p$ `8 S3 y% U5 ~; u5 g
  24. }
    ' C! F( L. S2 \1 E
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
) ]2 @8 K5 b/ P# [" p! e
  1. setex 带生存时间的写入值! J$ V; P- }/ g( }1 D
  2. $redis->setex('key', 3600, 'value');
    - _% t0 J" C+ [4 @6 e4 t2 M
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    # l, D8 b9 _9 ?- Y# l
  4. $redis->setnx('key', 'value');
    * a7 O* [& c. D6 f
  5. 返回已经删除key6 T( v* `0 O( J9 m& C
  6. $redis->delete('key1'); 成功返回1失败返回04 a5 O; j3 e$ E4 e
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    2 u" @& m, y: b) v7 ~2 }9 M
  8. 查询生存时间, {6 E: w) j: j# o2 {4 S
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    6 e7 j) z4 i- _; ~6 D
  10. 同时给多个key赋值,同时设置key0和key1! N0 u/ T8 q  c7 _0 ^$ b
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    . p% j- D! O& k% S. _. E2 q: M
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值! ~8 ]* H) Z* C' ^
  13. $redis->incr('key1');# h! Y2 U. t. A1 @
  14. $redis->incrBy('key1', 10);; [8 h4 e- Z; ?( f9 Q: b' o: @
  15. 减法跟加法一样2 Q- @$ r& w; j; `
  16. $redis->decr("key1"); 减少1( i, D2 }8 r* G6 @
  17. $redis->decrBy("key1",5) 减少5
    ' ^- p$ n1 N$ C: D

  18. $ n/ K, N* I. a* O/ i
  19. list相关操作,连表操作1 R' U6 Q4 K3 C4 T
  20. lPush* p# \1 m& x% A1 T) S$ L
  21. $redis->lPush("list", "888");% a" C( y: J' b: M
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数; D/ ]/ y* w" _3 Q& ~& s
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    , B! F* o7 p+ r. b' Y; c0 U! G' }7 A5 g
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素7 J- H/ C. J; f# p& h
  25. lPushx/rPushx7 s. h! ^  a! r- m0 U& m, E0 l
  26. $redis->lPushx(key, value);3 S7 M1 d' Y; H+ Z' j
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ) q/ m6 [8 h$ s  r9 y( x; k
  28. # |( d+ P. Z" y& W: E5 R
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key8 J6 n, u! |% i7 ]+ E0 R
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key9 |$ @  r% z  R/ u
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    4 k5 Q" k; \- z% H1 ]" R5 A, x
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序$ w7 O. i8 u6 r7 V2 B) k
  33. sadd s1 zhangsan. L1 r  f( O$ C+ }/ ~& a% f
  34. sadd s1 lisi) c* g  _1 }8 s5 C
  35. sadd s1 wangwu
    % I" P  A' K3 G
  36. sadd t1 yangxingyi
    $ S- ]' w0 w4 f6 I! \- X- X
  37. sadd t1 lilei0 h9 _) L# b" R
  38. sadd t1 zhangsan8 Y) N. Q. R/ p+ a1 s8 S9 s1 \
  39. smembers s1 s1的所有集合内容
    / Q2 V" d9 c4 R# Y, h
  40. sdiff s1 t1 s1有的,t1没有的,差集# P" s. W2 E) D9 `+ i
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    8 ^# c( G" U5 k5 d
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的6 D9 `, }$ U/ a9 g3 A
  43. spop抽奖场景,返回集合里面随机的数: O& o0 u, |9 X2 S# |3 t$ ?" d
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    ( P! G6 x* r5 r, v* C
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数3 W3 ^* |6 ~' K
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的3 {9 [3 y' X& S( h4 ]' Z
  47. 随机返回集合里面的一个元素,但不删除,重复中奖7 `. U# y! Q! O6 g+ \% x
  48. $i = $redis->srandmember('s1');echo $i;
    / l6 Z# u4 w4 h
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false2 Y8 S" j% k+ q' E3 G$ q) r
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    , D& e% `7 P9 S! v# H+ b
  51. 5 ^, D) N5 g' Q7 C8 M* p
  52. zadd key 2 value 有序集合0 H8 C  C4 J) z) {9 J
  53. zadd y1 1 zhangsan;3 [/ n% s- q. L  T& k
  54. zadd y1 3 lisi;
    " q7 K) c+ T" V# N5 ]
  55. zadd y1 2 wangwu;
    / }! J* q+ v; E5 [0 W6 q. F9 y
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    . x3 V. V6 s* O- s
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);1 o- I# B2 n! M- v
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    # z, q0 e& x, e2 }+ Q
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    5 `: h  h6 q( n# q; Z) r( R
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    8 U- l0 R4 ^2 E' p
  61. 无序就scard,有序就zcard,有z没有s
    + A1 @+ W* J+ R; C$ M% Q
  62. sInterStore
    & L/ g, B! ?9 G  n, X/ V; A
  63. 求交集并将交集保存到output的集合
    ' @" X% q3 I. u3 w
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')$ Q# z: S6 {& e; }+ L% c% }$ q* ^  L, D+ {
  65. % m7 p9 k* \/ L* e- W
  66. Hash操作; i" M& B0 [' }8 A
  67. hSet, E: N9 H, u% e9 T2 ^9 k
  68. $redis->hSet('h', 'key1', 'hello');2 z% ^& w  Q  C% |# d( c+ u. i
  69. 向名称为h的hash中添加元素key1—>hello3 B/ Z8 V1 {# ~) E* Z" g8 G" @

  70. 5 ]( H2 Q# {' h2 Y& _
  71. hGet
    / Z% e" A1 T' F2 o$ R$ K& g
  72. $redis->hGet('h', 'key1');
    3 ~' [$ x! P& }5 B
  73. 返回名称为h的hash中key1对应的value(hello)
    $ ~3 o5 ?' A) _, S/ P  L

  74. 2 @" f- a0 E8 D4 a; q/ W
  75. hLen
    ; [6 M4 E0 G3 l! G
  76. $redis->hLen('h');
    5 J5 x: g2 [+ \1 g& I4 J7 ~1 ~
  77. 返回名称为h的hash中元素个数
    # Y) s' v! ~' r" v: O$ e& q- Y
  78. . n0 @  J5 y8 P. i4 z" ]) m
  79. hDel" d# f% I5 T9 t7 i; H  M( e- n
  80. $redis->hDel('h', 'key1');6 |3 u. r6 d. G% s( r' d4 b
  81. 删除名称为h的hash中键为key1的域! G; I- x% p. P+ j
  82. $ F( [: }  D+ X4 ~! b. n. z
  83. hKeys
    + v: j  M$ }+ Y4 `) y
  84. $redis->hKeys('h');
    $ y2 N4 n* K- P& ]$ z/ ^
  85. 返回名称为key的hash中所有键
    6 V! A/ X( t- Q3 i% d1 m0 H0 R9 H

  86. % f5 F, E: Y; ?' d) Q# m
  87. hVals
    5 y1 F9 b2 v! Z# m* S" O
  88. $redis->hVals('h')
    ) _2 f( f, S- W& e
  89. 返回名称为h的hash中所有键对应的value
    ' ^: {* i! I& C( W! v' ]

  90. 9 y; o% {( F3 Y- O4 P' W$ V
  91. hGetAll6 x6 x# p5 w# `' D% R! D
  92. $redis->hGetAll('h');
    - O9 [) V8 M* V# {7 W* m# P
  93. 返回名称为h的hash中所有的键(field)及其对应的value) a& }- l5 `4 N! Z3 j3 Z( D1 b

  94. & y" c% ~& l. b, I' W
  95. hExists; _- y$ ?1 Y# m1 ?, R0 y0 m% g1 ?% \
  96. $redis->hExists('h', 'a');' v7 b( X3 V: P7 y3 ~
  97. 名称为h的hash中是否存在键名字为a的域
    4 Q. ?+ H7 ?" U* h* |

  98. # m& b: w% {6 n( {- |; \
  99. hIncrBy
    # X& Z7 u/ _5 ^7 ~" q- `# F
  100. $redis->hIncrBy('h', 'x', 2);! U: h$ {4 A% S4 F1 @
  101. 将名称为h的hash中x的value增加24 U7 o& K* X, S: D+ S5 L
  102. " R2 H# t* b6 P) o- p5 V2 `- Y
  103. hMset" _! G: P  w" y9 J- ^  P
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    5 |( ?6 T" l! x, Y) \
  105. 向名称为key的hash中批量添加元素/ ?( Y# m5 h$ _
  106. 2 P5 g) `$ C  K: O" S# {1 [
  107. hMGet8 L  O. `9 o$ ^% P7 h6 k
  108. $redis->hmGet('h', array('field1', 'field2'));. ?6 {& G  ~- l- [. R% P
  109. 返回名称为h的hash中field1,field2对应的value
    9 e/ ]' `( w9 [1 F
  110. ! }8 P4 d" G- k# W
  111. redis 操作相关5 f4 _- O  d& f. |- {
  112. flushDB1 l! G6 A' {# q9 _2 F  U
  113. 清空当前数据库
    ' z1 G0 J6 D/ o, `+ n% k) }

  114. 9 U- y3 K6 [8 E7 m% f
  115. flushAll
    6 P- K# a7 |' F
  116. 清空所有数据库/ }" g0 g2 h( t; s$ O

  117. # |& P0 m; b# h' r0 e" R4 L9 W
  118. randomKey
    9 \+ _$ X# F/ j
  119. 随机返回key空间的一个key* y4 P9 L7 [( J  n8 [' u
  120. $key = $redis->randomKey();
    ( j3 ?$ `) c: E$ Q+ }( f$ K

  121. 9 s( ]& V0 ^% Z3 U! b6 G
  122. select
    : W7 }3 ?. T/ C
  123. 选择一个数据库
      w& ^9 Y9 N2 r5 N) j
  124. move$ D# T! B2 o- k- m
  125. 转移一个key到另外一个数据库
    / b2 N( `: L% T, e# o0 M
  126. $redis->select(0); // switch to DB 0
    ) w  R! G0 x' U" D: X" I5 |
  127. $redis->set('x', '42'); // write 42 to x. P6 ?( x& P* C; ^9 [1 Y1 T
  128. $redis->move('x', 1); // move to DB 14 S0 P( G& K* d/ n7 B- X; _% Q( d  z( C
  129. $redis->select(1); // switch to DB 1
    $ _' Z& p) R. S& |6 G" p
  130. $redis->get('x'); // will return 42
    " i8 j7 @: w; [, s

  131.   m8 B/ R  W) l$ a5 C; p
  132. rename, renameKey
    ; Q4 u1 h% \1 v% O1 G
  133. 给key重命名
    7 K: B8 x# ~* K9 n: {) K& L1 L: B
  134. $redis->set('x', '42');, Q" d  S+ `; U* K+ p
  135. $redis->rename('x', 'y');8 {3 c" [, y/ @' I% \
  136. $redis->get('y'); // → 42
    $ X+ f: S. ~6 u* U- ?( i) c
  137. $redis->get('x'); // → `FALSE`
    4 w5 e" A5 l- b1 f% g+ d

  138. 2 j, u4 T: @) I9 q  w/ C3 U
  139. renameNx
    3 R, q# `4 ?2 u. K  `
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    ' j$ \  G+ S' V( ?9 V7 V

  141. % [: L) \  h4 n7 ]
  142. setTimeout, expire$ M- C1 F; U7 Z/ h5 j" v7 K$ e7 m
  143. 设定一个key的活动时间(s)6 E2 z7 ~* _+ Y. G$ Z
  144. $redis->setTimeout('x', 3);
    # ^' b2 b9 d( }6 L( D' [6 k
  145. 5 n+ Q, I* H& d7 v% |
  146. expireAt
    6 K$ A2 ^+ V% B, V
  147. key存活到一个unix时间戳时间8 ~' O4 E) r. @" J
  148. $redis->expireAt('x', time() + 3);
    ( A: f$ {) T3 w. B4 H6 @- l
  149. # M8 C  k- b0 O& r
  150. keys, getKeys& L2 M8 G9 Q. J7 b
  151. 返回满足给定pattern的所有key/ V1 [) U! N$ I( u4 E  p9 M% \, z, o
  152. $keyWithUserPrefix = $redis->keys('user*');% B3 G. C3 l0 ?3 C$ h7 i  B

  153. - d# Z7 p. ^2 i5 R" F
  154. dbSize
    3 ?: v" d$ s8 [( _; q* A* s  E
  155. 查看现在数据库有多少key0 [: \$ P3 k& R* q9 |" j" i  E0 {
  156. $count = $redis->dbSize();
    1 Y4 W; n+ N0 N7 T
  157. ; F+ m0 Y  d9 Y7 i
  158. auth2 P, T' x5 @8 V3 V# V  Y% d
  159. 密码认证$ b) b; [% r; c- L% @( Q
  160. $redis->auth('foobared');
    # Q  p9 _* U2 S  s! i7 A

  161. / Z$ a/ D, a' }. B3 g" `2 x, y$ L
  162. bgrewriteaof" ]  a$ ?  _- e4 t
  163. 使用aof来进行数据库持久化; w7 v  \. x% h9 ^( i9 t/ G
  164. $redis->bgrewriteaof();$ v+ R( N8 W+ P3 T5 S% A
  165. 2 j% C/ s3 b5 S$ p! p$ `; Q3 s
  166. slaveof% d. i# n. s2 j8 W3 @
  167. 选择从服务器% Z4 e: {+ Z: K5 q! d3 U! r  @/ x, g
  168. $redis->slaveof('10.0.1.7', 6379);
    6 |8 ^& {, n' a, b) a
  169. ' ^6 e. i# q* ?0 J
  170. save/ ?; C* d2 b* p5 _2 G9 k2 {
  171. 将数据同步保存到磁盘
    $ Z  q$ |' [: }. ?9 v4 w( i% K) D+ r& g

  172. $ L9 q) W3 R8 N4 }5 J  T2 \8 ^' `
  173. bgsave
    ; C0 `+ t/ S3 t3 I
  174. 将数据异步保存到磁盘
    / ]- F& N2 z# K0 O9 Q* {
  175. ) W6 u+ w- ^2 p# X) Q9 R1 j
  176. lastSave
    ' @6 o- S2 u; W
  177. 返回上次成功将数据保存到磁盘的Unix时戳' {# S% p: Z' K0 S: o! B: |
  178. & e  A' |! ~# |# P
  179. info
    2 g& h* F9 q! w. N( N
  180. 返回redis的版本信息等详情  q2 Q7 y% @/ l9 {

  181. 5 z0 g  ?4 e: u7 Z0 `" |
  182. Redis::__construct构造函数
    9 I9 b- R0 j) g  g. ]$ j5 U
  183. $redis = new Redis();
    5 o- i! z2 ~+ B9 e% ]3 k2 _. j
  184. / C4 G* ]- c8 m' g
  185. connect, open 链接redis服务; U, w, \/ V: |
  186. 参数
    8 b8 {7 p5 G/ H1 x
  187. host: string,服务地址
    ) N  U3 l' Z, Z. i
  188. port: int,端口号$ p+ c. Q' t2 b6 w0 t# ?
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)8 P" \8 A! C. G, S
  190. 注: 在redis.conf中也有时间,默认为300, {, ]; V) `3 E% S: s! m, t

  191. 4 \* W9 z. n4 W) e" t; }
  192. pconnect, popen 不会主动关闭的链接8 K4 U  `0 Y9 ]3 S/ F1 M( G% ?! j; p
  193. 参考上面- ~) e3 z  U; u' x1 C
  194. 4 R) K* P7 z2 x* }9 r4 H9 b
  195. setOption 设置redis模式4 k2 v3 H0 n9 v+ N* c

  196. 3 h( h' H2 |% y' m) {/ g
  197. getOption 查看redis设置的模式
    ' |; A) N8 {! S& e* C

  198. ( Q# |: w: ]2 Z" J7 m  u) {
  199. ping 查看连接状态' ^& J1 y+ p5 m* O5 |

  200. ! V; w* m: @8 \1 D" a
  201. get 得到某个key的值(string值)) R) Z9 T* P8 e1 r
  202. 如果该key不存在,return false8 ~- d/ O3 }6 Y. y9 _, `4 N" y& e! K
  203. & s5 l3 r& h4 ~
  204. set 写入key 和 value(string值)
    * E1 F/ v$ Z, A# [" |# e7 I
  205. 如果写入成功,return ture- m+ @7 X- w" K5 i* W, |# _9 M/ I

  206. 3 u4 A$ Z; ^+ S: w9 Q# Q' t
  207. setex 带生存时间的写入值
    4 M% a& |8 t4 @7 P" k* [
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.  \# \7 V% l4 V5 M
  209. 5 d, H7 Y9 `  B
  210. setnx 判断是否重复的,写入值
    & v4 d/ t( Z; j* q6 i# C
  211. $redis->setnx('key', 'value');
    / u8 S' ]- X( O$ W) T1 P  u, e! N; i
  212. $redis->setnx('key', 'value');  G4 ]4 R6 w! k/ ]+ ]: c. j- I

  213. 1 a( `' ?" I5 ?: h: a' U
  214. delete  删除指定key的值
    ) V* e0 m, I% l/ k; c0 {  Y
  215. 返回已经删除key的个数(长整数)
    " Q2 j: }1 M; O% b% v$ V8 U" e
  216. $redis->delete('key1', 'key2');  ^% Y) k3 K: Y2 f) x
  217. $redis->delete(array('key3', 'key4', 'key5'));( q7 K) O& x- F) r0 e

  218. ( V, [  F5 S: i7 @7 a
  219. ttl! h1 J& N) M6 F& ?5 o# k
  220. 得到一个key的生存时间1 r( c5 M* a' l
  221. # n  t0 K3 g' ]+ h  e$ h
  222. persist# b% f. f* k. \
  223. 移除生存时间到期的key- H2 M8 m: P3 V
  224. 如果key到期 true 如果不到期 false
    ( {2 o  A2 H3 U; n1 a+ Q: \

  225. 0 J: s4 V; y" _6 f& o, V
  226. mset (redis版本1.1以上才可以用)! g$ h! m/ ^6 O1 G8 `5 A/ T
  227. 同时给多个key赋值
    : Q/ C& j6 u$ d: S  t$ q7 Z/ ]
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    & X# g8 M) T1 P" l
  229. ) |6 c1 \; N- x7 ?" n* d
  230.   G8 |% u7 j4 i: ~' e
  231. ; V/ K4 r1 R( G4 o
  232. multi, exec, discard$ P% }5 A3 d3 g( j; I3 D
  233. 进入或者退出事务模式
    / s# Y% U  }+ z2 A
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    0 G/ y) R3 F7 \# {
  235. Redis::MULTI:将多个操作当成一个事务执行1 {9 H7 ?; a. F% B6 T7 _
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    - _  q# w# U& a* I; R
  237. discard:删除一个事务
    : Q3 J2 R  m% r8 p/ t
  238. 返回值
    - d0 j, m- \* S& G
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    , d! L! \" |* E- i, j# @9 j4 V6 P1 m

  240. 2 _, ]; o  R2 H7 j1 s
  241. watch, unwatch (代码测试后,不能达到所说的效果)+ V4 }" V" x  _
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    7 |# |& u! W7 `
  243. unwatch  取消被这个程序监测的所有key
    2 a, h6 w1 ^5 X
  244. 参数,一对key的列表
    5 s$ M. n" Z" j; J, L) y0 T# A* Y
  245. $redis->watch('x');
    . w2 F+ e2 x9 @- s. o$ z9 Q
  246. 3 ?+ |$ `+ X- I, @
  247. $ret = $redis->multi() ->incr('x') ->exec();3 V' y. c* r8 U7 K
  248. + u, z- P+ F( g' S6 H( y; }

  249. - x$ s) \2 H  Y
  250. subscribe *5 D, h4 }( O1 ~& v
  251. 方法回调。注意,该方法可能在未来里发生改变$ ^; C7 L: I% A7 B. g

  252. 9 r- g$ x! i" g3 A' _7 L7 q
  253. publish *+ e* ]5 U: Z5 P0 v- {& ]
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    1 Y5 G$ ^" S/ y4 s  _+ }

  255. " h1 k7 x5 f+ m  A( X
  256. exists
      Y, U+ A/ Q- r1 }6 ~" l4 [
  257. 判断key是否存在。存在 true 不在 false
    4 o  v9 K+ V8 L$ f4 ]6 p* b
  258. 1 {* A3 o3 j' ?! X
  259. incr, incrBy# H" Y( W7 ^. R. [
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值- A# V: p7 w- q2 x8 T& r+ V
  261. $redis->incr('key1');
    * }, ^; [, r8 \; T
  262. $redis->incrBy('key1', 10);0 `3 s2 a( @/ q8 O% Y" K  H& N9 b2 u
  263. 2 v& Z  B7 c* C; e3 b
  264. decr, decrBy5 g8 u; d1 Z7 _. A2 n7 i; y
  265. 做减法,使用方法同incr* M+ M5 R4 R! v4 y
  266. & G2 M4 P4 a  z$ x
  267. getMultiple
    7 g3 N3 j0 f7 p: r/ y1 [  _1 {! p
  268. 传参
    , T1 Y6 h* S8 \
  269. 由key组成的数组/ B8 h3 S5 K( h2 b* j& l$ ~
  270. 返回参数4 ~, N9 C3 Z! F4 M* p/ S* T
  271. 如果key存在返回value,不存在返回false  Y8 ^4 X2 w0 X8 U5 b
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));- P7 S* Z( ?) _/ u- A5 X$ R
  273. $redis->lRem('key1', 'A', 2);; i( a" s; \& P( Y% h
  274. $redis->lRange('key1', 0, -1);
    : G+ l6 J8 ?! E4 F2 W( d

  275. ! r  N+ W; s  ]+ T. p) m$ q5 v
  276. list相关操作
    9 c) r9 z6 x( v# _4 }: z
  277. lPush
    4 q- f& l% U% H9 G; a, O1 _- r
  278. $redis->lPush(key, value);7 }- i# z1 |/ R
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    3 i0 F' H- m6 {9 [; r

  280. : X4 b. l) n3 }: {# a8 B6 w
  281. rPush
    2 u: ~1 t2 B1 e0 v  V) W
  282. $redis->rPush(key, value);
    , i+ E7 C7 X7 k+ @$ F9 D. P- h6 u
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    & b8 _( ^2 f7 M$ |3 ~' z. f

  284. ' |8 J1 Z  _8 r/ P' N/ h& S
  285. lPushx/rPushx! [8 [, I0 R6 u, B/ Q
  286. $redis->lPushx(key, value);
    1 [. H- P- a; T  ^9 t& |) K
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    % d; {" Y+ A! s$ F) S6 R7 F* v
  288. ) c5 J2 \# m/ v0 @
  289. lPop/rPop4 s/ f0 [' I  s$ Q4 i$ r
  290. $redis->lPop('key');
    8 x, i( ^/ H4 U: U1 V. [2 f5 ~
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    : _3 d& U- k) g$ S3 |
  292. # y' \, _0 X4 i: n! m
  293. blPop/brPop' a1 R0 V. v# j0 A  O' o" Y
  294. $redis->blPop('key1', 'key2', 10);; P- V: F- }! @( x+ M
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    1 |, \  B. r' {
  296. ! `, v4 W4 Y2 @0 ~
  297. lSize8 [: k8 E+ s5 u" k+ U; g5 M
  298. $redis->lSize('key');& K1 F1 Q0 G- d  n$ I
  299. 返回名称为key的list有多少个元素
    ; s9 c7 t: d. T4 y
  300. ' H  v$ {; m$ o
  301. lIndex, lGet
    / {+ l7 X% i8 Y) i7 l, d8 B
  302. $redis->lGet('key', 0);
    / X0 F- b) ~  ?3 B' z, E( K/ n1 ]
  303. 返回名称为key的list中index位置的元素9 _  U9 a8 _& N" E
  304. ; l, p- Q5 j+ T/ J! M8 s" X' r( W% `6 w
  305. lSet
    " Q# u9 d- ]! u1 \* J
  306. $redis->lSet('key', 0, 'X');: N1 m& d2 S" [9 ^4 i/ l
  307. 给名称为key的list中index位置的元素赋值为value: F& L0 d4 u! l% |1 Z4 ^9 ?& g3 e

  308. 1 _8 |* r( Q# C
  309. lRange, lGetRange
    * {0 I' u8 J. z8 u" J% d# f
  310. $redis->lRange('key1', 0, -1);
    ; q& y: d8 Z1 E) J5 J* _( p2 b; C
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)5 u( |$ a. P4 N' F
  312. ) W9 e' v4 d* A9 p" h
  313. lTrim, listTrim; ?  P) t1 m+ S6 X) S
  314. $redis->lTrim('key', start, end);' }9 a; Q3 P# a+ }3 N
  315. 截取名称为key的list,保留start至end之间的元素
    ; r4 U0 t5 d, N1 r/ J8 R! b- K! k

  316. 6 {# Z- U2 [# k
  317. lRem, lRemove
    + I4 g# O- R# B; H
  318. $redis->lRem('key', 'A', 2);6 g' u9 ~  I1 f2 j" A4 Q
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    0 s' q8 Q! y' ~1 v

  320. 9 B6 b9 Y/ f. M% ?& f% T) w
  321. lInsert1 Z# K  s) D& f0 Z
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1' E, Y0 ]5 S. u; `3 s1 M
  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');
    3 q+ W+ ?' b( |6 b: T1 ^
  324. $redis->lRange('key1', 0, -1);
    - N- O9 C: w) l! o. _+ y
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    / ?* O. j3 K3 P2 B- n3 D
  326. $redis->lRange('key1', 0, -1);
    + N4 H3 o  ]  ~
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');7 n9 N" v  q% t1 U+ [
  328. 9 \8 |! l. F( D1 N# s" u- O" ^) H
  329. rpoplpush; m3 \! E2 ~, n; O
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部) w) @* K  X- w1 n
  331. $redis->delete('x', 'y');1 z' Y& n% h4 _% \7 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'));7 ?. y% |2 @7 x1 D# c5 T/ j7 l
  333. var_dump($redis->lRange('x', 0, -1));
    3 |1 l, G$ U; j1 u
  334. var_dump($redis->lRange('y', 0, -1)); ) g+ ]3 x6 ]9 \9 t2 j& g7 f
  335. $ z8 w( L3 Q8 I$ F' C
  336. string(3) "abc"
    3 L% [) I- L) \
  337. array(1) { [0]=> string(3) "def" }
    ; D" B9 b5 E- r
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    9 j' u; F6 M" q

  339. 6 [3 U2 V- H" K; W
  340. SET操作相关/ |' h6 o/ b8 F+ Q! c. f
  341. sAdd
    ; \* K: C4 p1 U5 ]( x6 K# |8 r
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    3 |" a" M6 @5 H1 t' x! [
  343. $redis->sAdd(key , value);
    - ?; g8 X4 \, d8 I1 L" V- l* |( O

  344. ( Q' S' J2 \% h1 \! b* ^' U' q
  345. sRem, sRemove! O& K9 F/ [1 b1 {: Y7 K
  346. 删除名称为key的set中的元素value7 ~; T; M/ D+ t; o# t6 r5 T
  347. $redis->sAdd('key1' , 'set1');  x7 C, N8 y/ w7 @0 F6 f0 A
  348. $redis->sAdd('key1' , 'set2');" e5 M+ Z  Y, e. K- Q* D
  349. $redis->sAdd('key1' , 'set3');
    5 T, [0 w! G! v/ v
  350. $redis->sRem('key1', 'set2');
    ; i) ^0 q7 z( x& X: W
  351. % S3 E( G' i9 f' X0 V9 u
  352. sMove
    : ^4 m9 Z' ?3 h# K6 \5 P
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    ( d0 k7 Y$ r9 d/ W) e
  354. $redis->sMove(seckey, dstkey, value);: ?! `/ y9 }$ a7 R

  355. ! J8 n9 O4 E% C5 Z
  356. sIsMember, sContains2 R) o$ O2 N! A$ G, D; k7 g
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false* n5 o9 K) @/ X5 i+ [
  358. $redis->sIsMember(key, value);/ U2 Z& l6 `1 p! r$ `+ S
  359. ( k4 h, O6 W$ E& H- `+ b
  360. sCard, sSize) E! ~$ H" Z( C  {- H& s$ R" H
  361. 返回名称为key的set的元素个数+ J$ E$ y0 B4 M8 ?5 P( B

  362. % C1 R. f6 }; U% B& c: `5 s: g
  363. sPop: M; n! s% W  K, {# k  n' }" ?2 P- a* H( N
  364. 随机返回并删除名称为key的set中一个元素
    * {5 L" M( E& A: O/ r

  365. % N' x( W& @$ y
  366. sRandMember5 n* u: F, t1 |9 ^0 G7 Q$ \9 D
  367. 随机返回名称为key的set中一个元素,不删除3 h4 I8 H7 @7 t
  368. ; H8 k6 z# {7 g/ K" w$ \2 g1 I
  369. sInter
    # u, Z6 i" A# ]: R& E1 L
  370. 求交集' x. N. I6 [  V# u

  371. 4 s$ ~) n3 Z' B+ ~
  372. sInterStore5 J# d/ L; V. r; ]& C
  373. 求交集并将交集保存到output的集合9 e9 O& H) ]; c+ E
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')* k! u- s1 y# p
  375. 6 h9 @+ v' P9 ^8 o
  376. sUnion
    " [; W1 R' R3 v4 b/ E% A8 s
  377. 求并集
    3 a8 j. s# P- d* Z" S' D
  378. $redis->sUnion('s0', 's1', 's2');. D, _+ I# C: b& J! a% t% E+ P& l
  379. s0,s1,s2 同时求并集6 Y- d, }, L) Y( }7 m8 J) [9 d

  380. ( H' {. Y5 E$ B
  381. sUnionStore
    ; P7 T" R$ h5 R) o3 P+ d
  382. 求并集并将并集保存到output的集合# P6 ?; Q2 i0 k, F0 I  O
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');) B7 n5 ^2 \& ]

  384. & M3 o5 u3 {1 t& ]8 p; \
  385. sDiff
    ! b. P; z* t7 X) H/ d7 A
  386. 求差集
      d3 C) P* `# F/ w7 c+ Q
  387. * i9 X! L6 V; B0 \$ A/ O
  388. sDiffStore: |3 X2 Y9 G+ i
  389. 求差集并将差集保存到output的集合! i  w2 D3 t6 o6 g- @, h
  390. ) O; [' g; P& o4 W
  391. sMembers, sGetMembers
    ' F1 |- R' i+ S  Q+ l9 N5 ~% Y/ e3 ]
  392. 返回名称为key的set的所有元素2 w0 I/ n) ]+ G4 `/ C$ v0 G

  393.   R2 L9 \" q* e1 a% O! S! z9 A& l/ b
  394. sort
    8 \! f- M. E/ F3 X' g7 y: s
  395. 排序,分页等8 x" o& r1 C& h# d, u3 Y8 d
  396. 参数4 r9 H% U- C3 t2 _! V" Q0 e
  397. 'by' => 'some_pattern_*',
    : l4 W. ~  S- R6 P) w
  398. 'limit' => array(0, 1),) V$ R( d4 i) z( g
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    . b3 _3 a% m$ h$ a, ?3 f5 H
  400. 'sort' => 'asc' or 'desc',
    6 ]1 e' M0 _# j/ x# w7 O. L
  401. 'alpha' => TRUE,
    5 j" m) o+ [" H5 e. b
  402. 'store' => 'external-key') F/ E1 ?$ G* G
  403. 例子& H6 ]5 y; r! x4 j( t
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    2 R5 _! L2 ^. M3 Y" J& p- R8 U) f+ w
  405. var_dump($redis->sort('s')); // 1,2,3,4,5, t7 k5 x& S& Q, I" x
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,12 ~9 p& `' N" i. P' |% a  {
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    . A; Y) }+ l4 ^% M! ?" `
  408. ! h/ M. T: M3 _9 W+ G
  409. string命令
    ' x' U1 k# @! u" \8 N0 k6 b& P9 X
  410. getSet2 X! X8 x/ d$ x, y
  411. 返回原来key中的值,并将value写入key
    " i9 X2 W0 l7 s& \( v
  412. $redis->set('x', '42');2 G2 e3 B9 [; h' F+ u2 u
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'- o% }: Q0 d! O4 K3 I' Y2 |
  414. $newValue = $redis->get('x')' // return 'lol'
    3 _7 i* f$ \2 m; J0 l0 `1 ]5 j1 `9 j9 b

  415. + [$ l! x1 @$ B! B! w
  416. append
    ! C! F# H+ w2 v/ g! _; H
  417. string,名称为key的string的值在后面加上value
    / j! c; U1 A( `
  418. $redis->set('key', 'value1');4 \5 h: P! T5 G
  419. $redis->append('key', 'value2');: Z- q+ X0 K1 n9 Z8 ~3 G
  420. $redis->get('key');
    # V; d3 ?9 u! O5 b7 F; p
  421. ) }  C. f1 I" [# a/ w- i
  422. getRange (方法不存在)
    & G4 w  M1 |9 z3 R
  423. 返回名称为key的string中start至end之间的字符
    ! @4 v3 i5 j% y% d: I
  424. $redis->set('key', 'string value');2 S2 F0 g8 C& m; p7 w9 c
  425. $redis->getRange('key', 0, 5);, _5 A; q9 O$ U: u' @
  426. $redis->getRange('key', -5, -1);
    ' r2 U! L8 u9 n/ l! n
  427. 0 r4 ^# ?, ^6 b( Z3 U2 P. f
  428. setRange (方法不存在)& n) ]7 V* r( C, `& O! T. g4 E
  429. 改变key的string中start至end之间的字符为value
    3 P8 M7 w2 T, c4 ^6 Z2 \$ h; V
  430. $redis->set('key', 'Hello world');
    2 ?9 ~# h4 x% o- _3 Q
  431. $redis->setRange('key', 6, "redis");
    ' x( J8 l' I3 w( ]' ~) @
  432. $redis->get('key');
    3 G7 o7 V# I, A0 u; f
  433. & u) U) |, o0 f! C
  434. strlen
    " A  q" p! C0 N7 H
  435. 得到key的string的长度5 u8 J' e& o4 h! X
  436. $redis->strlen('key');
    ! W& N9 U% ^- @/ U1 s% E* B

  437. # U3 r3 O  \" t- `
  438. getBit/setBit6 e' w2 W4 \5 e7 L  ]5 J' z
  439. 返回2进制信息( A" \- M) f  A; v

  440. 1 m- D1 d/ w% [2 f5 L+ y
  441. zset(sorted set)操作相关; W# ~1 O4 B! d8 ~8 q
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    ! L* `2 Z* c1 e
  443. $redis->zAdd('key', 1, 'val1');
    ' O! d. i$ O) }9 ?
  444. $redis->zAdd('key', 0, 'val0');
      ~& W; X- P/ }4 Y) L
  445. $redis->zAdd('key', 5, 'val5');+ W8 M% Y- g' T
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)1 u+ x6 d! U8 I: i

  447. 0 [' ~( J+ E: z/ j" ?
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    2 w' m8 ^5 Y" v, U* D  T
  449. $redis->zAdd('key1', 0, 'val0');5 ~6 j8 c5 p% ^% c: E* M
  450. $redis->zAdd('key1', 2, 'val2');4 D6 ~4 v; ], b( C# \
  451. $redis->zAdd('key1', 10, 'val10');! g) {6 `& t7 S( h8 l% I. j2 ^
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
      J) F+ W. Z8 M, \- i, ^

  453. , a" S0 j1 C: q. Y* n4 u
  454. zDelete, zRem
    # H9 X2 F( p& ?. \3 f5 \3 f
  455. zRem(key, member) :删除名称为key的zset中的元素member
    6 Z: P+ {/ w) u/ e
  456. $redis->zAdd('key', 0, 'val0');
    1 {. e' F3 u0 e% Y; Y
  457. $redis->zAdd('key', 2, 'val2');2 `1 R7 k5 F; \' s' h
  458. $redis->zAdd('key', 10, 'val10');; ^9 ?* k) T7 b! y0 k5 W2 x* X) p
  459. $redis->zDelete('key', 'val2');/ X  `/ X6 a3 [- d3 j. }
  460. $redis->zRange('key', 0, -1);
    ' A* p; ]( o% C

  461. ; U, P+ |' E( s! s! d
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出0 O9 n4 Y: V9 K6 F3 A' u9 U8 x
  463. $redis->zAdd('key', 0, 'val0');
    ( S% M6 P7 K4 N( m+ N
  464. $redis->zAdd('key', 2, 'val2');
    0 p, [  @  [, m3 _7 t# D
  465. $redis->zAdd('key', 10, 'val10');
    8 Q2 d( k- W3 j4 G1 S. Q
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);( E, i3 q1 }4 G0 Y1 a/ i4 `
  467. # A; o7 c. L* ?! Q$ W9 E
  468. zRangeByScore, zRevRangeByScore5 E5 F' q/ ^- D6 o8 z
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    + s0 H0 E8 \# Y6 E  `
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    " @' i! ~! v1 r
  471. , R. O7 S/ p2 W+ _6 e, ]
  472. zCount  `0 D: ^8 S' v
  473. $redis->zCount(key, star, end);: B0 H5 Q4 f/ n# [
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    2 _+ @+ l" V0 s% o1 e8 M
  475. & H" x& L/ d+ E5 l6 |- D0 S
  476. zRemRangeByScore, zDeleteRangeByScore! C. K) c7 Q- S- I, b  Q
  477. $redis->zRemRangeByScore('key', star, end);
    ( U; B& [8 j7 `1 X
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数) R- {/ G" j9 j0 a  t8 v
  479. - ?& T1 [; x, n$ E
  480. zSize, zCard" C; N; B! j0 e
  481. 返回名称为key的zset的所有元素的个数$ L) M7 [0 w; Q; e! W
  482. : Q& k% \* B: a2 `, y% p
  483. zScore+ p' k* E! E7 p1 s2 c% d3 F) [6 N
  484. $redis->zScore(key, val2);8 u8 V  r! O6 L2 n5 W$ X! b
  485. 返回名称为key的zset中元素val2的score
      r3 K5 g  p. P

  486. # c2 F& w4 a& i. ], g, b2 s- f2 N
  487. zRank, zRevRank
    4 Q+ p6 M! n# L* j8 [8 y
  488. $redis->zRevRank(key, val);
    ; _! z7 y3 x1 M4 G, f$ ?
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序- e" a) T: i2 ~$ X* x& w( w

  490. . o! a. e2 D& n* w! c
  491. zIncrBy
    / V  i5 K# l% E6 y
  492. $redis->zIncrBy('key', increment, 'member');9 k% ~+ E" X- e" q  q: p5 v3 o$ q
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    5 j6 d& r4 {9 ?/ p) Q: m

  494. . U  j! \5 g/ L1 T4 l8 C
  495. zUnion/zInter  i) H8 m" O2 z) F$ V% [4 I7 y
  496. 参数+ a/ L6 b, h, c
  497. keyOutput
    5 a7 h; L* t/ t- I$ _+ d8 L
  498. arrayZSetKeys1 u7 I: E. i% E, _) k
  499. arrayWeights
    7 A7 `+ w0 K  G
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.$ r. c9 m- `  T' t7 R- h) D1 {
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。7 S6 [0 x$ j1 n8 ?$ O
复制代码
% g3 s' m, g4 q! }
& E* e6 v5 c# R( l% w

, r; P* z( b- M
8 p2 |$ S! T/ I, r3 v3 U
作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis(); 9 u* M- z5 o8 I4 Y. Z8 ]
  2. //连接redis服务器
    : m3 h1 y+ q8 G( n
  3. $redis->connect('127.0.0.1', '6379');
复制代码





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