您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14121|回复: 1
打印 上一主题 下一主题

[php学习资料] php操作redis大全

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    ( G' h9 S& o: @
  2. $redis = new Redis();  
    2 _; V- h1 s) p& Z- }
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    % f$ d6 l" b/ z* Q
  4. $redis->auth('mypassword');//my redis password 5 u5 J7 G. u# g# d5 `! U
  5. $redis ->set( "test" , "Hello World");  * Z' \3 I6 t( j+ p
  6. echo $redis ->get( "test");
    ' g/ ?* o7 e* |
复制代码
php操作redis函数封装
  1. /**5 A# v3 ^% |( T% y4 k
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数0 ?1 a/ O7 l5 F
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    * J0 x$ l6 a& `* K6 D1 R" u
  4. */' Z9 c. f# B' k4 @6 X8 X6 r
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    ) V' p+ `3 M$ f
  6.     if(!$key||!$value) return false;) y" H1 V3 |' r! x/ p- z
  7.     $host = $host?$host:getenv('REDIS_HOST');0 D) j$ o$ s* z' u( s
  8.     $port = $port?$port:getenv('REDIS_PORT');
    + D, `. p7 W) }6 c
  9.     $redis = new Redis();
    % r* {( ?% M, f+ A. J6 a
  10.     $redis->connect($host, $port);( _& F. S! r' x0 F$ s, r( u  k
  11.     $value = is_array($value)?json_encode($value):$value;
    ) o2 I; L% E/ c) n2 x! b" T: m
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    6 o$ Q' |" P% P/ b' e" o
  13. }
    " a: ~/ L* m. X$ p3 @; }- |5 @
  14. /**; S  m! G+ _) \. M+ h( x
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    3 ]* _' y# d1 _# N  S; S- n7 l& X
  16. */
    7 z' t3 E" l4 X! V0 ]
  17. function RedisGet($key,$host='',$port=''){
    & X% W% e, M0 l! U" `, L
  18.     $redis = new Redis();, Q$ B- Y% |! Z6 h
  19.     $host = $host?$host:getenv('REDIS_HOST');
    7 ?' t9 U, U) b* e' m
  20.     $port = $port?$port:getenv('REDIS_PORT');
    6 c( x1 E. f- G% p
  21.     $redis->connect($host, $port);
    & y2 g% C0 O! U8 @, x6 J
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    - M: U9 w( X  G* ?
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);& J8 i& w# k' @1 ^# v) F
  24. }
    9 ^; _, U. A& e0 S' x
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了: L0 Q( V0 A6 y* q6 K9 Y
  1. setex 带生存时间的写入值
    / Y) Q% t% f: n6 ^
  2. $redis->setex('key', 3600, 'value'); 5 \6 e, n$ ]7 g* Z) Q) R" r
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1- y: c; p0 L# x2 A/ q1 O
  4. $redis->setnx('key', 'value');
    8 g- J( x' }$ C$ ~" g
  5. 返回已经删除key* `; E3 z5 v5 T8 H" h7 O
  6. $redis->delete('key1'); 成功返回1失败返回0, [/ O, h6 H" ^* W4 V8 w
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回03 d! x' n1 u! h! y9 m0 f
  8. 查询生存时间, c1 [" P' C( e& l, B
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)5 ~  K3 ]3 ~3 E' h6 l& ]% E
  10. 同时给多个key赋值,同时设置key0和key1! E; u7 r) K* N1 O
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));) {* I; e6 D0 g9 l0 U* W
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值. ]$ [5 V2 k" E2 H& A- ~
  13. $redis->incr('key1');, D; `8 Q# a; Q) l. C0 A- j* }/ w
  14. $redis->incrBy('key1', 10);
    , U( Y2 ]! `( v" ^5 v! j
  15. 减法跟加法一样
    0 \1 o, Z; S: D0 C, m! X
  16. $redis->decr("key1"); 减少1
    $ E" v% E4 o: Y+ b+ e( q. R
  17. $redis->decrBy("key1",5) 减少5- f3 G. V: W8 K  K; a6 ?/ C, C( I7 g
  18. 2 ?% ?# E! W  I8 N( L) _
  19. list相关操作,连表操作* z8 F; q2 ~) @
  20. lPush! G! O1 n* I, y# ?. A; X
  21. $redis->lPush("list", "888");1 }6 w; m2 B8 u- J+ _/ ?3 B
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    # d; y% T7 k" X* U$ e2 E
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    + A/ H" \( h, \0 |1 Z
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    2 E& B- a- T9 O$ ~3 k. Q
  25. lPushx/rPushx4 f) B* G) g, y! d  a4 I
  26. $redis->lPushx(key, value);6 ^/ q- y9 K( {. M% Q
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    - l/ P; m0 {+ a' C" ~
  28. & n4 A* U1 c% @1 z* V& Y
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    ! g1 S3 C4 s3 D& e8 D
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    4 l) k& q' d; O* ]! l  d+ N) [
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回10 ]4 G+ a* R7 S, S) @, U3 m; R2 U
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序; z: {% m2 E  d4 B3 a7 _2 S
  33. sadd s1 zhangsan% u+ K& v; w" B& J
  34. sadd s1 lisi
    ; f: d' J4 p/ j6 n4 n8 H$ y# H
  35. sadd s1 wangwu3 [! Z2 ?8 ], Y# h
  36. sadd t1 yangxingyi
    # d# x! `9 n  y! v6 W  S
  37. sadd t1 lilei, R1 i6 e" O6 D  c6 f8 m! w# H( t
  38. sadd t1 zhangsan
    5 D1 @* w2 @; l$ s" K5 A
  39. smembers s1 s1的所有集合内容+ P* v7 r# p* p/ A" L0 C4 z# P
  40. sdiff s1 t1 s1有的,t1没有的,差集
    0 N- O! N1 o5 q9 L1 W- L7 p
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    " g  k1 x7 J/ K4 r7 T2 i/ Q
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的. Z$ L% j" j) l! d- c2 h
  43. spop抽奖场景,返回集合里面随机的数4 b! z1 Z( q" N, ^- ]
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了4 A" T) q: b( J9 c- U, u8 T
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数, Q" N/ P1 b/ d( T1 E* O: |1 n5 N( {
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的- w( ]/ Q5 |) H- P( o
  47. 随机返回集合里面的一个元素,但不删除,重复中奖& n: u: K' k* W0 O
  48. $i = $redis->srandmember('s1');echo $i;
    ; k2 s( {7 S) g9 ?3 `$ H  w( N8 O
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false* R& `& ^9 {; q- Q1 b
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    5 g5 P* S7 l8 T
  51. * z0 ~# b0 W) r, U% M
  52. zadd key 2 value 有序集合3 d% x3 T2 _. \9 Q/ c6 `/ t
  53. zadd y1 1 zhangsan;
    ) G$ V2 G5 d$ {1 i3 W) K! R
  54. zadd y1 3 lisi;. J) X" W3 s. m, d  f& c
  55. zadd y1 2 wangwu;+ }( x, H5 u. Z5 V
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi7 r5 H2 p! U. |. J0 f
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);! u( ~6 F- p/ W# ?7 n5 @; B
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    8 A5 Y& X0 I: O6 _2 h, Q+ a9 w
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    $ j* ~* y: g8 o3 _+ y0 y, f, d
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    % w  h4 }% m. H
  61. 无序就scard,有序就zcard,有z没有s2 P. z2 y( Y) i0 B/ `
  62. sInterStore
    # T3 p% o* @$ G6 |$ C6 \, K
  63. 求交集并将交集保存到output的集合
    6 P7 M& ?$ p9 s4 E2 f
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')# f3 D9 Y5 z9 B8 b; u
  65. 1 a+ y' ^) g3 z* A9 a, [( l! N
  66. Hash操作
      Y, M# [2 N) @* d, T
  67. hSet
    7 V' \8 n8 X+ D; v
  68. $redis->hSet('h', 'key1', 'hello');' h. l: f; y6 O5 {6 R; m: i
  69. 向名称为h的hash中添加元素key1—>hello
    0 o% D6 Y* G0 D/ |1 v9 z3 T7 |7 U" C

  70. 6 @0 ~. C2 F4 P9 }9 ?" v* N9 \# W0 ]
  71. hGet
    * M* U* }5 m! U6 [& k4 ]
  72. $redis->hGet('h', 'key1');
    : W) j0 S9 E+ P. _' M3 f5 L
  73. 返回名称为h的hash中key1对应的value(hello)4 s7 _* P5 y% H# k0 p
  74. 2 u+ i2 W; m' {
  75. hLen" ]1 b4 R  E$ k& c. ~1 {0 w
  76. $redis->hLen('h');4 `$ S0 ^, [4 Q
  77. 返回名称为h的hash中元素个数
    2 C$ f9 b3 Q6 q& V
  78. 7 u0 o0 D1 D/ s0 h
  79. hDel
    0 D- c$ Y' s3 r0 X/ u& j* l
  80. $redis->hDel('h', 'key1');' ]; E3 t' S9 q6 h0 b: B$ ^
  81. 删除名称为h的hash中键为key1的域) B* h! e9 U  B, J+ [

  82. / t# Z5 b* g* X4 }  q
  83. hKeys
    * b& O+ ~; f3 E- _9 y& L. |  P. ~6 l
  84. $redis->hKeys('h');
    ! i6 d( z4 w8 M. R. ?
  85. 返回名称为key的hash中所有键
    1 [; J, X8 I% ?
  86. : x% M/ ^: `" q+ i- e" }/ e  f
  87. hVals
    / ?% d3 q0 v0 B9 i, x$ D& Z
  88. $redis->hVals('h')
    + |& w; g; y/ I
  89. 返回名称为h的hash中所有键对应的value7 l* r3 S9 C# L

  90. 8 u4 B2 _- n; C' q% m) m, m# D
  91. hGetAll
    ) W7 Q. U1 C- K1 J
  92. $redis->hGetAll('h');4 W5 w' T; F0 ^6 ]9 z
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    , R/ D  K2 f/ }1 d/ i0 F% s* ?" r
  94. / x/ W% _) ~. v) F5 @  U9 Q
  95. hExists
    ( _1 n. T4 L! Z; A
  96. $redis->hExists('h', 'a');" Y  m7 i5 G, z! H# m0 E
  97. 名称为h的hash中是否存在键名字为a的域
    ( W2 h; O, z7 r: f

  98. # X2 Z7 N) {+ B- u
  99. hIncrBy
    2 M/ D4 @: `* D9 o3 h6 Z& h) g- j
  100. $redis->hIncrBy('h', 'x', 2);9 {* d4 ~! [/ W
  101. 将名称为h的hash中x的value增加2- w$ d9 [7 |# W
  102. ' W$ o* V6 |; U+ p
  103. hMset
    # Q& l2 Z" }8 X6 R. c0 N
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    + U7 m1 L9 A7 v
  105. 向名称为key的hash中批量添加元素  X  r& }7 E: o9 l$ S
  106. ! s- N) r" \% x2 ?2 v# y! n, d
  107. hMGet
    5 g& U- ?) T5 h; z8 g1 F5 H" m: K
  108. $redis->hmGet('h', array('field1', 'field2'));! L2 H8 I+ ]: q1 B8 Z9 A" I, l
  109. 返回名称为h的hash中field1,field2对应的value7 J% {, l( j& x' P) [  j2 h  n# m2 |$ Y
  110. 8 M3 a/ W& E  k
  111. redis 操作相关
    5 B. C, D/ M0 ]2 Z1 R; n
  112. flushDB
    - y& s; y+ ^- ^/ F' R6 ?) k
  113. 清空当前数据库
    $ X; S6 m- {8 f9 G3 o- [: R( p# I

  114. # X; e9 H' O2 t( V- f; m7 C" O7 b
  115. flushAll
    8 v+ ]9 H9 A4 _- S! b2 g% R
  116. 清空所有数据库) ~5 b" }9 M% R" U

  117. 9 F3 F- Y: F4 x. [8 N/ U3 s! i
  118. randomKey
    ; y- |$ x9 C/ |% R2 g
  119. 随机返回key空间的一个key1 T4 o- B! c" y, i7 V  Y( \- S; ~
  120. $key = $redis->randomKey();
    1 ]) b( x+ Z" P5 j9 b; @
  121. 9 n3 v5 S/ k' t; V3 j
  122. select9 q% q7 [+ b- o
  123. 选择一个数据库, y  V- K6 o  G, S( n7 C
  124. move# E, G: Z% ]" U, v
  125. 转移一个key到另外一个数据库
    3 f4 I% ~; {! t8 L
  126. $redis->select(0); // switch to DB 0: x$ L! h5 E! {
  127. $redis->set('x', '42'); // write 42 to x
    6 N" G, j5 G1 ]: A6 n0 [
  128. $redis->move('x', 1); // move to DB 1* p7 P! _# }1 b  C- O
  129. $redis->select(1); // switch to DB 10 \( ]9 |% f) T2 Z
  130. $redis->get('x'); // will return 42
    6 [0 v  z4 i( }1 I

  131. 3 i2 U7 X- t  I9 c0 m: ~
  132. rename, renameKey
    6 G2 w" T2 ]) @1 E* K
  133. 给key重命名6 }' \# Q; p$ {
  134. $redis->set('x', '42');
    6 p" P6 S7 `  f" f. z
  135. $redis->rename('x', 'y');
    : x- L8 L5 R- H4 Z( s- j' T
  136. $redis->get('y'); // → 42
    $ l) }6 T. h& a. B" N. j) P
  137. $redis->get('x'); // → `FALSE`
    3 d# T. m; S8 p7 c' ?9 }5 W2 l) ^. F4 Q

  138. ! [3 ~3 c+ J# b$ Z
  139. renameNx
    / r+ U% T8 T+ Q1 w
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    9 g$ i( V* e1 G. R
  141. 8 I+ k4 I. i; E7 C/ n
  142. setTimeout, expire, v8 t/ _! @, x; j+ A4 f
  143. 设定一个key的活动时间(s)
    & a/ x/ d. Y" K; h
  144. $redis->setTimeout('x', 3);
    # U' F9 E3 N# N5 A+ B( d) b1 j6 K4 V

  145. 3 e) ^1 s& {0 x  w
  146. expireAt' Z; C2 O' t1 T& c. j8 C! d0 ~
  147. key存活到一个unix时间戳时间9 ^) N( y* v6 C; l' V
  148. $redis->expireAt('x', time() + 3);
    8 H" N1 s& z) C9 m) F9 M& ?, a
  149. 2 n! m7 D' s' W0 T9 c0 v
  150. keys, getKeys
    " o3 n3 K. k: Y; d' U% P4 k$ `: C; d
  151. 返回满足给定pattern的所有key) n9 m8 b1 h9 m. \! c
  152. $keyWithUserPrefix = $redis->keys('user*');, ^, n' O( t. ]: T; d! ~/ O
  153. ' f! Z' C( B4 p: c
  154. dbSize
      X$ }+ i# d! `
  155. 查看现在数据库有多少key+ X& b; f4 ^5 M2 o* l. o
  156. $count = $redis->dbSize();
    ' g2 m- t9 n9 `' u* P; l- Y2 K# X) h: b  ]& y

  157. ; M; f" J+ W) d' o6 b% I
  158. auth
    / |; t, ~6 @- W% d
  159. 密码认证
    / S+ l. L$ [$ T- x' M# t0 D  L4 H
  160. $redis->auth('foobared');  W+ `5 X/ I  L' x1 Y. d2 f* N

  161. 1 |; }1 K, w0 c& ~/ v- f0 A
  162. bgrewriteaof8 I( h" ^! }/ J. R& e
  163. 使用aof来进行数据库持久化
    / |: d. Y# |% {; u# S
  164. $redis->bgrewriteaof();
    - X* e( K3 j. i2 F; I" J8 W
  165. 4 w3 g4 f" T# E9 |5 ~7 U
  166. slaveof
    ' ^6 r7 M3 o. U$ I
  167. 选择从服务器
    + [1 m' m) s! b! k' G' y2 n
  168. $redis->slaveof('10.0.1.7', 6379);( J* R$ C2 Y: E; T3 C, {

  169. 7 _9 b& A0 Y# N! v
  170. save
    ; D, }' R# f! W8 T  @2 C
  171. 将数据同步保存到磁盘8 L+ n; x8 `" A
  172.   `! E, {5 J7 l7 Z1 o* D
  173. bgsave6 c3 z" Q% K5 a4 q' X- a( N$ p% c3 F. I
  174. 将数据异步保存到磁盘
    2 H" N+ [+ y$ [) ]3 G  Y. k

  175. - `  |8 [8 q9 x/ y
  176. lastSave6 H( b0 S7 i2 M" ^
  177. 返回上次成功将数据保存到磁盘的Unix时戳% A! c5 F- q* K2 J3 E) @9 t* f
  178. 6 F# r$ u, ^7 m! s+ k& b8 C; Z% Q/ F
  179. info
    / y: e- W# ]; U5 v  o* Y: B; A
  180. 返回redis的版本信息等详情
    " z4 W0 Q( A* @' R7 X) F  J
  181. , e7 u- L7 T' G/ Z2 ?9 u+ c  c
  182. Redis::__construct构造函数' g7 T' [9 Q/ g3 l. j' ~
  183. $redis = new Redis();: |; w" z6 K9 |' {
  184. 1 \( D3 O" C% i, Q7 a
  185. connect, open 链接redis服务
      P( v( L& T/ F& E
  186. 参数
    $ }3 l3 D: \4 ^( C/ c5 m
  187. host: string,服务地址' ^9 w0 ~2 O- T7 W( B# n6 Z
  188. port: int,端口号; S% p- }6 l- S7 d/ |/ l
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    " d. K+ L; g8 G1 O
  190. 注: 在redis.conf中也有时间,默认为300
      @5 M! K( H6 e# X" J

  191. - D6 e# p0 Q* k
  192. pconnect, popen 不会主动关闭的链接
    / n+ ]2 N2 R; Z5 q
  193. 参考上面0 S. b$ O; U  U, {

  194. . s7 ~7 @& d; _
  195. setOption 设置redis模式! O  j9 ?8 F) ?0 ?; R$ q1 J& M

  196. ) k' ~0 ]; B% I- x
  197. getOption 查看redis设置的模式
    ' ?8 a( s  C" P$ f
  198. / e, d( H6 A5 M
  199. ping 查看连接状态, u0 L8 r& ~* u% x7 Z$ n4 Y
  200. ) w% |$ X$ A- d" \
  201. get 得到某个key的值(string值)  m! t7 n4 D- B' i' b' G( N) P
  202. 如果该key不存在,return false
    4 s& ?0 C- O- S/ C0 Z% J

  203. 8 Q% d' ]7 n9 B
  204. set 写入key 和 value(string值)
    2 X3 |) P' w: F3 C6 q" X. a# j, I
  205. 如果写入成功,return ture
    4 w5 }- |. V( x. Q) t' b

  206. / z* W  p6 }- s9 V/ A
  207. setex 带生存时间的写入值+ u+ f/ p* L+ b4 E0 A
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.; A% R2 n2 ~5 W, _- |9 c0 j+ }/ w! o
  209. - o) l5 ]! ]1 ?  P% Z: [! l: U$ h
  210. setnx 判断是否重复的,写入值/ }. e8 B9 _$ X* s
  211. $redis->setnx('key', 'value');
    " C/ {$ K6 c! L/ ~" d
  212. $redis->setnx('key', 'value');% ?# j( Q+ X( s+ w/ R+ T9 m
  213. % i* U, m3 ~* \( b2 I: T1 e
  214. delete  删除指定key的值
    8 A  A9 Y9 f  K( X
  215. 返回已经删除key的个数(长整数)
    & s* E0 d1 [/ J, i5 X4 ~+ |* X
  216. $redis->delete('key1', 'key2');* c, B  Y' K% ]7 H  d7 d
  217. $redis->delete(array('key3', 'key4', 'key5'));5 e% S+ R$ @1 t  U7 A2 ?

  218. & i, D$ F0 L. j: ?, q) _
  219. ttl
    3 G' k; W/ G! j7 J2 [9 \
  220. 得到一个key的生存时间
    ) ~- u3 D, Z( a9 L4 ^( b

  221. / g; B9 C* O* L- v7 s
  222. persist( H+ N/ k# z: A, q2 u
  223. 移除生存时间到期的key
    4 |% q; U, K' ]6 x# M0 r: \
  224. 如果key到期 true 如果不到期 false3 K8 `9 j3 s* h; W2 O
  225. . S; N4 S! @* r' y+ F8 T
  226. mset (redis版本1.1以上才可以用)
    . x9 b, K6 h' I3 m
  227. 同时给多个key赋值' i; ]. y3 @) w# K- _4 S2 V2 J
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));8 m/ N  O$ y. R, K# B: ]

  229. 2 h) k1 H4 s" A- X5 k

  230. " E7 Z5 u! C( F( P( n5 y
  231. , m& ^# X* k2 d7 W) c: H) |/ \3 P6 {
  232. multi, exec, discard
    ; c  r$ {, z1 _" |/ r- x2 C
  233. 进入或者退出事务模式1 ^2 p+ M, q1 B8 u
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    * K" E3 K8 P6 C+ q
  235. Redis::MULTI:将多个操作当成一个事务执行
    ; E& @2 v. s0 Q+ G
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证( b( v  @4 E. i8 p
  237. discard:删除一个事务
    $ b: o7 m- t8 A0 T* m  m( x5 w
  238. 返回值# p+ r0 e8 Y- ~$ h6 z
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    5 {2 K$ r7 F% |$ Y! i
  240.   P4 W# i' T6 w; L0 {0 ~) [6 p
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    # [( r: B9 ?. s& y" k/ a: t
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    : A9 p1 \$ E. H  M
  243. unwatch  取消被这个程序监测的所有key
    2 j( B! ^. m# j6 p$ g
  244. 参数,一对key的列表
      L! c) Z2 r/ P# C
  245. $redis->watch('x');3 D$ ~" G. \; a& j( q

  246. 2 f# G! ?% c" \: ^" @
  247. $ret = $redis->multi() ->incr('x') ->exec();
    & D0 ^" N+ q6 K$ B
  248. 3 n; u2 Z1 A6 y# o
  249. 3 O( u4 @4 A$ I
  250. subscribe *% }& X5 q6 M- a: m. p8 o
  251. 方法回调。注意,该方法可能在未来里发生改变  H8 x& f- Z: I2 |  i: O
  252. 9 P5 k/ Y% h% J* `6 F
  253. publish *& G3 o4 u3 T8 d% h5 ]) ^
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    2 M3 ?, d9 r8 N: `3 S

  255. 5 U  s9 Q8 {# e/ s& J5 n
  256. exists. L1 `% S; |3 V9 j0 U- d( g
  257. 判断key是否存在。存在 true 不在 false
    % G( a+ L6 p( \% _

  258. - {. `% h8 C% S) J0 |3 r, K. Z
  259. incr, incrBy# h9 X$ z1 X* u
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    0 C9 q3 y5 ?9 z: q- w( i0 v
  261. $redis->incr('key1');
    # q1 u0 \" q& `, O9 X
  262. $redis->incrBy('key1', 10);
    * _' ]; d* o% c% E3 g

  263. 2 U6 y9 I6 X: x6 @  M1 Q5 z  S# |0 T
  264. decr, decrBy4 Y# J. I) ^/ k7 `8 n1 ^) e( V
  265. 做减法,使用方法同incr
    8 {& J/ X$ n1 f& d/ q
  266. $ H5 u# t1 S: C
  267. getMultiple
      P4 t# S3 l8 S9 r
  268. 传参% h6 F, B% {3 @1 q
  269. 由key组成的数组
    ( X0 y4 H5 O+ d& Y3 F
  270. 返回参数& A. j: I: {5 V1 `
  271. 如果key存在返回value,不存在返回false: j# r; J' l1 |. d# S
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));1 l' s% Q! C: M) l- b( P, W, W
  273. $redis->lRem('key1', 'A', 2);# H2 {. [9 m; N* b
  274. $redis->lRange('key1', 0, -1);
    ( {/ n% L! W& ]
  275. . ?2 w) B  f# B6 d/ t$ n
  276. list相关操作
    " b. `* [5 ?  ^7 \
  277. lPush
    % V( w$ a" t, j" }6 C# K  z' w* K
  278. $redis->lPush(key, value);3 P: p2 ?: Z6 [
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    % g' {- X1 g. Z1 A: N8 r# y

  280. - T9 e) v) \) x( m2 k3 u
  281. rPush( p; q8 ]% G8 A! [' C
  282. $redis->rPush(key, value);
    7 H& v1 A5 ^, F& F9 l
  283. 在名称为key的list右边(尾)添加一个值为value的 元素* E+ O- Y/ o; U5 k) z& Z1 h# `# h; [
  284. & ^. C2 N0 ~1 X* A, w! w( P1 q
  285. lPushx/rPushx
    + C% r9 {& R& z
  286. $redis->lPushx(key, value);0 S* q" N  s, l3 h7 \4 U# c( V0 b
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加# R/ C9 \: |8 I# n- v! p% O

  288. 6 A' u6 a9 t5 w0 _+ l
  289. lPop/rPop9 ~4 t8 W7 P0 n/ G' ~- R* u
  290. $redis->lPop('key');
    2 Z$ g. r4 e3 f7 \3 K1 R
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素8 i4 Z1 a# x3 U3 N( h  W' \, N2 t

  292. * l+ R0 w# u& f
  293. blPop/brPop
    5 o, z7 S7 X3 K& k9 j" m
  294. $redis->blPop('key1', 'key2', 10);
    - p. i. J3 ?( Y% Z; y6 q% ~' a
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作6 I. w9 V6 c$ f* e8 l. Q

  296. % {: ], v% [1 r+ F- R
  297. lSize# Q6 W3 `# X- D! t: e! u* D
  298. $redis->lSize('key');/ _( M2 |) V( @% E8 ~
  299. 返回名称为key的list有多少个元素
    0 U/ L' U6 A# J
  300. 5 K( F' b$ @% g, @2 D
  301. lIndex, lGet
    ) H6 F4 p$ W& _8 h
  302. $redis->lGet('key', 0);
    9 [$ r/ [4 K2 y) L+ o
  303. 返回名称为key的list中index位置的元素
    - X4 T- x* [9 r$ D& }: i
  304. " {2 |1 V' |# g. [: J5 a% A
  305. lSet
    $ k8 a2 }& `* ^
  306. $redis->lSet('key', 0, 'X');
    , e# @' z0 j0 b) E% y& {
  307. 给名称为key的list中index位置的元素赋值为value& ?# e0 e7 v# k3 f3 R
  308. 0 {* }4 A6 a; L8 g" }5 R% h
  309. lRange, lGetRange# P& M0 X3 {% q& O- K
  310. $redis->lRange('key1', 0, -1);
    ) T7 y' ]9 Z! W; y
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)$ s- _) H0 @* A  J0 T0 r/ J$ l9 y& {

  312.   F) w2 F& Q8 L
  313. lTrim, listTrim
    9 A# ^) e7 T* d2 U
  314. $redis->lTrim('key', start, end);: o: ^; [7 L1 W
  315. 截取名称为key的list,保留start至end之间的元素
      z$ _) m3 [, d# N8 }8 _8 ~
  316. 8 \; s" m% U$ t+ h9 F; l: g: Y
  317. lRem, lRemove& s3 n1 H. J0 m6 j) a
  318. $redis->lRem('key', 'A', 2);
    ' ^0 j  v3 |3 {$ K
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素9 [( u; M7 A/ o: ]+ G
  320. + p. M0 R2 b) F9 @" F, T$ `
  321. lInsert) k% x; S) u& U
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ; M* b' `8 u1 x( o
  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');
    ; h5 |1 X) S  f7 r. z6 M# _
  324. $redis->lRange('key1', 0, -1);
    / p. _( I& J. K7 V$ N2 Z
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    . y$ r# o. Q# M6 K$ d
  326. $redis->lRange('key1', 0, -1);
    # m( m/ U& }7 d. U% k
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');! F: Y6 j3 @5 W$ u
  328. $ `, J" t9 N3 B3 b% {
  329. rpoplpush
    : e) `  O/ h8 b! q. \$ Q
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    / t' `1 d$ k9 s1 v3 H, w
  331. $redis->delete('x', 'y');
    , F) n( t2 N& l2 k; X, @& }7 O
  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'));" }: _) j' f+ ~0 ^
  333. var_dump($redis->lRange('x', 0, -1));  L$ D2 H4 A% T- H& w  z1 v6 ~
  334. var_dump($redis->lRange('y', 0, -1));
    ! K7 Z% x$ b# a0 n
  335. 4 ~# L2 q2 \) c0 ]( L$ w
  336. string(3) "abc" ! L1 g& ?" N, {1 A* D
  337. array(1) { [0]=> string(3) "def" }
    3 R7 x* ?% C8 D+ l! E. r
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }; ~* i& Z, }' q8 c+ U1 w3 P
  339. & Q) E+ s" @9 I7 W/ {
  340. SET操作相关
    4 }, E4 k. a4 ~! ^3 E; b, V
  341. sAdd) V& d! p  {. ]7 T9 J2 h
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false4 U% t' P, ?; n2 a# T
  343. $redis->sAdd(key , value);; @! c. z5 T* s

  344. , i3 q2 N% r  R3 a9 Q
  345. sRem, sRemove
    9 [, L$ I* [1 L* W
  346. 删除名称为key的set中的元素value$ l% v, T! m% ^& Q4 n8 p
  347. $redis->sAdd('key1' , 'set1');4 o. n0 U' Q+ ~" y
  348. $redis->sAdd('key1' , 'set2');
    5 E8 d" R  Y' K& L0 W) a+ [  J$ P
  349. $redis->sAdd('key1' , 'set3');2 z% f4 T  V: [1 X# w8 H& R6 p
  350. $redis->sRem('key1', 'set2');
      B3 T* H  P' r- w
  351. # z. Y, W8 _: E
  352. sMove+ |7 k# Y) h3 a
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合2 ^3 w; U- x! U, w0 a
  354. $redis->sMove(seckey, dstkey, value);% G5 A/ Q( k% ]5 o3 \

  355. : i. T% q: A: y2 a. i. ~: K( v
  356. sIsMember, sContains
    / O. v+ {3 v6 r) Y: Z  j( i
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false/ w1 v# H* J- P1 s; Z2 L- m9 e' n9 }
  358. $redis->sIsMember(key, value);
    $ O5 [3 h5 T0 q) h
  359. % l0 ~9 y6 b. F. I) P" Z  l
  360. sCard, sSize, A) X) C- }5 \5 r$ `
  361. 返回名称为key的set的元素个数0 W( m& ?4 l: I+ H+ |4 p
  362. 3 r9 O; h* y) n7 U' t3 P, Z
  363. sPop3 W, A2 K& H* V0 c8 ^2 U0 }
  364. 随机返回并删除名称为key的set中一个元素
    ( P3 H# g5 V/ D, ~2 v3 D

  365. 8 E% h8 y8 O" |0 Y7 {
  366. sRandMember0 q& ~+ g; C+ o1 f7 K
  367. 随机返回名称为key的set中一个元素,不删除( @' g1 K% P5 v0 s3 @* J

  368. ; R% k: p) \: {' m  ?* O( i, ]6 G
  369. sInter/ o( C( j  t: I) i7 g) Z
  370. 求交集
    5 U. z. L, o' e- v

  371. ) o4 p8 y) |( x* v% s, E- }
  372. sInterStore
    1 W8 y$ h; V% g2 z: U
  373. 求交集并将交集保存到output的集合9 n' q8 Q0 n6 w, Z. Q
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    7 R( A2 }* v1 H% ]( x

  375. ' F$ U  m6 j" T- _
  376. sUnion* A, F  b2 v  n( a9 \, g9 h$ E
  377. 求并集3 U! X* |. }$ C
  378. $redis->sUnion('s0', 's1', 's2');
    8 j& B8 p3 W7 P4 x" O% f# y" ?" D
  379. s0,s1,s2 同时求并集
    ' @* P3 O% ?, }$ \7 V& I4 n/ t

  380. 3 V; f& H& y4 K
  381. sUnionStore* E' n4 u( N# q
  382. 求并集并将并集保存到output的集合* E0 ]" r9 |3 y  ?) L0 `1 E
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');0 U. p& ?# L5 I$ A8 y0 n
  384. 2 ~  b! Q% u2 ]8 |3 A+ n
  385. sDiff; J, R+ B; Q! j
  386. 求差集, O" g) q& e8 O3 j# L, H
  387. 1 b& Y: K' O2 B( L0 s9 q7 Y1 G
  388. sDiffStore" m9 V* M1 C# Y! N
  389. 求差集并将差集保存到output的集合
    2 M, B2 B( R9 @# m% ~

  390. $ _- Z9 d3 y2 V/ `, z2 E9 O
  391. sMembers, sGetMembers
    ; W  G5 b3 j4 t% u  n
  392. 返回名称为key的set的所有元素. U, g! H5 e* U, ?; [

  393. ) m, F* q9 A8 {5 l2 w$ t
  394. sort# V8 [: H8 r  i7 y/ R8 p% E+ z7 n+ M
  395. 排序,分页等
    - v6 z) z. h( `: v( N$ y
  396. 参数+ ?% a" \$ N2 W! v
  397. 'by' => 'some_pattern_*',. `4 w# O8 p; t- ~
  398. 'limit' => array(0, 1),/ J& I2 U. l' o2 @2 j: \8 S1 r( u7 j- U
  399. 'get' => 'some_other_pattern_*' or an array of patterns,- ^$ P  h8 C, H: V2 T
  400. 'sort' => 'asc' or 'desc',
    2 ?5 e) z8 S' H( ~+ t
  401. 'alpha' => TRUE,4 A2 n2 j0 l4 ]8 u
  402. 'store' => 'external-key'9 i$ F) N5 x4 O. V; e
  403. 例子
    2 D$ ?" }3 l5 U% q
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);* a/ l0 E. N" n5 M% z# u
  405. var_dump($redis->sort('s')); // 1,2,3,4,59 B8 v* n5 O0 \2 K
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,19 y/ b1 w% g1 _
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5: s) E5 p  c8 r; l; i6 V" a

  408. / O) U8 m- G( S% Y1 M
  409. string命令2 \& x9 T4 @+ G6 i" E
  410. getSet* y( T. j! L! k0 Q3 O5 _0 X
  411. 返回原来key中的值,并将value写入key
    0 V: Q& c: w, f1 x6 I; C+ k
  412. $redis->set('x', '42');/ v( J  c. J4 ~8 |7 v) }
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'& {* i' K  f% A9 s' K4 U0 O& Y
  414. $newValue = $redis->get('x')' // return 'lol'
    & ?$ h6 ]: ]+ u# A1 }, k
  415. % f; R9 v; j" Z  ?; b8 S1 P
  416. append7 ~# x7 ^. s7 h# r: {# C
  417. string,名称为key的string的值在后面加上value
    - n% E! E1 C8 _) L, W7 R
  418. $redis->set('key', 'value1');" F5 }  Z% \5 W
  419. $redis->append('key', 'value2');
    8 q  I% J) p: G! W. Y* d: x
  420. $redis->get('key');6 P/ ^. [7 ^9 D& d2 u

  421. ( L7 ^( P/ b4 V3 H0 v8 J
  422. getRange (方法不存在)/ q2 n7 z8 w/ e, {" H+ o6 h6 p
  423. 返回名称为key的string中start至end之间的字符) r0 K; `# e: n, \) u: w
  424. $redis->set('key', 'string value');; B" t) v% X9 w# _+ j$ U  j" Q
  425. $redis->getRange('key', 0, 5);
    6 @# r: u* F6 k: x. K+ O
  426. $redis->getRange('key', -5, -1);9 G6 I% n8 G' J6 s& Z& R2 b5 i

  427. - y5 ]$ f* K! j5 C
  428. setRange (方法不存在)- a  X, F' V6 f0 z
  429. 改变key的string中start至end之间的字符为value
      w6 i8 w9 o% r& _, f
  430. $redis->set('key', 'Hello world');
    : L. d# {+ v0 q$ o' J! ~9 M+ r
  431. $redis->setRange('key', 6, "redis");
    + g" x6 u( c* z
  432. $redis->get('key');, k2 r% F+ j6 w

  433. , m4 D% k, T+ c/ w" a+ B0 [
  434. strlen
    - O' T2 o, v* V
  435. 得到key的string的长度! e0 U9 L0 g2 s2 ^+ |
  436. $redis->strlen('key');, O& Y! \; X: B# e. Y

  437. - F6 g5 O% {7 K5 c9 J: U. l
  438. getBit/setBit
    & g; Z, u' I, a5 a: F' c
  439. 返回2进制信息9 Q. P+ C; C/ I& U* l9 g8 D  Q3 `' F
  440. . S! \# {* T( }$ u0 R0 J+ A
  441. zset(sorted set)操作相关2 c; A7 @7 l- j% l6 }1 J2 Y( c
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。0 H  W' m5 ], o* S* ?2 k( E$ V. x
  443. $redis->zAdd('key', 1, 'val1');
    0 {/ U" W5 u+ ^4 [
  444. $redis->zAdd('key', 0, 'val0');
    & p. ], B  `9 s- e2 x
  445. $redis->zAdd('key', 5, 'val5');
    8 E2 w: W/ h4 `& s: M  n
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)! H; o3 L# C; O3 q& [

  447. : b9 b( J6 n5 q/ P
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    6 B' G$ ^- G# e9 }: o+ b4 j" `0 |
  449. $redis->zAdd('key1', 0, 'val0');
    7 S- }+ a& F: E8 o
  450. $redis->zAdd('key1', 2, 'val2');$ B& Y/ Y' ?4 z5 X  K
  451. $redis->zAdd('key1', 10, 'val10');
    0 K) ]1 P# Z) }: E4 z  [0 o, I, Z
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);  i, u3 B) k1 [' P0 x6 I0 V
  453. ) ]- U; d" v6 q" M+ X( L
  454. zDelete, zRem
    & D$ u/ c' X+ g
  455. zRem(key, member) :删除名称为key的zset中的元素member5 G: o& b* s4 u. |$ f$ k4 ~
  456. $redis->zAdd('key', 0, 'val0');' h5 x5 o5 R! h, T8 g; ]/ ~% Z
  457. $redis->zAdd('key', 2, 'val2');$ Z5 O: x) G: ^3 R
  458. $redis->zAdd('key', 10, 'val10');( v; @4 n) ~) h, U
  459. $redis->zDelete('key', 'val2');  k  \$ s6 C0 q& b
  460. $redis->zRange('key', 0, -1);
    + d: Q! g& Z' h' e; t7 a1 U$ Z: N

  461. 3 l% Z) U* f" r# g
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出) q; r3 R+ J  ^2 I% i9 j  e
  463. $redis->zAdd('key', 0, 'val0');" }. y, @+ O+ [
  464. $redis->zAdd('key', 2, 'val2');2 \  R9 R# P3 _
  465. $redis->zAdd('key', 10, 'val10');' t1 G' `8 C! V8 b7 b
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    & _8 B, ~0 ?! o! W8 e/ ?0 u& W% y
  467. * r7 `' s5 x  a( v) g# c+ d
  468. zRangeByScore, zRevRangeByScore
    # T/ I3 K6 |3 I: r
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));0 h7 b/ G: T& z$ m! K& [
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    ' x( H+ J) U/ K* q; L4 h  R1 O
  471. & R! k3 x  _" r1 U& E3 C: U& }
  472. zCount8 o7 C9 [) S- F+ D% Z& h) O
  473. $redis->zCount(key, star, end);
    7 s& H# ]2 x6 u, M* o* W
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数0 C7 y8 i- r5 \- U/ y( k( n
  475. & o2 W7 y- {; `* m- W9 M
  476. zRemRangeByScore, zDeleteRangeByScore1 G) K% l  P+ G! v/ s# E
  477. $redis->zRemRangeByScore('key', star, end);
    % j) v6 K$ e( a4 v: ?
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    7 b. f8 B$ u# N8 [" A! V2 U% Y

  479. 8 y! M# v$ r- D
  480. zSize, zCard: X7 ^4 [1 D, y6 X8 j1 {
  481. 返回名称为key的zset的所有元素的个数
    5 n: g' h3 A: |% n* ?; h

  482. , C- A# C  R9 E8 \" z
  483. zScore
    ; t3 b- _$ w6 t; R% Z6 ^
  484. $redis->zScore(key, val2);
    ) ~- o& {% |4 {) ~
  485. 返回名称为key的zset中元素val2的score
    ; F  p4 E0 Z  j* W
  486. ! ]3 l. j2 p' r, x+ q1 F+ ^
  487. zRank, zRevRank2 ?6 f, u9 h$ [
  488. $redis->zRevRank(key, val);& x. `7 z& t2 v! `  S* U! J
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    , t% Z1 A' |7 v+ z4 ?

  490. * u! w( R8 P% m: _& j
  491. zIncrBy4 I" k7 [( j4 v# L# ?* ^( V' O
  492. $redis->zIncrBy('key', increment, 'member');
    4 |( U' m, x) t1 x6 d/ A0 z& A+ _
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    ) `/ h- d0 k2 f# _# Q) C2 o

  494. ! M, M" Z/ T  J' E7 v5 @8 r
  495. zUnion/zInter( }( [* Y: J( b5 C: N
  496. 参数% B6 ?8 H# }- ?( Z
  497. keyOutput
    7 R  B  x# F0 U/ u2 E* B8 j
  498. arrayZSetKeys0 _$ T: A& G& s$ E- g* r+ R+ A; J
  499. arrayWeights
    & r# S8 g( G: `# r8 x6 I1 K# S
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.( N: d, d2 @1 P3 f' @* Q- Q/ ~
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    - m6 a. U; p2 C9 ~4 q5 v" `
复制代码
1 W: i# `$ J/ q# g1 P+ U/ h

1 C: l/ q. G4 e% C0 U4 q* Y5 m1 c& A' E

5 ^) {& C# u) y1 Q) S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
      M6 ~* C. ?0 y/ w
  2. //连接redis服务器 $ j8 Q8 p# W0 v3 Y
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:55 , Processed in 0.066586 second(s), 19 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!