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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    - |& |7 [5 `& d: d
  2. $redis = new Redis();  
    $ N9 r; [; \- y! _; f
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    / m: O- S6 n5 l! ^* }: e
  4. $redis->auth('mypassword');//my redis password " _: h0 J. R3 ~. c
  5. $redis ->set( "test" , "Hello World");  
    ( g/ q! E5 \' C6 y' k' z6 s
  6. echo $redis ->get( "test");* u( q/ d! N7 r. V' B4 @; [) q/ c
复制代码
php操作redis函数封装
  1. /**
    . N( g$ v; U+ k& l8 f
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    * T4 f- _( ^# |6 q- W, h# J% x- k
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    0 @# p' E% m% h& t  e
  4. */: i3 c" G2 G- m8 T$ |# C* T! |# n  Q
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){' d- ]( w2 f8 T
  6.     if(!$key||!$value) return false;. k) z" @' a7 R6 H# ~$ A
  7.     $host = $host?$host:getenv('REDIS_HOST');1 w0 f3 V/ H5 y: C/ P
  8.     $port = $port?$port:getenv('REDIS_PORT');9 u# r1 B9 C  k# J
  9.     $redis = new Redis();; X* f, G3 ~  z) a1 D
  10.     $redis->connect($host, $port);/ k' r  I/ K. O
  11.     $value = is_array($value)?json_encode($value):$value;/ h; i$ T  s& }9 E6 J5 U
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);8 _/ U6 N. }; m
  13. }
    - K+ w/ K; T/ S
  14. /**2 H8 H2 U, M5 Q' M# Y
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    2 G0 Q* b) a$ h# @- r4 B& G9 t3 a
  16. */$ g% L! D1 a' e, ]2 t# J
  17. function RedisGet($key,$host='',$port=''){7 V) O& p+ {) ]
  18.     $redis = new Redis();5 r: b9 L' R5 w( {6 h( K$ i
  19.     $host = $host?$host:getenv('REDIS_HOST');+ O6 X+ s5 d" }0 w/ [% Q
  20.     $port = $port?$port:getenv('REDIS_PORT');
    ) N; ~& Y9 e3 Z$ T, P5 ]
  21.     $redis->connect($host, $port);
    4 ]( G1 A* Y# Y' R+ O7 j2 @
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);1 B' Y4 Z* t0 k
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);) P: a0 g- Y* I! y" g$ H) ]
  24. }3 b, D% y: O/ G! d- }# b& a, r
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
, f  ~1 o9 X2 N4 `8 z0 J. G
  1. setex 带生存时间的写入值/ T$ x# a3 |$ c/ e
  2. $redis->setex('key', 3600, 'value');
    5 d- z' p* o! y; N/ @
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1; s0 a( W) h- A2 h& u" X
  4. $redis->setnx('key', 'value');
    ) M& O2 Y8 S- x4 d4 K
  5. 返回已经删除key- L" V+ b" s% K) @8 H7 a
  6. $redis->delete('key1'); 成功返回1失败返回01 a7 C. ?" k* P& k
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回08 r8 d! N0 t, Z0 Q0 b3 V" p1 E
  8. 查询生存时间, I6 }% j5 D9 D2 S# l* j( B
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)! G  T+ X+ C) X- Z* F5 E; ]& H6 f
  10. 同时给多个key赋值,同时设置key0和key1
    + j/ w" L. Q1 s5 @
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ) H) v$ J" o. K% k9 C
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值( A- f# J1 h& [2 J/ i# Y
  13. $redis->incr('key1');
    * |0 U- ^0 I7 m1 _+ w1 e
  14. $redis->incrBy('key1', 10);
    & M) Y, _& ], F( M' Q0 o4 W* ]0 c
  15. 减法跟加法一样5 c3 a3 X* b0 l, k8 b
  16. $redis->decr("key1"); 减少1. a( u4 Y$ y/ O( V
  17. $redis->decrBy("key1",5) 减少5
    * k* O; o& w' o) w) Z3 H3 C6 |9 g
  18. # b" e; q" I3 F( a5 h' \
  19. list相关操作,连表操作* z2 y0 t8 }  r! s! C
  20. lPush2 u8 K+ Q6 Y6 p" R
  21. $redis->lPush("list", "888");9 ~, y7 F; }8 `/ A) m7 M
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数2 i& a, @; N6 A7 {; b8 x
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式, Z4 N4 L& @( D2 e' L  W$ |& [. H
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素: @6 g9 ~, C& b4 N/ g6 {
  25. lPushx/rPushx/ i2 J6 I* `9 x
  26. $redis->lPushx(key, value);
    8 h) h& {8 q2 y
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ' D# m! o* V' U: B" e

  28. ( o" Y% o. ]  P- l
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    3 o% a- Q; {" k2 ^( g3 z# {
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    . @3 l6 W$ l5 l- O( i& y: C
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    : }" N& L7 E) e/ {9 D$ d( X! W
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序8 v: e' }7 C0 }+ h7 k+ d# e
  33. sadd s1 zhangsan
    ( |- @3 B7 h: d) f
  34. sadd s1 lisi
    8 d9 h5 `5 v' w8 X% T
  35. sadd s1 wangwu1 O8 p6 l7 N  b4 H+ i4 b
  36. sadd t1 yangxingyi% v  k9 r9 L  X2 V
  37. sadd t1 lilei
    3 h; Z8 S& v: G" e; @; b
  38. sadd t1 zhangsan
    7 _  K0 W) R# ~
  39. smembers s1 s1的所有集合内容1 Q) |5 j2 n* [; G; S" y
  40. sdiff s1 t1 s1有的,t1没有的,差集% Q& F0 m1 y+ y! K7 D
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式5 Y7 t% n) b1 h8 F$ N
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的. i0 t( L3 P  T& G
  43. spop抽奖场景,返回集合里面随机的数7 A' i/ d! [) [, r9 x
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了6 ^; k& p6 K6 ?4 x
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    9 v& T6 t/ @+ c$ O
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的# W8 N! \2 {+ q4 {& W, _3 n! b
  47. 随机返回集合里面的一个元素,但不删除,重复中奖2 I4 i% Y& ^7 q3 ~+ R( j4 v
  48. $i = $redis->srandmember('s1');echo $i;
    ' d4 l/ [; }9 d# `4 Z/ u9 O
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    5 @9 K7 r! ]- D* u( J( I
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false, z" B+ _! R! t, m
  51. & x! l8 q2 s" z: s
  52. zadd key 2 value 有序集合
    2 v# F: G2 _  C+ H5 c
  53. zadd y1 1 zhangsan;
    ; D2 d' J# P* Q, f/ Y0 o0 }% A
  54. zadd y1 3 lisi;
    9 I1 k7 `+ G6 U* F0 q3 b% B, o
  55. zadd y1 2 wangwu;& }% ^% G" s1 W* Z& j- {6 [1 G( f# n
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi6 n" B+ B3 h  K+ t5 G
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);7 J1 u3 v6 [" A; B% g1 A  v
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键3 F8 Q+ M/ S7 R7 i8 w0 r4 N
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    ( }1 E( W  K2 J1 u9 h- b! H
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的  p" F. v' ]8 H8 ?
  61. 无序就scard,有序就zcard,有z没有s$ f6 [1 p; d! x7 {, G
  62. sInterStore( F' _$ p+ b% P8 s; d
  63. 求交集并将交集保存到output的集合
    ; f8 g7 E& J2 I. _" r* O
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    5 p; o7 y. a4 w+ F- j' P. q

  65. 4 E0 c3 Z: S% T5 j& T0 Q
  66. Hash操作
    ! V, g0 X/ \/ M
  67. hSet. b- Y. V2 Y! q$ D1 P- o
  68. $redis->hSet('h', 'key1', 'hello');
    ( Q9 Q, @+ l- m' a( g, L" p
  69. 向名称为h的hash中添加元素key1—>hello0 r0 N5 X" ?/ C9 N5 A* Z

  70. * Y$ [% b$ H, w0 l+ |
  71. hGet* _  H; s' q( x4 {/ Z% ?
  72. $redis->hGet('h', 'key1');$ T9 D6 u. O4 ~$ o& i8 k
  73. 返回名称为h的hash中key1对应的value(hello), r# w- h2 ]# X# k9 m9 M0 r8 k2 E
  74. / ]0 H' s7 w; V  R. [! [
  75. hLen
    0 x6 S9 N; Q/ C2 D. q0 a, e; D
  76. $redis->hLen('h');
    . h" @/ Z2 u& W4 e
  77. 返回名称为h的hash中元素个数
    1 U( o7 T% t5 l5 v4 q6 y
  78. ' a8 @' {: o! L
  79. hDel
      x1 e3 F4 X5 z8 }  k9 i% g- b& k
  80. $redis->hDel('h', 'key1');& i* }( Q9 |9 U# D
  81. 删除名称为h的hash中键为key1的域7 b' g- T0 X  q, O

  82. / X8 X& E) T; m$ Q, ]
  83. hKeys
    0 ~) B( Q, i3 E3 {$ x8 b
  84. $redis->hKeys('h');# ~' N, K5 `" U$ y) U  O7 r
  85. 返回名称为key的hash中所有键
    , ]. p; Q0 m8 Z: f( [5 a! H
  86. / S4 p' @: f2 U/ t$ v% n
  87. hVals: y/ R$ w" `# k# y, }0 ~, Y. L+ u
  88. $redis->hVals('h')% _- ^0 D+ H8 @: H8 ]! n8 G/ U' a
  89. 返回名称为h的hash中所有键对应的value, {& ?* V1 M4 w, C1 ?7 B, H% C( P
  90. ) {: X5 M: r4 r
  91. hGetAll$ {3 k6 u) X, b% \
  92. $redis->hGetAll('h');: M' b1 d  z1 C- i
  93. 返回名称为h的hash中所有的键(field)及其对应的value. f6 w) d7 k- ]' P3 U& ~: Y
  94. $ M2 W3 W/ z1 m) m
  95. hExists
    7 Y5 }" V# o5 @/ m1 ?! e# @9 n
  96. $redis->hExists('h', 'a');1 @; L8 ^, {; Q
  97. 名称为h的hash中是否存在键名字为a的域
    . W8 Y+ `& S4 q" |% y

  98. ( b& L5 V/ f# v. X( L0 A% h
  99. hIncrBy) q# M) O0 {& Q& S
  100. $redis->hIncrBy('h', 'x', 2);
    ; j: T; t- T1 s6 k) J
  101. 将名称为h的hash中x的value增加2
    ) t; g( Z/ j! ]4 e

  102. $ E4 e8 u$ W! e0 a
  103. hMset
    - x: \; f% @/ d
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));/ {% `* U+ V9 K: f- W+ }) Z4 P
  105. 向名称为key的hash中批量添加元素3 z' r+ ^& C" U! d
  106. 2 v+ L) _; e5 N" y
  107. hMGet
    - I) ]7 F/ Z* ~8 e& z
  108. $redis->hmGet('h', array('field1', 'field2'));
    ( D- T; E. Y2 ]! M( X: q) `
  109. 返回名称为h的hash中field1,field2对应的value3 ~3 Q$ `  J7 h( R: [- W( X9 ]+ H0 {
  110. , c' R+ _/ u: b4 \% d
  111. redis 操作相关3 [2 ]1 n3 `5 ]' ~* U
  112. flushDB& p' M# c) f( @# r" u
  113. 清空当前数据库: B" e) ]" s7 q; M
  114. 1 }, [6 C' }8 C! Z- Y( m0 s
  115. flushAll1 M3 i" y( _* L0 s  |
  116. 清空所有数据库
    " L; ^: Q9 f: H4 P" a
  117. 8 i6 \; ~* f8 \% L8 m1 \
  118. randomKey
    # E+ F7 S* P3 X
  119. 随机返回key空间的一个key
    ( a6 `8 k) q: y' v$ _: `
  120. $key = $redis->randomKey();
    1 x3 z" @$ }  d' G. s" t, |
  121. 4 R5 ~% P0 m: Q+ |/ T5 P( r
  122. select- `5 E" r( [) v* w! O# e, u* D
  123. 选择一个数据库
    / a6 y9 X  A* n7 P4 A( n( p
  124. move- X8 ~: |* l  T# }, t
  125. 转移一个key到另外一个数据库( ~- U/ ]* n9 p( B5 g
  126. $redis->select(0); // switch to DB 0  X, v# A5 G& ]4 u
  127. $redis->set('x', '42'); // write 42 to x
    - d, ^' T# r9 c' C0 V5 f
  128. $redis->move('x', 1); // move to DB 1+ R6 f& x0 J2 [# c
  129. $redis->select(1); // switch to DB 1
    ! y4 r+ ]  `7 y5 F- [4 |1 I
  130. $redis->get('x'); // will return 421 h- }7 d2 [. p* W# S
  131. ! |1 S3 Z5 J# k: K# v  D' T. v) [/ ^; O
  132. rename, renameKey
    * h1 c# m/ k; z
  133. 给key重命名6 o4 G, W/ j& k
  134. $redis->set('x', '42');
    & D' `  `) Y. g3 _7 t
  135. $redis->rename('x', 'y');
    / o% I" C' e2 |2 X( B$ T- z
  136. $redis->get('y'); // → 423 A7 g& w* k1 B
  137. $redis->get('x'); // → `FALSE`
    9 M# d% y9 Q7 m9 E* s7 M+ t
  138. ' E" M' b) b: x4 ~6 B
  139. renameNx
    ' {1 @) T5 b# o! o! A- v8 E: s) P  S
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    ! s; P' G; s: Q, R) {

  141. 1 K4 n- u! m% g3 j/ _
  142. setTimeout, expire+ m% p* P) y# A, @
  143. 设定一个key的活动时间(s)
    ! U9 |- @5 z5 j6 d  Y; ?
  144. $redis->setTimeout('x', 3);
    2 M& W5 W  J" D3 {
  145. : n! n: \1 D& B! i# Q
  146. expireAt7 f" _$ {- ~/ X' p; j  C2 Z
  147. key存活到一个unix时间戳时间
    2 z4 v# k( e. M8 {+ R7 ^
  148. $redis->expireAt('x', time() + 3);
    / `  L, f; F" X0 X

  149. - t$ F8 ~" e) f( S5 R& ^
  150. keys, getKeys! k; ^- U7 q- A1 X' a3 \% M
  151. 返回满足给定pattern的所有key6 E# K; I0 V8 a+ z
  152. $keyWithUserPrefix = $redis->keys('user*');$ F( X2 b. _$ k* b7 G7 V5 F6 P

  153. ' q  F$ {) M: [2 G2 O/ {1 j3 A
  154. dbSize
    + J6 {1 f9 l( [) L5 U
  155. 查看现在数据库有多少key
    # D. ]: S) s: f8 `- H
  156. $count = $redis->dbSize();
    & X# {* L4 s9 z% P( |
  157. ! b6 {  \9 a( z' h. T
  158. auth
    - n/ |7 t- F8 ~8 ^1 Q
  159. 密码认证/ q; F; }: D7 K, N  V& j; {! I
  160. $redis->auth('foobared');
    , z5 `% b# w$ N6 B

  161. , J9 K6 s6 \, `! N
  162. bgrewriteaof
    $ b: ^4 d. D- H! i6 m% c( g
  163. 使用aof来进行数据库持久化* \6 f: M( _  H  {" G$ Q
  164. $redis->bgrewriteaof();
    ! }: Q' ~7 P: F* V  i* X
  165. 5 a5 f( D2 B/ l6 L
  166. slaveof
    4 z2 q+ P" M% ~& d, M) R* ~
  167. 选择从服务器
    ) A4 C3 z6 I& q6 O! d5 M: u( Q
  168. $redis->slaveof('10.0.1.7', 6379);; H$ O; ^# Z$ E( {$ R

  169. 4 D; x* @6 `! `9 H, C) Y% D5 D& o
  170. save
    2 T3 u6 W1 f" O
  171. 将数据同步保存到磁盘2 K' ]) c$ j4 H

  172. - R, i. x( d" b: y5 L# U
  173. bgsave
    " w4 d9 @, s1 ]! f
  174. 将数据异步保存到磁盘
    ( d. I9 s2 H1 `7 p  t5 @3 R$ _

  175. ; Y: l2 P- v, o/ y7 ^0 l0 _
  176. lastSave+ T; T( A+ f2 T
  177. 返回上次成功将数据保存到磁盘的Unix时戳7 x4 O, t* n$ I
  178. 1 M: d; N0 I: q. D
  179. info7 V: m  \; L+ z4 ?
  180. 返回redis的版本信息等详情
    , P( A: D) L+ ?6 V* Q

  181. " ?" v- f; M# u7 H& W
  182. Redis::__construct构造函数8 C  d/ V3 U" e1 Q5 ~
  183. $redis = new Redis();; y3 s0 Z/ d9 _- S

  184. ! T2 S0 h" L! Q7 V& ~
  185. connect, open 链接redis服务( H& X$ b3 ~- M9 l
  186. 参数
    & d6 r2 g1 I1 E) a9 W, h
  187. host: string,服务地址
    # S! G& B2 E9 v" Y2 s- Z4 X
  188. port: int,端口号
    0 k; P% _. E% F7 p6 t
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    % j& `' W1 A! S8 K6 j7 k$ H
  190. 注: 在redis.conf中也有时间,默认为300: U% K' s" q5 w* I
  191. 0 V) W. w# I7 w5 X! ^" ]6 Z( J
  192. pconnect, popen 不会主动关闭的链接/ r9 x: E/ Y+ ]. i1 }
  193. 参考上面
    : q9 d/ x3 C3 I. L8 v
  194. 4 a1 ^7 ~6 \  p6 T# ~
  195. setOption 设置redis模式
    - A& ^6 n" V* p0 x0 C+ N

  196. ' c; y0 {" H/ C) z0 {" }8 F+ ?
  197. getOption 查看redis设置的模式
    2 [. S+ h3 c4 w, Y* Q: W5 s2 ^/ [
  198. ! u" I  ?6 T/ _% Y/ [2 Y# ~
  199. ping 查看连接状态
    " A2 i( H: t# P
  200. , A; Z7 l8 i& O9 u  h7 ~
  201. get 得到某个key的值(string值)4 i8 Q# b" L& W" j" h5 u5 m
  202. 如果该key不存在,return false
    1 S# d# m$ f% m' j- `' [4 ?6 D+ ?

  203. % v' ^. c% x6 ~9 \
  204. set 写入key 和 value(string值): `9 J) K. ^, Z% {2 K
  205. 如果写入成功,return ture* U/ W/ h& t! D2 c( O% L, _( J
  206. 0 U* R6 `/ t* u. O
  207. setex 带生存时间的写入值' w0 g8 W) {( I; ^7 F
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.9 _" U3 o9 p: z" n- L

  209. + P3 e5 f4 K+ g" ], I+ M) X
  210. setnx 判断是否重复的,写入值
    + a8 G! w+ v+ ]
  211. $redis->setnx('key', 'value');: x( S" |1 n5 X* ?, G1 ^
  212. $redis->setnx('key', 'value');! v& k8 n( l$ N% `9 Z: P+ A% d' w

  213. & o/ X) y& J8 a# x) x: [5 {. V( A; A
  214. delete  删除指定key的值  K/ C" i/ i, t5 w# L3 v5 M
  215. 返回已经删除key的个数(长整数)
    ! I) l6 q9 I$ a3 L& _
  216. $redis->delete('key1', 'key2');# e6 B: `7 u  D- g, L* ~' K6 e' W
  217. $redis->delete(array('key3', 'key4', 'key5'));
    + z4 J- J  l* l
  218. $ G0 y' j  z+ b! D* @7 l
  219. ttl, }0 |4 Y( J7 h) _. \5 f3 I
  220. 得到一个key的生存时间
    3 p4 w0 i4 `4 s- |6 b* X
  221. 1 ~, ^# q! r, i: z+ {. O9 j, D4 C) n0 O
  222. persist
    3 W& h) j* a4 {  b6 F
  223. 移除生存时间到期的key" L& r3 Y1 R# T. A% |7 u
  224. 如果key到期 true 如果不到期 false
    / ]4 L9 o# k3 X& I6 a
  225. / t  W$ O- p. w! c7 Q. F3 m
  226. mset (redis版本1.1以上才可以用)
    5 ~4 D! ?* i- Y' Q, l
  227. 同时给多个key赋值
    " C6 k! ~- N, F+ D
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));% Q& q. ^0 a& k$ F8 D

  229. 9 q; \4 P& o4 r" v" ^7 \0 b0 |' Y

  230. ; T0 \0 N, E6 }( a5 m
  231. - w4 Q2 A( @& |- P! ?" O$ n/ |' L3 G
  232. multi, exec, discard! c: h( R7 j+ l0 u( o- K: W
  233. 进入或者退出事务模式9 T- H/ _* k: G# L  T) {
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    6 ~; u. q+ ~( q1 y
  235. Redis::MULTI:将多个操作当成一个事务执行  J$ ~4 ^# K2 r- m- i+ ~& e1 o* ?6 b
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    ! q4 T& L. f+ R4 o! z
  237. discard:删除一个事务) D$ l4 k: q* L
  238. 返回值
    7 C7 s. A" o4 j2 \' ?  U- t3 e  [
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    4 @1 l0 c: [" _4 e* U9 f

  240. 6 y& t! m$ I% A- A
  241. watch, unwatch (代码测试后,不能达到所说的效果)2 P; I$ p& z$ d& ^
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)  X' Q9 g/ K( ]$ A4 [) l
  243. unwatch  取消被这个程序监测的所有key) r- l4 H9 {3 Y0 ~  y5 V
  244. 参数,一对key的列表
    . |9 s6 u5 s- U: n" ^; F
  245. $redis->watch('x');
    1 G7 M" |, u3 T2 L
  246. ) s# {' @. V- n% |: ?3 ]
  247. $ret = $redis->multi() ->incr('x') ->exec();
    4 {- g2 g$ z0 g7 i1 y) l3 P7 Z( S
  248. & a3 I5 l7 R5 V, ?# d1 j$ C
  249. + J  `+ F. x; n" ~$ x
  250. subscribe *
    6 U$ e6 ^" r* e
  251. 方法回调。注意,该方法可能在未来里发生改变
      u( ^+ D% D. q& ~; o4 S9 @8 |
  252. 9 Y% T: N1 R! R
  253. publish *
    , v: t4 l6 `- @" @
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变" h! A+ d% k+ W6 O
  255. ) ^8 W% i- _+ S' [6 A3 f
  256. exists# ]7 s9 O6 M: Y; o
  257. 判断key是否存在。存在 true 不在 false
    2 z5 Y! @& S8 C/ Z2 d0 k

  258. 4 j! o9 J9 W/ [) A' ~  J* l( K' D
  259. incr, incrBy# p! Q6 x8 e* ~( ~) D
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值% Q; }6 c2 @& g5 u" a9 E) ^: n& ~
  261. $redis->incr('key1');
    6 G; F! T) V- [; ~  W1 V
  262. $redis->incrBy('key1', 10);* B  Q9 j+ v: n6 Z; K; ^
  263. 5 D, ?2 E; a4 [1 ^' ^( L# T* e0 j* F
  264. decr, decrBy
      _  I+ O$ w% b- l8 ?3 g9 K+ G
  265. 做减法,使用方法同incr! a! j% }5 C( N9 N4 |/ t3 G
  266. 6 d' F' K$ K. o! m
  267. getMultiple
    ( n2 m9 h2 Y' m6 w" c! O$ a4 C: h
  268. 传参
    8 g* Q$ Q* z' i+ Z" K
  269. 由key组成的数组% H, x: D: |. y5 b) p
  270. 返回参数5 x# p, z+ C* N' Q8 j& }
  271. 如果key存在返回value,不存在返回false
    8 d9 H4 d7 S2 h- b
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));$ u- q8 j& u6 P" _6 M3 p
  273. $redis->lRem('key1', 'A', 2);
    & m5 G. `' n. q4 C, |
  274. $redis->lRange('key1', 0, -1);
    " t' n% R/ \$ s. P7 J  j  G

  275. # [' z5 x% w* ]/ W0 S3 l1 `2 x
  276. list相关操作
    1 N/ h. K! R% u+ e8 n6 w8 ^
  277. lPush! X" z5 U. M1 p2 I  Y
  278. $redis->lPush(key, value);
    ! l3 m3 i% b# n0 G" v8 |
  279. 在名称为key的list左边(头)添加一个值为value的 元素+ O9 ]( I' _% i7 Z8 c6 {

  280. * w. N" `1 }" |1 X4 G
  281. rPush
    3 _; _' Y1 a# T
  282. $redis->rPush(key, value);. v$ X+ P- o+ e, w. B2 x
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    2 J7 X! r; ^$ g3 V/ K4 S# y

  284. ; K; A- p: l! S- P
  285. lPushx/rPushx
    / W  B' G/ N! x# Y- M
  286. $redis->lPushx(key, value);
    8 k( z% R. R" s, }! ^- D% L
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加+ V5 ~' y% N4 I8 ^6 j7 ^
  288. % A  m; q& D# p% o" W  c. `
  289. lPop/rPop
    0 D  B7 c* w7 L6 p2 f
  290. $redis->lPop('key');
    ; V, H) g4 B9 S, j9 r9 a3 B
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素  e5 V- d) ?% G) \+ K+ [! U

  292. 4 y4 m$ G% d: ]0 G
  293. blPop/brPop
      Z2 R8 P. L5 \& f* E8 N
  294. $redis->blPop('key1', 'key2', 10);* E( [4 k/ T0 v8 b2 Z! Q
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作% f; E1 m+ x) B
  296. * ]; i1 F+ y! E- y8 K4 Z, P
  297. lSize
    . J; S3 m* X  G& }1 `
  298. $redis->lSize('key');+ e- a0 I6 E1 |3 i; N1 O, m% T
  299. 返回名称为key的list有多少个元素
    + y& K9 |* }' B8 I/ f
  300. : f- P, u$ V9 y5 J, {
  301. lIndex, lGet# S4 b2 \; _% f2 a1 n. L! S' ]
  302. $redis->lGet('key', 0);% j( ]+ Q  z' p; g. T: i
  303. 返回名称为key的list中index位置的元素
    + ?, D! V. c1 d$ H5 `2 R1 p
  304. / u2 X2 S1 f$ ?2 f% p/ |  P$ ~8 @, ~" L
  305. lSet3 v# ]9 M1 B/ b/ Q- i( _$ Z  }* n$ e
  306. $redis->lSet('key', 0, 'X');& x7 Q6 f! r9 @& I' g$ b2 E: J
  307. 给名称为key的list中index位置的元素赋值为value2 }; O( J2 z( i7 R$ {

  308. 3 f2 z: e3 l2 q! W  _
  309. lRange, lGetRange
      g6 y0 ^0 f4 m, m* q" A
  310. $redis->lRange('key1', 0, -1);
    $ e: @$ ?& W. W. T  Z  f
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    4 s$ Y" y( M+ H$ }# T9 R5 ]4 b
  312. 8 C1 Q5 k1 F: X3 F% H* z) m+ c" K
  313. lTrim, listTrim6 e6 O1 x2 s$ r- B5 ~1 t2 ]
  314. $redis->lTrim('key', start, end);
    6 M1 l1 ~1 M# M( E) c
  315. 截取名称为key的list,保留start至end之间的元素
    * o' S% x+ R. i% p- n* K3 P
  316. 8 G1 c3 Z+ q* ?1 a" n$ f0 ?0 m
  317. lRem, lRemove
    & Z* `. N7 `% ], Y5 g
  318. $redis->lRem('key', 'A', 2);
    0 |* f  O5 l9 B2 G5 ]' e' T, Z7 d
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素. S* v) q3 F  ]( U
  320. ! Y' f  r4 P/ \8 v% o& o7 X
  321. lInsert; _3 x# U1 C# s, ?+ z: U: j4 S
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    3 C* e" @' \8 Y% F" _% u. p
  323. $redis->delete('key1'); $redis->lInsert('key1', Redis::AFTER, 'A', 'X'); $redis->lPush('key1', 'A'); $redis->lPush('key1', 'B'); $redis->lPush('key1', 'C'); $redis->lInsert('key1', Redis::BEFORE, 'C', 'X');3 Z9 R* |, t( c* V1 [( G, G
  324. $redis->lRange('key1', 0, -1);
    + t+ j0 ^+ C) r  A
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    4 S+ i: A2 e9 |. n
  326. $redis->lRange('key1', 0, -1);
    ! \1 Z# k' q( s" F' H
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');3 h2 R% M4 a3 H) G1 D; x

  328. * W, I3 W. a$ i
  329. rpoplpush
    ; H5 i" ~# ]% ~% o9 b, V& Y3 a
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    % _6 {4 R+ |( t% p1 a
  331. $redis->delete('x', 'y');$ j2 a6 K6 X0 _0 K7 a, 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'));, Q4 j  J- O5 _  D5 o% D* x
  333. var_dump($redis->lRange('x', 0, -1));
    " _3 I1 T$ e* l
  334. var_dump($redis->lRange('y', 0, -1));
    ( F" X" {* m4 s4 J( y% |1 v8 c

  335. ' F, q" T. b" D. _- y3 \' N( Y
  336. string(3) "abc"
    ) G( @9 _0 d0 ^; ]9 j2 @
  337. array(1) { [0]=> string(3) "def" } 3 t, v! z  k4 ^0 ?2 [: w/ K
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }7 {0 A6 S. n: X3 L& ^
  339. " M  H( I+ ^8 l8 X
  340. SET操作相关  C4 b& ~- |& x
  341. sAdd
    2 I7 H6 T+ `0 c2 L
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    5 d" m, b3 N) y( t- z8 T* d
  343. $redis->sAdd(key , value);( R$ b7 j) F3 H7 G% r

  344.   w* B3 t3 @: W
  345. sRem, sRemove
    $ O4 G4 X2 i& d2 h5 D6 r% Z9 n
  346. 删除名称为key的set中的元素value6 |' I8 c  H5 t- Z8 _
  347. $redis->sAdd('key1' , 'set1');6 Z5 x% f8 v" p2 K
  348. $redis->sAdd('key1' , 'set2');
    0 {) E* o$ p% K
  349. $redis->sAdd('key1' , 'set3');
    & M  q7 X9 W  m' L+ d
  350. $redis->sRem('key1', 'set2');
    " d/ s9 G' K) D3 v

  351. % M, f7 M, d' ?: L
  352. sMove
      z/ ?/ l( @, x4 w/ S9 z
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    ( C3 |/ O8 m, J4 S
  354. $redis->sMove(seckey, dstkey, value);$ B& U  [8 p8 w$ q( ^

  355. ' |! z' H0 u0 h! d1 \
  356. sIsMember, sContains
    + K0 C' ]' J5 G1 V  f6 D) l5 k
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false8 ~/ ^# f; z4 I2 C$ S* Z& H
  358. $redis->sIsMember(key, value);9 B) I3 \& g) f7 y8 R2 V" t- J
  359.   S" w( R* t- [
  360. sCard, sSize
    * R+ n! _- k6 c5 a' q! q
  361. 返回名称为key的set的元素个数! F! [' b& ]+ r$ z0 p
  362. ) V3 y, R& h/ x5 |7 ?8 S' h* e
  363. sPop
      {& e) J9 a& {# Y/ }
  364. 随机返回并删除名称为key的set中一个元素
    ( k8 W( ~, |& \' c( A* S" x

  365. ! g* P; s- X- x, c& x' ?4 ^
  366. sRandMember1 t' g' g* e0 j
  367. 随机返回名称为key的set中一个元素,不删除
    $ C6 w1 ^) |6 J) s3 u+ C
  368. : `: W6 y! U3 ?$ n5 N! j' k9 w: Q
  369. sInter; {" K: c$ g0 g& j9 V, x
  370. 求交集, W6 o1 h, g4 r/ |$ b# x& @

  371. 9 k' N' Q" n+ [! ^6 U* c
  372. sInterStore  x- R8 B) O4 ]% s8 e+ g! ~1 ~
  373. 求交集并将交集保存到output的集合5 @. Y- B& u6 z- v
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ! M- L) B/ Z  H( z' r2 G9 h

  375. ! j0 t+ M; f0 ]: l
  376. sUnion
    ) [$ M) q. M( _5 N" U
  377. 求并集2 J5 w* n7 f) ~
  378. $redis->sUnion('s0', 's1', 's2');
    : D& D0 m+ b' \* Y% U& H  V7 d+ M
  379. s0,s1,s2 同时求并集# m: X3 T( K2 T0 a

  380. , o" c8 m+ u0 x; @
  381. sUnionStore
    - z& ?. S; Z( g8 d
  382. 求并集并将并集保存到output的集合% ^/ S, Y0 X2 F) K& }
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    0 P. o$ E6 C; M9 t, O% i' N5 j

  384. 4 V, a# M/ w# t1 Q+ O7 N. o
  385. sDiff; j. m! D& U: v3 P* ?+ w3 a: _9 H
  386. 求差集
    ' T) I: R& O( {7 `0 y/ \7 t; a  S
  387. - i  U4 K( V& s1 z/ s, _: r& l7 c% t2 P2 i
  388. sDiffStore
    * b9 ]1 w8 t7 P) W  n1 c, F
  389. 求差集并将差集保存到output的集合
    3 |. l. O  t( s- ]0 Y* r

  390. 2 @6 B0 s% F3 I1 c- u0 X
  391. sMembers, sGetMembers
    * d1 V9 d; R* W, S6 Q! c
  392. 返回名称为key的set的所有元素
    + }: U; w3 l# \/ |, n

  393. ' v( b4 b4 ?& k" E4 p
  394. sort' L, D9 \2 Y2 I- g
  395. 排序,分页等
    * O3 x2 S9 B& K7 e, s  Z  Y
  396. 参数# Z# I5 f2 m0 O) b; J% |
  397. 'by' => 'some_pattern_*',* X- i( O' ?. d( `& D, N
  398. 'limit' => array(0, 1),
    ( ^: H2 Y$ ]5 D; g
  399. 'get' => 'some_other_pattern_*' or an array of patterns,; X9 ]; F# T2 [% ^' w. K8 c6 X
  400. 'sort' => 'asc' or 'desc',
    # G5 W( @: Y& @" p) M- v% a  x
  401. 'alpha' => TRUE,$ v2 q2 k/ C$ Q8 g# I6 q
  402. 'store' => 'external-key': ~& d5 Q& e1 L9 ^
  403. 例子' h0 c8 \  Z7 N" z$ J9 K
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    4 ]+ L6 L& y( k; X0 o/ k
  405. var_dump($redis->sort('s')); // 1,2,3,4,5( @) p) e* O2 _: m+ u
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,12 r: c+ ?5 q/ {) T# K# [
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5. I6 y' |/ m9 b: R3 T* y

  408. ' ?6 {0 L: p4 d& {
  409. string命令
    ' S( U' c5 I; d" j0 O; j5 n% M
  410. getSet% s. \& a2 ]) b5 s: q
  411. 返回原来key中的值,并将value写入key
    ! Q& W  B# m, `  T2 o
  412. $redis->set('x', '42');/ y; v3 h1 D/ S/ e0 a1 v
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    ! D, R% u7 x* F% x4 ]
  414. $newValue = $redis->get('x')' // return 'lol'
    4 U  i* s" X: p+ V  Y
  415. , l  J3 c( ^! X
  416. append
    " x, C; \( y/ w: G4 n9 |
  417. string,名称为key的string的值在后面加上value# b) Y) x  \- h4 l' L7 X4 R1 |6 C
  418. $redis->set('key', 'value1');0 i! L  |1 @. E  z
  419. $redis->append('key', 'value2');
    ' e+ X: g4 o! D% D% c, }& ]! V7 U
  420. $redis->get('key');0 g# e: \7 C9 i9 M
  421. ) T, Q' A/ Q% i# m: d
  422. getRange (方法不存在)
    % f" i$ p" H( \
  423. 返回名称为key的string中start至end之间的字符
    $ S* Z, u7 i  S, d
  424. $redis->set('key', 'string value');  h* K: [! X0 C: X; ]
  425. $redis->getRange('key', 0, 5);
    2 R* i2 m+ I$ G/ O8 o; M
  426. $redis->getRange('key', -5, -1);4 M2 T# v* f) f/ m% H. |2 f4 p4 s  o

  427. 6 @& t+ C  F9 D9 z4 ?0 I& _
  428. setRange (方法不存在)/ {6 e6 y: y! E7 P
  429. 改变key的string中start至end之间的字符为value' s5 `$ ?: T( N- C" R  p5 S9 e
  430. $redis->set('key', 'Hello world');
      j' L& g. [  w  V
  431. $redis->setRange('key', 6, "redis");- ]0 o6 ^8 }% F% `1 e% }
  432. $redis->get('key');4 f4 G) i! b% J5 H# Y: ]7 d

  433. 9 {+ n# `3 F5 _5 J: g3 ]* R
  434. strlen
    # H4 L. |' H/ s+ @7 T$ @
  435. 得到key的string的长度
    3 }; `8 F- g7 R& L( h4 @/ A
  436. $redis->strlen('key');
    % @) X& g6 o2 K: d7 F

  437. : _* h* w4 I5 B; }$ E
  438. getBit/setBit
    / \/ B: R! t: J
  439. 返回2进制信息
    2 s/ {; u  C4 K) `7 _4 k
  440.   v& Y" r7 P; v+ r5 p+ ^" l% ]1 J  G( K
  441. zset(sorted set)操作相关* i6 R# B* N# R$ E$ {0 g3 {1 d; _
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。" O" |) I, S$ b6 @9 V
  443. $redis->zAdd('key', 1, 'val1');! G5 {( O+ b3 Y0 t6 L  m2 s& Q
  444. $redis->zAdd('key', 0, 'val0');4 Y/ B, [' I5 B% W8 j- j
  445. $redis->zAdd('key', 5, 'val5');/ L) g/ \6 p9 Z
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)4 F4 j# W+ f6 o: M3 z  @+ j! w! Q1 M% n) r
  447. " y% }. H  U  j7 U/ ^
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素' \% h" N% E  W
  449. $redis->zAdd('key1', 0, 'val0');
    & R1 b- ?4 ?2 C6 P1 a9 E
  450. $redis->zAdd('key1', 2, 'val2');
    - W5 h" C+ g; \4 e2 L
  451. $redis->zAdd('key1', 10, 'val10');$ v  b+ F, p5 ]0 n' K! l; R
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);' a, F0 Y( y9 J; l" s" d; Y5 J

  453. + v0 H3 K- X! R/ o$ h. s( B
  454. zDelete, zRem
    ' h1 v. `$ i( d9 L! U
  455. zRem(key, member) :删除名称为key的zset中的元素member* U" X2 W9 c6 p% m6 @. j
  456. $redis->zAdd('key', 0, 'val0');
    0 V0 b* k; k% z7 |
  457. $redis->zAdd('key', 2, 'val2');+ R; S: o* M! N' C6 h9 J3 o
  458. $redis->zAdd('key', 10, 'val10');
    0 z" o8 G. u  K* N& Q
  459. $redis->zDelete('key', 'val2');( l" E  z9 M7 I9 F3 d1 k
  460. $redis->zRange('key', 0, -1); 1 f6 P3 w5 `5 P

  461. 0 T7 G9 f% [+ I9 r  }  V( y8 \
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    $ x1 R3 c; q! K7 l# a4 c
  463. $redis->zAdd('key', 0, 'val0');
      R! r8 c4 |, A7 f1 n
  464. $redis->zAdd('key', 2, 'val2');7 Q( ^& ~  i. L$ l0 x- a  R. L
  465. $redis->zAdd('key', 10, 'val10');
    ' |2 F* A# s' v, \. v  G
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);; s) k7 m& n! @5 @5 ^; \$ @" W

  467. + x4 L+ x$ W( B3 j3 g" A& F/ ]
  468. zRangeByScore, zRevRangeByScore
    3 R6 p, Q% J9 b& F- g% R
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));/ B) W9 z0 a7 {, U  c4 ?# U$ @1 F
  470. 返回名称为key的zset中score >= star且score <= end的所有元素* l/ B8 ^  U* q  u
  471. , m  Q) l4 ~, P7 Z
  472. zCount6 G$ o/ d& h2 |3 E3 a. d& w
  473. $redis->zCount(key, star, end);0 s1 ^% ~" ~* m, M" n8 w% U
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    ; m6 X6 X7 p6 l/ n3 C0 Z9 ~2 G  h
  475. ' i! R6 G5 l1 C" z" a
  476. zRemRangeByScore, zDeleteRangeByScore
      M& [( Z2 q) t! S$ f
  477. $redis->zRemRangeByScore('key', star, end);
    5 L2 h/ M% B2 t. k' M
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数3 u( r0 s5 L' [9 s6 g# f

  479. - s5 f. K. e( R, M7 v. l% G% u
  480. zSize, zCard! _$ h) E5 ]3 y) w+ `% X) J* o2 H
  481. 返回名称为key的zset的所有元素的个数9 U% Z$ ?! N3 |
  482. $ D, A  G% w( D; K& {
  483. zScore# @! C1 b! u1 _- q0 a1 p
  484. $redis->zScore(key, val2);
    ) t! N1 ?- ]( f! [7 N" l; g- N- v
  485. 返回名称为key的zset中元素val2的score
    / I$ U7 _5 O. U+ L" A! Z
  486. 0 k$ q% D9 g( A6 ]' `5 i
  487. zRank, zRevRank2 }  D, d$ Z$ ^0 `& S9 v
  488. $redis->zRevRank(key, val);
    " d8 B" j; [/ j* }
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    / m* J2 v5 k9 J/ ]; ?7 }0 |

  490. , g9 U( B  R" ^+ Z. a' {
  491. zIncrBy; l! R, S2 [/ p9 n8 q7 \
  492. $redis->zIncrBy('key', increment, 'member');
      t. w; b8 H% h
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    , b8 ]: ~) _" s, n) Q9 G

  494. : z4 G% O% |2 i9 d* B8 P+ y5 R. D
  495. zUnion/zInter
    * [1 B% n0 u2 x# |& x4 q2 [. ^
  496. 参数3 w) K& U% `. _/ i. |
  497. keyOutput& z6 d0 P# A6 }) V0 b# S" I
  498. arrayZSetKeys
    + p0 N+ C% t- y/ b) }
  499. arrayWeights3 O. T  x3 ?4 x& J$ m3 h  n
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.( E6 t* {, H; M8 f
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。, s# F/ _$ Z' ]6 M# Q8 `0 `
复制代码

" r; g  O# \8 y: H  X9 n1 J; ?' C3 @
2 C' s& [- f0 z5 P* k6 N5 ]; `& `$ U
$ r" U% F7 @+ ]- u$ f! L; f; K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 7 u: m- q% M' w( B7 t
  2. //连接redis服务器
    . ~7 ^+ D$ u, Z5 S3 R
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 11:46 , Processed in 0.073708 second(s), 19 queries .

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