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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    / M, e9 N: t! a8 b2 z3 m6 l
  2. $redis = new Redis();  . v0 f) G# n& o  m6 O7 y
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    3 T2 M5 F* D5 y
  4. $redis->auth('mypassword');//my redis password
    ; u7 s4 r6 j' K! ], `0 u/ S
  5. $redis ->set( "test" , "Hello World");  * v, v! j/ s2 b* Y$ P
  6. echo $redis ->get( "test");
    0 q' R+ \5 C: T+ X! L6 n1 ?
复制代码
php操作redis函数封装
  1. /**
    $ P# `# ?: W9 v4 w' B
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ) ]$ X: p! q* E: Y3 D9 w. }/ \
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    1 [8 J- b: U) t- @6 |
  4. */
    $ b7 M" |8 s2 V2 N& b4 K6 W; D
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    7 C2 W' b  _4 `$ P  s3 \
  6.     if(!$key||!$value) return false;
    8 F- f" ^# P# V! g7 B
  7.     $host = $host?$host:getenv('REDIS_HOST');
    0 M; x% b  e( ^9 }: b; m* v. O
  8.     $port = $port?$port:getenv('REDIS_PORT');
    3 w+ O8 z( ^+ J- ?5 }
  9.     $redis = new Redis();
    8 L, a: o& f) E, Y
  10.     $redis->connect($host, $port);9 w# u7 ]% h9 p, W
  11.     $value = is_array($value)?json_encode($value):$value;; F5 d9 T/ h4 _7 d
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    1 C4 S( j' Q  z  {5 G, R( r3 e
  13. }6 J' ~4 D$ z) {+ Q
  14. /**  y1 O% ?# ?( x* A! `& Z6 F' A
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi7 f" o1 z/ L  g2 G2 v4 n9 ~" o
  16. */3 q  p  Z% Y) V9 N
  17. function RedisGet($key,$host='',$port=''){: @, I8 w' n# k' }7 I
  18.     $redis = new Redis();+ ]+ D; S" [! ?% p7 k
  19.     $host = $host?$host:getenv('REDIS_HOST');
    2 M' z5 d/ t& J
  20.     $port = $port?$port:getenv('REDIS_PORT');2 o7 F( ]7 p* Z0 e* P* U, a  H
  21.     $redis->connect($host, $port);
    , M! s4 C* ]$ y* Z6 p6 A. E5 H
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);1 r( G/ n3 k! K* W; ^, i
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    - I4 t. h* H2 G( t
  24. }7 T2 ?5 i% a& w$ G4 R+ k
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
( x8 U8 I# @8 l7 ?
  1. setex 带生存时间的写入值
    & b5 o; |' \7 {: o5 A0 \5 H
  2. $redis->setex('key', 3600, 'value');
    5 ]4 A2 z0 m/ x" V" i! ^0 b
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1+ _- M* W: a# q, ~" A
  4. $redis->setnx('key', 'value');' j* {. @- `9 J* H5 C
  5. 返回已经删除key5 d+ D9 A' P; W0 d/ g
  6. $redis->delete('key1'); 成功返回1失败返回0# m& t4 _) |) N1 O# K" e
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    7 W6 Q: R, A+ n7 T' Y
  8. 查询生存时间
    7 \# {# l. G) t/ a% a
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)9 i+ P8 p" b0 `/ o
  10. 同时给多个key赋值,同时设置key0和key1  y  O5 K: E1 W8 W( l1 E/ B6 }( Z& P) e
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    9 K4 T, M) j3 S1 O4 X) G$ x  s
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值# I7 H' B4 Y+ I. C, [8 x: i
  13. $redis->incr('key1');# P0 \, W0 f2 S7 h* V5 @! R; P
  14. $redis->incrBy('key1', 10);% s& R1 h: y4 k) z
  15. 减法跟加法一样8 p  T- A* L0 I- K2 V9 Q
  16. $redis->decr("key1"); 减少1+ ~& f3 O2 k3 H; o: \% g
  17. $redis->decrBy("key1",5) 减少5$ B& z8 i0 n. q& z4 e" X8 ]
  18. 2 M5 d) r5 a8 `$ g. V8 L; y
  19. list相关操作,连表操作4 t! b8 Q* k  q% o
  20. lPush
    9 p/ T4 f+ v  ^* S
  21. $redis->lPush("list", "888");" u) M8 X1 W$ @) I! P) Q
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    6 s; }; Z5 j: I$ b( Z' Z5 k7 D$ N
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式" @" }% v8 f+ C6 K
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    5 `  D$ h/ Q5 ?; @0 |! }
  25. lPushx/rPushx
    : Z  A8 K; _# V
  26. $redis->lPushx(key, value);+ C& b( {# F  ^) I+ z0 H  Z3 f
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    4 t, k0 ~- f% X: q$ ~( A! l1 t
  28. ) j# }( r0 s8 V5 e  w% q
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key( W% c  r/ X! v; r
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    * J5 s3 {. w: x
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回11 y" N' v# z& T% o- N; U! y9 F
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    + F% r1 \( t- G; d: ~
  33. sadd s1 zhangsan! i/ M5 G! B+ }/ d1 ?2 e4 r5 e* r1 x
  34. sadd s1 lisi
    / q" ?! U" F, c! C( M  w
  35. sadd s1 wangwu) Y7 H3 a! M5 D
  36. sadd t1 yangxingyi
    3 `+ J& E8 X- n. v1 p! _0 \
  37. sadd t1 lilei
    ; X+ p% C5 U) e8 P2 u9 [
  38. sadd t1 zhangsan6 X0 I1 ~4 e# w. E+ J- C
  39. smembers s1 s1的所有集合内容. Q+ l- T# H5 l" X/ L
  40. sdiff s1 t1 s1有的,t1没有的,差集/ r2 R( w( @6 q5 r' x! _
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式" _, ~. {7 H$ g7 I) p
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的: q  i1 C. L/ S4 W0 q& m( g9 N& R
  43. spop抽奖场景,返回集合里面随机的数
    ( Y1 J; k$ \/ U( U$ ~
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了7 \# w- J8 T5 I  y
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
      {& \; Z# h" X! d
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的5 }, v% s9 W. {2 A0 p8 r5 o2 Z
  47. 随机返回集合里面的一个元素,但不删除,重复中奖/ L; f8 T# i7 a  r4 B# y
  48. $i = $redis->srandmember('s1');echo $i;& P, T- R6 D" _- `/ A8 [  x
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    5 P  ^# Z: P" [- F" Z! p' U4 k
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    * C( o; b! x1 ?& s  J
  51. 2 K( f8 |! z! S; n* `3 F
  52. zadd key 2 value 有序集合
    % R# u( P1 `6 ^2 c$ P
  53. zadd y1 1 zhangsan;3 U, A2 v2 @2 M7 ?8 j7 @: |
  54. zadd y1 3 lisi;7 C! |5 p4 c7 ]1 M, B! `$ R. M, `
  55. zadd y1 2 wangwu;
    1 N: O8 X# e3 T" V( q6 [% P
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi: W% Y, Y) U6 g' d' Q
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    6 [  }/ @% S. Y, y
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    : ^+ i) R% A  @7 O! m4 N
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    ' \' |3 y# p1 }8 l5 |4 i& u
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    : p, b( z  U0 m; H0 Z4 j8 ^
  61. 无序就scard,有序就zcard,有z没有s* ^& f. y- w! J5 ?" m9 B9 D1 v
  62. sInterStore
    . _) o" N3 o3 X
  63. 求交集并将交集保存到output的集合
    2 ?) H2 c$ |" j- C1 I7 w
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')6 s6 N$ \' r" j2 i

  65. ; K2 E# q7 n. V$ P3 f  i2 R
  66. Hash操作
    + p; k' d8 N+ G2 s( g8 f: ~5 x* f+ T
  67. hSet; t6 }7 E5 p/ d' M* S( Y' W
  68. $redis->hSet('h', 'key1', 'hello');
    ; }! d5 k- f$ F& @; n+ P
  69. 向名称为h的hash中添加元素key1—>hello
    0 N1 R2 j5 g( v$ u$ z
  70. 4 n; s# U4 ]: v  x' w: ~
  71. hGet, ]; o  \& V8 Q, ?: i  @1 G
  72. $redis->hGet('h', 'key1');( l- B# d5 R1 D1 C2 D3 h
  73. 返回名称为h的hash中key1对应的value(hello)
    ( u( g3 n" E/ u! ]6 J# W9 m8 l
  74. 6 [3 O- ~# x" ^! p1 J% }! N$ {
  75. hLen
    $ d9 S/ \( c# w2 {1 ~1 _2 X& P
  76. $redis->hLen('h');6 m  P% Q7 \  P
  77. 返回名称为h的hash中元素个数7 u7 `/ ~" k! l4 J+ D+ n
  78. . r" r: f/ o% s% H6 E
  79. hDel4 e- A1 f( W% m+ b1 \+ E3 t1 b& ~; z
  80. $redis->hDel('h', 'key1');2 D/ V3 ^, A0 ]. f
  81. 删除名称为h的hash中键为key1的域/ M7 A, {/ X0 e6 v" ~! W
  82. ' P  G; S' h: y: B
  83. hKeys
    - |* G8 i2 A+ k
  84. $redis->hKeys('h');
    * F$ f1 f1 P/ @4 t& O+ h
  85. 返回名称为key的hash中所有键& W% ^7 B$ I- M  Z
  86. 4 S. @+ s- J, K) V
  87. hVals
    * {/ k% U5 @1 \7 U
  88. $redis->hVals('h')
    , K# ^, L% Z1 e* f
  89. 返回名称为h的hash中所有键对应的value
    1 i2 o& L0 Z0 _$ y, F* Q* J

  90. ; z) J+ M( I" Q/ F6 Z
  91. hGetAll0 `0 w6 J1 l) F
  92. $redis->hGetAll('h');
    % Q1 \) l# w9 Z) U7 t2 T; v3 `& X) t
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    . z- Q8 _8 `* L0 H. G

  94. , g( E2 j9 M% [! l
  95. hExists
    0 m2 G. j) @' X& A1 ^, i
  96. $redis->hExists('h', 'a');
    , W5 D: B, k) {6 K$ w" M0 @
  97. 名称为h的hash中是否存在键名字为a的域
    , M2 R- D8 {6 {% t

  98. 4 q, T3 Z1 l& Z  u# u
  99. hIncrBy
    ; q& |+ G6 d4 U7 k3 }7 u8 e
  100. $redis->hIncrBy('h', 'x', 2);
    / M) z2 N% f) C& l1 I7 l
  101. 将名称为h的hash中x的value增加2
    " @; r3 r# M, U) k
  102. 8 W" M3 w% ]5 l4 K$ k
  103. hMset9 a  s0 n$ }( Q9 M9 r  p
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ! J' N  q  }8 v6 Z2 Z. c
  105. 向名称为key的hash中批量添加元素
    # @3 S5 c1 c- R5 ~
  106. 4 v1 j$ i: a, t) Y+ g
  107. hMGet) K9 _8 G: y4 D7 d9 F/ Z, w0 H) ^; ?
  108. $redis->hmGet('h', array('field1', 'field2'));' I% D; y  R) n0 A& W' P
  109. 返回名称为h的hash中field1,field2对应的value
    5 {$ ]& l' z4 n4 @6 Z  j: \
  110. * N2 x0 s/ U9 O; Y2 r4 p' y
  111. redis 操作相关# o5 z9 m' {, y6 a0 J% w' |
  112. flushDB7 J, t* ^8 I2 b! v/ C. j
  113. 清空当前数据库: @- U' l# X0 l; g! A4 e7 t

  114. " M  Y7 _" q$ a; V7 a  D
  115. flushAll
    5 k7 @; J% X1 u7 k% @% ?
  116. 清空所有数据库
    8 A+ G/ v- f0 h) ~

  117. 0 ^6 p$ i* ?5 X* r# m
  118. randomKey
    7 @2 H. X( L# _2 g4 ?1 F* m
  119. 随机返回key空间的一个key
    2 u" p. ?* ?* r( Y3 I% ]' E
  120. $key = $redis->randomKey();
    * A- g5 ^! \- f$ i5 x% v

  121. / _! O- h7 j9 V5 W. N/ E0 S: `" X/ `
  122. select1 y5 _( _5 x( {2 x9 l9 w
  123. 选择一个数据库
    ' q5 p5 V1 H2 W6 l' C
  124. move* \6 O" S+ L: E! E
  125. 转移一个key到另外一个数据库
    8 L9 ~  g" O2 Z+ n; p7 J: T
  126. $redis->select(0); // switch to DB 0
      U; J1 _3 W8 M1 ^+ p
  127. $redis->set('x', '42'); // write 42 to x8 r* j1 U$ w& ^* `, P. W
  128. $redis->move('x', 1); // move to DB 1
    ! m2 Z' v6 P# \& x9 M/ l1 o
  129. $redis->select(1); // switch to DB 1
    , h1 g% A( d% d  ?% {5 I
  130. $redis->get('x'); // will return 42
    4 f1 |8 W+ T( n; J) i! E& _  H
  131. " U1 a1 R: f9 ?! [
  132. rename, renameKey8 O# E3 c5 \+ l8 y4 V
  133. 给key重命名/ t# u+ c7 m# V. ^' S( Y# c7 U
  134. $redis->set('x', '42');
    1 _9 P; N7 m1 }8 w/ S( q/ d2 ]
  135. $redis->rename('x', 'y');* V  R+ c6 o! D; h' S& s- [' o
  136. $redis->get('y'); // → 42
    ) V! J4 ?8 |( P- h
  137. $redis->get('x'); // → `FALSE`
    7 p& _4 @+ J# j! I
  138. , w7 M9 u0 m7 f; [1 {: ]8 _1 F& I
  139. renameNx
    9 [  ^5 }5 }' I! N) \; ]( v
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功. V2 C& S1 Q4 |6 ^4 k" X
  141. 2 k* b, P+ D* b
  142. setTimeout, expire. T0 A4 X& f, H1 o; v$ e. B
  143. 设定一个key的活动时间(s)
    * R4 A& O! m1 J- Q) Q$ K' N+ a: n
  144. $redis->setTimeout('x', 3);
    ' t0 \1 L+ I4 O7 \" z6 Q6 ?
  145. , h! M0 }2 \, d: g
  146. expireAt
    7 z" {/ y1 h  O" r
  147. key存活到一个unix时间戳时间
    0 U8 C% z9 J& ~5 P( ~" C4 G- H
  148. $redis->expireAt('x', time() + 3);6 q7 |6 p% ^3 s$ g/ n

  149.   F' ?5 X. X, t9 w
  150. keys, getKeys
    : ~! O( K9 w( h9 T, O0 F+ L
  151. 返回满足给定pattern的所有key
    . ?4 {6 y$ `( Y: F6 n
  152. $keyWithUserPrefix = $redis->keys('user*');! ?0 r, A, h8 o
  153. 9 w. _/ `- a) v& s7 Z! d5 z
  154. dbSize. V5 r. R* r% u$ k% o
  155. 查看现在数据库有多少key3 j! d. A! X) s3 a  l9 Z
  156. $count = $redis->dbSize();
    ; C5 E1 o2 [* z: ]3 }

  157. , `, d: \% v( `# l; j) [
  158. auth. b6 }: t7 r. T7 T
  159. 密码认证* W3 H! s7 \7 r' `$ O( Q, B
  160. $redis->auth('foobared');
    * I+ O* Y! Y0 |" Q

  161. . a) T( Y0 k7 b9 g+ m$ J
  162. bgrewriteaof
    $ F8 q( E. ]$ j; d9 [
  163. 使用aof来进行数据库持久化
    & x, ^7 P2 O8 {3 Z  i9 `# }
  164. $redis->bgrewriteaof();
    & p$ A4 j# D5 W& n8 R% j/ ~
  165. 8 Z- O: v  o' c8 s% v4 C
  166. slaveof
      P% l9 B* b% A0 V0 b( J
  167. 选择从服务器0 J; s& u6 I3 w0 I
  168. $redis->slaveof('10.0.1.7', 6379);
    - B1 _7 R9 W! _
  169. ) B2 d* R6 e8 r( X  ]* E
  170. save& ]' V# Z3 C+ B6 Q! X5 g- r/ f
  171. 将数据同步保存到磁盘% ]6 ^4 n% ~% o8 s; h4 ~/ i6 O, W

  172. # n: e$ l; ^- ~1 h8 n
  173. bgsave
    8 l6 t4 E7 A/ j2 H
  174. 将数据异步保存到磁盘, z0 I! `" ?, D* h* o* Z
  175. # ]. l6 c3 ?, M' D
  176. lastSave
    # K  N; {5 a* Z6 @, j  k
  177. 返回上次成功将数据保存到磁盘的Unix时戳8 Y/ }1 o  }- q) o7 B; Q

  178. , k9 s, k* C9 B; l0 Q0 e
  179. info% m1 {. s4 N" o8 f, d
  180. 返回redis的版本信息等详情
    ' ~* G% k" Q9 O* R  }" V1 c
  181. * R# a2 I$ `4 s- g
  182. Redis::__construct构造函数
    ' f( n4 o# B' K) k1 t' d
  183. $redis = new Redis();
    + W! F7 ~; _" l  F

  184. - e/ f4 i9 |6 r1 S1 m- f
  185. connect, open 链接redis服务' [0 ]# g0 I- j" M8 r9 e8 L
  186. 参数
    ( F2 C* b+ A) A: I
  187. host: string,服务地址& D# N# h# i6 i% N3 F6 _
  188. port: int,端口号# K( I; j) \0 H8 o
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)* M6 u/ d! M$ J( G
  190. 注: 在redis.conf中也有时间,默认为300
    $ [+ Q/ a$ v* h# f- ]# n
  191. ) A1 z* m7 {4 O9 O
  192. pconnect, popen 不会主动关闭的链接* J# |: @5 ?: J/ c( _. b
  193. 参考上面; u2 }( |: |/ k& H

  194. . ]$ _6 R. K: i% V' c
  195. setOption 设置redis模式
    . G$ |( X8 W$ d: }
  196. , u: `$ @. r! R2 D/ R2 Z$ X! f6 w
  197. getOption 查看redis设置的模式
    9 F/ a8 T" t0 b  s( `6 W

  198. , Z6 X: K8 t9 n; E
  199. ping 查看连接状态" c. _. t( {- F2 H" e

  200. 5 ~% j" Z! K6 g! a6 x. G' t/ ]0 L
  201. get 得到某个key的值(string值): a+ d* f! w5 A. N2 n
  202. 如果该key不存在,return false2 M3 ]+ V5 J7 {8 u. j1 k% l

  203. 2 [. C3 b( Y; A6 a7 F. w4 J! L
  204. set 写入key 和 value(string值)# m- K7 e0 e- C: p
  205. 如果写入成功,return ture4 B2 ?$ I4 y6 Y
  206. ( L4 b% G: Y4 N1 g5 E0 p
  207. setex 带生存时间的写入值' N; k8 E& }/ G# w$ ]) M* M7 b
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    , y' Q- S( H& I' u# T5 c2 h9 j

  209. , K# z: W& |* Y
  210. setnx 判断是否重复的,写入值
    / D0 R% s- [5 j# b) T4 I
  211. $redis->setnx('key', 'value');
    $ p* H/ p+ W+ p- N+ F3 |
  212. $redis->setnx('key', 'value');
    1 y  {- Z* ?; m# C
  213. / [4 o" {( c# F! u* {# f" ^
  214. delete  删除指定key的值
    * ]5 }- d. l* u9 c
  215. 返回已经删除key的个数(长整数)/ t" n3 F# m& e8 I; A
  216. $redis->delete('key1', 'key2');
    2 `; ?' P$ J# y- e# J+ b
  217. $redis->delete(array('key3', 'key4', 'key5'));; e& b7 A' F3 Z6 B3 B! {

  218. 9 f, l# k( u4 v1 j" m( [
  219. ttl
    0 ^$ S) l# {- G0 b/ O  `1 `
  220. 得到一个key的生存时间, F* f. a# K+ f  r* o
  221. / H( f8 q' w( r2 [9 ]
  222. persist
    8 ?: M$ e+ [+ X4 [' X& N. @
  223. 移除生存时间到期的key( |7 e* Q, r3 l
  224. 如果key到期 true 如果不到期 false) k! W' ?9 R& C
  225. * N2 D- [! d0 h" `& I
  226. mset (redis版本1.1以上才可以用)4 U: ?) a4 l2 T$ i. ^
  227. 同时给多个key赋值- f3 A5 I! n! x- T, Y
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));/ b+ f3 O, s/ }9 t; o3 h
  229. " h" h; C* n( Q3 t! k/ D, B

  230. ( W$ }8 ]0 p" ?) B( [
  231. " ^" x2 ?3 g) \/ S
  232. multi, exec, discard! [* B, R% h; n; J
  233. 进入或者退出事务模式
    1 ?6 z3 f# R+ r5 l+ t
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    , g  x3 [$ ~# L0 c; }
  235. Redis::MULTI:将多个操作当成一个事务执行( z: F% K1 O$ S4 r$ c: x1 G
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证$ e4 p, Q: p4 D& l9 d8 U7 s
  237. discard:删除一个事务
    2 ~! T% Q- \& W
  238. 返回值
    & h3 D0 l0 e  V3 e6 u
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。3 \" a: |( M6 o; a' B- E0 x$ T

  240. 1 B( K' h) u1 G' {, h6 G' P
  241. watch, unwatch (代码测试后,不能达到所说的效果)) M$ `# p) f+ g) Y6 Y3 B! H0 C( r. R
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    # ^' o" G* R! Y3 B  J- e% N
  243. unwatch  取消被这个程序监测的所有key
    7 Y1 l9 Q6 q3 F; D1 H
  244. 参数,一对key的列表
    ' z. a% w7 Q1 Y/ q
  245. $redis->watch('x');" w! r7 F7 k+ O* k) h7 |7 [! e
  246. ( i" [8 `+ H: e! S  \' E" \
  247. $ret = $redis->multi() ->incr('x') ->exec();  z8 p2 D0 q* ~/ e7 C+ g& A

  248. 4 K: B. F7 q5 c& W/ d4 ~

  249. / ?- ]* Q7 e3 E* {$ q9 V# N
  250. subscribe *$ \) \( [( q3 P, z& y. b- C
  251. 方法回调。注意,该方法可能在未来里发生改变
    ' o- w7 ~6 |5 X* a7 i: {' L- v

  252. 4 _5 i5 t' T* R/ |
  253. publish *
    " ~8 a& o  y* \! x5 g  {$ \9 b
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    # w+ e0 i. ^: c  ?
  255. 9 D) \. }& `9 F$ p
  256. exists
    & V! o2 Z7 h" Y. D
  257. 判断key是否存在。存在 true 不在 false
    9 u6 x' `: K5 h: t
  258. 9 z* K8 ]- W* A2 ^- C
  259. incr, incrBy7 |+ D3 r/ x  B9 b  y4 c. S
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值2 `" }. Q& ^1 ?/ Z1 W, U
  261. $redis->incr('key1');
    ; I3 ?5 @. Y! v: B( F
  262. $redis->incrBy('key1', 10);8 `( A0 i/ a3 [* t  D: ^, ?  z
  263. 4 v  ]' e( s: T9 D; N* a& y
  264. decr, decrBy
    5 v# B2 k3 v" w. |# {3 I0 N. K+ S
  265. 做减法,使用方法同incr
    & W7 \2 `; F/ S9 [1 r  v1 @. P

  266. 1 |( f3 L2 n3 Q+ _& u+ f, s
  267. getMultiple
    * N7 a2 F$ t; {
  268. 传参
    $ E. U5 O# B5 z# L5 W
  269. 由key组成的数组
    / L1 y. e' o2 Y+ t- ]2 m% {: t
  270. 返回参数
      A" d; v1 x0 S% l) X; m- f+ f( C5 t
  271. 如果key存在返回value,不存在返回false
    ; d9 |- Z. d# g. p1 s
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));9 |: R# \$ t; N1 |' h6 e
  273. $redis->lRem('key1', 'A', 2);
    , t9 o8 c: R$ |# A3 A
  274. $redis->lRange('key1', 0, -1);2 j9 E# {4 [- s% \9 |% H3 k

  275. : z& k* _" s6 J, q8 |) g
  276. list相关操作
    , N3 f+ ?5 y+ L+ g- d" d* \
  277. lPush
    6 F% }$ x3 c7 k3 F& [
  278. $redis->lPush(key, value);" Q: B6 M5 {) F+ C, o
  279. 在名称为key的list左边(头)添加一个值为value的 元素  }. E. d$ q/ `9 s! c) ^: N: W

  280.   [, X; v- x( w' y; l
  281. rPush; A4 j' G- ~5 l8 ~! E  i
  282. $redis->rPush(key, value);8 i. l2 g4 c4 x0 b
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    7 E! R% C" ^+ Y+ n( ^
  284. 4 \9 l! Y0 p; G* B
  285. lPushx/rPushx
    9 J9 ], v# e2 u' W' Q$ {$ ?: w
  286. $redis->lPushx(key, value);
    0 J0 x# t  [' ~: P
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加% c8 {" ~9 p$ R. B. \! l' N: n
  288. 4 o0 N. K+ x$ g% Y
  289. lPop/rPop
    ' W# d0 ?" z: R
  290. $redis->lPop('key');" A6 t$ F- i9 @7 w+ x" g
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    9 Q5 X. T- y  J% `4 R0 A! {

  292. / j. F! ?7 j' z) I7 T+ z: s
  293. blPop/brPop
    ! j; \. [: e. b7 Q  S* e
  294. $redis->blPop('key1', 'key2', 10);, k: J7 h5 K% t- ?! b! V9 }
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    2 z* Q; E* ~6 ]% a/ T& |1 i+ G
  296. 9 s5 J* f. U; J: |) \8 d  P
  297. lSize
    ! L$ ~" ~+ n% z! p/ O; \
  298. $redis->lSize('key');
    1 }4 l& V/ \  `! x
  299. 返回名称为key的list有多少个元素
    % \; n& l/ @1 Q5 \: D6 K* p
  300. - `* P% c8 |  S
  301. lIndex, lGet
    0 w2 \5 q5 r- ]% N9 t  u
  302. $redis->lGet('key', 0);
    # t( b9 q, I7 h& e% L/ G. r
  303. 返回名称为key的list中index位置的元素/ C& e0 ~# M( t

  304. 5 I# Q% o- S3 n6 j
  305. lSet
    / ?# {% y' n$ ~0 k  j! s
  306. $redis->lSet('key', 0, 'X');
    * w; _( C8 I) w/ {% T2 T6 M
  307. 给名称为key的list中index位置的元素赋值为value4 [8 Z/ i$ b6 i  v" C- u8 c5 F' c

  308. " b. H' d, ^8 {: H2 F
  309. lRange, lGetRange7 [" o$ U9 ]+ ?9 |7 h
  310. $redis->lRange('key1', 0, -1);( J3 Y; Y+ ]8 I- ^: B$ |/ ~/ [
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    3 m* Z: i9 C7 J/ ?

  312. ' a) O9 o6 T# Z1 F0 b0 C
  313. lTrim, listTrim/ M& E- j, I9 C( c1 P% O; ]* y* ?
  314. $redis->lTrim('key', start, end);
    $ U( ~, s+ N  d; m7 z
  315. 截取名称为key的list,保留start至end之间的元素
    5 j7 P3 V7 x% h. P, U7 z$ t9 ~

  316. : @1 z& ?4 B, [( P
  317. lRem, lRemove) T6 t. m' C2 [# P6 c" U* C+ B
  318. $redis->lRem('key', 'A', 2);
    3 W- c4 X& ~- R: r% d/ w  U- W$ ]
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素* Z! e3 b% I% M5 Z/ _
  320. ' a9 k- y$ f8 [6 D6 o1 C4 Y
  321. lInsert
    ) M+ }+ K9 E9 `
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ; n8 b0 w/ S, b8 u2 q; z
  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');
    % C1 _8 o1 r$ m7 L
  324. $redis->lRange('key1', 0, -1);
    ; P4 S% a- @6 k( g  l0 \7 q
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');5 @1 l+ t! L  U7 B6 d) D; t
  326. $redis->lRange('key1', 0, -1);
    ; G/ D8 p+ W5 w* X4 Z+ N
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    : i0 L5 h; [* [$ b- R( ^

  328.   s( g; t) g5 t" F4 {4 \3 H7 y8 L
  329. rpoplpush% U! l0 Z. n4 S4 t+ s0 @7 i4 h/ j
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部$ v6 W2 }5 H+ ?; Q7 ~, e; X
  331. $redis->delete('x', 'y');
    6 ?8 e2 f8 Y0 ~& ?7 F# p
  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'));
    6 h' t/ E# D- B" {$ Z( g
  333. var_dump($redis->lRange('x', 0, -1));$ m' y/ i+ E! b2 s  i6 W) A; \
  334. var_dump($redis->lRange('y', 0, -1));
    $ K! w2 ~- @8 c3 X! l
  335. 6 I# z$ Z: S4 \+ i! D0 \
  336. string(3) "abc" 4 @4 D$ r/ F( M' {0 V0 v
  337. array(1) { [0]=> string(3) "def" }
    $ y0 ]/ V8 o! T8 U4 V6 J. z
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }# y) m' S+ o# k: H& U8 \
  339. ' m* T2 P2 ~, I' o
  340. SET操作相关
    5 n2 v) M! u. A% d$ v- X
  341. sAdd
    2 w1 Q& G0 t6 v6 r) y
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false( B% _+ j8 `! X' V3 \+ c; c& Z; _
  343. $redis->sAdd(key , value);+ h2 x: k* D( }% x/ D8 {" a

  344. 5 ]4 K1 }  p. F2 T5 S  _1 ?+ P
  345. sRem, sRemove
    # a0 t  p  G6 A) d
  346. 删除名称为key的set中的元素value
    0 D7 C( p$ ]* {; \
  347. $redis->sAdd('key1' , 'set1');
    # I/ U# ?9 L+ I4 X2 m) T
  348. $redis->sAdd('key1' , 'set2');
    - Z4 M  N* H3 M+ Y3 o8 z* ]( Z* v$ W; W
  349. $redis->sAdd('key1' , 'set3');  y" x/ ^1 M3 n' ~. N! T# m
  350. $redis->sRem('key1', 'set2');# V: y, v- i4 }" c0 a
  351. 1 }" ~1 l/ O1 x' I
  352. sMove
    9 _  X/ g8 h# s# h: D3 E. E
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    5 \+ h' O; W* e9 ^1 t
  354. $redis->sMove(seckey, dstkey, value);5 i# q" M/ i, q4 }0 q! L2 l

  355. & y8 ]2 I+ A( g$ N% I
  356. sIsMember, sContains
    ' [7 W9 L/ Q+ O: ]
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false0 \2 L8 [8 `8 F7 q& w
  358. $redis->sIsMember(key, value);
    3 _0 A/ F& B& m2 e$ Y& U

  359. - e: y- j, R) v: e
  360. sCard, sSize
      J8 h/ t9 h  O, X1 [- k! T/ n
  361. 返回名称为key的set的元素个数9 `! T* Z  @7 e, E+ I% r, `3 q

  362. 8 _+ O- B" _: \& n! `! p  W
  363. sPop
    % e3 a6 P( j" O8 |7 K: {
  364. 随机返回并删除名称为key的set中一个元素1 B. Q, {. x; o- z0 }

  365. # B. C4 a2 T( S. ?; y3 b! k7 s  j
  366. sRandMember
    & T/ U3 H/ E; j; i8 T) ^
  367. 随机返回名称为key的set中一个元素,不删除
    & e8 j- l& Q8 ]4 n

  368. # {& C4 H6 {* ?7 d
  369. sInter
    + z5 r, _1 ^& n0 s/ `- g- ?% c
  370. 求交集
    8 w' A- Q" h% ?2 A5 Z1 _% s- L4 [7 K
  371. - D9 G: G( \7 a( A/ h
  372. sInterStore
    # t$ I. B3 q$ S/ s% V9 g
  373. 求交集并将交集保存到output的集合. C" A; g- i; b5 `% X
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')) a4 B- S3 b0 Y
  375. , u8 o6 |- Y) o1 \
  376. sUnion- i0 h; o. R' l  C
  377. 求并集
    % I& W# Z6 k5 ?6 g; Y! x
  378. $redis->sUnion('s0', 's1', 's2');2 n/ o2 s, f! }$ `
  379. s0,s1,s2 同时求并集
    - ^: j; B' k: @' R2 s2 K
  380. ) U- T+ N8 r. v9 w" X! |
  381. sUnionStore9 {& J+ p4 X3 p$ k1 ]) |+ k7 p
  382. 求并集并将并集保存到output的集合
    4 K6 }& G, ^- ?  _! J; Y
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');+ H( r4 L; O7 U1 n4 j

  384. ; V% Z, w/ g- e, c
  385. sDiff. L7 r3 i2 }1 H7 A" t
  386. 求差集5 z3 @; a% I0 Y* Q5 d6 ?
  387. 1 w. k$ _' e) I. d' h
  388. sDiffStore
    + `& D0 q/ `$ l& {' M
  389. 求差集并将差集保存到output的集合
    1 v, p8 m+ `2 ~! Y( d$ Z
  390. # u0 e3 I* A& I
  391. sMembers, sGetMembers
    5 {4 v: g% L1 [6 G  K( f
  392. 返回名称为key的set的所有元素
    : d3 O9 \  F5 H" y- `
  393. 2 x$ R4 I  a+ \9 g/ {& ^( {
  394. sort
    2 @+ v- q$ G5 S6 P
  395. 排序,分页等
    0 e: Z/ |/ ]! M* d
  396. 参数
    6 Q8 o& I( z& R
  397. 'by' => 'some_pattern_*',3 Z  L5 ~" r  f
  398. 'limit' => array(0, 1),7 b; e1 M* G& c: F6 b( K
  399. 'get' => 'some_other_pattern_*' or an array of patterns,$ F7 Z9 a/ i- Z/ [; S' m4 f! u6 Z
  400. 'sort' => 'asc' or 'desc',
    6 {* i- [, A2 P! j
  401. 'alpha' => TRUE,
    / }9 D" l) K6 R. w
  402. 'store' => 'external-key'
      b1 ^* {; I6 A7 q
  403. 例子' v" w1 T& V8 t& V& q+ W
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);3 S0 g. B0 M2 @0 I; x
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    " k3 V& i  }5 |5 }- j) L9 G4 C
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    9 w- X2 E9 H( [4 }8 i
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5# P( U0 I0 _. i

  408. 2 r6 R! u0 e6 p, v
  409. string命令% j" k/ q/ x; T+ j, f) h4 t+ ]
  410. getSet7 Y6 l6 X' R  Z/ h- G/ N
  411. 返回原来key中的值,并将value写入key
    - q8 n1 @. t5 n! l- P
  412. $redis->set('x', '42');6 r" V6 w5 x& G( T
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    / M! z8 X4 y; ^( U
  414. $newValue = $redis->get('x')' // return 'lol'0 N. C& T, q5 W
  415. 4 a4 A3 J. S9 K/ L3 v8 t4 O* u' ?
  416. append
    4 f  J* v+ n7 n4 A: H$ O* U
  417. string,名称为key的string的值在后面加上value
    # R9 j' |! Z/ N+ u2 b5 d' N
  418. $redis->set('key', 'value1');
    ; A- \2 f( G) @! i4 O4 r6 h
  419. $redis->append('key', 'value2');
    ' @8 L  M9 B$ ~1 ?/ B, m
  420. $redis->get('key');& T( g  K& a8 ?/ O* I4 s* d% w
  421. 4 s5 [3 M  X: W3 [. x; f; Y
  422. getRange (方法不存在)
    0 C1 W0 M+ C) Q- l* `! C: r% `! D
  423. 返回名称为key的string中start至end之间的字符
    ) T% }2 ?* n+ M
  424. $redis->set('key', 'string value');
    * b( T4 {1 g( u% N& N* L
  425. $redis->getRange('key', 0, 5);
    0 L9 E  @) a5 [9 R) C9 Q- l" k- c
  426. $redis->getRange('key', -5, -1);
    " N# z. m5 R- x5 B
  427. 6 I( N( ^& g' b: J# S1 `( g0 p
  428. setRange (方法不存在)
    3 u9 w  \/ C" h- S# C. h, b$ @
  429. 改变key的string中start至end之间的字符为value
    ; a9 ]7 r. a4 w& `  U, n. J1 N
  430. $redis->set('key', 'Hello world');
    / N+ D8 Y! r! {& w7 z
  431. $redis->setRange('key', 6, "redis");
    4 N4 E- f) I( S) ?7 w6 N! d2 u
  432. $redis->get('key');
    7 Y' \) ]5 k0 I/ E! B$ t- r# _0 C
  433. 4 V) \! A7 u: P  k
  434. strlen
    " n, j# j; f0 W/ X; O7 X8 ~& O/ ^- F
  435. 得到key的string的长度  \1 p: o  [) S& V; C4 _
  436. $redis->strlen('key');
    . k/ W+ E7 J8 ~1 b: x) f( M

  437. 9 b0 i  v; Y9 `3 N
  438. getBit/setBit) {( I! A: u- V6 i4 [: _
  439. 返回2进制信息
    0 \# l5 c! Q2 R' C1 N* z
  440. ( H- v' A* @1 ~" r4 Q. G2 g
  441. zset(sorted set)操作相关+ d; w7 U! y0 f* Z8 z3 ~0 ~
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。% l) v7 J1 d. g& Z; j5 A
  443. $redis->zAdd('key', 1, 'val1');
    ' i. }: n! A0 N! e  ~& f% I; ~
  444. $redis->zAdd('key', 0, 'val0');) Q& G# }0 v9 ^  P9 V
  445. $redis->zAdd('key', 5, 'val5');& X8 M) E' f, o7 P; Q
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)$ b+ L. D9 X& G% ^, o, |" \
  447. & X3 }, X- R4 i1 d6 \1 P
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素4 d% X: @  ]5 z+ G# ^. N: W+ B
  449. $redis->zAdd('key1', 0, 'val0');4 C# K$ d) V" A, h% Y# X% {  Z; A
  450. $redis->zAdd('key1', 2, 'val2');; m; |+ M) f0 F, C7 N% s/ N
  451. $redis->zAdd('key1', 10, 'val10');3 m( ^6 o8 \2 G1 d( G
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    * J5 M& F, u9 m: j

  453. + m2 f2 X$ }; O' X
  454. zDelete, zRem! u/ j4 r) e7 r  y
  455. zRem(key, member) :删除名称为key的zset中的元素member
    # \5 j4 B1 O. z4 O8 l# P9 M: {& Q
  456. $redis->zAdd('key', 0, 'val0');5 `  {" x9 ?6 H' B9 w3 M
  457. $redis->zAdd('key', 2, 'val2');
    , R) y  H' A: V# D9 H
  458. $redis->zAdd('key', 10, 'val10');
    & L0 j# _4 ^$ A0 ~
  459. $redis->zDelete('key', 'val2');7 Q9 d( b1 W# W3 r3 t' V7 _
  460. $redis->zRange('key', 0, -1); 6 O; B7 _  r; i& `
  461. : L& _1 O4 u; w/ M% @
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    : P3 G% o7 G. J
  463. $redis->zAdd('key', 0, 'val0');
    4 h# Z( K" s# `. Z! {
  464. $redis->zAdd('key', 2, 'val2');
    4 O* ?1 S& H+ Y5 R
  465. $redis->zAdd('key', 10, 'val10');: s, ?0 |: Y  E: L6 T) X
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    5 [: ]/ n$ x, J
  467. * o  ~' w% o0 r, v: @2 v
  468. zRangeByScore, zRevRangeByScore1 L9 J( S" G/ ]$ E$ S% M
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    3 N- L! p9 O: o$ I
  470. 返回名称为key的zset中score >= star且score <= end的所有元素; K6 O. m1 E3 u4 @1 \" [: t

  471. 5 U( B, q# o8 b% y" z
  472. zCount, I# R4 b' s4 O: N( J+ R
  473. $redis->zCount(key, star, end);
    " U* W/ |' a- ?7 K# U. f
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数& O6 P& c2 C( O9 q9 O
  475. 9 ~' H  r* i! b! A3 ]1 A. W# R
  476. zRemRangeByScore, zDeleteRangeByScore- u$ Z  N' h4 ?1 T0 Y
  477. $redis->zRemRangeByScore('key', star, end);9 o" Y0 {1 }; F6 \# x- `
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    ( l1 k3 G( g+ v* v) e
  479. ( q7 p: S( J4 n: q7 y! ^
  480. zSize, zCard' _, ^' R; D* L& R7 v
  481. 返回名称为key的zset的所有元素的个数- D. L2 G8 c2 \6 N: s

  482. 5 }2 w. R6 H5 O( z2 J0 r
  483. zScore  ]- @9 _1 Q' l/ |; p
  484. $redis->zScore(key, val2);9 f; R  N9 r2 d7 L9 {  ]0 x, V4 o1 M
  485. 返回名称为key的zset中元素val2的score& Y0 E: ]; ?5 @7 z" B7 j0 y3 j
  486. 5 Z3 V+ [+ V9 {! D! D
  487. zRank, zRevRank
    ; K( t5 B2 [  j2 {1 V7 U! a5 \4 I9 V
  488. $redis->zRevRank(key, val);
    ( m* z7 s( s; [+ V' j. |% n2 v1 P
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序4 S4 r2 Z( r4 k2 X) `! C
  490. 8 X3 @* c9 {' w0 i; v' p
  491. zIncrBy
    * D, M+ e9 ]! Z* @
  492. $redis->zIncrBy('key', increment, 'member');+ y" t6 i7 a. o# s4 p- z2 r
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment  E  o$ c+ k. R/ K7 j  F
  494. 4 Q2 w8 `+ U' n# @1 T4 q
  495. zUnion/zInter# ?* b0 R) u3 n) A' s0 ~  N
  496. 参数
    ) u7 \! `1 W5 N
  497. keyOutput
    ( A% k. y. O. y
  498. arrayZSetKeys/ ?/ l: ]( |) S
  499. arrayWeights
    ; P8 C& P% s- U, ]" q
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
      k+ d4 g8 f) _4 g7 ^2 Y
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。2 b1 |) a7 C/ D9 @2 L5 G& z1 }8 c
复制代码

' [/ q# L, Z; Z) Z* y5 U" l  k, w, \8 Z4 e

; F1 v) I  ~8 F- |5 K: h8 N# ^2 Y; |- s2 J1 T! N* b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    , x1 z( y. e+ i$ v* `& U
  2. //连接redis服务器
    8 y7 \" U; Q4 K3 i* `( t
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 15:31 , Processed in 0.140820 second(s), 20 queries .

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