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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    & N$ M! J4 A" p5 d0 p
  2. $redis = new Redis();  
    ; A5 _0 b5 j$ e4 d: K& i
  3. $redis->connect('127.0.0.1', 6379);//serverip port' _: _8 I, ?' G$ h8 `
  4. $redis->auth('mypassword');//my redis password
    7 d) d- W+ M' v" P
  5. $redis ->set( "test" , "Hello World");  
    * M/ l$ f  @3 j/ G7 O7 i3 `
  6. echo $redis ->get( "test");2 s. Z* K: e2 l' y# Y2 s
复制代码
php操作redis函数封装
  1. /**/ ~; x$ P; x" [/ K
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    4 z2 N; N% s, E* Q. U% s0 a
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    : G9 n9 N0 F) ]5 t, H; Z7 a
  4. */
    8 r. @' j  s8 N7 G& u  Y
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){% q' Q2 L8 X, {) ~# o$ e
  6.     if(!$key||!$value) return false;- k' F$ Z$ W1 ?+ _4 [; q2 ?( g3 G
  7.     $host = $host?$host:getenv('REDIS_HOST');
    : Y# Y% c! A( b; x, @1 g# i6 j* W" X
  8.     $port = $port?$port:getenv('REDIS_PORT');
    : w3 C; t3 i# k# k& ?- H- [
  9.     $redis = new Redis();# @5 y4 g3 d( E( P
  10.     $redis->connect($host, $port);
    ; y+ ]0 V; o/ O( v- x+ e8 ]4 O2 G
  11.     $value = is_array($value)?json_encode($value):$value;
    & v" Z2 ?& B5 N- l3 H: R. V
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    ( B+ g- q/ p) q9 P3 ]
  13. }
    " Z. V' h6 m" a* s( X, e& |: V9 v9 w: y
  14. /**
      m7 m' m# A, _6 o7 f! E7 L
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi: L  `0 P) {1 r3 s
  16. */
    7 e" \% ^8 B) N" R& _% A& w
  17. function RedisGet($key,$host='',$port=''){
    " e! Z9 B! I  V, c9 L/ Y6 W( P
  18.     $redis = new Redis();' L! M* G/ _  _5 R8 n* h
  19.     $host = $host?$host:getenv('REDIS_HOST');
    & c* ~/ y$ _, h2 H
  20.     $port = $port?$port:getenv('REDIS_PORT');
    4 C" m+ {( ^; O$ R* p% j! d
  21.     $redis->connect($host, $port);
    1 }' o3 ^8 O: G# S, R2 T& G
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    ) l# Q6 n, C, [
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);  k/ H1 ~: f1 P( C
  24. }
      `2 c0 n4 j/ Y+ H( ^
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
- b( |+ j* @: d, l! o9 {
  1. setex 带生存时间的写入值2 r) P2 E% _7 ~
  2. $redis->setex('key', 3600, 'value');
    ! h7 Z3 ]+ J9 J
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1! ]; y% M( ?+ Y& j$ Y
  4. $redis->setnx('key', 'value');( H, |9 J5 x" e' |' r" E) y8 L
  5. 返回已经删除key
    8 O# D  I3 t) z
  6. $redis->delete('key1'); 成功返回1失败返回0
    $ Z0 D9 X. Z) w" t5 w* Q3 k
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回02 u# G# O5 M6 F" u0 E% K3 b
  8. 查询生存时间$ o9 \: a# x/ G- X3 a
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)1 m0 ]3 P- v* I& m
  10. 同时给多个key赋值,同时设置key0和key1
    8 v# i, x! b3 p. m3 |$ a# D
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    % f; z$ Z' @/ O) m% J
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    0 |& }2 B; o$ [+ ~
  13. $redis->incr('key1');3 D' b( h. h( U/ e( ]0 T
  14. $redis->incrBy('key1', 10);9 A( u* `3 {9 {
  15. 减法跟加法一样
    $ V" w4 n, ?% y$ C6 b. S
  16. $redis->decr("key1"); 减少1  ]& Q! v/ u7 J. P
  17. $redis->decrBy("key1",5) 减少5! s2 M* m7 {, J$ J0 O
  18. : X. S! C  B/ N1 g+ E
  19. list相关操作,连表操作* W7 J# r2 e6 W8 j+ E
  20. lPush
    % [3 u0 `/ z: K* r! U6 w
  21. $redis->lPush("list", "888");& y2 R% E" Q1 G) E9 x0 {) Y
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数7 R+ R0 W& y2 a
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    # M+ M- r1 y. f$ P4 j. a! G6 _
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    3 M7 _6 o6 D" r0 |
  25. lPushx/rPushx6 u0 P; o/ ]8 \8 ?9 Y
  26. $redis->lPushx(key, value);
    # Y- q! ~% g# a" ]4 X- E" O
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加5 Z7 A. d% X) N7 l) f

  28. 5 ]& F: R3 y$ l# W1 m! ^6 D  z6 N
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    ' X: w0 u+ R/ A0 l% Q
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    / A) j% q9 N; o
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回18 I, W; e1 ?: c4 C
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序; q- b3 L( J  e7 U9 i: k* |* U6 `
  33. sadd s1 zhangsan
    : b" M" }5 }( \0 C$ p
  34. sadd s1 lisi! r) F$ m/ f3 a
  35. sadd s1 wangwu5 t0 m6 O6 @6 e  F! c8 P! T
  36. sadd t1 yangxingyi5 [4 r8 w% _! M9 L+ l" p
  37. sadd t1 lilei
    8 M4 A' d, X- C/ f- l
  38. sadd t1 zhangsan
    & y$ G% ]  |5 `4 R. g/ z/ h7 ^
  39. smembers s1 s1的所有集合内容
    " H4 [& Z( n' a( k1 ]4 t
  40. sdiff s1 t1 s1有的,t1没有的,差集5 H3 {& L( h& ]" t- D4 P+ I
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    + e+ D- c5 K+ G4 r
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的9 o; l1 x2 K) H9 x: t  T
  43. spop抽奖场景,返回集合里面随机的数) R5 I/ q( ^4 m4 y6 n
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了& [$ R5 y: s$ Z
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数: v( d" e2 A1 _
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    0 m, m- k9 ^( x5 B1 m
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    " W( n& |; O3 l
  48. $i = $redis->srandmember('s1');echo $i;' L- P3 f1 N- d! B8 k( p6 b" R' \
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    3 W. p+ D3 O4 w9 Z
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    6 s5 }$ N6 a5 h' G: Q. c, W
  51. 0 B7 k; O; O% y& q9 ~' g- b, a, ^0 L
  52. zadd key 2 value 有序集合! j& m/ D' w' a8 o  J
  53. zadd y1 1 zhangsan;
    ' F7 j7 w7 f, {. B* N+ g- u
  54. zadd y1 3 lisi;
    $ ^7 C; v& }- N
  55. zadd y1 2 wangwu;1 X6 w" ]! m4 U* c
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi9 f& G" n* B, @* f
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    4 C1 x; w; |: G0 w; \0 g7 C9 b
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键# K- S1 D3 C0 D8 Q! ^  F9 d9 Q
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    ; j  s0 V- P. W0 T  P' g/ z9 s
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的0 A8 u" w1 W$ t" x# L
  61. 无序就scard,有序就zcard,有z没有s, a( }6 d5 [3 x4 p
  62. sInterStore
    9 M, k7 q: P* q
  63. 求交集并将交集保存到output的集合
    % o+ @2 T9 H# I- z  u  ]4 J
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    1 W/ v7 I* U& }% X

  65. ' i  D$ j2 L: N) T
  66. Hash操作; n8 ]$ ^" M2 j7 p; }# I
  67. hSet7 `9 `. s0 J7 X0 B) R' f
  68. $redis->hSet('h', 'key1', 'hello');& I6 V5 o0 C; l( v9 r
  69. 向名称为h的hash中添加元素key1—>hello
    ( B: M; E, m# l- t

  70. ! B* e9 b/ s0 {. |
  71. hGet. J/ M' {- z9 F7 s/ H( `$ I
  72. $redis->hGet('h', 'key1');: Z4 F- O5 O8 z7 i6 [# A
  73. 返回名称为h的hash中key1对应的value(hello)
    + n, D3 u) e. D8 I  l5 j

  74.   e' a% c7 r( \- b
  75. hLen
    % m0 u4 c4 ?4 _
  76. $redis->hLen('h');
    + |( [: R4 g6 P4 ^' m) z
  77. 返回名称为h的hash中元素个数
    " ]5 u+ X& r+ Z* B( h8 X# j- e7 S
  78. ( Q6 A! r: G' c3 m9 t
  79. hDel& _3 l) T0 s" Y# \( a) b
  80. $redis->hDel('h', 'key1');- g, u4 G/ J7 v- I. Y0 r# x
  81. 删除名称为h的hash中键为key1的域; S8 s( o! E  O) u

  82. 4 U" I$ X4 y  l; G: I6 _
  83. hKeys
    ! A* A  A9 }+ b; U: \
  84. $redis->hKeys('h');
    0 D( S, m- ]$ m( f+ w
  85. 返回名称为key的hash中所有键( E+ M, h0 y) D+ i. ?  g
  86. $ P, D( {- y, r) S1 `
  87. hVals
    ; o: s; k& l* [9 l# f8 A
  88. $redis->hVals('h')
    5 R! D" X% U# K! g, k) s2 k% v
  89. 返回名称为h的hash中所有键对应的value
    ' i5 t! l9 {4 P  l: q1 X

  90. 2 B1 V, u7 ^; b! e. y5 {7 O) u7 {
  91. hGetAll0 P8 L: V& e) z: m
  92. $redis->hGetAll('h');* v% g& x6 H* ]; x
  93. 返回名称为h的hash中所有的键(field)及其对应的value; |# m( s5 T# `6 @' \# a; e

  94. 7 y3 T3 Y( V1 y
  95. hExists
    ! e9 f" {6 B% J0 S
  96. $redis->hExists('h', 'a');/ P0 F' `; m" J9 l7 f
  97. 名称为h的hash中是否存在键名字为a的域% c8 _% u' V+ r, N0 |. z

  98. + a2 Z# }; v) C' Z5 [9 H
  99. hIncrBy
    2 D8 G4 |& V) D- y' G5 f4 b) f
  100. $redis->hIncrBy('h', 'x', 2);8 Z" ]% ^" L4 u0 J7 z, i. H
  101. 将名称为h的hash中x的value增加21 }" v$ n, \) o. ^1 d
  102. 5 d6 h+ D9 X6 g! ]7 a1 p& x6 f, f% P
  103. hMset
    5 Q# m5 s& T  [0 s
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    0 G7 j+ f$ c* z4 Z
  105. 向名称为key的hash中批量添加元素9 v# d" G  A/ t0 ^( V- n  u4 D' W

  106. 2 E1 X$ k1 l" X+ F, P
  107. hMGet
    . K5 R' t- C# q4 P
  108. $redis->hmGet('h', array('field1', 'field2'));
    0 b' B5 J& h  ^" q9 l
  109. 返回名称为h的hash中field1,field2对应的value( B" d) E- y' p5 h

  110. 3 ~; O0 E; ]- P9 g9 q: h6 T
  111. redis 操作相关) F) I# }( W& v$ r9 \. \- t* P
  112. flushDB+ _1 A! J3 u' `4 Q% O3 C( P
  113. 清空当前数据库
    2 I, }! |( `) f; ^. c: `& `! x: ^

  114. 7 k3 B) X# Q7 d( \% G
  115. flushAll
    0 [1 X8 q/ Y* Z3 t% v
  116. 清空所有数据库- y$ Z1 R: V" i5 z
  117. 3 ?# L% ^! U9 a
  118. randomKey
    , E3 J) z% l* Z0 S
  119. 随机返回key空间的一个key" D  H0 J+ l2 G' o  M
  120. $key = $redis->randomKey();
    4 b2 N; x+ l2 q4 N

  121. ) @& v' f# s- a
  122. select0 E! R0 i& j5 X4 }) k* N
  123. 选择一个数据库
    $ [# ~; _  }! ^0 P3 W8 x* g! w
  124. move
    ; h1 f, B) t& ?. G
  125. 转移一个key到另外一个数据库
    / j/ h, I. E  I5 v/ c+ T$ p
  126. $redis->select(0); // switch to DB 0
    . W) I' V: |; H
  127. $redis->set('x', '42'); // write 42 to x
    0 x1 M6 @: V; s
  128. $redis->move('x', 1); // move to DB 1$ ~' |6 T. C1 k$ s' M$ e3 t4 C
  129. $redis->select(1); // switch to DB 1
    1 ~, H6 q) G# L$ h
  130. $redis->get('x'); // will return 427 F) s  Y8 m: V* S3 ]6 _

  131. $ `% j2 V. o- w7 m( U
  132. rename, renameKey
    $ O+ c# k  B  z
  133. 给key重命名
    1 e. Z- S/ K' V" L8 Z
  134. $redis->set('x', '42');& x/ B" F- @- `3 ]  c8 X& z
  135. $redis->rename('x', 'y');; B, I2 J  W6 P* @" }( o! u
  136. $redis->get('y'); // → 42
    & J. ]3 a# p9 H* X
  137. $redis->get('x'); // → `FALSE`' n4 I: {& x  R2 L( d/ s8 s4 a
  138. ( F+ o2 _8 s* T! O" Y% y
  139. renameNx' K7 O9 V" i$ ~7 I' U& [! d+ M
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功) O) S7 ^* j, d2 u% a

  141. # z' }3 u* e0 _0 j
  142. setTimeout, expire' B& R2 i$ U4 I( e6 R9 A% C
  143. 设定一个key的活动时间(s)# ]( w: \8 `, @( C1 R1 O
  144. $redis->setTimeout('x', 3);
    * r4 i2 ~( L8 ~7 V% U7 c1 }/ g8 {
  145. 8 m; ]' M) V. H7 E! Q
  146. expireAt9 Z  T6 Z( a/ U6 }9 b* `6 a9 T9 }
  147. key存活到一个unix时间戳时间) e' S/ O' w; G' F* C9 h
  148. $redis->expireAt('x', time() + 3);
    . {6 p+ ^, a) O& N

  149. : V, L$ r) C" C
  150. keys, getKeys+ \. u3 Y* l: f$ ?3 u
  151. 返回满足给定pattern的所有key
    . l% F5 c$ T, N+ x( d9 s$ Y' F
  152. $keyWithUserPrefix = $redis->keys('user*');
    8 N: h% r  h  x7 P" {" ?
  153. 6 T' j* w! @# Q$ y* t8 u
  154. dbSize( M) K% x! P5 b0 A9 e% X* H
  155. 查看现在数据库有多少key
    0 j& J1 F, F+ `7 v! V5 s
  156. $count = $redis->dbSize();
    . [% y$ G! b% G' S) r% H, ]

  157. 6 N+ W+ E9 t$ r; |# I+ H
  158. auth
    : o! p" j% o! F+ p+ r0 g- U. p1 u% f
  159. 密码认证7 b: M$ ~8 v% \( g$ b0 A: }
  160. $redis->auth('foobared');. c) t9 s! g6 |) R& J" E( X
  161. 9 O/ c% C' o: H" |1 {, I6 a
  162. bgrewriteaof8 N* s; e6 m$ d7 _+ ~9 w' Z  j) @
  163. 使用aof来进行数据库持久化3 Q1 o1 x. @4 O
  164. $redis->bgrewriteaof();
    ' @5 j/ v& W' C; m. u* I5 W
  165. & `% _8 O" @, r4 U7 p
  166. slaveof! p, G7 \# h% U2 ]* g$ J: x
  167. 选择从服务器9 D: A8 B% G2 X4 g+ L
  168. $redis->slaveof('10.0.1.7', 6379);
    & G4 X9 k+ b: v7 w( w/ u+ b

  169. : P" b1 [  t: t2 f
  170. save4 v6 W) M5 ~' ^% s1 h; d8 F
  171. 将数据同步保存到磁盘
    3 i" W# @/ q* l3 j
  172. - Z4 h/ o$ h# s5 w1 g. D3 I
  173. bgsave9 h- j! K6 \/ Z' C" I
  174. 将数据异步保存到磁盘
    + L0 D; ?5 P' W6 u+ Q, M

  175. . `# I5 J& g! F" ?; n1 I0 w6 x
  176. lastSave9 f/ T9 y' H* f+ J5 @
  177. 返回上次成功将数据保存到磁盘的Unix时戳& F  Z2 _  V1 B, ~. T; U; w

  178. - G6 Y0 L' E% x2 r4 Z! h, C" s
  179. info; S" ^# j8 ~2 x/ k2 R
  180. 返回redis的版本信息等详情1 a: C2 V: |6 w% ~. M1 r3 t7 F6 Q
  181. % V1 _3 @1 L3 O
  182. Redis::__construct构造函数
    + `! |2 S0 O7 r: k9 Q
  183. $redis = new Redis();
    5 ]( X0 i- y8 Z# U
  184. ' s8 j8 X1 M# J
  185. connect, open 链接redis服务
    # U5 v6 m; o& a) }5 T; k8 |
  186. 参数% b1 G& g  _" G7 w2 v; g) q
  187. host: string,服务地址
    5 G, M1 w. @7 W: K. S* L( |) r% e
  188. port: int,端口号
    , _* \: t( D& A0 A; o
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间), R1 L  R, s# F# }6 F- \
  190. 注: 在redis.conf中也有时间,默认为300, w/ L0 M- c# i
  191. 3 K6 x1 i' v% }! I/ c2 j
  192. pconnect, popen 不会主动关闭的链接
    # c: t' C- p+ s' R( N
  193. 参考上面
    / S4 l3 \0 X' D: k& g  g
  194. 0 T. W7 g" T1 q2 u
  195. setOption 设置redis模式
    ) L* Z/ X, R; `& C7 F

  196. + ~: t5 [/ V' y7 D
  197. getOption 查看redis设置的模式
    6 G7 P; v+ `: r; b# B" D

  198. 1 V7 t: V' o: y% m8 E
  199. ping 查看连接状态' b/ k5 V/ Y8 Z$ J5 e4 o& h, B

  200. 8 Y+ I* I3 X9 M* Q. h3 f
  201. get 得到某个key的值(string值)3 }# C+ a, i: W
  202. 如果该key不存在,return false
    ; g$ y6 [  V" Z$ U
  203. 5 W" B) ^, `/ {9 `- |
  204. set 写入key 和 value(string值)6 q5 Q! M* q) X0 `& w# ]# m
  205. 如果写入成功,return ture, {! H0 @: u# y# X5 J! c- @, N  p, h
  206. 3 w1 K$ v4 \) g- P/ _
  207. setex 带生存时间的写入值$ e4 B4 V  r5 G' K
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.: p% ?  ?/ K! F5 m/ W6 Z, U+ @

  209. / ^& ~7 U* _: S: o% G' O
  210. setnx 判断是否重复的,写入值+ w3 D% ~# l2 K
  211. $redis->setnx('key', 'value');
    + h" M3 I1 I5 ^7 _7 E% k% Y9 e
  212. $redis->setnx('key', 'value');1 H4 H) w9 n- J# k/ S  i* j
  213. 4 [7 |( t8 _$ N5 q' ?
  214. delete  删除指定key的值  I1 Z4 S& |! Z/ I4 Y$ O
  215. 返回已经删除key的个数(长整数)8 A8 N# \: \, R( p
  216. $redis->delete('key1', 'key2');
    ( I/ E1 T1 d$ o5 G0 V2 G$ k
  217. $redis->delete(array('key3', 'key4', 'key5'));
    1 B* P7 C: @5 q1 O  ~/ h1 n9 f

  218. 7 f* d! f0 b  B6 T
  219. ttl0 G# o1 E8 o& l  d9 H
  220. 得到一个key的生存时间; V4 F. w3 ?: O' R0 t$ W( D9 f

  221. # e/ e& Q* @2 t& ~% S
  222. persist  C, A  G6 r' L/ [! e" e
  223. 移除生存时间到期的key
    ( V! p4 V; ^. O& g$ z% Z
  224. 如果key到期 true 如果不到期 false
    9 P; Q0 x" l( i& u* U$ P

  225. ' J% Y1 R  g& n& o$ q$ t; L: O5 Q$ R
  226. mset (redis版本1.1以上才可以用)8 n- c* e9 l0 R2 o) b
  227. 同时给多个key赋值
    . P" O& C, Y3 H$ r9 ^* R
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    . k6 ^' ?) {$ c1 V  A7 f
  229. ! ]7 \0 D( ?  x. N! n* e) K

  230. # H+ y& \2 i6 A& M- U
  231. + [* z; ]  ^) B/ Q
  232. multi, exec, discard/ x" a5 A, k' F/ }
  233. 进入或者退出事务模式
    : [% x+ ^$ t% j5 O/ ~
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    % F+ ?) E6 D. R; d
  235. Redis::MULTI:将多个操作当成一个事务执行3 ^. R6 l& I" {* r: z& D# x7 U
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证. ]8 h, A' ^" s  A
  237. discard:删除一个事务
    - B" R# @6 D8 K* f* M# k; b: P. T
  238. 返回值
    7 `6 U6 X& a. }+ K
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。  I' {* U" _0 C/ U* M

  240. + H! f" U3 Q- z# w: X- _, Y2 N
  241. watch, unwatch (代码测试后,不能达到所说的效果)+ ]; Y3 n: A# X  Y- z: o
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)$ \& v$ b6 E! ?6 I+ j; H
  243. unwatch  取消被这个程序监测的所有key
    9 Q1 L5 M2 c0 S5 E0 B3 A0 e" B
  244. 参数,一对key的列表) \! f5 m6 O. X1 o: ?, _1 U, X% o+ K
  245. $redis->watch('x');
    4 G* L- u5 K; m  z2 e7 k

  246. & Y" p$ d$ J9 T
  247. $ret = $redis->multi() ->incr('x') ->exec();
    + j/ l3 K' i7 V0 k# s

  248. - J! o$ b1 u: {4 }0 l
  249. ) P; T. R/ G5 [5 `
  250. subscribe *
    $ `: o/ j+ r3 u5 M% F
  251. 方法回调。注意,该方法可能在未来里发生改变
    8 b2 o( \; g* X6 ~  _; }1 O
  252. 5 ?. L& r. ?# K, z9 s7 _# ?/ n
  253. publish *2 i/ ?, `5 r+ H9 w( ]* x
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变& ]' X5 j. m& d
  255. ) ?& ?- N* M1 S; @) y
  256. exists/ h% p, J- K6 U- {4 h' t2 z
  257. 判断key是否存在。存在 true 不在 false
    3 \) ^$ i! h! B, J7 S
  258. 5 N$ g4 ~4 g% g& G: r' G) M- ]
  259. incr, incrBy
    & i/ f1 L( C) Q/ W7 `8 M
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值! l( ?, h+ V/ T; [. s
  261. $redis->incr('key1');0 G* R9 T. N4 D
  262. $redis->incrBy('key1', 10);' T& z& |* H  R9 P4 D

  263. - _9 @" ^0 b  W2 t  |4 F
  264. decr, decrBy
    - v( C/ H, {, G9 @- q
  265. 做减法,使用方法同incr
    ) y2 e, s8 L: V& v/ ]% d$ G: l
  266. 2 i# D* _& z8 n/ j( E# y/ X' Y2 W
  267. getMultiple
    & s/ {  c. M! z/ C. j- n
  268. 传参3 o1 D3 Y/ E, y- C; @/ t" ~) z
  269. 由key组成的数组4 V& M8 q2 q/ _5 l0 @; ~( [
  270. 返回参数# D" \$ V/ n6 [5 y  H5 e
  271. 如果key存在返回value,不存在返回false9 e* v4 P+ k$ h3 s6 b" F* Y. e$ D
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    / ^. T( c3 Q! J- \8 k- q0 i. f
  273. $redis->lRem('key1', 'A', 2);4 f" {* ~8 S) @+ |
  274. $redis->lRange('key1', 0, -1);0 f" n0 ^9 ]7 M5 ~  F

  275. 9 s, k: I3 b' ?% [; r; s! |0 L
  276. list相关操作. @4 L7 `8 |, g- h! i
  277. lPush
    5 B4 O3 @' ?2 ]- a% F
  278. $redis->lPush(key, value);
    - j; L( A' K! ?6 i" l. M
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    & J8 T6 _' B- f1 q" C( L

  280. % f) R& Q: q6 [# N3 |
  281. rPush
    : i0 l0 Y# r( }
  282. $redis->rPush(key, value);
    2 y1 \5 |9 S5 D; w+ q
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    $ f' D4 P) Y4 \
  284. " [) X" Y$ C; K8 S2 ~/ I
  285. lPushx/rPushx$ L0 M! I; Y) H/ c
  286. $redis->lPushx(key, value);$ m) {0 i+ h) K% i5 [3 _. _3 n3 ]
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ; m! U  x% ^, R" D' Q( g9 F4 h# u
  288. ! G# {: `7 h9 Q2 ~) a& p2 ?
  289. lPop/rPop
    - C3 ^# m$ `2 S; L5 H! k. e! H8 x
  290. $redis->lPop('key');
    ; O; O9 ^; O& G8 }9 u- M- }+ T
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素- \! H) e7 R  ]; g& ?

  292. : s& U. h& H: r( ~; _$ O
  293. blPop/brPop8 E+ p$ Z1 f8 N, Z) Q# g1 r
  294. $redis->blPop('key1', 'key2', 10);; v# f0 O: b0 t( B! z' W' K
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    6 u+ i" m3 E' N" ]  W( I# U

  296. ( c/ g* L1 {* a) {) Q! q
  297. lSize
    8 w8 Q* v3 Y, w9 j2 M
  298. $redis->lSize('key');
    3 b; x, n4 x3 N+ a9 p
  299. 返回名称为key的list有多少个元素8 @2 X# X) `% G5 [7 t6 R
  300. * e7 N& |; `1 f' \, i
  301. lIndex, lGet8 x! B7 W+ M0 \' o. z
  302. $redis->lGet('key', 0);; U% w3 o  P( n. U6 d4 `2 f
  303. 返回名称为key的list中index位置的元素( O7 h  Y: ?! A: w

  304. . C: K' z0 s8 h1 ~* q9 X
  305. lSet/ d1 B) t' i" }- e4 q, n# T
  306. $redis->lSet('key', 0, 'X');* I3 t8 h# M, H
  307. 给名称为key的list中index位置的元素赋值为value3 C% O! T+ k8 l* Z; `* s% R
  308. ) m( p9 S+ J! q; m8 O
  309. lRange, lGetRange
    / b7 u! r. S" P+ s
  310. $redis->lRange('key1', 0, -1);+ w' U( G4 s# k  S7 v3 h5 U" B9 Y. I
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    % H' t% j* {; ]) C
  312. + O3 u  ~1 }4 p% H3 G6 x. J
  313. lTrim, listTrim& _# `1 }6 i% V7 C+ X
  314. $redis->lTrim('key', start, end);0 J/ A0 f# s) k$ m/ ?+ Q% d/ S: \
  315. 截取名称为key的list,保留start至end之间的元素0 {! f! i2 q! a1 R0 L
  316. . f1 a) z  W1 K+ Z4 R# k
  317. lRem, lRemove
    9 K. l7 r$ f$ d; e' i
  318. $redis->lRem('key', 'A', 2);
      |; d0 s( k. Z. ]8 ~3 L! f3 a
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    & m+ b: ?1 }8 w2 C: \: a0 ]
  320. , W- S/ G( o: L: e( _% A
  321. lInsert' Z! ^0 N7 o8 m7 c
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ! f) x9 ?5 ?" y6 Z3 B9 k
  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');
    - k! T" X% b7 V" D3 d$ L' w
  324. $redis->lRange('key1', 0, -1);/ d: {0 r* t! V- V
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    ! j" \! U0 c# ?* T2 a
  326. $redis->lRange('key1', 0, -1);
    / v5 \# d: I; {2 b7 @3 r; C
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');) a/ a% x/ c; L  T

  328. / I7 T& o: ^- s% X9 @/ ]4 j& W
  329. rpoplpush
    2 m& a8 ^& S$ f! J! u9 V
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部& [2 q3 ?, x8 o  p+ e1 x
  331. $redis->delete('x', 'y');' Q% {# d; p$ R5 ^" j' L
  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'));
    1 p  M; B+ Y9 G1 |
  333. var_dump($redis->lRange('x', 0, -1));* T* n* C! p  J" N
  334. var_dump($redis->lRange('y', 0, -1)); : C$ F/ ~& W6 E$ f

  335. ) N/ y2 H, `* R; H8 r
  336. string(3) "abc"
    ! @  L& m% P) y& P
  337. array(1) { [0]=> string(3) "def" } / x, w8 C9 `+ U2 O" l6 j
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    6 ^+ O& B0 W7 A$ \5 ]+ B: Y
  339. ) [, `+ H2 k; ~6 W3 q' M
  340. SET操作相关
    2 p4 K# Q/ `2 [9 t* l1 E0 a2 u
  341. sAdd
    8 r3 P: k) c9 o: {9 B$ n. t1 E
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false4 J3 o6 h6 ^! s/ {" s/ V% X
  343. $redis->sAdd(key , value);
    - x7 D6 T2 w$ a& l  J0 y8 i
  344. 8 k1 C* Z: Q7 c9 T$ y. k; e5 Z+ e
  345. sRem, sRemove
    # w9 p4 `& G3 E" U
  346. 删除名称为key的set中的元素value# ~$ I8 H) \4 `2 w3 y" K% o; i, s
  347. $redis->sAdd('key1' , 'set1');
    $ u. }" S. ^2 G! c5 v4 \
  348. $redis->sAdd('key1' , 'set2');" x2 p/ U0 F' w& q
  349. $redis->sAdd('key1' , 'set3');
    , E8 Q, ^1 V3 X; s+ y
  350. $redis->sRem('key1', 'set2');
    ) T! i, ^" M2 E" A/ i0 Z

  351. ' B2 w7 l5 |' y5 y" J* ^& a% C
  352. sMove
    + j7 L4 L0 @3 k  _
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合$ W* G  l! Z, d- d/ z
  354. $redis->sMove(seckey, dstkey, value);/ `/ T! A3 _& J# M3 |

  355. 7 g! l5 X3 U) T
  356. sIsMember, sContains
    & r) p0 k6 ^7 s6 E, F
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    9 @7 f- e5 i, A. t1 j/ D
  358. $redis->sIsMember(key, value);0 }* u- p; q, i$ q4 @7 K- V

  359. 7 K- O; y/ b) C$ {, f0 s2 X
  360. sCard, sSize
    4 P4 `: V$ X( R$ I
  361. 返回名称为key的set的元素个数' C. [) @9 L" S  U6 n/ y7 M
  362. 6 {* d: d. _9 D, u$ S& R
  363. sPop
    ; m) \$ a  U1 G0 y1 u6 [& t
  364. 随机返回并删除名称为key的set中一个元素
    : i) {- A2 C0 b1 Q: t
  365.   m% z) g: V8 C
  366. sRandMember
    7 Q! k1 b) f" K- {% Z. v
  367. 随机返回名称为key的set中一个元素,不删除
    9 h0 [  S7 N9 x1 U2 f5 ?4 Q  G

  368. 7 w1 [# L- @. o6 t7 B: z
  369. sInter: R4 w7 ^/ n/ b  K
  370. 求交集
    * z; w- f* I' ~. V+ f
  371. 2 i/ f4 v( s4 K) F5 A* R
  372. sInterStore
    , [, Z0 v% ]; i
  373. 求交集并将交集保存到output的集合, a! x, M" Y/ Q0 [; e
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3'), q3 J. Q% V2 k* `- S8 b- Y! E

  375. 8 t/ r2 O6 E" T9 b
  376. sUnion( D( C' P5 T2 i* \: G
  377. 求并集
    / ~# Y7 C6 X& m4 z' S; U
  378. $redis->sUnion('s0', 's1', 's2');
    5 C4 ]! N" P9 N/ S5 f4 @
  379. s0,s1,s2 同时求并集6 l& l1 w8 T3 R$ u1 m
  380. " \6 @" s+ M4 {9 V
  381. sUnionStore
    ' V5 e- F7 v! y8 h8 R
  382. 求并集并将并集保存到output的集合
    1 p9 [$ `# e. f. {+ s* Z7 J
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    0 f: g3 D' k' x+ i/ G9 k: R) L) [

  384. % v9 N: O* F# e2 t0 q2 o# A
  385. sDiff" `3 p3 ?0 z- X
  386. 求差集
    8 }0 x# u: J5 x8 k( m
  387. $ A% o9 I" C$ g- g, |3 K0 K
  388. sDiffStore) g  m, K& v; U2 R
  389. 求差集并将差集保存到output的集合1 g0 `* z; {  A: N5 c. z6 |9 Z7 X

  390. " U$ u3 b6 [1 }( F1 i, ^
  391. sMembers, sGetMembers& u+ Q& |) B- q- c9 \
  392. 返回名称为key的set的所有元素8 f% D; _: O+ ^( n) \

  393. ( W" Y( F3 x1 o8 G
  394. sort
    ! |1 C2 W! i/ {
  395. 排序,分页等9 Z8 b9 {# d  h' Z) K8 |1 w% A7 Z
  396. 参数
    ) ]* v' |2 x) q. |" M
  397. 'by' => 'some_pattern_*',& w+ ~2 J- M. S# x% r$ a+ [/ O
  398. 'limit' => array(0, 1),
    + p4 J' b9 _: a" q2 u6 r0 `" U& U
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    3 _; G, X$ O$ P4 Q! p
  400. 'sort' => 'asc' or 'desc',* ]- p1 F* f) ~$ N; d/ a, {
  401. 'alpha' => TRUE,
    ) \# y1 ?# m) m# c( J& t' X
  402. 'store' => 'external-key'
    0 E2 T# g* z) T5 Q
  403. 例子
    * l# ]; d. P3 s" Z% x4 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);
    8 U3 j  }9 q8 q0 G; d
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    % T$ p, ]* b3 P& K: O5 P* j
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,15 Y& b4 B6 G3 C# b
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    ' p4 t. [( h4 P. D6 R+ \. b' u7 `
  408. + o& x8 [2 K8 Y8 Q3 Q- ^% e6 d
  409. string命令
    9 A+ n- X: A( J: e9 m+ t3 k
  410. getSet. \1 N9 g7 A1 o8 s
  411. 返回原来key中的值,并将value写入key" k. ~' \5 `: O
  412. $redis->set('x', '42');
    / }: }' M8 F  `8 l; Z' ^/ W/ p7 ^
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'% }: q2 `; Q! G4 g
  414. $newValue = $redis->get('x')' // return 'lol'
    % C, D( S0 m0 M2 v. Z" H
  415. ) l. z" ~: H) U" E$ X
  416. append
    ' l4 H) b* c. T0 \: o! ]
  417. string,名称为key的string的值在后面加上value  M3 r. ]/ }( |# O8 U+ _4 o
  418. $redis->set('key', 'value1');
    2 P7 I: F( ~2 F( _* \
  419. $redis->append('key', 'value2');
    % O! E- p8 \# `: E3 F8 C1 ~
  420. $redis->get('key');' M( N  P( r+ v+ |( i8 W& d5 Z
  421. 8 P5 N4 Q# V+ t
  422. getRange (方法不存在)( L3 B$ F- i  B3 O! s
  423. 返回名称为key的string中start至end之间的字符
    * n2 {9 ?, A8 G0 s8 s+ h
  424. $redis->set('key', 'string value');, C; L* [: ~. N/ t) Q
  425. $redis->getRange('key', 0, 5);
    ! _% e: }  s% V. y8 p& D* c
  426. $redis->getRange('key', -5, -1);
    / a$ s) ^2 P4 P; O* K. l- q

  427. 8 E: m. a$ c; U) y
  428. setRange (方法不存在)" @5 f' ?, f3 x. q# w, }4 {  C
  429. 改变key的string中start至end之间的字符为value
      U) a# G9 _0 U# L8 G
  430. $redis->set('key', 'Hello world');
    + l& ]; s6 Z* s/ A1 q1 `
  431. $redis->setRange('key', 6, "redis");5 g) i' {9 x/ q# r# T6 [
  432. $redis->get('key');
    / W+ x( |! ]% P5 r3 v- R

  433. ( _) ?6 M) T* M: C, n
  434. strlen( o: p8 B' U, ~/ x
  435. 得到key的string的长度0 x/ M% x3 y% j! w% i6 T+ a
  436. $redis->strlen('key');
    & V6 Y7 q5 W- m7 S
  437. & Z: w6 q# g" V- @1 I0 @
  438. getBit/setBit
    1 f: D  ~* k$ v' Z! p, b. v" d
  439. 返回2进制信息, R" t/ u4 w2 q6 R/ q( S3 W8 O
  440. / y4 C6 D2 `* ^
  441. zset(sorted set)操作相关
    % g9 m1 m* G3 `1 ?5 [/ v8 y
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。9 O, N; r" `5 B8 Y% M
  443. $redis->zAdd('key', 1, 'val1');
    + M" z' q2 J8 d/ X
  444. $redis->zAdd('key', 0, 'val0');
    ( h9 ~9 L! b( K
  445. $redis->zAdd('key', 5, 'val5');: P) _$ t  E# U3 y3 Y8 @
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    - j+ j8 J& j( B3 r0 _9 N2 O" X
  447. ! ?9 P" m" a7 }. l, A- r2 E5 Z
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    9 E% p6 g4 w& j" J: v# E6 z
  449. $redis->zAdd('key1', 0, 'val0');. F" D- T" p8 |8 _% z' |1 ^
  450. $redis->zAdd('key1', 2, 'val2');
      }' a+ M6 l4 y1 ~+ l
  451. $redis->zAdd('key1', 10, 'val10');
    9 y9 z" g0 Z# w& _
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ! I8 O" K1 e1 B
  453. # g! C+ y! z# ?5 J8 f$ H$ {
  454. zDelete, zRem
    9 ^3 k: l- b6 h9 K  e: d1 k! g
  455. zRem(key, member) :删除名称为key的zset中的元素member
    ! ~% }. J. |/ p. ~' t: O
  456. $redis->zAdd('key', 0, 'val0');2 M/ e, ?6 ^! x, L7 {
  457. $redis->zAdd('key', 2, 'val2');3 y2 V5 q: N5 g3 Y. I- g' F
  458. $redis->zAdd('key', 10, 'val10');2 h: s( ~) J$ ~
  459. $redis->zDelete('key', 'val2');2 Q' L. Z- ?6 B( H% X: o5 u3 y3 B5 c
  460. $redis->zRange('key', 0, -1); , J* Y2 M6 E" f2 W, V$ V2 C% P: F: M
  461. / w, f  m* g1 @
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    ) i* b7 }) Z- ?4 w: }2 T$ O
  463. $redis->zAdd('key', 0, 'val0');& ?  K1 Q# W; v2 X9 {5 g
  464. $redis->zAdd('key', 2, 'val2');
    7 l' v& H7 I' N4 s* P* p3 s# Q. l
  465. $redis->zAdd('key', 10, 'val10');, P% ]: \% s8 F' q# `0 |/ F+ ]
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);; Y/ o6 U" p# i
  467.   y" ~( f; x; y. S) }% ~- C
  468. zRangeByScore, zRevRangeByScore' c% ?! |; ^. b( Z2 X
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));3 j; H( d! f! ~
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    8 k1 Z! W% ~7 {( F+ }+ {& \
  471. 1 S  l$ i, n; b" ]$ R2 r0 K: p
  472. zCount
    / L( u# @  l  k
  473. $redis->zCount(key, star, end);
    . l- ]2 F/ k& m* t6 B9 a1 {
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    / d: x! M$ K6 h6 s9 }' W0 @. T4 \# c8 u
  475. 3 n- X7 Y- b1 z! h8 s( s1 x
  476. zRemRangeByScore, zDeleteRangeByScore
    1 E9 |8 p4 C8 ~3 ~
  477. $redis->zRemRangeByScore('key', star, end);' S; x  d5 ?# o1 x3 _0 M
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    3 r% S  Z- Z( u4 O. L$ m/ S& V. z
  479. 7 p8 Q( L# d/ z8 e  Z
  480. zSize, zCard+ F! l1 n' d& m- d! T$ m# u
  481. 返回名称为key的zset的所有元素的个数
    9 n0 }5 h: k! G6 M# r4 b! t

  482. 9 W: D5 T, C# c- F! _1 F7 |3 z
  483. zScore4 @# }: I. T1 f8 _" F# Y, n4 B
  484. $redis->zScore(key, val2);! B( y0 v6 v9 K& {3 v
  485. 返回名称为key的zset中元素val2的score+ }& ]! O# D# @6 O
  486. & o9 D( x# g9 [* T
  487. zRank, zRevRank0 c% i" k0 c$ C4 z: z9 q6 |8 p! \
  488. $redis->zRevRank(key, val);( j. h0 {- [1 ~2 m; g; {* _
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    $ N8 D2 r8 ]+ `; l  j

  490. , \- w; M! B+ l/ @  j- L3 T
  491. zIncrBy
    % t: e, i6 u( m5 n" s* H5 P
  492. $redis->zIncrBy('key', increment, 'member');+ R8 n, ^8 G( H5 Y2 E+ }) _
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment4 b' s/ \2 X% g! B: L$ M

  494. , K- c: }* j, S4 G, J8 m
  495. zUnion/zInter. P# c3 m/ v; s5 G( W
  496. 参数, h' z* c- {' n: ~1 j( N8 K
  497. keyOutput3 d# y9 u4 A$ x. d; B$ |+ E+ D9 X
  498. arrayZSetKeys
    8 S/ Y+ l- C8 g7 l3 z
  499. arrayWeights
    / w# ^9 ~4 [" N& k6 X4 M% P
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion., X) `6 f8 j) [, j, y5 `! L
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    8 c  T% n' n: ]
复制代码
( ^$ m. z' h# b0 A. n5 R
* @9 ^/ C* O* a- N
8 z! h/ j$ h2 S1 B* X

1 g% w, E( ~  Z2 l) T) z9 c' d- y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    7 X, R9 m2 H9 u! Q6 v
  2. //连接redis服务器 6 t6 i# w: X$ e3 Y0 E! P
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 23:15 , Processed in 0.125186 second(s), 19 queries .

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