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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php( v& k9 u) v  E8 @' e3 P2 J# W
  2. $redis = new Redis();  
    % _0 U1 `3 U( u4 n3 g2 C% ~
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    9 S* c* n: u' P( S
  4. $redis->auth('mypassword');//my redis password ' j. h  [* {9 C$ y( [
  5. $redis ->set( "test" , "Hello World");  $ `+ P0 g" s* A" v) ^: M
  6. echo $redis ->get( "test");
    % Q2 u( B- C0 t# a
复制代码
php操作redis函数封装
  1. /**
    % @3 w! y2 a) J! M0 @- r
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数. V" c/ C8 ~- J" q5 i
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    - D- m/ m  O: h2 x
  4. */5 f/ M3 ?5 q5 v, h; j
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    2 [0 ^0 F  c# G- H! n2 Z* `
  6.     if(!$key||!$value) return false;8 Z5 H; r) a& D0 \' [
  7.     $host = $host?$host:getenv('REDIS_HOST');
    6 a" R& H5 ?( _5 u) H  Y. e
  8.     $port = $port?$port:getenv('REDIS_PORT');9 L' }1 |% c' H+ ~- S
  9.     $redis = new Redis();) c- }/ D  B7 x3 `4 b1 i- c+ U& c7 F. `
  10.     $redis->connect($host, $port);6 K' ?  X2 N4 x8 M+ d: L
  11.     $value = is_array($value)?json_encode($value):$value;4 B' E3 |! M  r2 u5 x8 e6 `+ ^0 Y- v
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);4 h9 i' s$ I( k) U9 n
  13. }
    0 A5 f' E* W" ~
  14. /**# l2 D. _7 P- v9 R/ j
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    : u! V) ~7 U1 @4 w8 |& e3 g' I7 K
  16. */; t1 _6 G2 j1 K( m6 @, R4 m; C
  17. function RedisGet($key,$host='',$port=''){
    / x7 {& K' j! @5 V
  18.     $redis = new Redis();
    . f1 C; R+ X8 h; q+ L
  19.     $host = $host?$host:getenv('REDIS_HOST');
    1 u- [' w- \" t+ ?& o2 D/ g
  20.     $port = $port?$port:getenv('REDIS_PORT');- \# e; q+ b: m2 Y$ c% E8 n) g
  21.     $redis->connect($host, $port);5 n$ Z5 e! k. C) S1 G3 q4 Y  p- U
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    1 N- t; Q6 t2 m* t% [  v
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);5 ~1 Z) `* [: F
  24. }1 @/ ]$ Y' {* A4 a6 Q9 R* ]8 C
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了& A! e, S$ \, e8 H/ |3 w
  1. setex 带生存时间的写入值
    - j2 d$ c# G4 w9 Z8 `% h2 a
  2. $redis->setex('key', 3600, 'value');
    1 s7 W; s+ J2 H( G% @
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回14 S1 ]0 t  j! ^) k) `! ]
  4. $redis->setnx('key', 'value');. F( C6 T0 `) p
  5. 返回已经删除key+ n9 t% t; l/ }2 w
  6. $redis->delete('key1'); 成功返回1失败返回0
    2 m; T. u" h4 ~; K' Q- ^$ B
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    5 B8 c2 z1 |: _% H* N$ e
  8. 查询生存时间8 K( K: k' X1 b/ }$ R9 }' }1 a/ a  l' R& V
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    0 j/ T: K8 [# E' V7 M
  10. 同时给多个key赋值,同时设置key0和key16 b' E4 t& x0 U* q
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    8 W2 C& X, Q! e+ ~
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值1 R6 j# z1 |. [
  13. $redis->incr('key1');
    . @2 d: c* i& c  K0 b
  14. $redis->incrBy('key1', 10);+ M, H& u8 W7 g0 D9 q0 Q6 L
  15. 减法跟加法一样
      M# K6 p# @# I" m. R" @8 }! V3 p( F  a
  16. $redis->decr("key1"); 减少1# F( ]  ~. L+ R3 }" H
  17. $redis->decrBy("key1",5) 减少5
    4 ^  x& F/ _* H
  18. / q( I# h* Z4 O) P
  19. list相关操作,连表操作9 j' P9 T/ y( W* k$ E
  20. lPush/ X3 v8 v) n+ U7 N& l. j
  21. $redis->lPush("list", "888");# h2 W( U3 @% ?) d8 M5 l
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数9 |0 l! D' {6 h% M3 H  z
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    / I9 z2 |! l* _, X/ ^! M- D- t9 `
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
      s; \$ `* W* B& \
  25. lPushx/rPushx3 T. O* ~9 C; g' T. n
  26. $redis->lPushx(key, value);9 [% R8 `$ T- ~; y# i& A8 i$ d
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加- v$ R! a3 G% o8 e$ S

  28. 6 x4 U+ N* `# X, ]7 H$ l
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    9 p/ ~5 u! M4 }8 J9 `) {
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key. E, ~5 H$ ~6 i
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    1 a7 Z9 i" E! M; ~
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
      k4 w: J2 c: j  _! r( F8 ^
  33. sadd s1 zhangsan
    $ l) Q" w  K) W) X& m
  34. sadd s1 lisi/ G! G: `# v1 q9 Q# D
  35. sadd s1 wangwu( m0 M6 ^* r4 f$ d  S8 {
  36. sadd t1 yangxingyi
    ' S% Y; |* A! f- d
  37. sadd t1 lilei
    ) T- D; w  w4 E  e/ [& h& U
  38. sadd t1 zhangsan0 J/ `* d8 N0 v! O7 p% t  c6 l
  39. smembers s1 s1的所有集合内容4 [. p+ _) l3 C; r" v0 n
  40. sdiff s1 t1 s1有的,t1没有的,差集2 M$ N/ b: `7 U2 L; ?
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    , E2 B1 I) g3 s* v0 Z
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的9 W# Y8 K& W5 X. _/ C- e, v
  43. spop抽奖场景,返回集合里面随机的数4 B0 X% a- B% c- @1 X6 v
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了! X; h: s0 n, i% `
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    5 S# Z; `( t/ {4 M% U+ Q
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    6 ?. c9 w/ G+ Y) o
  47. 随机返回集合里面的一个元素,但不删除,重复中奖* H! Z7 t* l; W% f4 g# M
  48. $i = $redis->srandmember('s1');echo $i;" I2 l! O+ w3 _4 ?7 a7 ?$ S( ^
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false; T6 z3 i# j& z* [
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    / M5 f8 F/ K6 Y! A$ G) K
  51. 8 q! |) n" K" ]6 Y) S9 e& U0 H
  52. zadd key 2 value 有序集合: s( c' M# B5 o6 K$ F& a2 m! E
  53. zadd y1 1 zhangsan;
    8 t9 f' B- ^& e5 U8 o4 `/ P
  54. zadd y1 3 lisi;1 L9 j. S/ ~  h* y- F/ l% b
  55. zadd y1 2 wangwu;
    + U) |8 l! p: i. ~1 [& X
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi, n: h9 ^& S3 q+ l8 y( A0 s5 T
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);7 O' r& c% Y% z4 u! \
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    2 s3 a/ w1 m& N+ W) K" x: f7 G
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先5 B* g9 q% w7 h8 k
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的% M+ c3 B3 d' Y7 u
  61. 无序就scard,有序就zcard,有z没有s/ q# c& J4 s1 g# [0 N! t
  62. sInterStore
      P# L$ E. K" y/ d4 n
  63. 求交集并将交集保存到output的集合
    1 E5 H, w+ g3 Q8 K9 }
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')! R; E$ J$ k# K- M- l* F9 {

  65. ; ~4 p6 Q. N( ?1 ^5 G
  66. Hash操作- h5 A6 u1 K7 {5 ]2 D. p: d
  67. hSet+ r- Y0 Z  |  h8 t
  68. $redis->hSet('h', 'key1', 'hello');
    - R3 f, M: |* S5 |, x; s
  69. 向名称为h的hash中添加元素key1—>hello
    8 I8 ~0 q' s* F0 V( w, n+ u

  70. " A1 q& i/ _: h% S7 N. g
  71. hGet
    $ F& i7 S2 _; b( Z7 L
  72. $redis->hGet('h', 'key1');( w- a6 a( T0 j
  73. 返回名称为h的hash中key1对应的value(hello). c+ U8 D. ~" `9 b2 O
  74. 6 L  W. R; i- k) u3 C8 {
  75. hLen
    3 ]% t: d8 B# P( Y! J6 u
  76. $redis->hLen('h');
    " X7 o* Q! Q3 I6 {2 T. I# x/ G
  77. 返回名称为h的hash中元素个数
    2 Q4 B' b" u; E' k% p( N

  78. % j' l( E. |5 \) }
  79. hDel
    & j/ |. R$ i4 Z/ g7 y% I
  80. $redis->hDel('h', 'key1');
    7 @9 r: v! H# O; X+ s) j3 L& ~- M
  81. 删除名称为h的hash中键为key1的域/ y% {: \& d# k9 i5 C8 [( u

  82. . p& o3 U* O, f/ Y+ ^! b8 j
  83. hKeys* V! |* H" x2 S( L2 q
  84. $redis->hKeys('h');
    ; h# h! k' m; F3 {
  85. 返回名称为key的hash中所有键, X3 N$ c( @) P! }, I1 _5 _0 q1 ?
  86. 7 P" o- b# s4 X' V
  87. hVals" T* K5 r" w1 A3 g
  88. $redis->hVals('h')$ y) }0 n, i$ d6 P6 j
  89. 返回名称为h的hash中所有键对应的value  U5 V7 f8 b1 ]4 G8 a. H- O1 b

  90. ( [& y* l" A7 j$ W
  91. hGetAll% G$ r; K: s) Z* g
  92. $redis->hGetAll('h');
    3 L& {) ]( Q* w3 x  s2 C; j. U
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    ) e0 l6 E* _  ~* @$ p5 {0 O1 I

  94. + w5 a1 c0 @4 ]' k
  95. hExists  y. W2 @5 M: G; S7 Q2 K
  96. $redis->hExists('h', 'a');! O2 G7 C5 J. d# \9 Y
  97. 名称为h的hash中是否存在键名字为a的域# z" E) e  M1 S# O( [/ v* d( u1 w2 C

  98. : _* K) m! _5 R( e3 y1 a+ A
  99. hIncrBy; s: \: r" M% K8 d' Y1 D1 [  c
  100. $redis->hIncrBy('h', 'x', 2);
    * }5 ]5 w/ |  f! h) j
  101. 将名称为h的hash中x的value增加2
    / U3 n8 w3 S1 }4 a
  102. ( \" f. A8 A4 d; l1 o+ N4 e1 J
  103. hMset
    - Y4 }; [  b- `* u, N
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    3 l! `, r: y$ U
  105. 向名称为key的hash中批量添加元素- k# G3 d) F% A6 W* Q

  106. $ s2 m9 }' S- L, c& x, t" d1 f
  107. hMGet
    & ^! n, H7 L0 k' M
  108. $redis->hmGet('h', array('field1', 'field2'));
    * q% Y$ k: }3 [: Q8 j
  109. 返回名称为h的hash中field1,field2对应的value9 R; A% D) B- j$ s8 N1 P4 d
  110. . U5 R0 \$ t( M; x9 w1 I
  111. redis 操作相关! \: D0 v4 O5 y9 k
  112. flushDB
    / G" J+ y1 W* K& f3 R) b4 G. B
  113. 清空当前数据库, N4 G2 x) r' I! [( l8 h* R
  114. ) v- l% h2 ?$ E# i7 j. @9 ?
  115. flushAll% [" M* z& s5 |  m
  116. 清空所有数据库, e8 [& ~0 X+ e) V

  117. - A6 N3 G/ {( @2 ^
  118. randomKey
    8 j, |; q1 z; t" d0 P( L
  119. 随机返回key空间的一个key
    ' N/ R0 a" w3 {6 X
  120. $key = $redis->randomKey();
    % I" [/ J2 m& X7 Y
  121. ' X; C8 a5 f: f0 g
  122. select
    ) E/ Z1 D- j8 D! Z  a
  123. 选择一个数据库& I2 H. ]3 W- v0 f+ M, G
  124. move, F- O4 [% \; S* E0 k. Q
  125. 转移一个key到另外一个数据库9 k" L+ J5 q4 b" ~( Y
  126. $redis->select(0); // switch to DB 0/ g, U& x" u. Q1 W0 U3 U: C; z
  127. $redis->set('x', '42'); // write 42 to x9 }; P/ c5 w4 j% [9 ~
  128. $redis->move('x', 1); // move to DB 16 g, f: R1 A5 u4 I4 g
  129. $redis->select(1); // switch to DB 1
    . U4 \# [- v2 N8 d8 Q
  130. $redis->get('x'); // will return 42
    / \! B1 ?; e* P* K' I: a" H2 t
  131. + o% K( n) P& a
  132. rename, renameKey
    ; T% T- K( _9 x% F9 w7 u
  133. 给key重命名
      x& \5 x6 `& `: b1 a9 \1 Y5 O
  134. $redis->set('x', '42');
    ) M2 B4 ?6 k4 ~
  135. $redis->rename('x', 'y');# v9 A" `' P! i. p0 v
  136. $redis->get('y'); // → 42( a5 H- p4 R6 T; `
  137. $redis->get('x'); // → `FALSE`
    # X2 Q& l& g4 t+ P, q: J7 _& R
  138. ( \. k. i  d8 J/ z; h
  139. renameNx
      |; I+ @( ?# A7 `4 u
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    / N3 D, f: a" f4 z; F( _" J2 G- k" m
  141. 5 Q5 H) \( v  R& n
  142. setTimeout, expire
    & e+ h, R4 i2 I/ O* S- f1 r
  143. 设定一个key的活动时间(s). ]+ m, E% t3 N$ a: j
  144. $redis->setTimeout('x', 3);6 y) S: j2 y$ \5 O' {1 X
  145. 3 B% _! R- M4 `, [
  146. expireAt& l9 ~# t- A# h% ?) s2 R2 f3 F; f
  147. key存活到一个unix时间戳时间5 Y0 ]$ e$ n* K% W! I. O; L
  148. $redis->expireAt('x', time() + 3);4 z: c0 S7 C4 g( B! ?% e$ q' f
  149. ) k) J  Q: S+ ?- K3 I
  150. keys, getKeys# F9 U/ d1 z7 b' w* d" I0 X
  151. 返回满足给定pattern的所有key
    9 d$ e! N* H* E/ A
  152. $keyWithUserPrefix = $redis->keys('user*');
    0 B- g4 ]4 x( J! b

  153.   K" n$ T" l0 N% Y+ d' o* W
  154. dbSize6 e9 E  ?$ ?, v& Z
  155. 查看现在数据库有多少key
    ( _$ Q) A- I6 f. g% m6 H- z, I/ Q
  156. $count = $redis->dbSize();
    & B2 {" O: m1 n  ~/ k- n! G

  157. % s! l8 [! ~9 G9 [' }9 }
  158. auth2 E4 @/ G& V" d4 g; f0 z
  159. 密码认证
    $ y6 M$ ]9 h# i) V# q3 Y! Z# q: ^
  160. $redis->auth('foobared');; n- k# T/ h/ t8 r/ d

  161. : S5 H7 Z" t& V, E2 O' h% @
  162. bgrewriteaof6 S# W$ B6 g- h. w# c( N
  163. 使用aof来进行数据库持久化
    : F% Y, z, @$ R
  164. $redis->bgrewriteaof();* c! ?4 }8 K2 g* h0 u
  165. - T( ?6 Z4 P4 H$ a
  166. slaveof
    & }- e* o- E% g% L+ _9 T% G5 @9 Q
  167. 选择从服务器! W- V" T1 t0 V) [1 @
  168. $redis->slaveof('10.0.1.7', 6379);
    2 f; y: V, X0 a  Q) v; D  x
  169. 1 w+ v6 q8 n+ f. X
  170. save
    2 D) `6 @! i& T: j* m8 Z* n- ^
  171. 将数据同步保存到磁盘5 {. V' n5 I6 l% E9 u9 Y+ E

  172. 1 @1 H0 a- p$ @; D) j& O6 v* H2 P' O
  173. bgsave; S4 e4 u: U  e3 u/ L
  174. 将数据异步保存到磁盘* x5 b% N6 c0 {+ F% T2 `( h
  175. 4 `; y! v  C* `8 _; i7 p
  176. lastSave$ l6 h# B1 X. k
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    . Q) {+ Z% T1 \0 j& W

  178. ; E) \8 |6 n6 f4 p9 F
  179. info% E9 i* l/ b2 y* {5 ]' N% T% [7 X4 a
  180. 返回redis的版本信息等详情
    % o- b" y$ r, j  X% d$ }

  181. / s& U2 h( J+ b6 J. T; o( V" Q
  182. Redis::__construct构造函数
    0 I/ h5 E# M+ |- B1 C% U
  183. $redis = new Redis();  S. Z1 L. K' }7 b
  184. 8 p$ W4 O: F4 v2 p9 ?
  185. connect, open 链接redis服务0 q+ N* ~. X9 r6 a
  186. 参数1 m# V. P5 D* X
  187. host: string,服务地址* S" C1 I/ K7 f+ x6 X; c& u
  188. port: int,端口号
    3 e9 V1 |7 q1 f/ J5 v* }
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)' `/ l& c9 s& Z8 H, B+ t
  190. 注: 在redis.conf中也有时间,默认为300
    5 e$ E' A/ ]9 u/ V

  191. 3 C" l* _' }8 C! u" }2 X
  192. pconnect, popen 不会主动关闭的链接
    ; s6 j. C1 @, z- S' s7 u
  193. 参考上面: Q  K' K" T" ]  d1 e5 Y  P1 l- l2 {! J: G
  194. - k; f$ c) L# @3 g
  195. setOption 设置redis模式
      M8 ]" C1 a/ X( |3 C/ h# }0 t& J
  196. 6 i3 Z! x* [# o. a6 g% g) a
  197. getOption 查看redis设置的模式
    " \& @% o7 f: n1 y5 b7 c+ b. F
  198. , y" a) {* y- D$ o: ?+ P  w3 l- J$ u
  199. ping 查看连接状态. {" \9 j# A. s% L, Y1 d
  200. 1 M4 p; L- ?7 x) s+ I5 u3 V
  201. get 得到某个key的值(string值)6 \6 k( e7 w7 X0 c
  202. 如果该key不存在,return false& {* O; k8 ?/ |7 {. P( Y
  203.   W. y& l  d. D" q7 f0 v% N
  204. set 写入key 和 value(string值)
    - W, h. Z7 q  j2 @9 l. ]' n
  205. 如果写入成功,return ture
    0 G5 W# e/ O) z' p$ }

  206. 7 a  L& N5 y7 H, \
  207. setex 带生存时间的写入值$ ?& s1 f0 _6 K* V, D
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.2 Z; h+ x0 _; _  v% \! Z

  209. 6 b! g% m( l8 O' n# o* y: U
  210. setnx 判断是否重复的,写入值  S% K* j  s; t8 w7 m% P6 `
  211. $redis->setnx('key', 'value');( b6 Z1 \: d& q9 s
  212. $redis->setnx('key', 'value');1 M# }3 q% F2 I* n' h) o

  213. 4 \! _3 k1 }  E! n
  214. delete  删除指定key的值
    / V, |+ ]: A+ z
  215. 返回已经删除key的个数(长整数)
    3 d  ?& V9 f, d0 H& I# k
  216. $redis->delete('key1', 'key2');
    # B( _: D; q! e& \
  217. $redis->delete(array('key3', 'key4', 'key5'));4 x" Q4 Y' P- R+ R3 @3 F) j
  218. 0 F( C' R* Q$ I
  219. ttl# [8 C$ Y  U- l2 V' ]
  220. 得到一个key的生存时间
    . g5 ~1 ?" b4 f% A9 v% ^* G7 g

  221.   L: A  O0 g) _. p  E' P' O: X3 j
  222. persist  I, j) L5 D  K6 m: b4 k
  223. 移除生存时间到期的key; ^' O4 h8 Q& D$ u  r
  224. 如果key到期 true 如果不到期 false
    * u  P# B7 B3 x

  225. + {4 P& f" l1 U) j
  226. mset (redis版本1.1以上才可以用)
    " R  K3 m/ p7 j  K7 J9 Q- }2 X
  227. 同时给多个key赋值3 _0 q6 u- X( V9 M
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));- ^1 [% j9 r! s1 g# T
  229. ' z5 y3 @% A1 j& u4 h6 t; n

  230. $ r8 D6 E. O+ Z6 u
  231. 8 i& C( ?3 N- ?& X9 m/ k
  232. multi, exec, discard$ z5 H+ N& Q; O, s7 G' }( {
  233. 进入或者退出事务模式+ U9 k) I( I* J0 Y2 F, B
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    % z& Q# v+ {; g, a# D) g  X- ?  h
  235. Redis::MULTI:将多个操作当成一个事务执行! o( H0 c$ |' N: B& F
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证& |/ x- H( R2 a7 n1 ]4 F% O: h
  237. discard:删除一个事务
    3 s, f7 e8 s" K& y& a+ A% j
  238. 返回值
    ) g7 o) ~" u+ F! ~! x+ v/ |
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。% \/ _$ p/ s: D, J1 _: X& ~
  240. ! }" {3 y2 A. s" K
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    $ l9 R$ W: t# f0 |8 I" Z& S1 j
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false). I- I) w3 M2 A( N
  243. unwatch  取消被这个程序监测的所有key4 R  m- |) d& A
  244. 参数,一对key的列表
    / M$ q+ f7 U0 U& `4 M+ V5 I) F- u& {
  245. $redis->watch('x');" k+ X4 U' X8 D
  246. ( e7 z) T  j* R. W
  247. $ret = $redis->multi() ->incr('x') ->exec();- o; s( M' o0 B6 W; h$ C: a) j
  248. ( h' n& [: u. [* H
  249. 4 |3 F! S( Q4 b4 ~5 e" s5 k5 h, L: P
  250. subscribe *
    . I7 P$ t( p" L
  251. 方法回调。注意,该方法可能在未来里发生改变6 ]; h. i+ l! h3 u
  252. ( c( Y# A. W# l( B! a# x4 I
  253. publish *
    ( V+ M' A- K# p. z4 r+ l5 b+ T
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变" x! _8 J9 q3 U- I

  255. : m" V8 J: s9 V1 s4 W
  256. exists
    + A4 h9 n2 B4 V6 _7 C+ g" d
  257. 判断key是否存在。存在 true 不在 false  L. F( x' w$ R3 K. ~
  258. " z6 _; t2 k3 W: ^, m* I6 H  o
  259. incr, incrBy0 {7 O: }$ n- c8 ?' M
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    # V( k) q! p# `1 z7 ^# U- `. k
  261. $redis->incr('key1');  k/ n8 M. L4 g5 R
  262. $redis->incrBy('key1', 10);
    - `9 h, d3 ^& O  {* M

  263. 9 a- y& p. V6 t3 b* D- ]
  264. decr, decrBy* }+ ]$ n2 h+ D; o: }. M. m& d2 ^
  265. 做减法,使用方法同incr; X) P; C% s5 U% ^, _# g
  266. " A4 i! I; U& T$ C% ?  _& D
  267. getMultiple$ n9 v  X: m, ^7 Z6 H
  268. 传参
    ( z5 f0 e6 y2 X9 V7 E
  269. 由key组成的数组" x- s% F, D9 P9 e- o; Y
  270. 返回参数$ w2 ^6 @( }. H4 L* [1 R3 M
  271. 如果key存在返回value,不存在返回false
    8 o+ ~- y. O& h( {
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ; P: ^* s, }5 ~2 q# N0 }
  273. $redis->lRem('key1', 'A', 2);
    7 J' K" |7 r6 `2 m: u8 q1 P- s
  274. $redis->lRange('key1', 0, -1);/ [2 Z! A8 X+ z3 T

  275. . V( C- U, Y) `/ p5 r9 |0 V, S
  276. list相关操作4 e, f& k  l" l5 \
  277. lPush8 f9 ^- y& q* q5 e7 q( M
  278. $redis->lPush(key, value);1 [  K# ]8 O7 @* `) r$ e! w1 o; u8 B, n
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    7 K0 `8 d2 H$ G% H
  280. 9 B% s* Q5 S: d  |3 f$ m0 A7 \) @
  281. rPush, `& W& K6 b. r, u- }; ?; B
  282. $redis->rPush(key, value);5 q( L+ N$ z, k% W) t) ]; F! u
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    7 _7 B. e* B( x1 x; ^& ?# w
  284. ; `# Z, I1 I! E4 y0 f( r5 ~
  285. lPushx/rPushx$ ?7 H7 @5 h( a' K  \7 [
  286. $redis->lPushx(key, value);
    ; ?! T9 X6 Z( |  v
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加4 K2 b! \; x, `. u
  288. ) A1 [/ ~7 \- Z3 @1 H; Y* z
  289. lPop/rPop
    ' ^* V; A" ~! V1 \8 v
  290. $redis->lPop('key');
    9 Y) V6 V' o6 m
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    9 P- a1 k5 @8 t. A! [- Z

  292. 4 G/ g4 F) ~6 Y  B$ b
  293. blPop/brPop
    1 ~1 p8 Z( ?' Y
  294. $redis->blPop('key1', 'key2', 10);
    . i! @$ r3 }4 @6 F& X
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作0 ?( B6 H5 J" c( @7 _* E8 k: ~

  296. " h5 w$ u- _% B9 ]" E9 K: y
  297. lSize/ L+ c: i! y3 `% n8 {4 O
  298. $redis->lSize('key');* v$ `+ E6 `* L! J% D& i  G
  299. 返回名称为key的list有多少个元素
      A. r, T4 I0 Z4 ]4 Z9 ]0 X

  300. 1 h$ x# ~% }5 L/ g
  301. lIndex, lGet
    1 h$ u* o7 v0 y0 w( o
  302. $redis->lGet('key', 0);
    7 S7 s3 s* d& K- Y  x+ I. V5 {5 m
  303. 返回名称为key的list中index位置的元素) Y! V! t. O/ ?

  304. ! ]0 h) q5 ?6 U
  305. lSet1 |7 @  B* V0 }$ a* s) Z
  306. $redis->lSet('key', 0, 'X');
    - _. D& _" U6 n$ w
  307. 给名称为key的list中index位置的元素赋值为value
    * V! C* Z$ d: }1 Q/ u; v/ y6 v: \! y

  308. " h" D; w9 f; @6 @5 l" V, m6 d
  309. lRange, lGetRange
    9 _3 H0 N, X7 o. u
  310. $redis->lRange('key1', 0, -1);
    $ u$ z! {! F# ^4 z
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    / e; V) w9 d, Y; Q

  312. 5 g  S* [% y8 f* o/ Q) A: n8 b
  313. lTrim, listTrim
    " m2 c/ y7 |/ U8 i- U
  314. $redis->lTrim('key', start, end);0 X8 l. T( W8 H1 G
  315. 截取名称为key的list,保留start至end之间的元素
    + p& ?% M0 w! T4 i. c1 M! m- [7 z
  316. ) T, j7 l0 }/ [
  317. lRem, lRemove2 P- z: A( F( _0 D* A% \3 ]7 x
  318. $redis->lRem('key', 'A', 2);" K1 X' R: `3 M7 r: a2 S
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素2 O7 a, X  l: u) h  m6 n% Z

  320. ; {9 D$ t% x5 b  t% ^, G0 K/ H
  321. lInsert
    : ]7 P3 h* K1 s% w( W
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    * n: \; f" \/ ^2 J- K8 o2 Z. R
  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');
    ' V1 K. W9 A7 L- }+ M  o  t
  324. $redis->lRange('key1', 0, -1);. y* Z: e$ x$ l. B
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');2 A0 G$ t+ w8 _
  326. $redis->lRange('key1', 0, -1);( \' R6 v7 J, x( J' M
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    - f/ L; p; L% n2 z( u" @' `
  328. * f$ t) V- F3 z. b
  329. rpoplpush
    4 E: r; F  Q/ u8 A
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    7 s4 D6 e$ _1 T
  331. $redis->delete('x', 'y');% p2 h. t( A! I  O5 C
  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'));
    : s( O- r8 r4 B, G
  333. var_dump($redis->lRange('x', 0, -1));( s( k! Z6 _- `4 V
  334. var_dump($redis->lRange('y', 0, -1)); $ F* [$ j) Z+ q

  335. . p: \# N! }. [4 e2 d' ]
  336. string(3) "abc"
    9 H+ j( s  G4 j9 V
  337. array(1) { [0]=> string(3) "def" }
    8 R8 i. n1 V6 u& u
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }( u8 o& g/ y* A' \, g9 K! k

  339. # v3 m$ q7 y3 T" i! ]
  340. SET操作相关
    9 [/ }2 k0 }6 ~0 N
  341. sAdd5 {) `! A* |9 K5 x* A4 a: P
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    - }% g) r# t9 @' T* j3 v& h
  343. $redis->sAdd(key , value);
    " W% |, Y; k& f: B' d! r# a! z) P
  344. : j7 N% X8 o0 y
  345. sRem, sRemove$ n, \' v5 @% `0 M  J7 ]) M. {5 x
  346. 删除名称为key的set中的元素value9 M6 A, _3 n6 W9 T% I" D! R
  347. $redis->sAdd('key1' , 'set1');4 T- j- ?6 H0 Z4 p' g5 X; O0 H
  348. $redis->sAdd('key1' , 'set2');
    $ s+ F+ P6 W0 ~- o1 P
  349. $redis->sAdd('key1' , 'set3');
    # o% g1 {9 `. w
  350. $redis->sRem('key1', 'set2');1 c: r; i% {/ L/ V: n5 N

  351. 2 O+ ?$ S! P* |- V. A, G! a
  352. sMove# i; P( n" X6 q" f% W( ]2 C: X
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    . \8 d1 x" f1 ~* `: t3 Z! k% Q
  354. $redis->sMove(seckey, dstkey, value);
    # `) `0 o9 @5 i, Z. F8 r, o! A
  355. 9 b+ r  c3 ]& G8 \$ g: D
  356. sIsMember, sContains5 K; Q0 T. l3 [. L1 V
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    : E: A* b4 j& T
  358. $redis->sIsMember(key, value);
      s3 ^6 O3 a, F+ S6 L, R3 r

  359. $ b( ~; z' k1 J8 W0 Z* M
  360. sCard, sSize$ d" z7 C/ n8 n
  361. 返回名称为key的set的元素个数, P! _, P+ V2 |- n0 i# v
  362. 0 r8 E& l- o9 b/ I4 l4 J
  363. sPop$ r+ ]$ v: N& ^; \; L- O( X
  364. 随机返回并删除名称为key的set中一个元素
    ' V8 l8 ^; A/ ]! L; p2 ~" V& g
  365. 9 e% G' P) B, g( t2 w
  366. sRandMember
    5 Q* L) l$ D( V, t) h# Q" e+ a8 {
  367. 随机返回名称为key的set中一个元素,不删除5 l( F8 R: U  W; |; P8 A

  368. " Z0 Y$ B! H; h
  369. sInter: @- \5 ^9 c$ [5 u% h8 q
  370. 求交集
    - b/ ]) G( B* C, O; ]. m: m0 [
  371. 3 r$ C* B4 g) u  W; I
  372. sInterStore+ [# |0 ]- [! ^9 j- O. l+ a
  373. 求交集并将交集保存到output的集合
    . A) O8 e# [; l9 @6 u
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ! h8 B; `/ ~* L) ?) P/ D
  375. # x. F% C9 g( x% a. u- L
  376. sUnion
    0 |$ v# q4 j7 w5 Y+ _9 }$ _
  377. 求并集; D! J* D7 M+ I
  378. $redis->sUnion('s0', 's1', 's2');
      ]- I; S2 T& h. r
  379. s0,s1,s2 同时求并集
    * u- W" k' |6 K# w3 X; J
  380. " _% E- t! O! ~% t& c* I) Y$ z
  381. sUnionStore
    3 L6 g: j9 L; {' w) m1 Q9 d: N6 H& F
  382. 求并集并将并集保存到output的集合
    ( p  ~9 d: |" j0 c  K# G5 T
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');+ ~4 N# }7 L/ {  s& e# y! Z

  384. 5 b! H& G' ]7 L: t. ~7 |0 r( Y
  385. sDiff1 _9 p/ U9 b8 R7 ^- J
  386. 求差集1 h- q/ V# M" f; ~5 H& K

  387. 2 N! m! c7 ~8 e7 Y6 z0 L8 x
  388. sDiffStore$ t/ R0 R  v3 c# C1 q+ q& S
  389. 求差集并将差集保存到output的集合. q6 \9 Q) e4 `7 Z7 k

  390. * h7 P- V8 @( F4 g1 W" D' H$ R
  391. sMembers, sGetMembers$ ^* z- G) ^4 E* j
  392. 返回名称为key的set的所有元素1 e8 Z) X/ [+ x* R+ d" z0 D

  393. 0 d  J! K1 n1 H* L* P7 h1 j2 X
  394. sort# C; r7 C4 j) p" T5 n' v
  395. 排序,分页等
    ! j5 C: |* r; n* r9 s, y
  396. 参数
    * H& K  M: Y/ o  |0 L8 D5 ]
  397. 'by' => 'some_pattern_*',& _3 R# R0 U% T/ _( U/ B' D: L$ w
  398. 'limit' => array(0, 1),$ R8 Y/ n4 O# t) |  O& `, |( l  c
  399. 'get' => 'some_other_pattern_*' or an array of patterns,0 c. F* G0 E  k: k! T
  400. 'sort' => 'asc' or 'desc',; v6 v! ]( ~+ I! e, {. \! Z6 _
  401. 'alpha' => TRUE,
    2 f6 a; S7 Z9 h: j7 _5 g
  402. 'store' => 'external-key', B& @' B9 D* k
  403. 例子6 u1 N! _0 V' v0 y& f( I
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    8 H' }7 T' w. ^" }
  405. var_dump($redis->sort('s')); // 1,2,3,4,5' e, P  P2 ]" ?
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1' u3 h9 E2 D1 Y; N; F
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    0 B) A) z! F. @

  408. & z7 C: C( `: J! d3 T
  409. string命令$ l" S/ P$ ]6 ^- B# Q* P
  410. getSet0 x3 J0 w& W6 X+ X
  411. 返回原来key中的值,并将value写入key5 B6 m4 @/ i5 d8 d' ]& }# d
  412. $redis->set('x', '42');
    . V. m' o4 l8 Q) z% m. H
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    ( u2 I! X* {; R) P
  414. $newValue = $redis->get('x')' // return 'lol'
    8 P3 [  ~8 d' `: V" Q

  415. 2 R, c6 D  D/ _$ k8 A6 r) a* ~
  416. append( n# \* S# T5 r5 k3 g
  417. string,名称为key的string的值在后面加上value
    ) j+ ~& Y! X7 H0 k
  418. $redis->set('key', 'value1');
    . Q/ V; p/ }; C  B) J" Z/ [! d
  419. $redis->append('key', 'value2');
    . g4 C! ^9 g3 Z  C% s1 s1 w$ ^2 n2 M
  420. $redis->get('key');+ a- ]; r- E. J% i8 y3 f' F6 }
  421. * ]0 Q' k+ c8 V* k! }
  422. getRange (方法不存在)
    ; T. Z% J$ D, z! L& B( `- ~
  423. 返回名称为key的string中start至end之间的字符. m" |/ C7 [2 W3 Z1 o( v1 s
  424. $redis->set('key', 'string value');
    & D" R% \3 x/ w) D9 a
  425. $redis->getRange('key', 0, 5);5 ~' _! k* y* c1 d  l% [
  426. $redis->getRange('key', -5, -1);! \- A4 I  e9 Y- l( n1 C- @% j7 S, L
  427. . k. L1 P5 p) e6 r) b
  428. setRange (方法不存在)
    0 i- p  ?/ }% {0 O; `! ?2 W
  429. 改变key的string中start至end之间的字符为value1 _) Z0 V4 q% O6 O/ p9 ?
  430. $redis->set('key', 'Hello world');
    + o/ X+ g2 G" ~( r
  431. $redis->setRange('key', 6, "redis");
    7 h2 }/ c6 @% I' f5 t' z
  432. $redis->get('key');# Q7 A. `1 G1 q& t+ h" q9 B

  433. : ]2 [& R( H1 F
  434. strlen# K: H& D4 d) Z! T! ?
  435. 得到key的string的长度
    ! R/ a) \5 b, F  m' A% ]
  436. $redis->strlen('key');; Y4 ?) G; R$ ^5 q! E
  437. ; [- H5 M7 Z4 Y% S8 n! E
  438. getBit/setBit
    $ w1 D: }+ X( y9 `' b- ^! J1 e
  439. 返回2进制信息
    % l# k, k) \7 u  F) a

  440. 3 [2 y& q5 Z3 T; R5 p
  441. zset(sorted set)操作相关
    + U7 @( V+ A/ y, P7 \6 E
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。( ^: k: g$ V" G7 |) P1 W
  443. $redis->zAdd('key', 1, 'val1');( f# h! [% ]) K) i5 d
  444. $redis->zAdd('key', 0, 'val0');
    8 M( o9 q. W% M8 Y0 I4 F) L9 n
  445. $redis->zAdd('key', 5, 'val5');  W5 I2 e* @, E3 u- R+ A( g8 ^
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    5 P0 e. C9 m0 a( o2 N8 \
  447. 6 L* ~: x8 y, {2 g
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素$ i; q6 h/ F! n9 p( I
  449. $redis->zAdd('key1', 0, 'val0');% Q3 D* S+ x9 Z
  450. $redis->zAdd('key1', 2, 'val2');
    9 v" D1 y2 @+ z- L# n/ n% x$ E
  451. $redis->zAdd('key1', 10, 'val10');
    0 v3 q6 D. p% W$ V8 [
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);% c: ^2 z% w: |" r; M% q

  453. 8 l" `% O- Q6 t9 o
  454. zDelete, zRem
    7 E8 ?4 o3 D9 [4 [. n
  455. zRem(key, member) :删除名称为key的zset中的元素member
    * `* @# y2 @' F) x7 B& |
  456. $redis->zAdd('key', 0, 'val0');
    # m  R. ?: [$ }6 {0 n
  457. $redis->zAdd('key', 2, 'val2');1 q2 E/ ]& T" U1 ~1 P4 @  q
  458. $redis->zAdd('key', 10, 'val10');
    ' u* @2 v4 N. o0 @( M- g, l- [4 i
  459. $redis->zDelete('key', 'val2');
    7 K& w& \, V" k0 [* y+ G
  460. $redis->zRange('key', 0, -1); ' |7 c7 @% B* L1 u0 a- a: E
  461.   D* C: _- {4 e( V: j& B# t1 a. `9 z
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出# e2 k. h4 Z9 F6 U3 I- W" H0 }0 E8 h: k
  463. $redis->zAdd('key', 0, 'val0');
    ' f( M  g$ ^9 _- a5 L3 \
  464. $redis->zAdd('key', 2, 'val2');
    0 S- `( |# M+ b  k/ ?+ a* `
  465. $redis->zAdd('key', 10, 'val10');
    ! _( V# {" D: ^' q6 g0 ~
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    ! b0 c# b) H* b9 Y& O$ H8 q
  467. . @( y$ s4 |8 l) S1 a
  468. zRangeByScore, zRevRangeByScore
    , m5 e  X+ x7 h7 W! |' f, W
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));# t: O8 V9 a' v# a# z# C9 c
  470. 返回名称为key的zset中score >= star且score <= end的所有元素0 b  W  `  ~9 `( Y4 @

  471. * I6 j6 [( Z  b: d
  472. zCount1 B5 Y9 C/ a" C) d7 h
  473. $redis->zCount(key, star, end);" w, q5 \  c  j
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    . r. G# l) k: f! _; j
  475. & ?& N5 f) I# s/ O# F$ ~
  476. zRemRangeByScore, zDeleteRangeByScore2 |" X7 K$ c5 N, N
  477. $redis->zRemRangeByScore('key', star, end);, [4 ]& ^) o: _
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数! O  r' J! h- r) N, |
  479. 2 m4 v2 b" c# U
  480. zSize, zCard
    " t% A2 u) S4 V" Z
  481. 返回名称为key的zset的所有元素的个数
    - E7 u8 g" c; I7 A5 ~3 u5 W

  482. 2 t& o1 f+ C! C5 l
  483. zScore' x" m1 L, e* `
  484. $redis->zScore(key, val2);
    ; C# F' {+ K  `, r1 @
  485. 返回名称为key的zset中元素val2的score
    3 e. @: p4 U6 m0 g1 Z& U# _
  486. # x, \) w$ [( |  K3 ?5 r8 u1 o* h
  487. zRank, zRevRank. h5 o7 ^# K( U9 R4 o
  488. $redis->zRevRank(key, val);
    9 L& h) N6 }  u; N9 L. A3 G
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序1 Z- T% _$ o; g  _4 s9 j
  490. % Z6 a! m. T/ ?4 C
  491. zIncrBy
    ; f% H2 z8 @5 S- e9 [; c
  492. $redis->zIncrBy('key', increment, 'member');
    2 R, }- F5 a  N! a) Q% \
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment2 D/ g4 S5 |: L) R* y' U# i
  494. 3 L5 e7 v) j* M% U$ J9 L8 f1 T2 t
  495. zUnion/zInter' t. u' R6 I! m% C, L$ p# g
  496. 参数
    9 g" b# A# r' z' i( f8 a. q
  497. keyOutput
    9 `, P5 B, @' T) ~  ?
  498. arrayZSetKeys
    & V, N, V" y) P& @1 _7 ]! p+ F
  499. arrayWeights# W4 }: x! k$ S0 t1 ?
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    # c6 ]0 o! ~' X
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。9 [* P4 c$ @$ R; b; s) o+ P' a
复制代码

* C; \# h1 p: m; n- ^8 }8 J8 f) Y- }5 A" i' S0 n6 ^' a( H! F

3 K) m: `# J/ I9 Q5 a- U+ O$ u# `' [* R# N0 z+ t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 1 q, b0 Q, o, \" Y; O+ B5 B
  2. //连接redis服务器 - q5 d- \3 d( e
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 16:52 , Processed in 0.115926 second(s), 19 queries .

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