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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    2 q0 f( v+ C5 Y
  2. $redis = new Redis();  1 S7 g3 u$ d- S! Z% T/ u
  3. $redis->connect('127.0.0.1', 6379);//serverip port& h3 K; ~3 _+ ~& _$ Y2 g/ I
  4. $redis->auth('mypassword');//my redis password
    & f2 y$ G) {2 o, j2 J
  5. $redis ->set( "test" , "Hello World");  
    4 p) O- L8 j2 n& v" J7 I
  6. echo $redis ->get( "test");
    ' s! X: `. H0 x5 k
复制代码
php操作redis函数封装
  1. /**
    3 m& m1 `) J. j9 v, O# T
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
      ~: F7 B: j3 w2 p9 q8 J3 l! ]
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi& V. j- r6 z( x+ Z
  4. */# n: ~+ [; d. s1 ~) q0 s
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    1 t$ N5 m% C  N* u, U: a, m
  6.     if(!$key||!$value) return false;) M- L+ k! X$ \
  7.     $host = $host?$host:getenv('REDIS_HOST');
    : s5 s1 k4 a1 Z0 _! m8 N+ o) P
  8.     $port = $port?$port:getenv('REDIS_PORT');
    * x& e" y3 ?: ^2 Y. l; d* ]9 O
  9.     $redis = new Redis();
    $ F# v2 _5 M/ j" J
  10.     $redis->connect($host, $port);
    1 l6 a, M5 C4 j/ u
  11.     $value = is_array($value)?json_encode($value):$value;
    : Y6 j3 a* d$ v2 X* m
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);1 V4 n% _- f  w" K! V$ a% X+ L
  13. }3 T) I) \# L6 v1 P, Q* O4 S
  14. /**
    # _) d' _$ a, z
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    5 X7 V& D' h+ a( V$ H
  16. */$ S1 W$ p( I) m3 I+ @
  17. function RedisGet($key,$host='',$port=''){  G0 h3 s- x  \" G) V- W" A. H7 f
  18.     $redis = new Redis();; @* `9 z/ `4 _
  19.     $host = $host?$host:getenv('REDIS_HOST');7 K, l8 C% g/ D+ {8 a
  20.     $port = $port?$port:getenv('REDIS_PORT');
    9 T2 \. p7 @: u. |2 C
  21.     $redis->connect($host, $port);; C! q( m) ~/ ?; G. w* |
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    * J7 @' y7 f3 `# u; E
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);6 p: K/ M" w; I& q
  24. }
    % I3 s( q: \0 H. e4 l1 h
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了  I* i" I" a. J" S  l# Q
  1. setex 带生存时间的写入值
    ; }$ E; E" R, `5 Q5 p( _
  2. $redis->setex('key', 3600, 'value');
    : b5 |8 M9 i# u6 a- [; R9 n9 W
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1, M* n* c3 z5 f' X6 S
  4. $redis->setnx('key', 'value');  G- L7 w1 t( H. p6 U, @) S
  5. 返回已经删除key
    2 q. y# X* G; C7 D  Y5 v- L4 K5 v
  6. $redis->delete('key1'); 成功返回1失败返回0
    . z; Q2 F! T4 A4 K% t. l: u
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回03 z# L& u3 Q: D4 B2 F$ `& [3 _' ^
  8. 查询生存时间
    ' d2 g; s# K/ M. W
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)$ a3 c, Z. g  C" |' x$ |% \/ {
  10. 同时给多个key赋值,同时设置key0和key1
    ; K5 [" @) |, {/ T
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    " [. T2 f( f! F' E
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    # t, ]# h9 P+ R, t8 K5 t# t
  13. $redis->incr('key1');
    + |9 S5 I0 I1 \( B$ F( u
  14. $redis->incrBy('key1', 10);, ~* E6 s( D" X, ]/ i7 O/ _% i4 p
  15. 减法跟加法一样
    / o. L3 b. W  q  ?
  16. $redis->decr("key1"); 减少1* B; Y% q2 O# O+ @/ e1 |( G0 x
  17. $redis->decrBy("key1",5) 减少5
    9 }/ h* J! z' O8 U. |+ |( k
  18. . \: N4 L* T2 _% z8 e
  19. list相关操作,连表操作5 N2 v+ A# M3 Y8 v2 \2 D, {( L6 w
  20. lPush% m) s# h- l! c. q9 T5 K) N
  21. $redis->lPush("list", "888");
    7 F: }, U! c# x* j2 \1 M, H' u; o
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    : @$ I3 e# @; _' P3 m2 \) q4 g
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    # k" m+ I" k9 e. [7 S
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    ' ~5 W" j. O+ P9 m' k5 K2 E
  25. lPushx/rPushx
    # M! {2 b, }" E+ \  @9 @; x/ t+ `
  26. $redis->lPushx(key, value);9 y5 O5 ]$ h- f# I. X4 [# e
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    7 I/ r$ R( f4 l1 {' ?  |4 R2 L

  28. / y; u& H: E/ L
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key) a* l) i9 _* L  L& F
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key' c% Q; \7 @. X7 R0 ~
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    / Y, p( q0 M9 {# V/ G# w0 y7 ^
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序& [) O/ [9 _. d; W
  33. sadd s1 zhangsan* r7 O5 n" o) ]+ i! [, S* y
  34. sadd s1 lisi
    1 r0 s  t: Q# v! c
  35. sadd s1 wangwu
    , \' f# L; \" T/ q: @& o0 B6 T
  36. sadd t1 yangxingyi
      `% h( D% v2 M0 f% W
  37. sadd t1 lilei
    " |1 b" h( |2 D/ F
  38. sadd t1 zhangsan: x! g! o5 \2 Q& X
  39. smembers s1 s1的所有集合内容
    3 x( X  n$ R0 t7 Q( c& s; Q# U) s# }0 W
  40. sdiff s1 t1 s1有的,t1没有的,差集
    . D2 g8 C* f: x& y& W4 ~( G
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式/ g: a/ d3 ?6 `: a/ r" R
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    0 R$ |' z4 r& Z7 L
  43. spop抽奖场景,返回集合里面随机的数
    : z' c/ S' D3 K
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    7 Z' _; b- n: r/ r
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数" I$ J9 [' f4 l
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    % h/ p6 g& r( E
  47. 随机返回集合里面的一个元素,但不删除,重复中奖2 k. q. C, M# W0 R2 l
  48. $i = $redis->srandmember('s1');echo $i;0 k0 U$ g4 u: H) q2 C' G1 a7 `4 s
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false# F: ?7 Y& j' X% `+ ]
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    % U$ L* k- U4 z5 H7 e% K
  51. 5 s5 f- M1 ]% ~- a8 g
  52. zadd key 2 value 有序集合
    * i. [6 L& ~* W  f& |
  53. zadd y1 1 zhangsan;
    + w9 x/ G" p; \" S" h
  54. zadd y1 3 lisi;
    ( b4 L& f8 h( Y8 s* S: X
  55. zadd y1 2 wangwu;
    6 ]8 r  E) p8 s* y3 Z
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    % S4 T# u7 m2 @3 Z
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);& [' J8 V5 i, x+ q* V
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键8 T; C/ R- v0 _
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    5 h2 \* q$ W$ j0 Q; Q0 o1 M
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的* R$ _( Q' d. L0 t% n
  61. 无序就scard,有序就zcard,有z没有s
    2 E, [. c) B; o+ C/ d
  62. sInterStore
    6 y% ^8 q( t6 @2 M
  63. 求交集并将交集保存到output的集合
    # w6 R# k0 o4 T  z: h( ^
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')6 q+ |" Z. |5 z2 f$ z% X
  65. 7 S( `. m: q. p' T2 t0 N. ]  g$ |
  66. Hash操作
    : w* d, z$ _8 J# n: D4 E. y; q5 K9 e
  67. hSet
    - ?4 G/ C8 v6 {, x1 D. C3 H
  68. $redis->hSet('h', 'key1', 'hello');
    1 J: c& N( W8 d& I+ @) \
  69. 向名称为h的hash中添加元素key1—>hello+ A$ E& s" A- c5 g7 D/ v! A! r+ _
  70. 7 H! \& t: }% d8 D" T
  71. hGet
    0 _3 ?6 u. ]( t4 l2 v9 Y, U& V
  72. $redis->hGet('h', 'key1');5 V3 r% E/ B( `' H& ^* ~
  73. 返回名称为h的hash中key1对应的value(hello)6 x# Z; e- w. |9 Y) [4 @/ ~

  74. 1 K* L8 w4 j& t
  75. hLen
    : f. o* }( P8 k* e
  76. $redis->hLen('h');) R5 e0 J9 E. w
  77. 返回名称为h的hash中元素个数
    ! h+ L$ ?" A$ R  h& L& m  o

  78. ' G- t" B5 U9 m, ]/ F
  79. hDel. C: k% u( v( J; b) g5 k
  80. $redis->hDel('h', 'key1');/ F) Y4 U  y' W* H8 X
  81. 删除名称为h的hash中键为key1的域
      Z( C9 `  ]( K$ u; E* q
  82. 9 x/ T  [  |/ L- ]3 i; V5 e- u
  83. hKeys
    8 H$ n2 F" @( Q2 f0 W
  84. $redis->hKeys('h');  [7 K; j5 A) q; j! ^; i
  85. 返回名称为key的hash中所有键
    / y1 W. n- M  I
  86. ( M2 g- T) l" R" R" o/ A
  87. hVals
    + k9 _, A/ I* @/ N9 V
  88. $redis->hVals('h')
    0 [2 Q% @# r6 o) @* P* `
  89. 返回名称为h的hash中所有键对应的value1 U1 \2 N( S, T# J/ k. n) J

  90. 6 v2 v3 G" a' n& o6 _
  91. hGetAll
    1 ^- }* V2 P* R5 s3 @9 Q5 V1 y
  92. $redis->hGetAll('h');
    3 d% }! P' U, R- E
  93. 返回名称为h的hash中所有的键(field)及其对应的value- K$ B. C- X* y! q' M6 c0 m. I$ l
  94. ! C2 ~# B! _6 D" W* P
  95. hExists
    5 {8 l% p. b4 A/ V
  96. $redis->hExists('h', 'a');
    ' X  y4 G5 J# {3 w% ^
  97. 名称为h的hash中是否存在键名字为a的域
    1 G) D8 z# q7 g% E/ y# I" b
  98. : X. t# B/ z4 _) L% s$ H2 z# E$ t
  99. hIncrBy  z' Q6 F0 ~. ~& ~, I" J
  100. $redis->hIncrBy('h', 'x', 2);2 c+ H5 E- {* t6 d5 g; n* z( e) J, C
  101. 将名称为h的hash中x的value增加25 s( g9 y+ |6 C3 L: J+ U- z  f5 H
  102. 1 k  c4 n* @7 c, ~0 M; }; q
  103. hMset6 @/ q' y) ?5 v  I& F
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    6 N: o2 a1 X. S( T; {
  105. 向名称为key的hash中批量添加元素
    - h) j3 R  e# Y( a" c$ A
  106. + A5 Y5 ~7 u5 j! s) W! Y
  107. hMGet: ]1 k" u, u' a% h( w
  108. $redis->hmGet('h', array('field1', 'field2'));6 Z7 y3 F  P. n5 O3 r- q9 g' x8 m
  109. 返回名称为h的hash中field1,field2对应的value" B' M% [. c$ `3 a/ P: O0 F" z
  110. % u) _  [1 {3 K) }4 j( J
  111. redis 操作相关
    3 r0 T: Z; Q" b
  112. flushDB
    5 @7 g9 P6 b# ^2 ?) I0 V
  113. 清空当前数据库! |9 I* v# _: h7 U/ K

  114. / S4 U+ _4 m1 c. l9 J) ~2 i
  115. flushAll
      U% {4 ~8 g% Z# p% v
  116. 清空所有数据库
    2 e& i! E- }5 u: a! z' T
  117. # ^. a7 z  C3 y' D$ v) o! p
  118. randomKey, X+ T8 Y; o/ y1 _' i2 I
  119. 随机返回key空间的一个key' d3 b0 ?0 j5 H5 I3 R
  120. $key = $redis->randomKey();
    ! c- R, ~7 h3 Z' a( J; j1 E

  121. ) d* x9 l+ p( w7 e
  122. select
    6 j. @: E( L$ w$ N
  123. 选择一个数据库2 K0 f. C2 a9 F' q, H& G
  124. move
    ' ^/ _1 h! l6 }
  125. 转移一个key到另外一个数据库" R  e4 ]8 E  h" t8 X) f% _
  126. $redis->select(0); // switch to DB 0, f; X( D0 k+ _- @
  127. $redis->set('x', '42'); // write 42 to x
    * ~" i; ?* _; e
  128. $redis->move('x', 1); // move to DB 1+ Q; |/ W0 X* R% Q) w$ o7 @
  129. $redis->select(1); // switch to DB 12 ~8 |5 `( @3 w: }' |. f
  130. $redis->get('x'); // will return 424 m2 {7 j$ H( M$ q& r7 b/ z+ r- g
  131. - o; V7 {3 Y( X: A# }9 N% T
  132. rename, renameKey
    0 _8 ^& j1 f4 }5 b% E; T
  133. 给key重命名
    - H! F# S) f. X$ `% R
  134. $redis->set('x', '42');0 u' Y3 S# @2 |* h( ~& C
  135. $redis->rename('x', 'y');1 ^( `: `" N  Z% V( c' Q5 L
  136. $redis->get('y'); // → 42
    * k5 A3 L7 Z" X. b3 `/ R
  137. $redis->get('x'); // → `FALSE`
    " k! E0 `& G1 A1 U' W

  138. 5 y! ]2 N0 p# M7 C( J
  139. renameNx& N( Z: Q& p% d8 O
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功, r, P6 N2 p! l6 Z5 H6 J% a

  141. ) F; t& C1 a- V4 I2 G. I
  142. setTimeout, expire
    * M# e" E3 \- t& \7 O/ u9 Q3 R& ~
  143. 设定一个key的活动时间(s)
    , `2 Z) i/ x. Y& b4 P
  144. $redis->setTimeout('x', 3);
    2 G8 ^  f3 j$ E1 I$ l
  145. 9 T0 X. p% a& |8 |' U+ L$ A4 a
  146. expireAt
    & }" @7 b; o2 k
  147. key存活到一个unix时间戳时间
    * R( J, z+ k& g% _' l* U
  148. $redis->expireAt('x', time() + 3);
    * q  n2 W% n3 r5 ]" }  s* i! ?

  149. ) i6 F9 \, M' @) m, b' ?& U$ L+ U# G
  150. keys, getKeys
    ! n6 C! N4 A6 x, H4 p% j
  151. 返回满足给定pattern的所有key' }3 ]4 K+ r1 x1 p8 }
  152. $keyWithUserPrefix = $redis->keys('user*');  g+ H" ~) |6 X6 _
  153. & F1 k- v8 |& M
  154. dbSize
    $ m1 Q( d5 h% N4 m1 B
  155. 查看现在数据库有多少key( k3 Z# Z# A# l! ^% Q
  156. $count = $redis->dbSize();
    : T. N0 g/ v  }# B
  157. 6 w( y3 |% X+ i' Y5 W/ d' L
  158. auth
    . q0 u5 A7 D' k9 M. V9 e. W
  159. 密码认证
    3 `# K4 E1 O" }" E, _% F
  160. $redis->auth('foobared');7 m+ x6 K1 [' Q/ V

  161. ( f4 \2 I5 o6 c/ n; E
  162. bgrewriteaof
    + s. v( @' E' D! L" L; M
  163. 使用aof来进行数据库持久化
    ( }$ a: V% o0 x6 M9 q% e2 J' O
  164. $redis->bgrewriteaof();6 s# n! g& u* ~# V

  165. 2 s! g% ~' k* r2 ?+ V! O; R
  166. slaveof
    # A. x& y, w7 ^1 x& j7 `. s
  167. 选择从服务器
    : I* K8 x! E/ ^: F4 `
  168. $redis->slaveof('10.0.1.7', 6379);" j' i, Z; \/ O" I
  169. . B6 L3 A1 Y# C! G6 c- f3 h8 ]) k: E, E
  170. save8 {& i& i8 q7 _& D! R2 |8 j8 }
  171. 将数据同步保存到磁盘( ^4 W- k; J! I3 w7 ^8 N  S

  172. 4 a# y2 ?! M. a& q* [  @
  173. bgsave
    6 w- r3 v4 Z, H
  174. 将数据异步保存到磁盘9 B, J) Y/ R! B1 \
  175. & N, D$ p" Q9 D3 A3 ]  b
  176. lastSave5 p+ F. B; a5 z: S! K! T( J- G
  177. 返回上次成功将数据保存到磁盘的Unix时戳( j2 a5 I5 o4 j9 p) l
  178. 9 d+ \" T% @2 C+ c* l' g% V/ b4 ?/ ?
  179. info
    - j0 u4 z; F! U6 S4 ^
  180. 返回redis的版本信息等详情
    + C: z6 F2 u: D% K' g8 q

  181. 0 [: @9 B, ?( F- x9 x9 L! F
  182. Redis::__construct构造函数, Q, U# h9 z1 i+ w- ]
  183. $redis = new Redis();
    . [, z% m0 x% {1 J

  184. ! L" P, C4 O$ U- f! i* B5 Y
  185. connect, open 链接redis服务
    - L/ M7 A$ C2 w
  186. 参数: u! @5 f$ \$ O: n. B# N5 A5 V/ G2 m
  187. host: string,服务地址
    % \* `7 z1 h* L$ ?- d5 }; R
  188. port: int,端口号" n. o3 ^$ X: Z; d' A
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    , W9 u8 a% n# \  }0 c# R9 c+ @
  190. 注: 在redis.conf中也有时间,默认为300& i4 L! r* N* X# R( R- r

  191. 3 f& \$ L, }( j( _3 P% }) L' a& H
  192. pconnect, popen 不会主动关闭的链接( f+ s% w3 x4 D1 C
  193. 参考上面  n1 c5 e* V/ y" n+ T3 C1 S
  194. $ w' z: d7 U2 u2 i9 [4 p" l
  195. setOption 设置redis模式) K7 ^; b  @- A, a$ A# S$ F: \
  196. 0 V7 ~* p0 w  [1 D3 L  \: V
  197. getOption 查看redis设置的模式( L/ N# j! L4 O& c0 w( w7 `- H
  198. ) F$ E$ \1 E4 n5 ?
  199. ping 查看连接状态! f: @! T. ]; P% Z: }2 `

  200. . e5 q3 G6 s* C# E5 H
  201. get 得到某个key的值(string值)
    ! Y  I2 ^4 G" t
  202. 如果该key不存在,return false
    3 y2 q9 r* n5 L, j6 X, n; @" ^

  203. - Z  i! @2 v6 x) }
  204. set 写入key 和 value(string值)6 a$ r6 J; Q" P  n" o  h$ s
  205. 如果写入成功,return ture
    7 ^% ?% W: I7 H+ t. V0 D% i" I" g5 j+ X: H
  206.   \' _3 a! Q+ m# B# b5 d/ X  s
  207. setex 带生存时间的写入值. V5 N  C2 A8 @7 }+ F' e) \  Y$ q
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.& ?9 A; c7 l" Q0 e8 a
  209. * F0 b) g5 @  r$ P  T( d
  210. setnx 判断是否重复的,写入值
    ( A  r1 ?8 O9 [5 h. F6 b
  211. $redis->setnx('key', 'value');- w$ n6 c4 r. b1 _7 D' w) x
  212. $redis->setnx('key', 'value');
    # y1 p8 a  {: q, |+ ?

  213. & o9 |% O" `# E* o" z
  214. delete  删除指定key的值
    6 n5 B  ?9 g4 C# z3 ^% v* u
  215. 返回已经删除key的个数(长整数)
    % _2 h( U1 ]/ E
  216. $redis->delete('key1', 'key2');
    ! \0 g! @% g3 V; b; y, ?; U
  217. $redis->delete(array('key3', 'key4', 'key5'));2 ]. M* t# \1 @9 m# }
  218. ) U7 D4 s; x) f6 }; H5 Q6 L
  219. ttl
    4 e, U8 F4 r$ R5 Q3 L5 A1 ?
  220. 得到一个key的生存时间
    3 S4 x( F* H) U0 k9 t1 B1 U! e
  221. 8 Y% N% F* c0 `% t5 j4 c
  222. persist% [+ q' W3 j& h9 x
  223. 移除生存时间到期的key$ g( m  `6 `% C8 x. i% B
  224. 如果key到期 true 如果不到期 false" ?; P7 r/ D! N7 ]4 a6 Y' N
  225. 0 Q2 I/ _) H6 Y0 U6 X! c# T
  226. mset (redis版本1.1以上才可以用)1 T) P! m0 c- n1 _
  227. 同时给多个key赋值
    + e; ~* L4 E# {0 M, f: x/ C
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    2 x! O! i% d2 u/ W2 O  \4 u
  229. 6 y2 O5 B7 W3 A0 ~

  230. 7 O, d4 ]9 `: r4 N

  231. 1 s4 z$ E: W7 g; \+ S, ?+ A% P
  232. multi, exec, discard
    8 v0 O) x& Y: G/ |" d
  233. 进入或者退出事务模式
    2 R8 j9 ~; T6 I. [- p
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    6 D, q; w: w3 `# A) x; `# ?
  235. Redis::MULTI:将多个操作当成一个事务执行+ N# m  K& S, k5 O. r) j( K
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    ; |$ j8 y2 S1 [6 }4 W' b3 L
  237. discard:删除一个事务6 i' m/ S8 @, L9 p# ?
  238. 返回值; {6 Z$ R$ m# B6 Q. y4 ?7 X
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。) |9 o8 {, ]- N1 E+ B

  240. 8 w$ t" M1 Z; G
  241. watch, unwatch (代码测试后,不能达到所说的效果)2 Q, n, M; B2 D/ H1 x9 x
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)5 g* \, S) T" A& T
  243. unwatch  取消被这个程序监测的所有key
    ! a1 @; j# _' T6 I+ S* Z8 S- O
  244. 参数,一对key的列表
    : H' n' z/ Z. @  |1 G* e! Z3 {
  245. $redis->watch('x');, f. j4 ~+ W8 p" j2 J1 o5 n

  246. : `, i3 b' w! P- m1 ~
  247. $ret = $redis->multi() ->incr('x') ->exec();
    % x8 c$ |% w: ^. I+ W

  248. ( e  u4 z" {: z
  249. ! U% h- g# l% U
  250. subscribe *
    - U6 l6 b2 W8 @+ \7 Y# \+ G
  251. 方法回调。注意,该方法可能在未来里发生改变9 \) _" [# u  q' ?& ^) z% Z" ?# F; p

  252. 1 A2 A2 s. {6 \5 K
  253. publish *2 |9 V" q' P) D. L9 p
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变$ o. i/ Y- V& `  H" E

  255. 9 g( u7 E9 a8 g
  256. exists
    ; N8 n. a" E6 ^7 V: u7 l% {
  257. 判断key是否存在。存在 true 不在 false+ W9 a+ u6 p5 }, G
  258. + F4 C6 J  s: q  c' S
  259. incr, incrBy$ J& ~; I! y3 e& f. M% t! V
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值* `6 C' e- @" m; \+ Z3 `: D
  261. $redis->incr('key1');! z6 A/ t) f, O/ T0 G
  262. $redis->incrBy('key1', 10);! s4 r0 g% `- \

  263. 6 t8 q5 M" H: Z
  264. decr, decrBy
    * W7 D  Z8 \8 [2 c5 H
  265. 做减法,使用方法同incr3 ?# o% B! U: F" n) M

  266. 1 M( R( m1 u: [) E! ?
  267. getMultiple- Z/ f5 N) z  M! P7 q
  268. 传参% L) c3 q! p7 c: E+ {* _* Q/ K; o
  269. 由key组成的数组: C3 F& x- b+ G+ L3 o
  270. 返回参数
    8 w5 i" D* e( O' m9 R* @2 S/ M
  271. 如果key存在返回value,不存在返回false
    ! r  ^* I6 a2 ]3 i3 G7 z5 F' S, X
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));) B! h/ [) z; m6 X& e" ^7 l2 Y
  273. $redis->lRem('key1', 'A', 2);
    ; |" Q8 ^/ Q( ^) I
  274. $redis->lRange('key1', 0, -1);
    ; ]  L% z2 E! P  d) G
  275. - m0 p" q; c+ G; b  ?/ j) X" a! M
  276. list相关操作
    , |: c1 b$ g  r$ L
  277. lPush" x# C, B- e* |. G3 k' W
  278. $redis->lPush(key, value);
    , E2 a6 O% k* w' ]* k
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    6 o  Z6 b% ~: k6 Y
  280. 4 `( E1 k& f$ h" }/ z
  281. rPush
    " U- J# j- G- _& P5 k: h* g# n5 k
  282. $redis->rPush(key, value);
    4 O2 m9 B/ `3 h; @) P* h: ]2 r
  283. 在名称为key的list右边(尾)添加一个值为value的 元素8 b3 A5 v2 H" D& S; C; `

  284. $ C5 m/ e" f$ J& }7 X' j
  285. lPushx/rPushx
    5 h: Q' S# u9 s' S
  286. $redis->lPushx(key, value);
    2 V# f  ]) Y6 e
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    1 W3 q: ^, S% l) h" R

  288. ' e) v* U: i& j* Z6 U; _! x( n
  289. lPop/rPop' c" R; a3 i( M. {( K* q( t3 i
  290. $redis->lPop('key');
    ! U# L- Z& Y, }1 B
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    , ^  Z, z7 O6 [6 c- o; M: ]2 Y

  292.   C4 y1 D" c% }6 ^$ R) E1 c4 \
  293. blPop/brPop
    - d* f3 _! F4 |; e- H! I( _
  294. $redis->blPop('key1', 'key2', 10);
    3 g' P9 S0 C/ F) ~6 P
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    2 }) P' H0 a" Y" B
  296. 9 P, p# w* Y: C8 L" [
  297. lSize
    ( w- N7 R% ~( ]
  298. $redis->lSize('key');/ i0 C7 W/ _  Y6 N
  299. 返回名称为key的list有多少个元素  G1 R0 }" s; R2 j9 D4 w! I

  300. , k% _4 A3 I. j* F1 B
  301. lIndex, lGet% \  i+ K; H, m- `! T
  302. $redis->lGet('key', 0);
    2 ~" K( x" \! T! J2 t) y. P* D
  303. 返回名称为key的list中index位置的元素7 c$ r7 j5 V" H! b
  304. 6 k  W0 n( z7 B, _. y+ |
  305. lSet
    , U6 q7 a( a4 N
  306. $redis->lSet('key', 0, 'X');
    4 k' M' s' X2 f  }6 L
  307. 给名称为key的list中index位置的元素赋值为value
    , N1 ^; v- a  t# h0 J
  308. % a: i9 R7 a3 o6 D/ _8 a
  309. lRange, lGetRange
    # U* f* H5 U! G! E
  310. $redis->lRange('key1', 0, -1);' f/ M7 K( b, o1 b* w+ M7 }% A
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    9 A' L, Z+ F1 S) ?
  312. 0 I3 P: e! R) @2 S$ A, W0 W! F
  313. lTrim, listTrim
    # M; U  x2 Y3 _
  314. $redis->lTrim('key', start, end);
    5 F7 V' I, |$ s! g
  315. 截取名称为key的list,保留start至end之间的元素) ]' \7 q  y0 L8 J% B0 x
  316. ' G# r4 k' E# d1 I! v' Y
  317. lRem, lRemove# N; o- U- L' C+ F! {
  318. $redis->lRem('key', 'A', 2);8 |7 o, z1 j# j, C* a, s1 j
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    , |& R4 o6 p" i* J7 d

  320. 4 M2 f7 U: ^- j2 f
  321. lInsert
      O) [# B4 @4 u
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    : N4 d. I# y. Q* m' l8 }5 L
  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 [; W: ?% [+ C
  324. $redis->lRange('key1', 0, -1);
    ! d9 d1 [: v, o
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    ; l9 u( f# q) |8 ?6 C+ t7 s
  326. $redis->lRange('key1', 0, -1);, @5 P9 r/ j8 D
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');* `: G/ N$ L1 p" }1 n
  328.   b/ b2 {/ m- a
  329. rpoplpush
    : t1 I' i! U; o) X
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    / z$ O( I; Z* l7 b# t2 d
  331. $redis->delete('x', 'y');
      j8 K+ b. g7 p: S
  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'));
    $ e0 a* G/ Q, _
  333. var_dump($redis->lRange('x', 0, -1));% _; Y; x6 m9 [; s7 L: }) A3 n* S
  334. var_dump($redis->lRange('y', 0, -1));
    3 k8 q3 N$ \+ f2 e" ]) }3 [

  335. 2 j6 i& L) t, N/ O: f8 y
  336. string(3) "abc" 7 i" a9 S* E  S! Q0 U3 s
  337. array(1) { [0]=> string(3) "def" } 3 t3 Q( ~( z, a# R3 p6 M0 i
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    " P  o; Q$ |* h* B
  339. ( P8 h5 j7 v, |0 L# V
  340. SET操作相关* r0 o  g5 T3 n$ j, F6 z$ S
  341. sAdd
    ; G$ z# b2 z3 B6 e
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    4 l5 C+ @: }" E7 L
  343. $redis->sAdd(key , value);
    ; |% ^% ^: g/ z9 [4 W* M+ r! Z. z
  344. 1 d3 {/ g2 p% D& H" I5 o- {
  345. sRem, sRemove2 M$ t$ Z& i6 D& g# Y5 S
  346. 删除名称为key的set中的元素value
    4 ?* z( S/ }$ _
  347. $redis->sAdd('key1' , 'set1');( p  q, h/ b$ J5 [3 G* e
  348. $redis->sAdd('key1' , 'set2');) D2 I1 q* }7 |8 L3 U
  349. $redis->sAdd('key1' , 'set3');/ j0 L# q* v8 N0 w
  350. $redis->sRem('key1', 'set2');8 ^5 F( m) @2 Z1 Z" k. D" p9 B( w) k

  351. . C0 r( ^# ~6 u. @( R. o
  352. sMove
    7 I7 {- `, ^9 a9 N) o* Z( ?
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    7 }2 ~" h6 _2 t; Y- {
  354. $redis->sMove(seckey, dstkey, value);4 X" w' F9 a8 s" S) ~( r' W
  355. 5 V- r/ E; Q, f
  356. sIsMember, sContains
    6 X( v  m- W$ _7 Q
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    : h: y% T; @. L- B- s; K
  358. $redis->sIsMember(key, value);
    3 K) H+ i" s+ l/ O' U
  359. ! N4 F* d7 ?/ P, b; t9 L
  360. sCard, sSize
    * T4 G7 ]9 j) c, y$ A
  361. 返回名称为key的set的元素个数2 l: g+ X: `/ B5 J) _1 v7 {
  362. , T& R5 T1 o- K: u9 j1 {3 T
  363. sPop: X' v3 U0 c3 j8 Q- r
  364. 随机返回并删除名称为key的set中一个元素3 r  \; Z3 E% w8 j+ ?

  365. " m# D, X; }9 a# a
  366. sRandMember# Z- @1 L: W4 s& c  x1 o2 ]
  367. 随机返回名称为key的set中一个元素,不删除  U, u2 w- X0 a
  368. 9 m7 w1 G& Q+ j- \- n( a* u' \
  369. sInter
    5 ~9 N% K9 t! f! t
  370. 求交集
    9 C9 |" I& S* |6 C: J! i, p

  371. 4 u' H$ J: K0 z8 J! n2 ?. C5 {
  372. sInterStore7 ]! r- [! X0 e, T9 U: U
  373. 求交集并将交集保存到output的集合
    0 i, Y1 }& K5 [1 a0 `$ A
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')4 s, S) M4 ?' M( v- S1 c
  375. / f+ P; d& Z9 J( z* B6 f. k) U- h
  376. sUnion. X: o- d- W: U0 ]! e9 z/ r6 S
  377. 求并集+ R; C# g+ H3 y7 n3 u2 L2 `
  378. $redis->sUnion('s0', 's1', 's2');
    , t' G9 u+ Y% B" W7 ^6 J% u1 i
  379. s0,s1,s2 同时求并集
    . ^/ b7 V) x" `/ a+ Y

  380. ; E. q: V' x% x/ m" u; J
  381. sUnionStore
    ; K% |: T) D5 ]- U" m4 R1 P. u
  382. 求并集并将并集保存到output的集合
    3 H" I  Q7 t/ y2 ~4 ^9 ?
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');. K+ Y' W9 k' b* I
  384. 4 t6 s$ E* K6 ?
  385. sDiff: w8 J$ z4 H, J! P% d6 S9 D1 q
  386. 求差集0 U5 j1 X. N, Z7 P
  387. 2 ?8 r, D3 b* M  G' j2 V
  388. sDiffStore
    # v8 t8 x; Q7 t, S. N& o
  389. 求差集并将差集保存到output的集合
    + R/ a1 A) b2 y7 L, @

  390. + |- v% r% a$ X' K+ X+ H
  391. sMembers, sGetMembers' Z& H5 j8 D8 ^
  392. 返回名称为key的set的所有元素
    + n* U; `# U2 M- w; l( I9 P; D' S
  393. 3 V; Q  L1 k3 v/ B- l
  394. sort0 r- n; u0 F; M: Q7 h
  395. 排序,分页等
    + I9 c+ a2 o; z9 ~  x
  396. 参数
    % J2 |4 ~2 I- q) v, u+ V& l
  397. 'by' => 'some_pattern_*',$ _. n- N: Y( ?: Y( m4 U/ \
  398. 'limit' => array(0, 1),
    2 ?# _9 X' _3 F
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    ! C% w4 }+ |4 d! E  u% A$ E
  400. 'sort' => 'asc' or 'desc',! P8 `- n$ d8 K: ~
  401. 'alpha' => TRUE,* S' N  E$ S! p! o" P4 b" R3 u
  402. 'store' => 'external-key'1 Z# E+ K! p" H
  403. 例子
    & ~1 t+ \6 \/ S. Z4 j7 T  b% G3 P
  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 }# f+ \* G! g6 M" K9 `8 |7 r; @# _
  405. var_dump($redis->sort('s')); // 1,2,3,4,5+ _9 n3 n+ a3 D/ D$ f
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    : i! a& e9 r# u  c
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5+ _. W  x& V6 q) h' u6 ~
  408. . ~0 s, `+ U! R% e
  409. string命令
    8 h; Z3 L" t! I( E+ ~, H
  410. getSet
    9 i2 \9 O  w5 x6 l9 o2 q0 @
  411. 返回原来key中的值,并将value写入key
    7 ?- F, @" ]0 n5 D% h/ b
  412. $redis->set('x', '42');
    8 d$ T! P: D# B4 N+ _$ a- e2 `
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'0 G* t4 A+ r6 Z2 o2 c4 |
  414. $newValue = $redis->get('x')' // return 'lol'
    5 n* ?, s  a2 q) F0 a
  415. 7 N2 X2 r; ?, M- N9 n( t& b
  416. append3 l7 }0 z2 E0 I/ F* _
  417. string,名称为key的string的值在后面加上value
    - J/ r4 [6 ~& M" C& Z/ r0 l' ^
  418. $redis->set('key', 'value1');
    $ M" Z  O1 q' K4 V$ R
  419. $redis->append('key', 'value2');
    ' p5 @8 O/ q1 K+ F) V
  420. $redis->get('key');4 d* @& X4 m: N$ C- H
  421.   g; }  O$ @9 v0 b$ ]
  422. getRange (方法不存在)# |& V  L; U% {
  423. 返回名称为key的string中start至end之间的字符1 X5 O# m6 W% f8 E1 C  T
  424. $redis->set('key', 'string value');
    5 c2 s* Y& r+ a3 ?
  425. $redis->getRange('key', 0, 5);
    + ^( q6 _* X" o* O* I% J
  426. $redis->getRange('key', -5, -1);
    . i- y1 L) W9 v8 m, x- G$ z% G  s$ k2 V

  427. ' C: W2 _( |$ T& D' A
  428. setRange (方法不存在)
      O- N, ]& F' i/ E  Y$ E
  429. 改变key的string中start至end之间的字符为value
    ) |' J: F0 g& x" j/ G' V
  430. $redis->set('key', 'Hello world');
    % ]! i* l4 l- O1 A" }8 X6 G
  431. $redis->setRange('key', 6, "redis");5 e; H: [- ]) x9 J( }
  432. $redis->get('key');
    , }7 c, k4 h6 u7 H4 i

  433. ; x5 p) E: T. y( V5 m
  434. strlen; N1 _0 p# e( ~# N
  435. 得到key的string的长度
    + O7 r: U9 ]) W# _: b. S+ O
  436. $redis->strlen('key');
    8 A7 V. L$ B; _. a8 g/ f; G: `) x
  437. ' K3 ~, u" S, V) q# |- o+ F
  438. getBit/setBit
    ) J9 ]8 P8 L5 u% t
  439. 返回2进制信息! p. F" D# s2 ]( ~( O

  440. % Y! ?0 L- x4 J$ ^1 [" V* [$ ^: w
  441. zset(sorted set)操作相关
    4 ~3 [7 K; d2 K# }
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    ( \0 L, R* R* x) D: \) {
  443. $redis->zAdd('key', 1, 'val1');
    " w2 t7 y% c- p
  444. $redis->zAdd('key', 0, 'val0');7 {- d+ c, y- h9 {  m- q( a% G
  445. $redis->zAdd('key', 5, 'val5');, w3 `5 G$ {& @/ q
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)# T. X* l  n* y" L  R7 r) k
  447. 9 a: o! Y% T6 |
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    + E) z" N, I6 v8 g
  449. $redis->zAdd('key1', 0, 'val0');$ d$ i3 N6 W4 ~4 W
  450. $redis->zAdd('key1', 2, 'val2');
    ) U4 [9 _$ l9 z, G0 T' d( X( ]
  451. $redis->zAdd('key1', 10, 'val10');
    % r7 T! @' S" X
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    , B4 Y. W& e6 R0 G! J
  453. $ n% J1 u8 x" E# M, Q: f5 E
  454. zDelete, zRem
    % q# X" X# F  `  m
  455. zRem(key, member) :删除名称为key的zset中的元素member! X* a# q1 b( k& }7 H
  456. $redis->zAdd('key', 0, 'val0');
      c6 R- S6 m! T, ^* P" G( j
  457. $redis->zAdd('key', 2, 'val2');
    , V4 W0 p# q8 z; n0 J# c* d
  458. $redis->zAdd('key', 10, 'val10');
    # s$ T+ t) O4 H
  459. $redis->zDelete('key', 'val2');
    4 X+ @/ N2 g; N9 d2 b' I
  460. $redis->zRange('key', 0, -1);
    ) q" M/ O+ o6 D& @  ?; k  l$ o
  461. 5 ~. U) j6 j) T9 G8 b2 L
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    5 B0 L5 ^/ [1 J
  463. $redis->zAdd('key', 0, 'val0');5 Z( ]7 e3 t) [# t$ E
  464. $redis->zAdd('key', 2, 'val2');
    7 C9 ]  U8 z/ r
  465. $redis->zAdd('key', 10, 'val10');
    " w2 f, X" L6 _! g
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);1 @  c" u- h! m- c) N
  467. 2 |: T8 ?* y/ n; P9 V; J8 \
  468. zRangeByScore, zRevRangeByScore
    7 ]8 ?/ z* M. P
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));4 B% I4 n# @$ W3 f, E0 m
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    0 e7 ?1 K' [; f( U8 z

  471. 4 ]- z$ `% F1 l, J: i- s$ ~
  472. zCount
    + I' o  n# |5 D
  473. $redis->zCount(key, star, end);* x% O  X  ^; ]  e: I% F: E  l
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数2 K8 h  [% x' p0 j9 K

  475. 0 Z% T* Z7 ?: A" a, J
  476. zRemRangeByScore, zDeleteRangeByScore5 Q* P. F: e# F! l" X. q
  477. $redis->zRemRangeByScore('key', star, end);& ~, |% L, I0 g' B- w& h
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    5 N( b3 p! A" N- u# |6 K! |' p
  479. , j, E9 h8 F. \
  480. zSize, zCard
      r- H: L* [* P2 i
  481. 返回名称为key的zset的所有元素的个数
    + I/ g: n- ]( {) J: ]. k  K5 ?3 L

  482. ( _% G" h& B1 d) i( H& A% Q* U8 \' [
  483. zScore" k1 P# Z; w/ h5 k; g% g
  484. $redis->zScore(key, val2);4 D3 ]: Q8 u/ O2 K8 ?
  485. 返回名称为key的zset中元素val2的score
    9 W4 x8 e! }' o+ C- I4 }
  486.   }" j4 j# n3 T! D
  487. zRank, zRevRank
      \( y6 X8 S9 _% c
  488. $redis->zRevRank(key, val);
    & [) D% Y+ |9 B( N" W
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    8 a* S+ g! L# W& Q9 W) k9 U

  490. ! \$ z5 V! d$ N# T$ ^7 f
  491. zIncrBy0 P! C: R+ A8 g* N
  492. $redis->zIncrBy('key', increment, 'member');
    , ^: @1 N: `" J
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    - s- u5 t/ B" g+ d* g5 E
  494. 6 x3 W  T- f7 T% D
  495. zUnion/zInter& i+ w  s! T0 }3 x$ `* i4 i( o
  496. 参数
    8 N& Y% S+ c# z# I" x3 L. B7 s
  497. keyOutput
    " \! N- X0 j- S+ U5 J+ X: h
  498. arrayZSetKeys8 t- n6 l% q# u  r
  499. arrayWeights9 b9 X2 y( @6 E, ^
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion." {, l$ Q# X+ m- R
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    & F, U9 k$ t* o  v" B
复制代码
% j+ p% \) K) a! C( f- f5 x
+ J5 t: s$ N6 S9 p( N8 b

9 R: ~$ R  F$ ~9 D  P4 b. H! ]7 }2 J/ S6 I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    , d- W8 h. k4 c! e- E# S
  2. //连接redis服务器
    + _- ^) p3 O: C* \( u
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-4-30 20:51 , Processed in 0.074430 second(s), 19 queries .

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