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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    ' L& _6 q. }& J5 s; f5 W4 l1 ]
  2. $redis = new Redis();  3 Q6 `0 r% r& w1 I. J. `# J
  3. $redis->connect('127.0.0.1', 6379);//serverip port% I! k" Z+ W2 _3 b  [7 m( B$ K$ U
  4. $redis->auth('mypassword');//my redis password
    1 W% ?; X3 c) [2 W0 Z
  5. $redis ->set( "test" , "Hello World");  
    3 C2 J9 M. o3 d, H0 F& n
  6. echo $redis ->get( "test");
    5 X8 N# r  I3 k2 x; e
复制代码
php操作redis函数封装
  1. /**
    1 _4 n# ]. Y4 _$ Y, o) G6 t/ [
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数6 ]+ R/ X5 U1 h1 U1 z) }
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi! D- K+ f. T3 ?/ i
  4. */
    1 M' \  H( g6 F/ o8 F; J$ O/ e
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    5 O6 b+ i; t. R3 Y: l  ~+ E
  6.     if(!$key||!$value) return false;
    # h( t5 E3 O! K/ E
  7.     $host = $host?$host:getenv('REDIS_HOST');
    ! p& X2 V  P7 i: \% ?# g
  8.     $port = $port?$port:getenv('REDIS_PORT');/ K: t2 O0 ~& s
  9.     $redis = new Redis();
    ; C+ h2 {9 X( I# b+ J  h
  10.     $redis->connect($host, $port);
    7 `4 u! G0 N4 c% @- r6 K
  11.     $value = is_array($value)?json_encode($value):$value;
    / }; ~5 o! s! A8 s+ Y0 B/ }" M# Q
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);0 q1 J' X" G5 a* z
  13. }; ?  m0 g0 e, d% h6 Y
  14. /**- w, h- x2 M& O% d2 K
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi* |) \" B& N5 X! }2 E2 @
  16. */
    3 ^  E# H$ l" i! o3 Y
  17. function RedisGet($key,$host='',$port=''){
    . Q% K; y* Y. i6 W& n7 S! P: U
  18.     $redis = new Redis();
    ; A; M/ e) }4 X- V7 o. j$ G# B2 E& v9 r
  19.     $host = $host?$host:getenv('REDIS_HOST');
    * a( v$ Y# R5 z: U" ]5 A
  20.     $port = $port?$port:getenv('REDIS_PORT');5 m/ O; w0 Z- e; Q3 c  m- U- }
  21.     $redis->connect($host, $port);
    * b' R; ]2 ~1 d8 v" q
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);! E. E" K1 L. o1 c/ y
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    2 @- F3 ?$ W$ X2 {/ E, Q  r
  24. }/ _1 m2 c+ @8 O3 U( g2 g
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
6 R* a& b2 f- G3 x/ U
  1. setex 带生存时间的写入值! R* H" M) ^; W  i
  2. $redis->setex('key', 3600, 'value'); 4 ^" o  c% O; A/ V7 F9 A+ ?8 _
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回18 Z' Y3 C/ C4 Y3 ~- w
  4. $redis->setnx('key', 'value');
    / Y5 c3 N7 M7 F6 J
  5. 返回已经删除key
    / z8 i: w' a( W# G+ J& S
  6. $redis->delete('key1'); 成功返回1失败返回09 ?' Z) k' ~; u1 K5 w
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    . \/ h& s4 W: f* \% v# y
  8. 查询生存时间+ D; o& u% x* F1 Q, c% `
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    8 }) j$ C* M7 v# j( G' e- q
  10. 同时给多个key赋值,同时设置key0和key1& z  ]1 |/ ?' m+ L; D6 M$ A
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));& F2 M3 ]0 @  e- R3 S
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值. w, s" G; m. I$ S2 T" S. a6 s/ a1 n: N
  13. $redis->incr('key1');5 D& E# X6 x, @' d' a9 v+ N: C
  14. $redis->incrBy('key1', 10);
    7 o- C% v9 b; ^: M- F' d$ |& T
  15. 减法跟加法一样
    0 S% ?4 Q, r& L. b1 _
  16. $redis->decr("key1"); 减少1+ g- f9 j- e1 h2 t, K+ n
  17. $redis->decrBy("key1",5) 减少5
    6 A) q) c8 f, O- ^
  18. % y7 Z* k& S, K6 h
  19. list相关操作,连表操作
    6 {. x% H7 `3 h3 ^
  20. lPush6 C" _( m8 h- O/ }
  21. $redis->lPush("list", "888");
    + U+ F/ N' t! P. w: Z
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    $ F5 s) J  F8 x6 J$ W7 `8 D
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式% O/ Y* J5 w* A8 K- b# H; K) F. q
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    2 G* h, {7 P3 h' D- ~, {3 ^5 j, O) @
  25. lPushx/rPushx
    # K. m" J" |  q" Y; r9 a* \
  26. $redis->lPushx(key, value);
    + \) D& U' y2 a# ?, a3 K( T
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    3 o5 s) G/ `1 J. x6 j- H

  28. / b  h! e9 u* N: A: ^0 y/ e# Y
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
      {7 o+ Q/ ?/ X5 I% i/ }
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    + B$ c9 C0 W7 L) ]. `
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    3 p5 \: y; s+ @. d, \5 e3 P
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    # v3 e6 ^1 i" m2 Z8 r7 ~# i# S
  33. sadd s1 zhangsan
    6 @: q8 E, ~9 S! q
  34. sadd s1 lisi) [3 L; A7 q; Y+ P
  35. sadd s1 wangwu( w' o5 Z% R: j; ?8 F" Y
  36. sadd t1 yangxingyi
    6 q/ X0 q7 K6 H  d. J- G
  37. sadd t1 lilei  t$ C6 Y3 B7 _2 S: {
  38. sadd t1 zhangsan$ W& O+ b& v" J/ E. F+ v, N
  39. smembers s1 s1的所有集合内容
    3 @9 Y4 c& }1 C8 B: r4 u
  40. sdiff s1 t1 s1有的,t1没有的,差集
    ) Y% L- c0 \0 Y! X, l
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式) z8 @/ p  D" T7 j2 V1 `1 d
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的. y; t2 D3 h7 q+ [
  43. spop抽奖场景,返回集合里面随机的数
    . \' ^+ Z2 u* A3 f7 i& L9 Y2 ^
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    & d& a" c+ H& A9 _* Z1 d# ]) Q& E& }
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数, B5 c8 W) p  y* `
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    6 b; {; i( `3 P2 E& V
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    # n5 w7 M, w" p: {% k$ U  X0 f
  48. $i = $redis->srandmember('s1');echo $i;  V" o! v3 H: N$ \* ~! E. P9 v1 w
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false) a! w5 t+ `# H
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    : m) l! j( F5 x- K0 S' y0 ]+ V

  51. 6 N% Z+ C/ x% H$ ]" u6 H8 v5 _
  52. zadd key 2 value 有序集合
    0 y! N$ K7 d+ m2 H( c* j; Q4 s
  53. zadd y1 1 zhangsan;+ b2 T2 f9 x- e% e# W+ {
  54. zadd y1 3 lisi;" B+ P+ O& P+ H( j" M, G
  55. zadd y1 2 wangwu;
    ! q# f: \& c* F
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    % W5 E" V+ z( [- v
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);% ~9 j- f0 V" a' C3 x% a
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键% ]) f+ D$ [7 s; L
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    8 @9 F  q/ Z) V4 h. E9 C8 U$ C" H3 f
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    3 U1 \: I5 l6 k: L- T
  61. 无序就scard,有序就zcard,有z没有s
    9 L9 U" ?% K. u1 f* J8 T2 i" M' k6 N
  62. sInterStore
    + D+ Q6 a) K$ V1 [3 B. z5 J+ z8 A+ _
  63. 求交集并将交集保存到output的集合0 p, Z/ ]0 Z3 k% T- e. S6 v, I
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    # u. |) Q) H: y4 w; D

  65. ! H' n) u# E5 }/ N6 M
  66. Hash操作
    ) L! `1 y0 h) `
  67. hSet7 i7 B! m, |& i, F6 u  f
  68. $redis->hSet('h', 'key1', 'hello');5 b; ~# p3 q* f  d( i" q
  69. 向名称为h的hash中添加元素key1—>hello
    ' B& P8 e6 ?: V; s1 q9 f
  70. . |- c* {, p  j9 Y
  71. hGet
    6 E- |. X; [0 j  I- m
  72. $redis->hGet('h', 'key1');
    ! u6 I3 \, M& v% x% L
  73. 返回名称为h的hash中key1对应的value(hello)+ s! k+ u: z9 f. S" W

  74. - k( h* O9 Z# Y. t' N  l, }! ?
  75. hLen
    # W( g# R1 X' b
  76. $redis->hLen('h');& u% {9 j. {0 I. S- V5 u
  77. 返回名称为h的hash中元素个数
    + ]  H  P& d1 M1 I4 \9 H5 \9 W

  78. " T2 g1 M2 `; W1 x6 k/ v' h
  79. hDel
    7 |7 x: i5 Q/ A6 Y1 i  w+ n
  80. $redis->hDel('h', 'key1');
    4 w' m' z4 A. p6 g2 N, @
  81. 删除名称为h的hash中键为key1的域
    3 z& r  _$ a" `" |+ t3 ^4 D4 F+ E
  82. 9 T  c; M5 f1 j) E( |  r
  83. hKeys, e8 z* |4 |! i- |
  84. $redis->hKeys('h');
    6 ~7 W# z" N% R3 o/ J) T
  85. 返回名称为key的hash中所有键
    , O" B- J' e/ @5 k$ c
  86. - }! @7 J; N; [* C4 a$ k; a8 _, ~: H
  87. hVals
    , x/ g4 e+ J( c1 k# {, v
  88. $redis->hVals('h')8 x( E1 d0 ?4 ]7 u9 u# m4 @' U, R9 z
  89. 返回名称为h的hash中所有键对应的value
    % C/ T3 V* t- ^- b! F" ?. Z
  90. ) o9 ]6 Y9 Q: J3 W1 Q7 W, A8 @# v
  91. hGetAll; d0 |8 i0 z1 `# {$ l0 g, K5 O
  92. $redis->hGetAll('h');  o9 W# U# w$ p# n! B5 R0 I" E: b
  93. 返回名称为h的hash中所有的键(field)及其对应的value! y3 I+ R% q  x

  94. , I7 ^8 R8 m1 a5 n  v% W' k' l' s
  95. hExists6 V" I5 G: L6 o2 i# G
  96. $redis->hExists('h', 'a');, W2 o0 \/ P  b
  97. 名称为h的hash中是否存在键名字为a的域4 w' X# B+ K! Q4 h0 q! @! j
  98. * D5 L0 ~4 H) P, e* y
  99. hIncrBy
    6 g4 M2 [. `" F7 f+ b
  100. $redis->hIncrBy('h', 'x', 2);
    " N% c7 }6 d6 J$ o! g
  101. 将名称为h的hash中x的value增加21 a$ R" D: _% E( J  t3 d
  102. # o5 ~) M" X- s
  103. hMset3 F" F+ z  P6 C* z! Q! z
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));' E* C5 U1 o. U& m/ y
  105. 向名称为key的hash中批量添加元素
    0 C; b& n7 B% V5 {- z
  106. + X9 ?7 o4 X# M6 S3 h0 r
  107. hMGet
    , \6 f$ N) O; Y+ J
  108. $redis->hmGet('h', array('field1', 'field2'));
    " N  i& G) Z) c- j* G& `  i
  109. 返回名称为h的hash中field1,field2对应的value
    + m/ ^3 P9 ~3 ]
  110. 3 q; M% U; H5 i, q7 m  Z* p
  111. redis 操作相关
    ! }5 ~1 J# e4 p3 U2 l
  112. flushDB) s1 h; t5 w2 a% D- V* ]4 `
  113. 清空当前数据库
    " ^! h. q7 T8 a0 E( V0 i$ a
  114. % a9 v- }+ \6 d' r, O( T* Y. z
  115. flushAll
    . M, Y7 \3 {% F, W- _' T( e1 E
  116. 清空所有数据库- g. v' ]* x! r" c- h: w
  117. : M" Y. n8 o3 u, b5 W; U
  118. randomKey4 W+ U, D7 H* \% C
  119. 随机返回key空间的一个key0 d' U+ e, f- }/ _
  120. $key = $redis->randomKey();% P! O' a8 K( y/ ^* X9 [; o: J

  121. 9 j: L: J; n5 s6 y5 B
  122. select
    " ~$ M3 Z" O0 V* N, K& S
  123. 选择一个数据库7 l0 S% }' U# `) t
  124. move( \) D* k0 F- r( X4 X
  125. 转移一个key到另外一个数据库
    : E% o# |* n3 ^6 t$ e7 f: {& d
  126. $redis->select(0); // switch to DB 09 n6 B  r" }" T: f) ?
  127. $redis->set('x', '42'); // write 42 to x
    ) B8 x" E3 l# c3 L' p1 T3 T
  128. $redis->move('x', 1); // move to DB 1
    , p- H6 x5 k0 r8 J7 |
  129. $redis->select(1); // switch to DB 1
    / w, J7 Y$ [9 g/ l- K
  130. $redis->get('x'); // will return 42( x" _' V- K. K9 }) q# h" s
  131. 8 ?% y% u3 V: N7 g
  132. rename, renameKey
    / G8 Q7 R: z' h3 B- `2 Z
  133. 给key重命名
    ' M, A% B; A9 H0 T8 m+ c/ j
  134. $redis->set('x', '42');0 l% y$ p/ [( ?8 {& k
  135. $redis->rename('x', 'y');
    % u+ c+ z3 X* x9 k* w  [, I" r2 @
  136. $redis->get('y'); // → 42* X6 m! @3 q& A" e2 m8 y
  137. $redis->get('x'); // → `FALSE`
    * U6 \8 S- M- X0 D9 z, {  R: n

  138. ; `- L. _6 W) h+ |6 l2 K" @" I/ q
  139. renameNx& y8 c6 n6 N6 ?; g/ C
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功: C% m1 F' C  p; I0 C# ^9 `

  141. + o2 R. F: p8 y) ~& W  c; x2 w
  142. setTimeout, expire7 v5 m' x7 \2 @3 B" Y, X
  143. 设定一个key的活动时间(s)
    3 Z" v# y- D2 S6 D3 B+ H8 Z! D8 h
  144. $redis->setTimeout('x', 3);
    6 J8 h) I9 t; R. j2 M
  145. 0 p% q: B! W7 N. ^; Z8 L/ _
  146. expireAt
      n3 q. W, @4 P! Z, N- c! Z- d
  147. key存活到一个unix时间戳时间# M5 s1 a* L. {, J  \, L
  148. $redis->expireAt('x', time() + 3);- q1 [8 i: n6 Z2 O9 C

  149. ' Q* c: e, K9 M5 p: z1 t+ j( U
  150. keys, getKeys6 ?! ]; E! D8 Q8 \
  151. 返回满足给定pattern的所有key
    2 I& ?! E. ], \1 B
  152. $keyWithUserPrefix = $redis->keys('user*');
    , Y. V; h1 G% }; c% B1 P
  153. 0 h' o% }; Y- C" a3 P4 u
  154. dbSize) M8 g  ?$ }, k
  155. 查看现在数据库有多少key
    ! O* Y" v+ u6 C4 t( ~
  156. $count = $redis->dbSize();
    + O0 z; k: l" s# h" u% H- k
  157. " M: J: X# w$ o+ q$ M3 K$ E
  158. auth
    5 B- k) u4 @8 O: _0 Z9 ~4 R. k( U. g
  159. 密码认证
    $ y* L5 ]7 K7 m( X$ s3 U* X
  160. $redis->auth('foobared');: ~) v. d9 {- f0 Y" @
  161. + v& i; R4 |: s' O( W0 P9 J0 T! H
  162. bgrewriteaof
      ?$ Q- n# y/ O" a+ S* E; f( k
  163. 使用aof来进行数据库持久化
    ) f+ ~1 A8 N4 C* m/ {
  164. $redis->bgrewriteaof();
    ' w/ {6 C& q% t4 x

  165. # T7 K1 x$ m) G. n& E& C; t
  166. slaveof
    ( ~8 Q1 T, z/ e: x* |
  167. 选择从服务器
    # f8 n/ c3 [& L7 }& e
  168. $redis->slaveof('10.0.1.7', 6379);7 b- _: Q' x1 U/ d
  169. ; v! x. m; C) l" R" {. A
  170. save
    2 G* ^5 z! A- E, S% h; [  C
  171. 将数据同步保存到磁盘
    8 s) r3 w4 Z& W; ^) ?2 ]
  172. . s, s% K8 Z0 D$ h
  173. bgsave
    5 Z  X' k) `  h! N- H
  174. 将数据异步保存到磁盘
    9 j! E" M% ~3 I2 a

  175. $ j" q. L/ g  j  N( [+ C
  176. lastSave
    ) y0 M2 H$ j" z) F7 o& g
  177. 返回上次成功将数据保存到磁盘的Unix时戳" E3 f5 C' Y2 r. r

  178. ! Z$ o/ ~5 }! n
  179. info
    8 S9 w4 i/ ~+ i9 a2 m' S, |4 [9 T
  180. 返回redis的版本信息等详情5 A( }) x7 c6 G7 `3 G$ q

  181. 1 @5 v; v/ n& n) W
  182. Redis::__construct构造函数/ ^& w- ]8 n4 D/ V
  183. $redis = new Redis();% P3 h# a+ c2 Z0 I7 X

  184. 5 z/ }# \+ T- [2 \# u1 c/ V
  185. connect, open 链接redis服务
    ' m8 \) |! q' F: K4 O) I
  186. 参数
    9 U* m+ Y2 G, A9 ~) W
  187. host: string,服务地址
    0 C) w+ ~7 ^" [
  188. port: int,端口号
    5 y; m( L6 N! w( R
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ; w* }1 f+ C4 r% J2 w
  190. 注: 在redis.conf中也有时间,默认为300, c. b9 w/ e3 E' G. i
  191. , M' L; ^5 e# g& D0 W
  192. pconnect, popen 不会主动关闭的链接4 g- e% V6 J+ ]
  193. 参考上面9 H4 ^% a9 c* u9 x
  194. ) @. m1 \5 w1 m  Y% O% _& ^
  195. setOption 设置redis模式5 W6 W6 d" C- r% `9 u8 f7 g# M# Y
  196. " ?: s$ u5 k, r6 a2 ]! l7 r# z
  197. getOption 查看redis设置的模式
    & {( K- ?, C7 D

  198. $ G6 j/ q4 K$ T! d, h2 m6 E7 d
  199. ping 查看连接状态5 F9 u- s8 s6 K
  200. * W, j1 V& E$ z7 H4 z
  201. get 得到某个key的值(string值)
    ; m- V; o5 {( c" W+ E; D: @
  202. 如果该key不存在,return false: U8 g0 o- L8 \' m

  203. - O/ }) e) `2 Q9 H( I
  204. set 写入key 和 value(string值)9 |! V( h8 l. ~; c& j% S
  205. 如果写入成功,return ture
    # D1 o" J9 u3 M3 Y( U

  206. 6 L9 Q6 G: [3 I
  207. setex 带生存时间的写入值2 a$ c! w$ A3 D' P1 J
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL., O- g$ }! l( @5 Z
  209.   t( s1 v: J; i8 W5 D. U5 H
  210. setnx 判断是否重复的,写入值
    6 `$ t& y) Q3 d1 F
  211. $redis->setnx('key', 'value');: L5 q" c0 D3 O4 ?
  212. $redis->setnx('key', 'value');6 J4 ^, O! n1 m+ _" f4 f

  213. ! J& Y; q4 r/ @1 j. I
  214. delete  删除指定key的值+ B5 B& K# c( G* y- u/ |( {% I& L4 }
  215. 返回已经删除key的个数(长整数). |' W2 l5 j' I: f& Q
  216. $redis->delete('key1', 'key2');0 a$ O! g3 P/ M* Q
  217. $redis->delete(array('key3', 'key4', 'key5'));- e# @! J  i* A6 M. b

  218.   }$ q. c8 x0 }* L2 T- _9 X3 p  S1 q
  219. ttl) J0 x9 b% f0 a
  220. 得到一个key的生存时间
    * A9 s- v' i  w4 ~- |4 U
  221. 3 x( \; Y0 y) M9 ?& j
  222. persist
    9 p6 Y( d' h( ~- o; a8 J! H
  223. 移除生存时间到期的key0 N  ^1 r' U: C4 H! u
  224. 如果key到期 true 如果不到期 false8 I) c! h1 M( a' _/ U, S

  225. 1 B# v$ y: Y: t; l% J$ K
  226. mset (redis版本1.1以上才可以用)1 U+ A# j0 I% V* B# d$ u
  227. 同时给多个key赋值( i* Q# w  `7 K& ^: \( i5 C* v5 J, p2 h* Q
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));$ v, Q, c0 ]% U! Z- {2 v
  229. ( x7 r- |) f6 z
  230. & v& x7 D# ^, S
  231. 9 x) \& q* b, z0 I
  232. multi, exec, discard& |1 L7 j4 m$ A8 P! Q
  233. 进入或者退出事务模式
    3 j) P4 ]: ]* r8 M0 b- Q
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI9 o8 T: n% f% y# \' q# ?. s
  235. Redis::MULTI:将多个操作当成一个事务执行
    1 e1 ~; f/ {/ _: h7 O( r# J
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证3 L+ U3 |7 q6 E1 {7 F' j, g, v
  237. discard:删除一个事务
    ; u  I: U7 E6 ?
  238. 返回值
    ; W0 ]& V9 W8 a: k+ i( ~
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    ; r: H9 x; l1 ]4 W' q5 M# j

  240. ! X; |. B3 i+ o9 B1 @8 k- ?5 I
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    4 J" W6 Y, n. N2 S5 h% u" M
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    : t, O1 [/ H' h7 s0 J0 t
  243. unwatch  取消被这个程序监测的所有key
    7 K- Q0 Q, u7 Y7 P+ n! I1 j
  244. 参数,一对key的列表$ C% `6 X4 I; S; `. e1 _
  245. $redis->watch('x');5 D5 H* \; \: K1 a; L; U6 e
  246. " k" D. ]9 {0 W+ H6 x' ]
  247. $ret = $redis->multi() ->incr('x') ->exec();
    2 I! o/ D" E8 z5 O7 d

  248. 4 B6 r. c- o( M1 a6 L! l0 f0 }

  249. 9 d% C9 u3 z7 y: W
  250. subscribe *
    ( Z) a! _* s- p$ i+ h" X$ j
  251. 方法回调。注意,该方法可能在未来里发生改变
      o$ y  l8 s/ m. u+ k# N  y
  252. . A% L2 M+ m) l& }! N$ K
  253. publish *
    & m) B: K! R: Z3 w* e. m% K9 z
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    - a: |  g" b$ N! ?* c- `

  255. * _6 [5 f7 e* l' f) ~
  256. exists
    1 q" `) t" t4 |3 j, ~4 x! t! P
  257. 判断key是否存在。存在 true 不在 false' J3 ?5 b- u  ?# O9 x
  258. * O; _* `8 |  g8 T
  259. incr, incrBy
    1 ^. j2 J9 C: w% i
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值3 _9 j/ a* ?( [" x' U4 ?3 _% C
  261. $redis->incr('key1');
    7 d* _9 Z0 k- {/ w
  262. $redis->incrBy('key1', 10);3 h# F6 I" k" Z& F

  263. 1 L  ^4 {0 F4 X5 q
  264. decr, decrBy
    ! K/ ?7 s9 c* T  a
  265. 做减法,使用方法同incr
    " j+ O: Q4 Q) h5 _: [
  266. 1 U3 i( s+ R& _! u) b
  267. getMultiple
    $ i0 h: G7 h5 C9 a
  268. 传参% f3 k$ `* \; h* q3 z) N
  269. 由key组成的数组
    % ]# W0 i  _2 v9 ~
  270. 返回参数
    - z5 t6 L, Z, K5 Q3 ~; ~. w- c
  271. 如果key存在返回value,不存在返回false
    ( z+ D( \$ Q! a6 E) C
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));7 w4 r3 F$ h1 W
  273. $redis->lRem('key1', 'A', 2);
    . b; z9 f' c9 c
  274. $redis->lRange('key1', 0, -1);/ i0 j! C$ l1 G: z0 u5 }

  275. * b- W: }$ F4 G% C
  276. list相关操作
    ! x2 N/ r% S/ r7 w
  277. lPush5 _; R+ }- N6 r- w# g
  278. $redis->lPush(key, value);
    , y% l8 p; R3 D* R0 F$ T
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    0 q5 ^, M" v4 _0 y1 Z6 i
  280. # X2 i: G- Y( k& j& W% Q
  281. rPush
    9 T6 f7 [. Z+ r/ @4 i
  282. $redis->rPush(key, value);$ V* Y5 r- ^. p3 Q' d1 u' t( i# ?
  283. 在名称为key的list右边(尾)添加一个值为value的 元素. h8 \: @& J" F: ]; J, S

  284. 4 B% `/ S* g4 J5 @0 _8 f8 H$ Z
  285. lPushx/rPushx6 w5 K- I) F1 O! S) V
  286. $redis->lPushx(key, value);
    . o/ z. A: J3 L- E
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加* Z  _( \- h* }5 b

  288. 3 i* J+ m4 O$ l, @- n, F
  289. lPop/rPop
    2 t# ~5 f& b/ {7 M4 N- i( u( q+ q
  290. $redis->lPop('key');/ m9 U9 _! R, H5 z3 H+ B
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    7 Q: l. \# M2 k8 k# ~8 ]- M
  292. , e9 u% I# K8 I$ N3 @$ A& f$ T
  293. blPop/brPop
    * J& v. K! o3 Q! @! X
  294. $redis->blPop('key1', 'key2', 10);
    7 w, w9 x+ Q! J1 m6 z$ R
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    ; {  T2 m# T, A$ X( `, l+ v, F
  296. ( T2 e6 H; m' o3 ~5 Q( L. j/ N
  297. lSize
    8 ?4 _* H/ Q, O- b2 g5 q
  298. $redis->lSize('key');( x  k% V3 B: }
  299. 返回名称为key的list有多少个元素+ n' x/ y0 ?# i# Z7 ~

  300. ; u4 G: w. l6 y5 p4 I9 q8 Q  I5 ?6 z
  301. lIndex, lGet% g: {+ m3 n9 }/ X# Z
  302. $redis->lGet('key', 0);, f0 Z6 [1 W( d% H+ O/ [6 }: ?
  303. 返回名称为key的list中index位置的元素
    % j5 L: D5 Q7 x9 q. X8 P3 r
  304. 3 A0 r2 o- c  F) T, R3 x2 q
  305. lSet
    9 {2 o2 t& \" q
  306. $redis->lSet('key', 0, 'X');
    2 m4 I, E6 G# d0 n6 h' y
  307. 给名称为key的list中index位置的元素赋值为value
    & ~  @9 t$ _$ F; j

  308. 3 H% W6 K0 l( {5 c7 x* p! r
  309. lRange, lGetRange
    0 {7 g7 u1 g4 {9 e/ ^
  310. $redis->lRange('key1', 0, -1);
    . g9 b6 D; U0 }. O" U& X
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    5 Q9 s, k4 _6 ?( X2 }* X" U; P9 m

  312. ) N% G6 l" Y/ `# e
  313. lTrim, listTrim
    / K- X% ^! o3 T/ w; ]; c
  314. $redis->lTrim('key', start, end);
    * U8 [4 `% F3 i' a
  315. 截取名称为key的list,保留start至end之间的元素
    0 t2 \7 {4 `! x4 X
  316. 2 t5 E; }3 V' D8 D
  317. lRem, lRemove
    0 J+ w2 R, J; m& y
  318. $redis->lRem('key', 'A', 2);! Q& M, D. i/ m) W' G$ a8 i
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    0 u2 x/ c: H4 X1 [  @
  320. 1 c" ~- O  o; q0 T# y8 |
  321. lInsert; O4 M2 `, `8 [8 l
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    % U" l; i- E% s2 b6 y$ T
  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');# W2 N8 v; ~$ N( F
  324. $redis->lRange('key1', 0, -1);
    0 Z7 x* V7 T+ V* ~' H# E
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');  s, T' m8 o  l" y
  326. $redis->lRange('key1', 0, -1);
    4 M, }, S) @, V! w8 u1 a
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    ; H6 E* k* F3 j: _3 K1 B
  328. $ a/ `# l; k: w( m7 C
  329. rpoplpush- E( t! R- b- C) w. h' V
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    * S+ F  ]3 {3 ^  ~
  331. $redis->delete('x', 'y');
    1 ?6 j8 Q  j* b# T/ X5 v
  332. $redis->lPush('x', 'abc'); $redis->lPush('x', 'def'); $redis->lPush('y', '123'); $redis->lPush('y', '456'); // move the last of x to the front of y. var_dump($redis->rpoplpush('x', 'y'));; i& h# o" t- M& |) V- j
  333. var_dump($redis->lRange('x', 0, -1));
    9 t; j5 |! e  p! Z' w9 U3 u1 M
  334. var_dump($redis->lRange('y', 0, -1)); : C% i" X+ L, T' r

  335. ) z6 J4 \- h& F+ A. E8 J0 C1 I  M
  336. string(3) "abc" 1 c; c/ J  M4 f) m8 p2 @
  337. array(1) { [0]=> string(3) "def" }
    & j8 ~: f6 k* g8 H$ s" x, F, n
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    * t. J3 i+ V" g' o" G
  339. ) `9 S6 ^& Q9 N1 x3 E
  340. SET操作相关) t7 I' ?4 j" z9 S% F3 G* u& H
  341. sAdd
    ; Q0 }- E& [% {5 P
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    . ~( X$ o( T7 @; J$ j" ?
  343. $redis->sAdd(key , value);: i9 n7 N. [+ `5 Y1 i& P8 _
  344. 1 j5 s0 u! D7 |9 D9 S9 s4 w
  345. sRem, sRemove
    8 l. i2 Y- Y+ |1 [4 @  }: e) ?
  346. 删除名称为key的set中的元素value3 t* F. b9 ?$ C2 F) [  c2 J
  347. $redis->sAdd('key1' , 'set1');1 i( k( Q7 H9 G+ w8 v2 v$ i
  348. $redis->sAdd('key1' , 'set2');/ [2 e; i, e9 {
  349. $redis->sAdd('key1' , 'set3');
    6 V( p+ i6 H( J4 O/ U! [3 F, d' _
  350. $redis->sRem('key1', 'set2');0 j8 l, |* F$ a% u9 |
  351. ; G9 p5 k  v/ d: ]& P
  352. sMove# ~+ V! y; G: X* E- m& h% W
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合+ h: `. N* Y2 d
  354. $redis->sMove(seckey, dstkey, value);
    1 e6 S# n" M8 n) G- ^5 {
  355. 4 ]9 @, E# w$ j  d0 s
  356. sIsMember, sContains
    " F  [, f+ D! B! Y9 Z/ A; S/ f
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false- A0 ?" p+ p5 G/ x4 `
  358. $redis->sIsMember(key, value);
    ; J% p3 f8 C0 r+ ?

  359. 9 Y0 K3 g# F5 {! s2 y% o
  360. sCard, sSize
    8 S( F2 [0 `* h2 k5 Y% m0 e% m5 N: o
  361. 返回名称为key的set的元素个数$ ^$ s. M$ Y1 S& V) T  X
  362. ) d! s1 a' W7 _& h5 F0 N9 ~
  363. sPop
    5 m# {2 k/ J- N2 q" N
  364. 随机返回并删除名称为key的set中一个元素
    8 n1 N( z! M( a/ {

  365. 5 l: K1 ^1 R. ~# w7 M- y$ b6 X
  366. sRandMember9 \. R# b; V2 D9 q2 _  s3 p  h
  367. 随机返回名称为key的set中一个元素,不删除  Z$ a" G$ O5 V" a4 C! W

  368. 3 @* I  W( s  h% j
  369. sInter9 g& _1 s! N. C% ^4 B) g* y6 Q
  370. 求交集
    5 K$ z" l" o1 m/ P! V

  371. % G7 j5 l& H6 K7 \% p
  372. sInterStore
    % m# M7 q7 e8 S  ^" ^# e
  373. 求交集并将交集保存到output的集合1 M1 b! i5 D. y( D0 d4 q9 V! Q: ~
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    8 F, e. S# O* A
  375. + o9 I; J: y0 p* F- ]* w
  376. sUnion
    , Z3 g! b& A5 N
  377. 求并集
    / Q6 [5 m" X' g% Q
  378. $redis->sUnion('s0', 's1', 's2');
    2 Q) t. C: v" P- K% E) L& \3 k8 Z
  379. s0,s1,s2 同时求并集
    % y. Q' N. F% Y6 c
  380. , }- m* C0 M( P. ^, X
  381. sUnionStore7 k. X) C- z! R$ h- s  v6 F
  382. 求并集并将并集保存到output的集合* g2 B* P7 {5 W
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    ! d. _% s- A! c

  384. ; B' ^; w& E+ o
  385. sDiff6 D/ d8 [; f  w$ ^) l
  386. 求差集2 ]$ A7 W" N: ~" x( w) {+ u3 X
  387. 2 S  `8 i% B/ f1 [% B# ]( @* o
  388. sDiffStore3 x/ J9 G9 L8 K7 `
  389. 求差集并将差集保存到output的集合
    % c6 E& U4 y- R; d* ^" x

  390. & u+ f) r% y( e. ^
  391. sMembers, sGetMembers4 w# H; A+ V8 g4 \. @
  392. 返回名称为key的set的所有元素
    % l$ b/ j5 v+ m
  393. ; X: b8 T. n: f' k1 }! i7 {$ F
  394. sort. F- I6 W/ E! L2 G. T! t# t3 @
  395. 排序,分页等
    2 J6 \# _' }7 B, W
  396. 参数; p. a$ d3 Q# \) f( K- M
  397. 'by' => 'some_pattern_*',
    7 V" @9 A( a8 B4 n. _
  398. 'limit' => array(0, 1),
    ( X; x9 N9 a" w' O
  399. 'get' => 'some_other_pattern_*' or an array of patterns,5 B7 H4 k: [( p! k. F# u
  400. 'sort' => 'asc' or 'desc',7 M, P9 c; S& ~+ G) d6 k
  401. 'alpha' => TRUE,! ]5 ?" A! f/ v  d0 [5 x+ R
  402. 'store' => 'external-key'4 \* \7 _* M0 b( |
  403. 例子
    + N2 r* l+ E; W  G
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    , \. X( r8 @' V. b, Z9 B
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    ; J& q0 V# V5 x4 l# ?7 ?+ R. x' K
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    + d& Z# W; V5 w- n
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    9 |) E% F. R( d# u2 I1 Z0 s1 O( }
  408. # l3 N- c" g5 Y
  409. string命令
    0 T2 P3 [3 F8 ~: z4 k" e8 _
  410. getSet' s) s3 @( r" [$ j/ m
  411. 返回原来key中的值,并将value写入key8 s( |9 n  o2 W  ~. X
  412. $redis->set('x', '42');
    . u. A3 G& K8 }$ T. v
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'4 R1 r. N' |" o1 n( w
  414. $newValue = $redis->get('x')' // return 'lol'
    0 P" p6 [2 Q% H7 [: A
  415. # w- E. T% {" H1 p) K
  416. append& r0 j; \* ~% d& a6 C4 `9 ~4 N
  417. string,名称为key的string的值在后面加上value$ i! y% i" a3 n& h
  418. $redis->set('key', 'value1');
    - }5 j  X# W( W, H! R4 |: D# `2 k
  419. $redis->append('key', 'value2');8 J/ K# u4 Z  p# {8 t# {! |
  420. $redis->get('key');
    3 c* o+ _5 c" n/ G" K# D

  421. , j+ l" S+ T/ _' D
  422. getRange (方法不存在)
    / |* Q' _7 G9 R/ w- Y) ?! Q
  423. 返回名称为key的string中start至end之间的字符
    + n+ U3 p* L) m/ e# e& m0 S
  424. $redis->set('key', 'string value');  ^3 V. P6 @9 g6 R
  425. $redis->getRange('key', 0, 5);. }0 |) y. p9 H( c
  426. $redis->getRange('key', -5, -1);
    $ ]( x- V0 r3 l* j7 @
  427. $ _2 w; ^% D3 [2 L, m
  428. setRange (方法不存在)/ k! g$ @& v7 E
  429. 改变key的string中start至end之间的字符为value6 k% e; e: t- ~$ X0 [) Z4 B8 E
  430. $redis->set('key', 'Hello world');
    & l1 C  \2 ~- P2 ^) k
  431. $redis->setRange('key', 6, "redis");1 r' I% x. _) O  K5 Y$ L
  432. $redis->get('key');' P, @* N& s" h

  433. 2 d- O7 v% I0 f3 T2 Y
  434. strlen, f3 _8 u) M7 O. u  V6 k7 N1 v
  435. 得到key的string的长度  u' g  }' C2 e" n: f
  436. $redis->strlen('key');- d* n# b. v. Q# X3 Z+ J
  437. ) g9 L: q! S+ C
  438. getBit/setBit+ @; j) A3 E, N. g6 d# C6 M
  439. 返回2进制信息
    9 X6 y* d; i6 g$ r: q
  440. ' v6 Q( q% P) I# r# E7 O% c
  441. zset(sorted set)操作相关
    4 p" `  C( N. T4 y" E! _5 X/ B
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。8 C6 v' _+ v5 l. r" ^* G
  443. $redis->zAdd('key', 1, 'val1');* H# T0 r# d  N+ [; Z  o) B
  444. $redis->zAdd('key', 0, 'val0');
    # ^% @# }2 ~  \; D0 S" b% ]
  445. $redis->zAdd('key', 5, 'val5');! Z0 y- {2 `! d$ b
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    8 S, c/ r+ H' h- N

  447. 5 L; l' v' s/ ^9 Z* p% D
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素/ f& P0 U0 Z7 V+ Q
  449. $redis->zAdd('key1', 0, 'val0');2 A1 p% Z8 [8 {% M# G
  450. $redis->zAdd('key1', 2, 'val2');
    * y$ K: O4 v( U) N9 d
  451. $redis->zAdd('key1', 10, 'val10');  Y# j9 W! Q( e7 X  S+ l
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ( j8 H: ?1 Q( S" U4 J

  453. # d$ \1 |2 D; o# j# i
  454. zDelete, zRem
    ! c3 D. ~; T3 t* y0 m  d
  455. zRem(key, member) :删除名称为key的zset中的元素member2 |+ R6 ^8 K6 s6 Z. Q; V7 C5 J% _
  456. $redis->zAdd('key', 0, 'val0');
    % o+ q! X2 u# W$ e$ v0 w7 w4 Q0 w
  457. $redis->zAdd('key', 2, 'val2');
    8 O* D& N! j* t
  458. $redis->zAdd('key', 10, 'val10');/ T  U/ R+ i) M5 I" S5 n
  459. $redis->zDelete('key', 'val2');
    & Y; n4 x% h! y
  460. $redis->zRange('key', 0, -1); ' x& o5 l4 W: F9 v. \. l
  461. ; k0 D6 R" z3 F' a, d
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出! c. E* _  |; v
  463. $redis->zAdd('key', 0, 'val0');8 y! `6 ^- J4 E3 R$ [
  464. $redis->zAdd('key', 2, 'val2');
    9 e' J4 f- s- h: Q  }% I
  465. $redis->zAdd('key', 10, 'val10');
    ' y2 m2 I' P' m% P& n, H
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    9 X/ Q7 n) q4 T: |" ]- ~

  467. & r0 N2 r: j8 S' p; |4 a" p
  468. zRangeByScore, zRevRangeByScore, ^; F7 x& {! r2 ^/ y
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));# g" @( B8 Z1 {( \
  470. 返回名称为key的zset中score >= star且score <= end的所有元素8 c  H# c2 J0 r! |5 X' Q
  471. ( h* c4 ~* r4 y3 l7 W0 j. \
  472. zCount
    : t7 N. ^, n' b! ^! n
  473. $redis->zCount(key, star, end);
    & [$ |* ]) x8 P3 l# N8 ~
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数0 W/ n- C, x$ k, x2 t, W) T9 a

  475.   R2 y/ z* }* M; J' e
  476. zRemRangeByScore, zDeleteRangeByScore
    8 Q. S# T: @. P& x' n* O# S
  477. $redis->zRemRangeByScore('key', star, end);
    + Y; y2 ~  P# |" Z1 \
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    0 t6 g% m; t" g3 V2 f' \

  479. : p5 M; G) F7 W7 o! l+ g  r
  480. zSize, zCard0 G4 P. p& B+ J. n
  481. 返回名称为key的zset的所有元素的个数
    0 B, r2 l3 d& d7 g  D# z

  482.   ^" ^; s+ k% f1 R# r0 w1 N% Q
  483. zScore* S0 \. ]" a( j
  484. $redis->zScore(key, val2);; v5 S9 o7 z( f. z7 a, T4 P, L
  485. 返回名称为key的zset中元素val2的score" ]( C! t; c, J. B% H& }
  486. , ]6 G% @. O. n7 e3 W; x: Q
  487. zRank, zRevRank" F  Y" ]& Z# l& W+ L: q3 A
  488. $redis->zRevRank(key, val);
    2 e" a/ x8 Y# u2 y$ e$ D/ M7 M8 {
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序+ o. w3 @  V' g1 w: a/ k" y; n8 k! V

  490. 7 `- @- Y2 }3 S: h
  491. zIncrBy8 l+ y3 R' {- T
  492. $redis->zIncrBy('key', increment, 'member');
    & t; ?9 s7 e$ t4 I5 h5 D; f
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment( g8 b0 P* j$ e& u! [8 d
  494. 5 q4 Q! c: v9 P' m/ q- v7 @2 R
  495. zUnion/zInter/ U( u2 g* |: f2 o
  496. 参数& g6 I" B/ D% m6 O4 r& P4 B' s
  497. keyOutput2 C6 C5 w# ?  v) U
  498. arrayZSetKeys
    + B) A% X( f1 z$ X+ [  J0 ?
  499. arrayWeights
    $ H3 M& F7 a1 I  `3 K- Z7 H9 _
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    * ~& W& p4 Y* Z# T5 M" `3 Q. o
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    / N3 ^2 z& r7 Y- [( i
复制代码
% _. J3 x! g" ~& e) y% I

, n: Q$ l- n, |0 Y& ?! _% }4 P3 l5 J: _! O; e

7 c0 {! ~0 N  {0 u, q  i. L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); : X4 F: W4 i( Q# @0 c
  2. //连接redis服务器 $ b% }$ {: L1 G9 x% X/ b- R: L* a
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 08:12 , Processed in 0.059883 second(s), 18 queries .

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