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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    4 _& J- @7 ~- Q" h
  2. $redis = new Redis();  ; Y$ X: m0 ~2 |
  3. $redis->connect('127.0.0.1', 6379);//serverip port3 z1 Y3 O3 E; Z, c2 Z) H
  4. $redis->auth('mypassword');//my redis password
    - d: N( m5 M/ Z
  5. $redis ->set( "test" , "Hello World");  : N% Y: Y8 g- Q6 }! |' U" Z. b
  6. echo $redis ->get( "test");% m( W6 m8 o6 ?  `
复制代码
php操作redis函数封装
  1. /**& o: k% b) @  Y7 R( G7 c. J3 @
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数  v* e% t/ u, R9 U/ Z# e/ G9 ^, f: J( q( ^
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi- u% k- r3 F  F( V1 f+ o+ b1 A  d* u# U
  4. */$ I# G. p- e3 K: s
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    . w$ l& q0 b9 Y6 ^# U
  6.     if(!$key||!$value) return false;" D% `; N8 [. X0 d, ~/ h* p
  7.     $host = $host?$host:getenv('REDIS_HOST');
    5 R3 p0 q0 b5 {3 q' D
  8.     $port = $port?$port:getenv('REDIS_PORT');
    ; f: ]. B. Z  @; r  _
  9.     $redis = new Redis();
    0 l' J; h) m6 F- Q
  10.     $redis->connect($host, $port);
    & k4 f$ P7 g! v% ~$ y5 b. s( E
  11.     $value = is_array($value)?json_encode($value):$value;+ V) H3 u0 B; p
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    4 a, k& I4 `4 K- I
  13. }
    ) l5 A9 y" D8 l3 @6 A/ U, p
  14. /**
    : A/ J6 p" [  J' L4 b1 y1 C
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi* Z: M* i9 J* L/ e! D+ ?3 l
  16. */
    - @& q9 X1 ?0 z- }3 W8 D
  17. function RedisGet($key,$host='',$port=''){
    8 b1 Z6 y9 e) f$ J+ q* r
  18.     $redis = new Redis();; P9 h9 W, V( V7 v% l
  19.     $host = $host?$host:getenv('REDIS_HOST');
    1 |- B, O4 m$ I& e/ l
  20.     $port = $port?$port:getenv('REDIS_PORT');: F1 y& F" k0 w) ~
  21.     $redis->connect($host, $port);9 n1 V: w6 x% }; a
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    ( E; D7 A$ r) T1 ^; Y
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);8 \- u9 [+ F0 Y& [9 s
  24. }
    # `( r  {! S6 J+ {2 {/ D# K$ E
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了! Q  @& m+ Z; W! \
  1. setex 带生存时间的写入值
    $ p$ v3 y* ^* j$ }0 s8 ?
  2. $redis->setex('key', 3600, 'value');
    / Z* U* r9 o$ G: o2 m0 Y
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1- f$ Z7 k, M0 B0 @0 _  H
  4. $redis->setnx('key', 'value');; Z+ j% Y3 S2 [+ Z, x
  5. 返回已经删除key4 X# j7 [. [- p1 H' b3 L9 R$ s
  6. $redis->delete('key1'); 成功返回1失败返回0
    " \/ _0 S2 ?- J1 \0 l7 O; |
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回09 X5 V: Y' X& M3 J0 A
  8. 查询生存时间
    3 i" i4 J8 h' _4 L; O" J
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    4 w, H% m% H1 W0 b- h' n, Q# e; Q% D& a
  10. 同时给多个key赋值,同时设置key0和key1& y7 V' B6 D% p2 `7 ~3 ~/ A
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    + U8 W* D% [( K( ]6 _! R
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值0 @/ i$ J7 q& l( F' I8 r# q) @
  13. $redis->incr('key1');
    $ R' z( ?3 |% G- Q
  14. $redis->incrBy('key1', 10);/ o! _8 k) g: @0 E7 I: b
  15. 减法跟加法一样; R+ k+ C! T0 d* o( T+ Q3 j% J, g
  16. $redis->decr("key1"); 减少1
    / t& [+ M9 ~2 |. v. h
  17. $redis->decrBy("key1",5) 减少5: B3 R$ h' K/ T- C1 w4 s' J
  18. , }% j, L, P  h0 `% _( z, U
  19. list相关操作,连表操作
    2 H% S, W3 {: s4 D3 g, ~+ K/ q9 T6 l
  20. lPush
    / _' g7 ^: l& W- T9 K6 @
  21. $redis->lPush("list", "888");
    : K( X* e2 r* P
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    7 `+ d! s" ?2 |
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式! S' p# f6 p, P+ ]+ v. N3 t
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    6 j$ i  m5 y) W% b
  25. lPushx/rPushx! T4 H7 u$ D9 c
  26. $redis->lPushx(key, value);
    - ~9 }! Y# }6 S9 p" C
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加: {$ w' P. Z( E; E. e$ Q

  28. % {4 a1 o) Y/ ]( t/ S, a
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    5 s; ^& O* ^% [- y
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key$ G4 U  U" Y" \/ L7 ^0 H
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1; Z, W8 R- e, u! `+ z9 q5 Z
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序1 R! a: Q( Z, `4 \( s
  33. sadd s1 zhangsan. L, G) }& j) w2 Y! @3 w. o0 Y& Q9 _
  34. sadd s1 lisi" e7 c' m. p, J) c4 q" `
  35. sadd s1 wangwu# n* T5 U1 \8 O, h
  36. sadd t1 yangxingyi( w( c& B/ i: w6 i
  37. sadd t1 lilei7 h* I1 b; \3 Y3 k0 \4 l# a) t
  38. sadd t1 zhangsan
    6 y1 Q' v. U. A
  39. smembers s1 s1的所有集合内容
    & j* f% y# V* K  W8 N- I5 Y
  40. sdiff s1 t1 s1有的,t1没有的,差集4 H8 b1 m/ V3 {, `# ~+ _" C) p3 r
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    + J0 w$ a8 c- W& n8 a
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    6 i! t3 i' D" f! D
  43. spop抽奖场景,返回集合里面随机的数
    7 c; s$ N+ i8 c+ p6 R- x9 P
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了  |8 l& d$ z; B% J/ X
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    ) g0 B. n6 s: W- R7 D9 H. }
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
      l9 q9 r" ?9 e5 G; c. z
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    9 {' q- q- _) V4 [; o
  48. $i = $redis->srandmember('s1');echo $i;
    ( Y; G- X: T3 }+ @- c
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false- F0 J; y6 H  i7 S! Q
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false) M- ^! a1 b6 f3 e

  51. ) @% w: P" t0 `4 B( v$ N
  52. zadd key 2 value 有序集合2 s( S( R% b2 Q
  53. zadd y1 1 zhangsan;4 R0 V8 `, n+ W8 @4 j) {6 G
  54. zadd y1 3 lisi;
    1 {  N. Z: e6 I/ c! G2 e
  55. zadd y1 2 wangwu;
    " _6 f' n4 `1 w. ~% d$ ~$ e: A; p
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi$ D0 P6 q9 K( L1 S, y! `! K
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    / E" q2 r8 K* A9 w, k
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    " f9 D; M2 B5 g# m: o% s3 r% i  d9 a* N
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    ( e; `8 U) T4 e4 \  g5 Z4 e1 X
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的* [* u& n0 N; T0 `8 h+ U
  61. 无序就scard,有序就zcard,有z没有s
    ! l+ x+ A9 ~* |) |6 `8 c; X6 y2 _
  62. sInterStore, Y5 ^9 z+ ~4 Q, @6 c& `; A
  63. 求交集并将交集保存到output的集合7 m) t, z1 T/ ]+ R* n
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')0 R: G7 e6 ^4 b9 m
  65. % j  v3 ~# M2 P+ \4 B& h( F5 N
  66. Hash操作% D7 m# P0 \5 n  ?( Y7 K5 _
  67. hSet6 P0 O% x( {9 Z, [
  68. $redis->hSet('h', 'key1', 'hello');$ O/ O% j8 [8 I2 g  B% _
  69. 向名称为h的hash中添加元素key1—>hello
    ( x7 V6 X* T8 T$ Z
  70. , M  j  q4 D  z1 v$ |$ P9 K
  71. hGet8 R8 O( J( q' a- w) ?
  72. $redis->hGet('h', 'key1');
    # F, l: U% [. N/ N. z# _
  73. 返回名称为h的hash中key1对应的value(hello)8 c) _& v! P* z) `0 m
  74. 1 q3 X" y) z  A0 q3 I
  75. hLen
    " K+ O: H: ?0 |* l1 ?- T. u+ e' \
  76. $redis->hLen('h');
    4 c( O% j: U4 m
  77. 返回名称为h的hash中元素个数1 a8 R- w! f% N3 j2 X; j4 }& V3 l
  78. 8 w4 k4 @7 U2 o; N3 J. [
  79. hDel$ T6 o! L! ?( w( @' F" X" |
  80. $redis->hDel('h', 'key1');6 `+ g: M5 O1 Q/ w- D0 R! b- s
  81. 删除名称为h的hash中键为key1的域
    7 w( _3 p4 }/ C% |2 I7 j" Y  Q

  82. 9 L$ f! s8 f. u& Q/ ~
  83. hKeys/ S5 [2 H: n) P
  84. $redis->hKeys('h');
    $ R9 |8 N& @( z! r, M
  85. 返回名称为key的hash中所有键
    6 v2 [- m4 k1 f6 o
  86. : `7 h: F1 b7 m% b3 ^6 b
  87. hVals+ X  z6 C6 H) u3 [+ m0 l4 D
  88. $redis->hVals('h')
    ( @+ z$ `1 l. m5 }1 y- K
  89. 返回名称为h的hash中所有键对应的value
    1 G& j3 `3 W/ ^, D! J- I& p
  90. # v: P0 Y, \, k
  91. hGetAll6 s* j$ T6 L: d3 t) I  ]0 M
  92. $redis->hGetAll('h');5 N6 ~0 }# Q( K% Q  X% Z& Y5 e2 t
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    7 N) c7 Q! j7 `) X% X

  94. : O: F( Z" k. l
  95. hExists  Y+ P. u+ h1 g% t# Q7 d. |9 i
  96. $redis->hExists('h', 'a');
    & H& g/ l8 Q$ D5 k, S3 z% a" m
  97. 名称为h的hash中是否存在键名字为a的域
    5 Q3 M7 Y6 S5 j1 _" n3 g8 K

  98. & }, u0 y' p. t( O
  99. hIncrBy; Q% k& h! U) t% Q
  100. $redis->hIncrBy('h', 'x', 2);
    + X( m( X) r/ f# X2 `. P
  101. 将名称为h的hash中x的value增加2/ B4 z% t8 {8 e
  102. ! e% M/ J& K* S/ N+ a; d: c9 m2 p
  103. hMset
    9 y+ i1 m& G2 j
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    : F3 k$ E9 v& G3 V, n8 }
  105. 向名称为key的hash中批量添加元素
    ! \# n( q. a* b" _

  106. 0 g3 T" I. j0 s( v2 f3 r
  107. hMGet" n5 k2 J+ d# R* E
  108. $redis->hmGet('h', array('field1', 'field2'));
    - ^7 H9 ]: ?% B6 {: N  m
  109. 返回名称为h的hash中field1,field2对应的value
    , z; r; q2 G& Z1 e1 S& ^# Z
  110. 4 S. I# [4 q: x0 m& T: F, d
  111. redis 操作相关4 _" i! p: Z; e6 l) f4 X5 x  ~
  112. flushDB/ X, s+ R8 e& Y
  113. 清空当前数据库
    + P% s- b$ C8 b) G: y

  114. 6 Q6 o  E- {# Q4 [+ ~1 H
  115. flushAll) [' ~& y" p, y; f5 I
  116. 清空所有数据库. f  l; V1 f4 I' H. Q& `7 B
  117. ; y- j; O* d9 k; S3 m
  118. randomKey! m4 M5 E, Q' T/ F; ?( g. k
  119. 随机返回key空间的一个key* M( k* R8 M# H7 Z/ N3 e( Z8 W
  120. $key = $redis->randomKey();& a* Y2 d8 N9 C" |
  121. $ H  E* {+ q) j! q+ B
  122. select$ v1 I: m/ b& k7 W9 E& w! Z  w/ C
  123. 选择一个数据库& Z* A2 x* b3 G! l! j. x! ?+ W3 ~
  124. move
    ; e8 D& m: Y9 ]$ t( x# l
  125. 转移一个key到另外一个数据库
    % ~0 V% [0 a! ?! y9 h
  126. $redis->select(0); // switch to DB 0
    / X# O9 ]7 _3 U5 X
  127. $redis->set('x', '42'); // write 42 to x
    * q$ z; F: b/ t% g# e; |
  128. $redis->move('x', 1); // move to DB 1% p; {6 w; E5 w2 D, F
  129. $redis->select(1); // switch to DB 1
    ! Q! f$ c$ w( ~9 D
  130. $redis->get('x'); // will return 42
    / [2 C: i$ ^3 k3 E

  131. , `9 e% {7 R  Q& I: v- T# G$ U
  132. rename, renameKey
    $ K9 r4 j/ q3 y( K1 h
  133. 给key重命名3 O7 I4 y2 B0 x' h
  134. $redis->set('x', '42');
    ) ^9 u: j. E1 m! \0 Q
  135. $redis->rename('x', 'y');2 a% d5 \) C* g6 x
  136. $redis->get('y'); // → 42
    ; N8 y% j& F; [) F
  137. $redis->get('x'); // → `FALSE`0 j( D) Q' k% f& K' V  ~* ~% H6 i

  138. 8 @" w. [% @3 V- q: y, k6 e
  139. renameNx# h3 T5 N, V$ D4 M  _
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功# S' @* _8 t  l) o1 c
  141. " }- n. E% @0 j& |5 _7 |  X
  142. setTimeout, expire
    & N1 I5 R" m$ I) B- B) Y+ X
  143. 设定一个key的活动时间(s): W9 _* L+ ]. S" {0 Q
  144. $redis->setTimeout('x', 3);
    1 o% C. R' N( p9 r6 ?" g
  145. 2 g4 n- R$ b6 K1 e; z
  146. expireAt3 k, U/ K" T6 Z
  147. key存活到一个unix时间戳时间
    * @4 \! ^) n, l% O4 Q' V' g
  148. $redis->expireAt('x', time() + 3);
    ( b$ M" A4 [# J; V' G

  149. 9 y$ g4 a# d- V
  150. keys, getKeys
    ! N' ^! h7 Y; C
  151. 返回满足给定pattern的所有key
    : R$ \: h6 Y# V/ i. j
  152. $keyWithUserPrefix = $redis->keys('user*');; R3 d' E! N0 h1 Z

  153. $ P$ Z* z0 R3 w# V/ X2 I7 |
  154. dbSize7 `& {# M$ b$ P" K
  155. 查看现在数据库有多少key' w" b5 Z4 H1 L1 U8 b- G
  156. $count = $redis->dbSize();* Y& P/ a/ v* n/ B/ l+ P

  157. 5 b& C7 J/ V' K" ?, [% k& w+ K/ M2 N
  158. auth! o# q+ e$ _; P/ t, R
  159. 密码认证; c# g# U! x/ u' h* {+ V! ]9 [
  160. $redis->auth('foobared');# A. W8 \8 P$ M* R
  161. ; f$ p  p$ A" o6 s7 L7 R* B
  162. bgrewriteaof
      t; f# t- r* J$ D6 d& J
  163. 使用aof来进行数据库持久化) }; v, f/ P. A* Y
  164. $redis->bgrewriteaof();
    . ?5 V% T7 X7 a! d& |* ^0 _+ l6 G
  165. 0 u& E) N: z8 ?& c' B9 o( a# R
  166. slaveof# V* O! K/ x* W) }' m. A. z
  167. 选择从服务器
    # y; i% g! n1 n0 y4 ~9 @  ]
  168. $redis->slaveof('10.0.1.7', 6379);
    ! F- C1 O' X4 `  B8 p6 A) U

  169. & g1 A' j  Q, y  h7 m! z
  170. save; X1 V7 ~! B! ?. F8 A& l' q) u( U
  171. 将数据同步保存到磁盘
    8 y1 L  Z5 {( r/ [' `) k7 ~
  172. 9 u6 S; G2 L" R
  173. bgsave
    , {  A* R! M2 G8 Z
  174. 将数据异步保存到磁盘
    9 X; N7 h0 Q9 ]. @
  175. + V+ T" s! I# c, L; G# }( F
  176. lastSave1 A5 [/ T2 U4 P3 t5 m
  177. 返回上次成功将数据保存到磁盘的Unix时戳" [% y2 _# m  m& {* M8 d

  178. : r, A  t( o1 f6 Z* h9 o
  179. info$ T8 P, S5 Z, I" o+ N
  180. 返回redis的版本信息等详情
    ( W, Y' g) `7 {7 @" c) Q. x6 y

  181. 4 @' D4 x' m; G) a# q  U6 P
  182. Redis::__construct构造函数) c1 u6 S) s: R  [1 `+ ^* c+ Z9 r/ l
  183. $redis = new Redis();! |! W  U* D: `: @4 g$ i+ s7 m1 H
  184. ; q6 X/ O: `+ q3 W" e8 K2 l
  185. connect, open 链接redis服务
    $ V2 K) i8 d! J. j
  186. 参数( a7 V3 u6 f$ a0 K( G5 B
  187. host: string,服务地址% o# ?8 w8 t. |$ _; k
  188. port: int,端口号( K+ q0 d4 \& z4 E3 _- [+ ~
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    * [! u; _) |" P4 W3 [' P, z
  190. 注: 在redis.conf中也有时间,默认为3005 i+ J* w/ r/ B, _2 R# ^# \
  191. . H  ^$ K4 y* O9 }
  192. pconnect, popen 不会主动关闭的链接4 t9 `  T+ {+ ]
  193. 参考上面
    0 g& @% f( A* a" N& ]
  194. - s/ G& a* O$ C3 z. ?
  195. setOption 设置redis模式' A/ S" v1 A6 |) ?3 S1 v3 W
  196. ) \! ~5 T7 N: l$ t8 \( `5 g
  197. getOption 查看redis设置的模式$ P: F) Z7 X+ x) p

  198. ' Y$ r4 a8 S8 n, }
  199. ping 查看连接状态
    ) H, b& M2 ~7 |6 ^1 u7 r

  200. ) _* d7 [/ g4 N% k7 ^
  201. get 得到某个key的值(string值)
    9 m2 T8 n) D  r
  202. 如果该key不存在,return false
    4 J1 T; W. |9 z" n5 g
  203. ! U8 r+ s; k& k) W: e/ M
  204. set 写入key 和 value(string值)
    " x6 u7 k% `+ v$ ~8 n* A  R
  205. 如果写入成功,return ture0 R; z5 w9 F" Z$ Z$ E  E4 I  Y

  206. - N) V# g2 N3 C0 ~/ d
  207. setex 带生存时间的写入值
    1 E0 P  Z- M$ d8 i. i& s/ N: C
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    9 _, d! y4 O; h' z2 Z" U, k

  209. 3 F* T  ?; u2 I7 _- d/ t
  210. setnx 判断是否重复的,写入值
    8 q7 N6 s4 }0 {
  211. $redis->setnx('key', 'value');# T8 X1 n7 r* A$ {, A
  212. $redis->setnx('key', 'value');
    3 U  L: e2 r+ z: R5 Y2 O' ~
  213. $ O% c9 F7 N$ x& T# N* V; W
  214. delete  删除指定key的值
    " N  _# P- p" [  Y
  215. 返回已经删除key的个数(长整数)( {$ `4 M$ x8 P" o# R
  216. $redis->delete('key1', 'key2');$ S( T9 m: O8 A4 F. P) b5 _
  217. $redis->delete(array('key3', 'key4', 'key5'));
    8 |& D! s. Z) O

  218. # F) e4 @- n  H, _8 ?- o3 q
  219. ttl
    6 H% y7 ^$ \7 ]) g) K1 a
  220. 得到一个key的生存时间
    5 z2 ~5 z- Z6 O- \/ i: D( y0 z
  221. 1 H4 Z# g3 g  C3 W: Z
  222. persist
    + H4 \/ {2 X% _* ]" |' A. x
  223. 移除生存时间到期的key! f' P0 J9 H  s2 ^* M$ P
  224. 如果key到期 true 如果不到期 false
    0 _2 ^4 V' E2 V0 q  i0 [: ~
  225. 6 ]" z, ]3 D% T- j" f- }! l/ Y" c8 Y4 k
  226. mset (redis版本1.1以上才可以用)  m; ~  |; W* o) t$ ?' q
  227. 同时给多个key赋值
    8 C7 _' z7 C6 \% r! G
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    1 A+ F. |( p8 h6 V( n- o' Q
  229. * P# [! k" C. p! }
  230. % }% a4 R+ w. k. |0 v4 r  m" j
  231. ! P- W3 {1 |; z3 \- ]
  232. multi, exec, discard
    7 r( M8 m: b8 d. X
  233. 进入或者退出事务模式1 @, X6 f: |8 Y+ E
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI; }5 Q/ x1 W1 o  i
  235. Redis::MULTI:将多个操作当成一个事务执行
    2 e* _, u3 c$ D' Q5 C
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证+ y5 m' r; Z; ^3 b
  237. discard:删除一个事务# |+ C8 c1 q: N) q6 X) K1 N
  238. 返回值# J5 x, B. W- [5 o9 N7 @
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    ! i" D; I1 J0 x# g3 O
  240. 7 ]0 q0 Z& P  K3 a; M- s& y: Z& ^
  241. watch, unwatch (代码测试后,不能达到所说的效果)8 B1 o! n+ L  i) s3 X2 ~8 \# _" h: \
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)6 @3 s0 _' M8 U4 R5 t+ f* M( e
  243. unwatch  取消被这个程序监测的所有key! z/ @. \5 s; X$ d
  244. 参数,一对key的列表  w0 K7 u, t$ I0 x4 M, ^
  245. $redis->watch('x');
    . ]' l0 g* X4 G9 V, f

  246. 2 i1 f3 F6 K8 s' J2 F* t8 Z
  247. $ret = $redis->multi() ->incr('x') ->exec();0 f- K8 p* v: d4 @, y) n% J9 U0 k( K
  248. 1 ~! S( c* W6 ~: S7 D

  249. ; U$ J/ _0 Z! H( N3 X9 p
  250. subscribe *
    6 ?1 o/ E& J4 I
  251. 方法回调。注意,该方法可能在未来里发生改变
      E  ?2 _. }% L' _2 d: L
  252. 2 p( w, I6 U  t5 s4 a! J4 B
  253. publish *# w! i: q$ {5 Q6 f
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变- {- [; E9 C3 f

  255. * u' y* n/ T: ?$ d+ ?* i
  256. exists/ K4 e0 }, s6 i# k; w: l
  257. 判断key是否存在。存在 true 不在 false
    - ?5 A, U/ h0 a, v* `6 {: g

  258. " B/ x5 w, Z, z7 W: C
  259. incr, incrBy
    & b0 \; ]% e% ~( E. t. S) f
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    & D* h% \1 p- {* O! k6 o
  261. $redis->incr('key1');
    , I) U1 _/ R4 l9 A7 M
  262. $redis->incrBy('key1', 10);! }) V) L7 G' l! K8 x

  263. $ r8 ~& @& I! _6 q1 f( M2 ^3 X
  264. decr, decrBy
    : h# E' ~1 y! C4 N$ h# h
  265. 做减法,使用方法同incr
    7 \  u2 P! m# F. D
  266. # K9 N2 q3 K/ m' ?6 X9 _, u- A
  267. getMultiple* `! r0 R* l2 K/ L1 j6 [
  268. 传参
    " }5 n  r/ I2 M% q1 _, G
  269. 由key组成的数组
    6 B& w+ m" X4 C
  270. 返回参数
    + `1 |: @0 ^" O$ \! Z
  271. 如果key存在返回value,不存在返回false$ {2 Q9 h3 U! R3 G: W
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    % ~* g1 F- U7 e. X, q: ]& r" S9 e4 q
  273. $redis->lRem('key1', 'A', 2);
    # S& o' Q+ a  K
  274. $redis->lRange('key1', 0, -1);
    8 q9 n& M' p4 p8 X/ v
  275. 7 C1 J* X( ?+ S; u
  276. list相关操作
    1 V2 v* M5 I, J3 C
  277. lPush
    * A! y( j6 N9 p$ f5 n% c
  278. $redis->lPush(key, value);
    , z9 m$ [& [8 [3 n# r7 C5 C
  279. 在名称为key的list左边(头)添加一个值为value的 元素7 C+ A- ?: a$ s3 d, C* X9 ^

  280. 3 A; ?# V. l$ J6 C$ L& y$ V
  281. rPush! ^9 `+ Y  O' }9 X9 C% o. l/ {; y+ h
  282. $redis->rPush(key, value);3 F  a% r% ?1 V
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    & Z0 }0 g9 F1 R8 A4 B2 y8 {$ k$ n
  284. 4 C$ y% v. L! g( i: K
  285. lPushx/rPushx
    # M- V* k% u' u3 e
  286. $redis->lPushx(key, value);3 p  f* M) R( o& l# m, q
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加0 L. M  }' _" k7 Y" p

  288. ; e9 {4 c1 l( v: U; O
  289. lPop/rPop
    0 J* _6 A1 M3 Y! \0 i  Z  M1 h
  290. $redis->lPop('key');. @( Y& ~* A, [) \) r  H
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素. l+ z1 S7 r2 }0 `# Z

  292.   A- j2 J. _, W+ U; }
  293. blPop/brPop) y+ r: H2 z3 \# E$ l+ H* _* o
  294. $redis->blPop('key1', 'key2', 10);
    + M- K, ]" \$ m* z9 a. ^# E
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    ( L6 e0 e, l, M
  296. ) C. Z" U8 f: J2 w$ o3 k9 W
  297. lSize
    % U+ m- h2 i! ]: P9 N1 [
  298. $redis->lSize('key');, ^9 M0 N3 e5 H( ?0 e
  299. 返回名称为key的list有多少个元素
    3 p% ^& X% V2 _) ~% l

  300. ! q' k. Q2 d  ~
  301. lIndex, lGet2 R( q: x& r) [, c  y
  302. $redis->lGet('key', 0);
    " Q' }+ r1 e" s/ D. T% \$ N4 M
  303. 返回名称为key的list中index位置的元素3 z) n; _/ t1 ?& ]) ]

  304. ' j& s" ~/ M( n9 ^
  305. lSet
    8 C/ z9 w9 s9 V0 d7 K! n6 Z
  306. $redis->lSet('key', 0, 'X');' j& w5 _6 |; v  u% [( U
  307. 给名称为key的list中index位置的元素赋值为value/ Z5 ?, a& \; Z8 A5 L9 F
  308. ( Y% B) N9 O5 p/ N
  309. lRange, lGetRange
    2 m$ p* F& L/ t8 N/ f+ L6 S
  310. $redis->lRange('key1', 0, -1);  j3 M0 v( W: Q* M- L
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)1 ?6 ?/ }( V# O9 v7 j+ K) G

  312. 3 J$ E) g! u1 u1 ^  ?9 o
  313. lTrim, listTrim! O% _' i: n5 ?* u3 _$ O" I
  314. $redis->lTrim('key', start, end);
    7 L8 ^0 ], g! t) j5 h# C6 t4 j
  315. 截取名称为key的list,保留start至end之间的元素1 a7 ^/ Z+ z. j5 n

  316. * a6 g+ u2 Y- V, ?2 v4 e
  317. lRem, lRemove3 ]- Q, ~/ s1 A0 ]% D! Y; k1 F
  318. $redis->lRem('key', 'A', 2);
    5 W+ s& T2 H! y" g/ v0 x& }
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ) E8 I! ]' O- R4 }9 g2 |( |

  320. " h+ Y9 ?2 L+ ?7 b8 I
  321. lInsert
    ! ~) \) B" h& D3 u
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    2 ?# M: g+ m' C) O7 V8 K! ]% 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');
    ( R; d4 c! h  P5 N' M7 S" j
  324. $redis->lRange('key1', 0, -1);
    ; C% Z9 \- x0 I2 I
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');% z6 q2 J4 H# \; y
  326. $redis->lRange('key1', 0, -1);0 w7 x- O$ e3 Q, l# z% ?# P7 _
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    + G, B# u) p6 h: \6 v
  328. 9 D5 I$ g; _1 o6 P% M; U+ o( `
  329. rpoplpush
    * K, z3 F3 H  S% _% _8 _
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部! m* R5 @' P0 e. C" F
  331. $redis->delete('x', 'y');
    6 c! I' Z* {2 u2 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'));& u& l3 J1 ?1 A& e. h! m& s) a
  333. var_dump($redis->lRange('x', 0, -1));/ A- f6 x$ n; ~  d0 T1 A
  334. var_dump($redis->lRange('y', 0, -1)); . m1 e) ]& Z1 ~" N8 b$ k8 Z( v7 |

  335. - \4 ^# k( M# C4 v+ y
  336. string(3) "abc"
    # _3 W- t' x- A- x6 V6 n* d
  337. array(1) { [0]=> string(3) "def" }
    % Y, t5 e+ F& X- J: n8 _( a
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    ; R/ f8 u- v! x9 Q
  339. , A2 d3 k- {( M; ?, J) R2 \$ ?
  340. SET操作相关: _, o1 e9 P+ V1 B' j8 e
  341. sAdd
    " }0 l. ?' x: D3 S7 l
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    " ]& f6 ^+ H0 A! u" `( c' J6 p2 x; t
  343. $redis->sAdd(key , value);
    ) C+ I7 e. K! s  I
  344. - k; r  _0 ?* L& w6 d/ L
  345. sRem, sRemove
    - Z7 k/ r8 @' B# l) B
  346. 删除名称为key的set中的元素value
    * t& R! H" @( a" O; Q6 Z# o
  347. $redis->sAdd('key1' , 'set1');4 |. x& q6 d+ B
  348. $redis->sAdd('key1' , 'set2');* n5 q- [7 e& C8 r
  349. $redis->sAdd('key1' , 'set3');
    4 N1 |0 S9 o$ h- U( P! {
  350. $redis->sRem('key1', 'set2');
    6 i- G$ |9 n, t" ?5 D
  351. 5 t( T% q3 e/ l8 C% s. o; e4 i
  352. sMove
    ) Z" l' S% l& Z8 q
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    - p2 H1 L' Y5 `0 ~
  354. $redis->sMove(seckey, dstkey, value);2 B# S9 D  D( Y
  355. ' S5 G* M$ T& Q  C2 s, G
  356. sIsMember, sContains6 Q' }7 |0 T4 O7 P5 ^
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false. W2 `* C; F$ w
  358. $redis->sIsMember(key, value);* S% k9 \; b6 o, t0 F

  359. 9 x+ K/ G6 c3 B; K4 _2 }$ z' \
  360. sCard, sSize+ n9 \4 R$ R0 T% E+ @6 F
  361. 返回名称为key的set的元素个数" k; Q2 g  o' z. B& H4 T

  362. 1 L; v# z- b+ E; T
  363. sPop/ f' X7 Q& H) ^7 [' Z2 B) i& l
  364. 随机返回并删除名称为key的set中一个元素
    + ^% a, [* O& b4 Z* ?( `* G+ H
  365. 2 P0 D5 T0 u: i6 j% P
  366. sRandMember  F4 k2 u" _# K4 R( S% j! p
  367. 随机返回名称为key的set中一个元素,不删除
    % E, {4 x: F3 A2 ^- F1 L

  368. ! R! n  F3 _$ L' C9 U* ?
  369. sInter
    / ]# e6 d) t& m2 m, x
  370. 求交集
    + M& E$ }3 C2 y& i9 H$ A
  371. " m, j( L* j, s6 R3 z% ~
  372. sInterStore
    . t$ s* s; {0 c/ T
  373. 求交集并将交集保存到output的集合* o8 C4 l4 V8 z- b: W
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    " C4 ~6 ~; w" O2 ^9 V/ H

  375. . b6 ?# Z$ w# O2 B) `6 j, D
  376. sUnion- y6 j5 \- s) C. I; f
  377. 求并集4 a7 L: f3 P$ U1 H% d
  378. $redis->sUnion('s0', 's1', 's2');9 |; }9 e+ d4 B+ c: i
  379. s0,s1,s2 同时求并集- @  E, s" `# D+ r/ i, m# e+ M
  380. 9 r7 F: z( t) |8 h# v- v2 v# C
  381. sUnionStore
    $ \9 T/ M& N* H7 n2 V& f
  382. 求并集并将并集保存到output的集合
    7 v( v% o/ y. {6 `3 i% C
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    + ^8 g- j7 g' B  y
  384. . i: q) _* p6 I7 k4 z
  385. sDiff' {! ~' g8 B: b" `  W/ r6 L
  386. 求差集/ ]0 {& A( C: |% A6 m& \

  387. / C2 C; z: a, w0 Q) b; h
  388. sDiffStore, ?, d  l! X( t: `$ D9 ^
  389. 求差集并将差集保存到output的集合
    0 \6 d& x8 K" p. e) X6 ]

  390. " L3 v+ j1 o9 F' a3 Q/ N
  391. sMembers, sGetMembers
    + j5 a) c! ?% a8 u
  392. 返回名称为key的set的所有元素+ d8 d0 u" z& X: M3 ~

  393. 5 ^! b4 {: A7 k% X7 `, T
  394. sort
    " K% D) K% c" \
  395. 排序,分页等+ j3 h, b1 x/ Q9 h  r$ t/ [1 i
  396. 参数
    4 Q1 T" t% D3 S: C, U
  397. 'by' => 'some_pattern_*',
    ) y0 u. H, t0 a: U: `1 o# J. R( S
  398. 'limit' => array(0, 1),
    $ @; U9 c8 v0 E
  399. 'get' => 'some_other_pattern_*' or an array of patterns,9 u$ q$ ^6 \1 ~( E  u; K( C$ x# n6 P
  400. 'sort' => 'asc' or 'desc',4 s3 X( Z4 [0 c( b" i
  401. 'alpha' => TRUE,% ~  i3 y  s- a1 u3 j+ f! z. m
  402. 'store' => 'external-key'
    - L3 X" c3 {) b$ K
  403. 例子( G( T9 s6 m+ I6 ]
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    - g8 b( W; U  n) l, z- ?. B# x
  405. var_dump($redis->sort('s')); // 1,2,3,4,57 v1 [7 F" x) T3 C& j9 j
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1+ u' Z* k9 ]$ g9 G2 q7 G
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)58 Q+ q/ Y+ V5 B
  408. % G( T" F5 ?4 Q4 U- Y
  409. string命令
    # D$ C; g# x, }! H2 O
  410. getSet# N- I0 p0 L' e7 D
  411. 返回原来key中的值,并将value写入key" }( B1 Q! d1 H' z- W
  412. $redis->set('x', '42');6 J9 F) \/ M/ C' w/ ^, b
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'5 Z& J* S' R& p- m$ ~
  414. $newValue = $redis->get('x')' // return 'lol'( D; o% w7 @* M# G2 n! q0 T* N

  415. / k7 G5 y  N" c3 }! j' g
  416. append( }' L2 i5 J0 {$ L# p. m/ M0 z
  417. string,名称为key的string的值在后面加上value, z7 |5 J" y2 z
  418. $redis->set('key', 'value1');
    + _! E6 Z5 Q$ p. ]+ E1 n
  419. $redis->append('key', 'value2');
    - u; r$ _" H3 K$ }5 D
  420. $redis->get('key');
    $ _8 f; W- x8 E) P# X! P

  421. 2 V( K2 k6 c# u% s0 Z
  422. getRange (方法不存在)
    0 X: |. s( `% U; d5 n. [$ D- b3 F
  423. 返回名称为key的string中start至end之间的字符+ U: H  ?1 U- t
  424. $redis->set('key', 'string value');
    & V# T. ^8 H  Z  g2 A% E: I) A1 _
  425. $redis->getRange('key', 0, 5);
    / z# c. B4 G) |2 P% s3 i
  426. $redis->getRange('key', -5, -1);
    3 v' b( u! {% r: M8 B
  427. " }/ \+ K  L; O$ V9 a) u7 V
  428. setRange (方法不存在)% M0 z: Q2 N! ^- V
  429. 改变key的string中start至end之间的字符为value
    7 Z9 ^! P/ i8 g# \" u
  430. $redis->set('key', 'Hello world');# g2 Y; T0 @- {' {7 n& n) `1 l% g: @
  431. $redis->setRange('key', 6, "redis");
    - M: C" P3 b& g! |
  432. $redis->get('key');2 E. B) J* n9 \# P# t6 B6 H
  433. " n- J" @/ A9 B- R  n
  434. strlen+ e# T2 O* \! }/ @, ]: u6 c; Q, A
  435. 得到key的string的长度
    2 C9 `5 g% j1 D. K% a6 n
  436. $redis->strlen('key');2 F* ?0 B1 o7 v4 v
  437. - u9 C% i; t: w& j2 U8 _& W( z
  438. getBit/setBit
    3 ~2 _) i% i7 A9 \: f: K+ X
  439. 返回2进制信息
    + B5 Y% U- U8 Z! k

  440. " E3 o9 n8 A0 G/ J6 @! ]% i+ g
  441. zset(sorted set)操作相关. j1 c9 [# Z. k# a7 D: A/ Y
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。3 Q. U& E. R' L
  443. $redis->zAdd('key', 1, 'val1');
    0 H8 m3 r5 `& @, e  E% U  Y
  444. $redis->zAdd('key', 0, 'val0');; D# r7 ]' x) c( i
  445. $redis->zAdd('key', 5, 'val5');
    - U1 Y% X$ \' P: A0 i) ~5 i
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    7 C4 K1 ^0 }; r& [' S& l0 A

  447. 5 g1 J& s& W$ g
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    7 r4 x9 c7 K  N* X3 Q$ y$ b) c; k
  449. $redis->zAdd('key1', 0, 'val0');2 W" Q0 T4 K% C
  450. $redis->zAdd('key1', 2, 'val2');1 w0 d" O8 L2 ]- D! i1 R
  451. $redis->zAdd('key1', 10, 'val10');3 ^3 D) j! Z& t+ F" `' O
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    " |  H7 k( {% J- @) N% y4 D# z

  453. + t% p4 g8 y& n, f: [- W& X
  454. zDelete, zRem' o+ e' Z& E% z$ N( U
  455. zRem(key, member) :删除名称为key的zset中的元素member
    + k# H/ Z/ C! V3 ]! f0 Z! m/ A
  456. $redis->zAdd('key', 0, 'val0');0 v1 J$ l5 @2 \1 {9 j8 V6 }
  457. $redis->zAdd('key', 2, 'val2');
    * L2 [0 a8 ^; d- w; E- k, v
  458. $redis->zAdd('key', 10, 'val10');/ |; r! l2 R! p2 m# V
  459. $redis->zDelete('key', 'val2');
    - b; |, E2 ~5 y
  460. $redis->zRange('key', 0, -1);
    9 v8 J0 _9 O% G3 t/ ~

  461. " `) k, _* Z8 N0 k
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出4 }2 U; ]1 \2 h
  463. $redis->zAdd('key', 0, 'val0');( }# A( ]% d2 C3 m' |! |3 \
  464. $redis->zAdd('key', 2, 'val2');: }0 X; n' W3 E6 x& Z% B" s( X) z
  465. $redis->zAdd('key', 10, 'val10');: Z( _/ k" U' Q
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);, O% s/ T( |0 F* ?4 b

  467.   N3 N, n) k' T6 u& [
  468. zRangeByScore, zRevRangeByScore" r. H4 e4 T' J9 k3 v% B6 u, z
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    , ?7 _$ q* r  u" K
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    2 {  V: P; p2 m' g  b
  471. $ c* f  X5 u: n, Z
  472. zCount
    4 ^/ f4 `- A" E$ F4 l. \" G9 A4 C
  473. $redis->zCount(key, star, end);* c2 z& t. p5 D2 l# e* p' X
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数$ Y- H! L% F8 V. l3 i
  475. " f, ]  ^) @6 m2 r. Y3 n) D
  476. zRemRangeByScore, zDeleteRangeByScore) f; ]( R5 Y+ }$ s7 w1 _* ^9 X
  477. $redis->zRemRangeByScore('key', star, end);
    ( H' f5 f: [6 q0 P& U! }+ Z
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数0 _8 [' v* k) a' z
  479. 5 j8 J) N) u0 y0 k6 s; X/ x
  480. zSize, zCard
    . q* j- Y0 j# |: h0 c) I
  481. 返回名称为key的zset的所有元素的个数
    # x' \6 B2 c' i% F
  482. 3 V- C3 A/ y/ T# [
  483. zScore
    ( V% Y9 X0 i; x
  484. $redis->zScore(key, val2);# ^2 u* h2 j! P) \
  485. 返回名称为key的zset中元素val2的score
    0 \8 s5 F# i9 ]" e

  486. * n: D( T1 h+ s5 t
  487. zRank, zRevRank) y4 V3 i. c) E; r& @1 E" P
  488. $redis->zRevRank(key, val);% m1 B; X# s9 ^9 p6 b+ m2 Y
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序) H" U4 n% V& a! z

  490. & D* S5 N1 ]" B. k
  491. zIncrBy
    5 j3 F' D2 b8 D% b# B: a8 C5 I2 w/ q6 v
  492. $redis->zIncrBy('key', increment, 'member');
    4 e1 q; G. U" w$ d) [1 E
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    0 _5 W; r' J( F9 u
  494. . E, ]; u7 J$ \8 M7 t; }0 b* z
  495. zUnion/zInter% R7 R* \0 V% {
  496. 参数8 I! G/ G1 {+ i0 M2 B3 E
  497. keyOutput9 g' L$ s$ T9 ^$ x: U4 j
  498. arrayZSetKeys4 ]5 W( g% t6 q1 ?  u# g! R" M' ?" F
  499. arrayWeights
    * Z# v( |7 a% ?: a7 F0 p2 f
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.' a0 B) V, t% f
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
      X( E0 R" q' M. f3 a- C% f' j
复制代码
: d0 V' f. d. Z/ x8 p

, \2 k6 k; u" A+ c  P* X1 g' _! {1 A* W( J6 i
6 L$ y- E/ y% a3 D8 J& H* p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); . n" J% G4 v; N; {6 `2 D
  2. //连接redis服务器 . D$ Y2 H) G6 n' S: s
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 20:18 , Processed in 0.069911 second(s), 18 queries .

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