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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    4 w9 M$ }, m6 \# a' S) D& _$ _
  2. $redis = new Redis();  . @4 Y  A0 S4 C" o( {# l
  3. $redis->connect('127.0.0.1', 6379);//serverip port2 {& Q! J3 e: Z& K! Y) V) `
  4. $redis->auth('mypassword');//my redis password 3 a4 o: X3 F3 Y8 f( Y1 \
  5. $redis ->set( "test" , "Hello World");  8 ]' t+ _3 `+ X! b4 A: L$ J
  6. echo $redis ->get( "test");; N$ d+ X9 t) n, X
复制代码
php操作redis函数封装
  1. /**) R2 o% M# o% N) r/ G
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ) r  e, o" `+ |  z
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    8 S8 {( M! T* a4 ^6 y  Z% o0 D
  4. */5 c8 H: A# M( r4 w3 p
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    ' K! k4 S9 m; I
  6.     if(!$key||!$value) return false;
    * V! ^" j0 K& J* \
  7.     $host = $host?$host:getenv('REDIS_HOST');
    " D! P( J3 W* t% @
  8.     $port = $port?$port:getenv('REDIS_PORT');
    ' p6 q0 m7 J2 L* g2 ?! {
  9.     $redis = new Redis();
    ) w, @0 d3 z) F0 j( R. Z, C
  10.     $redis->connect($host, $port);
    , ]# v9 h3 \4 c( V7 h1 a: l
  11.     $value = is_array($value)?json_encode($value):$value;
    & \) m8 u7 |) |3 S! C
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    ; R2 \( o" \& R1 P& B" {+ K
  13. }
      R. ~+ w; M) [* B- b1 ?
  14. /**# u5 @8 s! i( A1 ^$ d0 p+ p. e
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi$ H$ G1 z3 T2 f, g3 c% g  Y
  16. */
    $ Q, ]0 z8 d5 ~# u; m
  17. function RedisGet($key,$host='',$port=''){
    ( I. [6 D+ |& T4 e" P# R
  18.     $redis = new Redis();
    3 ?4 f- J7 h/ |. I3 ^0 h. }
  19.     $host = $host?$host:getenv('REDIS_HOST');; }! `3 ]8 A+ z2 y
  20.     $port = $port?$port:getenv('REDIS_PORT');
    4 C: i" n- f0 H2 V# ], i4 v
  21.     $redis->connect($host, $port);+ `9 l$ F8 F/ I% X0 z* B  v7 o
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    4 Z% Z" G4 O+ i8 N( w8 W& z+ w( E
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);) X1 A. X/ J* t( j4 Y
  24. }: m+ N9 n# F7 ]6 s! f+ ^/ ~
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了# E% ~" p3 N. H. U9 Y, r  X6 q
  1. setex 带生存时间的写入值) R( b  f: I4 o  w8 {
  2. $redis->setex('key', 3600, 'value'); $ Q( O" D: t% u) ~1 c- t
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    : e8 G- [: I2 q% `6 r; ^
  4. $redis->setnx('key', 'value');- g& Z# Y- c$ C3 h
  5. 返回已经删除key  P+ j" F2 n/ d, f
  6. $redis->delete('key1'); 成功返回1失败返回07 ~# t4 F/ U& O' F
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回01 `- c/ O7 u& ?  c2 B
  8. 查询生存时间
    # S5 }  S  D) D
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)7 j; H, Q: s' ^* y& G- a. y0 V
  10. 同时给多个key赋值,同时设置key0和key19 L2 d  J# W& V& u6 |
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    $ v. y$ z* N8 `* K: I8 ?% k
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    / B* I* g$ P- V1 ^$ Z! C
  13. $redis->incr('key1');
    9 J3 d5 ~" b! G! H  y
  14. $redis->incrBy('key1', 10);
    & j" {7 }2 S/ f4 G9 w& q
  15. 减法跟加法一样
    7 ^; i1 h2 f( u. R3 ^
  16. $redis->decr("key1"); 减少1
    " D7 t8 v2 ^9 F  y2 W. `) h: P% ^* C; m
  17. $redis->decrBy("key1",5) 减少5; M  A% {0 W- Q( v; i
  18. : T' `8 \  |, \3 E
  19. list相关操作,连表操作
    + c+ H9 L8 ^. U& k
  20. lPush
    * o8 T  ~7 k2 D* J/ [( Y
  21. $redis->lPush("list", "888");9 ^  p, M8 i7 C+ l: ]8 I' _
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数; ]1 Z9 C& x, @9 R
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式) N) |% C* B2 w
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    ( W% o; W" `% ^  K" M! V% j/ b# L
  25. lPushx/rPushx
      s- ~$ @7 R5 k) H9 P) R
  26. $redis->lPushx(key, value);) f" s/ e; H, h1 N1 r# g! s
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加. e. H0 M/ M0 c' l* B, G% Y

  28. ) u* c% X0 I( q
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    % X# {/ ]  y/ k7 p' ^, _
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key. @' z) Y2 h6 Y# S0 e0 [8 F
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    + i4 f8 v! q4 f
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序* |  x( ?$ e$ a; z. |' @; d& G
  33. sadd s1 zhangsan
    8 g2 }" Z* E% B) V
  34. sadd s1 lisi# [4 E6 J8 _: R( o  l
  35. sadd s1 wangwu
    " G7 Y3 Q9 S' \" h& X9 C
  36. sadd t1 yangxingyi
    ! c4 U  I: c! ^9 B" \$ n9 \
  37. sadd t1 lilei
    # C! H' C8 H: k* k& {- f! ?
  38. sadd t1 zhangsan% i: B3 k3 m, e. O
  39. smembers s1 s1的所有集合内容
    : o/ Y/ S9 C% S2 a
  40. sdiff s1 t1 s1有的,t1没有的,差集
    8 _7 ~9 D7 a, s
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式5 p7 q  Q- B  [7 Y! N
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的# s% Q" k; K6 `
  43. spop抽奖场景,返回集合里面随机的数
    3 J( S9 R4 Q% |' F
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    - F8 y+ B0 v% I
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    $ P/ w) p9 D  @1 f2 F
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的& a( x  g; V& V
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    ' o" G0 `0 i* s) ?
  48. $i = $redis->srandmember('s1');echo $i;
    ; r# O! _6 J  h0 L2 C1 I' ^
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false0 Y$ u+ J; D1 u3 v
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    6 C. P; \  ]8 i2 a; }' w/ q" A/ i2 \

  51. " A0 h- h$ D9 U8 d; D
  52. zadd key 2 value 有序集合
    - M' b. |  B1 E5 t
  53. zadd y1 1 zhangsan;
    + r; Y) Q4 S; C8 a
  54. zadd y1 3 lisi;
    0 Q& t- ]) F9 `; |0 I6 e
  55. zadd y1 2 wangwu;
    + x! t& u2 P+ m
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    1 |0 v3 N* k( q5 Q7 j
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    9 g. U! v0 d8 d# r
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键& Q0 S$ ?; K6 }  p0 k
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    8 w1 g: O8 W1 R! m& l. a4 [
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    + t3 g' h9 k6 p' t- u9 C
  61. 无序就scard,有序就zcard,有z没有s! L: L' w  O) h- ?  w8 J
  62. sInterStore8 N7 l: w, V1 q( H& ]  ]* e* K5 s
  63. 求交集并将交集保存到output的集合: Z- K2 h0 N& ^
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    * W( ?- \/ n% @' F
  65. ' C8 @. X1 c( M" |* M$ ^
  66. Hash操作
    7 n$ I' }6 j. o6 c; g: v+ @9 g
  67. hSet
    * r3 u; e% e! ~; p! ?1 |2 o
  68. $redis->hSet('h', 'key1', 'hello');6 f8 \8 K. y- R- t7 z
  69. 向名称为h的hash中添加元素key1—>hello- s7 a" t  C2 J) Y, H/ p; V

  70. $ j! E, P6 f; u- `8 o$ }$ d
  71. hGet
    ; T* I+ h9 J+ B. t% W- k$ m
  72. $redis->hGet('h', 'key1');
    4 ?" h' H1 v  x* t( T! g% m1 T
  73. 返回名称为h的hash中key1对应的value(hello)
    , F" ?8 y7 `, T4 @
  74. , s) D$ h) ?* @" o9 P* K5 w
  75. hLen+ `; t" ?+ i/ }0 Z6 B
  76. $redis->hLen('h');+ N6 c+ a( E4 \6 b. z* ]$ X1 c2 I
  77. 返回名称为h的hash中元素个数
    3 r  J1 \6 G, e1 @: h. B
  78.   w2 `7 b0 n0 x1 W0 c$ Z$ x
  79. hDel, b. b" E+ C, k
  80. $redis->hDel('h', 'key1');4 m" i( I" n7 T" V4 c
  81. 删除名称为h的hash中键为key1的域7 d# M! I5 t4 `1 |! B) p

  82. . Z7 q4 ?! _4 v- q; U% D' b& N
  83. hKeys
    ) b/ R% N+ i% T9 [& V8 X8 K; l
  84. $redis->hKeys('h');: j7 Z6 \* Z9 y( R" {
  85. 返回名称为key的hash中所有键
    + Q) g% M: R+ F- u8 u

  86. + K. Q; O' B9 f* s+ o9 w) s( A
  87. hVals
    3 K7 D2 M+ t1 f9 \* w+ m
  88. $redis->hVals('h'), E) x9 O+ m; U% O/ d2 h
  89. 返回名称为h的hash中所有键对应的value
    $ D6 J( m7 c1 o8 x8 B& u" y" R! V3 b
  90. 9 I3 _8 b& Z& V0 a7 L, F
  91. hGetAll
    4 ?# Y% y; p: c9 q& i
  92. $redis->hGetAll('h');3 p3 c$ O& ?( Q, |
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    # D, C( a- D  ?8 I7 ]
  94. 4 W4 g+ }% J6 u3 g4 H
  95. hExists5 u" ~1 d/ P$ U
  96. $redis->hExists('h', 'a');
    / V: g$ @7 W; i8 u
  97. 名称为h的hash中是否存在键名字为a的域' h! s( N9 T- p  a% E

  98. 9 `0 _3 x( ?- B# M6 s8 D
  99. hIncrBy
    8 H5 x& o* s  N: ^
  100. $redis->hIncrBy('h', 'x', 2);( B1 X( G! w$ I) p- N
  101. 将名称为h的hash中x的value增加2. ]0 t* a1 a# f( l! g$ ~
  102. # A$ `" u9 h' M' G& m3 W
  103. hMset' z+ T! F" W( y: u$ `
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));) g6 [5 h# q* B, E
  105. 向名称为key的hash中批量添加元素) E/ C4 @1 F& K; g

  106. ! @) ]* R% Q' {# r  D- J, G
  107. hMGet
    ! {8 V5 {. v; |8 t, x* v% a# N1 s
  108. $redis->hmGet('h', array('field1', 'field2'));
    0 v7 W2 g( A8 D' y. `5 K9 G
  109. 返回名称为h的hash中field1,field2对应的value
    # B( ]- e$ V3 ?$ Z

  110. - {* M' b$ `- w" |! v3 ?  u
  111. redis 操作相关3 O/ x/ J  u" I: Y  H1 V
  112. flushDB
    7 K& K" ?* _5 W& {# I$ c, C
  113. 清空当前数据库/ r0 t9 }. L# U2 \; s
  114. $ O+ l) y5 ?8 `9 O( o, L" E! w  M: }
  115. flushAll3 b0 @4 ]; O+ G" k$ I" \
  116. 清空所有数据库
    % e5 L* I# f+ G6 ~/ T" x
  117. ! D5 `" d4 q3 A0 I: D9 ?! Y3 I7 X& j
  118. randomKey9 w7 L5 Q6 l1 Z- N: ~0 z/ D
  119. 随机返回key空间的一个key
    8 z1 r) s4 p' _$ j. L# h" P4 Z
  120. $key = $redis->randomKey();
    % A+ `0 c2 u. D) q( p1 A  e
  121. % F$ {. J- m; d0 H# Z. ^
  122. select( g5 a* ?8 T7 J; V+ @
  123. 选择一个数据库
    1 g: s* O( Y  P& `) X9 ^9 @
  124. move/ |" V/ P" A4 P) S
  125. 转移一个key到另外一个数据库
    ; c* C# i" ]0 `: Z
  126. $redis->select(0); // switch to DB 05 i8 t3 M4 u/ z3 q
  127. $redis->set('x', '42'); // write 42 to x. k4 X$ O1 m$ Y: O, U  x+ g; m
  128. $redis->move('x', 1); // move to DB 1, j+ t% Y$ z; z" l# }/ {* I( T
  129. $redis->select(1); // switch to DB 1; [8 i: C' J' A
  130. $redis->get('x'); // will return 42+ R7 a; x7 f- ~2 q$ u) V. R3 I, q
  131. * E, Q4 H% z9 K/ ?0 J, P
  132. rename, renameKey
    4 m  z3 E( ^  |% ?8 K& s! y# K( i
  133. 给key重命名6 s- R  N5 U5 `  r5 M
  134. $redis->set('x', '42');
    " D" j+ U$ e; @% M. S8 o
  135. $redis->rename('x', 'y');
    % o  y% k7 r- O2 b
  136. $redis->get('y'); // → 421 a$ D; ^4 A" ?+ L$ o/ Y0 D2 |
  137. $redis->get('x'); // → `FALSE`* E6 ^3 p* h, _* U/ ]

  138. # e  d, P2 F. `/ Z2 A3 C
  139. renameNx
    + Y: p5 S  A3 h
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功" r9 ^, I! d' [3 z5 G' w3 M* E+ x

  141. + L" ]8 b+ K! G" ~
  142. setTimeout, expire
    1 i: [6 p8 Q$ q0 k1 d& P
  143. 设定一个key的活动时间(s)
    8 H) `; S1 v0 w
  144. $redis->setTimeout('x', 3);
    4 O2 P  S: d$ ?. B3 k) x
  145. + Q: v; F; J" N8 B
  146. expireAt
    - V4 T3 t" R* b0 a  i& D, z% Q
  147. key存活到一个unix时间戳时间" u6 ]' s1 U1 Q7 d7 `
  148. $redis->expireAt('x', time() + 3);
    ! ^) Z4 v% ^9 J7 v. `& _- W! o
  149. ( D, w  G. U7 s  [  L
  150. keys, getKeys
    5 b+ M$ L8 Y  X" b# O
  151. 返回满足给定pattern的所有key- Q" L6 i; V8 x2 a
  152. $keyWithUserPrefix = $redis->keys('user*');
    9 ^' f) `+ O, L, @9 v8 |

  153. % n" Y9 }( p8 w
  154. dbSize
    - H0 U! |; U: l: m
  155. 查看现在数据库有多少key
    & l9 t7 z* |$ v8 e  s
  156. $count = $redis->dbSize();
    6 j; T1 p; l- x/ a

  157. ' x3 {/ F6 t+ S- W
  158. auth) v0 x& R, g) n8 r2 q* U6 G
  159. 密码认证& D% X( @$ h2 F/ A/ r) _' Q- B& \7 k
  160. $redis->auth('foobared');: @1 \! k  C8 W0 T+ ~0 f# y) S
  161. / E0 C6 J: W# y* N
  162. bgrewriteaof! a- t7 I8 J2 K
  163. 使用aof来进行数据库持久化+ W+ ^5 D, `# A# A
  164. $redis->bgrewriteaof();& l/ }' N7 y- U+ M5 U
  165. 6 Q. I6 w  |9 |, }
  166. slaveof$ U% L4 e) v; C- q
  167. 选择从服务器
    / [0 k) D1 ]$ T+ a$ |
  168. $redis->slaveof('10.0.1.7', 6379);
    5 L9 d. {3 y" d; l

  169. " W% O" X8 b' y: a; }. U
  170. save
    ) g- d4 S, A7 `2 [0 k9 j
  171. 将数据同步保存到磁盘
    9 {% a) k7 @0 Y7 \# I$ N- {

  172. ; I3 J9 |( |9 r: M# C" y( n
  173. bgsave
    5 a) a+ z( m, K+ ?0 k" e% }
  174. 将数据异步保存到磁盘2 i* t: H$ _! z4 b1 X8 a9 t+ y
  175. 2 B, M& ?0 v  Z
  176. lastSave
    , K2 A2 r" K5 |- k/ y" H
  177. 返回上次成功将数据保存到磁盘的Unix时戳: D8 x6 t- G( _: d( k; p+ L

  178. ; x+ l+ A. p& a5 T
  179. info* W3 q4 Y1 K/ D$ \+ F) G
  180. 返回redis的版本信息等详情
    ) p8 \9 q8 |- T2 s* D7 e7 @

  181. / s! P  `3 t5 K4 }( I+ y! X: ~
  182. Redis::__construct构造函数
    0 ~+ M5 X. c8 B* |; B  d
  183. $redis = new Redis();
    2 O9 M3 j6 S. u3 n

  184. 7 Z7 \! t( |4 G; Q3 v; A
  185. connect, open 链接redis服务# D. n+ s! G# ~
  186. 参数5 u7 a! z4 P0 c3 t. V2 R6 d
  187. host: string,服务地址
    $ s. s6 k; i% \) I8 S
  188. port: int,端口号7 J5 Q  c* p, W7 G8 w4 u. @: a4 _
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    0 Y4 G& R1 e# Q) X6 J- j
  190. 注: 在redis.conf中也有时间,默认为300
    " H3 d% V; V0 k4 y6 R, k5 `

  191. 5 y% b! d' ^: ^- E5 g' ]9 l
  192. pconnect, popen 不会主动关闭的链接
    ! N2 {; t7 |: I- j4 Q; }# ]0 q
  193. 参考上面
    # F7 Z) T! k( r* M9 c9 ]
  194. 6 @9 S/ B  Z) U6 z. ~3 Z
  195. setOption 设置redis模式' P0 |* i9 U/ q  `

  196. # a* _$ ]9 T3 m7 A, S
  197. getOption 查看redis设置的模式) u2 ?# m' K. k0 ]( H
  198. 4 ]4 t) P; j/ Z. @% ~
  199. ping 查看连接状态% v  t8 z' F  T4 k0 o9 _
  200. 7 q8 f4 l/ F6 n
  201. get 得到某个key的值(string值)
    : c% M% J) G3 A0 z9 O+ ~4 ?8 ~
  202. 如果该key不存在,return false
    9 Z7 E) C2 |# X5 ]

  203. 4 a. Y. s" C5 F% w  o
  204. set 写入key 和 value(string值)& z. M$ B: m, c
  205. 如果写入成功,return ture
    ) }5 {, T  G3 K' p8 v; F- c

  206. / g: V$ \0 x5 @/ F$ d' f/ c+ k" d
  207. setex 带生存时间的写入值
    - u) W. A" p7 j$ S* O, S
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    ; W- M# R% I! U9 g+ e

  209. ( c- a* `3 W# E8 E! L. V5 X
  210. setnx 判断是否重复的,写入值
    9 e% @( J7 |- v5 F& V/ \
  211. $redis->setnx('key', 'value');2 d* [6 }: Q' V4 \, x* |
  212. $redis->setnx('key', 'value');: Y5 g+ t* F5 g+ G6 F

  213. * Y( x  o3 E; v# w
  214. delete  删除指定key的值
    8 S3 R2 z2 h- h; X5 `8 @8 L- Z
  215. 返回已经删除key的个数(长整数)
      s6 l* W; B3 f( d5 V4 X, ?) E
  216. $redis->delete('key1', 'key2');
    2 F: n- C( t: ]7 P
  217. $redis->delete(array('key3', 'key4', 'key5'));' G. d1 a0 m6 \0 X+ M

  218. ! H0 G* I- p( k
  219. ttl' z' e* T3 Y/ `2 p8 h4 S
  220. 得到一个key的生存时间3 X2 |' s. x( u& n( z; l# f
  221. ( Y, B$ T& e/ F" u$ ]4 z
  222. persist
      c0 Z8 m' D+ K; i" h. ~
  223. 移除生存时间到期的key, p$ Y9 |) U3 y( U$ w8 j9 i' K
  224. 如果key到期 true 如果不到期 false+ i+ }3 E" l+ c( `
  225. . F% t5 H7 g5 A
  226. mset (redis版本1.1以上才可以用)
    " s9 i; L' X! s) x8 O" X+ {% }
  227. 同时给多个key赋值
    , U2 }. D2 }! U- Z- u. o
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    6 }  ~. }, n7 ?1 v

  229. ' Q" T/ d( G/ J' w0 A7 Q! ~
  230. 7 w% n1 X6 d8 K+ h8 f" x0 O" ^

  231. 5 f8 T8 R" J6 W4 _. }. u/ u' g
  232. multi, exec, discard
    ; R4 j; }6 d- T( r7 Y# U
  233. 进入或者退出事务模式9 _: k5 t/ @3 G- K3 B
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    , p  D. j* }4 K7 w
  235. Redis::MULTI:将多个操作当成一个事务执行
    " ?( B7 d* Q. E5 A
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证2 R* x0 B! X1 W# P; o
  237. discard:删除一个事务
    ( q# l$ u: Y3 A# d6 B( C
  238. 返回值
    + w- X; _" l* ^7 `
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。! c# Q& U$ O- B1 n7 h3 G
  240. % E1 P9 W' b6 K( h
  241. watch, unwatch (代码测试后,不能达到所说的效果)$ P7 E" o" l" g2 t" T5 R) y
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false), K2 v/ k* |) w+ B+ g, i& k# A" Z/ G
  243. unwatch  取消被这个程序监测的所有key* F) r0 Z3 J5 x
  244. 参数,一对key的列表
    8 j7 t6 C) @' n; k: s/ E$ X" o
  245. $redis->watch('x');
    % p; g3 J) |" i' C1 L
  246. $ Q5 [) c; W, i" X5 e2 e# S" ]$ n
  247. $ret = $redis->multi() ->incr('x') ->exec();+ @: m1 i& s( J  p

  248. % ?+ h# o$ |9 m9 A

  249. / D& v, ?( b5 T9 d
  250. subscribe */ M4 _4 j8 s6 l& R6 e" }3 e
  251. 方法回调。注意,该方法可能在未来里发生改变
    / C  d- j8 P9 O) ?8 L

  252. / y$ J" C+ N* n
  253. publish *
    7 D3 O0 n$ m/ l/ H/ D+ e
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    2 O& }( l8 h7 l( i

  255.   B0 j' m" @% A
  256. exists
    ( }* S0 L) W: ~2 H3 R7 E) `" ]
  257. 判断key是否存在。存在 true 不在 false& V, l$ u/ k0 E' J% t: h1 W
  258. ) w' J' ?9 b* V6 R
  259. incr, incrBy
    3 H2 ^! n! V" D5 @  ~* q
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    - ?) T* s7 @# G5 s0 _: i6 l
  261. $redis->incr('key1');& {+ j$ ~+ w9 G
  262. $redis->incrBy('key1', 10);
    / ?, @+ O0 M# z! D& i
  263. $ x. n3 `- Q/ o0 T% f
  264. decr, decrBy
    + S- X) F7 m* G' F- {: M' l
  265. 做减法,使用方法同incr+ G! D$ C, \% t: A

  266. 4 \7 X# M* f1 ~6 u2 o: [" A
  267. getMultiple4 m2 E3 ?1 |9 `, z8 ~4 ^( A+ E
  268. 传参; \1 b) ^) v( |
  269. 由key组成的数组
    ) G; G  n8 N+ M; u: p
  270. 返回参数* ]) e5 |5 q5 I/ B! y3 `$ b! ^2 T
  271. 如果key存在返回value,不存在返回false4 p% `, K1 W0 v8 f
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    6 f' Z; e3 h- k, K3 r4 U/ i, D
  273. $redis->lRem('key1', 'A', 2);
    ( i' C) d% M9 m& S% L
  274. $redis->lRange('key1', 0, -1);7 ^5 [, ^" |" R2 V' U

  275. ) ?9 ^& V6 E: H! M$ u/ n0 V
  276. list相关操作3 x3 A( q6 A4 O) Y5 I
  277. lPush+ i& L# A8 E0 r" Z# ]
  278. $redis->lPush(key, value);; i0 `0 j5 F1 |; o7 a2 h
  279. 在名称为key的list左边(头)添加一个值为value的 元素0 W# u0 q8 W1 Q; @
  280. . x$ ]) ]% O& l* X: G, c4 g0 F
  281. rPush( U- T; R) ]; ]2 J, X: I% x
  282. $redis->rPush(key, value);
    ) e  y+ S" w+ H- R1 q
  283. 在名称为key的list右边(尾)添加一个值为value的 元素- x/ O9 ?8 A2 }5 r9 }
  284. 2 }+ q4 z3 m' d) X) t# H! g
  285. lPushx/rPushx, J" \$ x7 @( |. T, s. I
  286. $redis->lPushx(key, value);
    & I# h; \- [& X+ s3 F4 \6 s
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    9 X# o) K$ G9 Q7 A

  288. 3 Z( E7 |7 ?- K8 q7 N- @6 Y; E/ {. E
  289. lPop/rPop( g8 X( z: U+ R
  290. $redis->lPop('key');
    & u; i" H# c: E9 L9 |
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    3 f9 H6 q1 `# c9 ^* `% U

  292. , u! ?/ E' O5 Q  Q
  293. blPop/brPop* k. J5 q: f" B* r. V
  294. $redis->blPop('key1', 'key2', 10);* N3 q! G4 ~8 z7 Y
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作$ |7 h: t9 Z7 T; W5 f
  296. ( K5 m$ U# L6 @
  297. lSize
    ; p  A; t! _# E. C5 e  i# H: v
  298. $redis->lSize('key');) V% ^2 U  A4 w* v! Y
  299. 返回名称为key的list有多少个元素
    3 ~$ n5 I* I. U/ }7 Q% M
  300. 4 h% ]$ }$ {9 c+ J% z5 G
  301. lIndex, lGet
    + ^% E6 {. G$ t5 S" y! q8 ^
  302. $redis->lGet('key', 0);
    3 R3 ^. ]: B* t% E5 O1 m' I
  303. 返回名称为key的list中index位置的元素
    + r0 _  ]9 V4 N' a+ v& c* s
  304. , q& p' x% G$ I( [' E
  305. lSet
    2 H6 J$ w4 ?/ ?. ^& d% d
  306. $redis->lSet('key', 0, 'X');$ e& e7 e3 a2 U2 Y# _
  307. 给名称为key的list中index位置的元素赋值为value
    6 z3 n# l2 W* ~$ e
  308. " \1 e- c3 i+ ~% @. S' K3 y
  309. lRange, lGetRange3 G- h$ _) I" [1 K, q) @1 n
  310. $redis->lRange('key1', 0, -1);2 ~" M* u: s5 o0 {
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)/ e: N2 P+ ?% z, e; Q

  312. 3 F" [  ]1 x1 a$ s( Y5 }
  313. lTrim, listTrim. D: @" K; G( g% k6 v  ?. m8 N
  314. $redis->lTrim('key', start, end);+ u& ?0 P- M5 O, l; X' L# m/ I
  315. 截取名称为key的list,保留start至end之间的元素+ }6 q9 p% o  k% a) p( P
  316. * E3 H5 ?+ d2 j) A- u6 |- z: D
  317. lRem, lRemove
    ) T7 K: R! J- L+ f3 f5 c
  318. $redis->lRem('key', 'A', 2);% R& f0 p& p4 `) Q6 F
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    , B0 B! N% r0 i( [, K7 [

  320. * x7 L! ~) |- _
  321. lInsert
    / [- n- t5 t3 T: c3 Z3 |" t, X" Q
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1* A& v2 i8 ~+ {  o& `/ M$ ?
  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');0 H( ^5 E$ ?& }% r* T
  324. $redis->lRange('key1', 0, -1);3 {1 ]( l0 Z5 q0 m4 @/ N
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    . s' {' s! f3 j' [) o- c# S
  326. $redis->lRange('key1', 0, -1);
    3 H5 @3 v2 v7 D8 [
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    2 g8 T$ e7 W8 ]- k& c

  328. 2 y+ w* Y  R5 Z- V2 K5 F, i  u; v
  329. rpoplpush
    # Z2 J5 Y; B6 E
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    & G% O) L) D5 S
  331. $redis->delete('x', 'y');
      u7 m% r$ k& w8 W1 l
  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'));- ^: e2 `5 ?9 r5 H
  333. var_dump($redis->lRange('x', 0, -1));
    ; ^; ]) g7 H2 q, [, K' _# S
  334. var_dump($redis->lRange('y', 0, -1)); 8 k, V" ~' m6 O9 |2 b

  335. ) y, m9 h/ h" o! ]+ x  d+ X; p
  336. string(3) "abc"
    / @& g+ g! Q: ~7 X" a/ `$ D5 I% n) g/ o
  337. array(1) { [0]=> string(3) "def" }
    8 u* q$ {8 R9 A
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    4 G4 B, }2 v+ u- H1 y* C
  339. 2 h! o% n$ C2 ^. P$ k" H! [+ W
  340. SET操作相关' Q$ N" H. n) w7 E- \
  341. sAdd. ~+ n4 S5 s. X# U
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false3 A; m3 U  k* n# v0 [" [$ h
  343. $redis->sAdd(key , value);( z* E, A: m8 I2 p; {; W& O

  344. 1 B1 X/ X/ o6 V% J: ^; [) R& J
  345. sRem, sRemove
    ) }: }5 }4 u" {5 E
  346. 删除名称为key的set中的元素value& c' t& U6 t1 o4 j3 }3 k9 f6 p
  347. $redis->sAdd('key1' , 'set1');  x1 b$ Z) \7 X  J
  348. $redis->sAdd('key1' , 'set2');
    ! t& g4 l7 p+ {4 i
  349. $redis->sAdd('key1' , 'set3');$ @, H7 G  B# N* }+ P" U( x
  350. $redis->sRem('key1', 'set2');- k$ ^4 H9 p* e% L
  351. : M9 @% ^8 o8 u4 m: @, M/ S
  352. sMove
    5 m  b# K. p" n
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合7 w4 G$ Q( Q/ T: O/ A, y- j
  354. $redis->sMove(seckey, dstkey, value);# v" g/ m* ]; L! g7 `) A
  355. 2 Q7 M8 _& k% v! E$ l. Z/ F9 A
  356. sIsMember, sContains
    6 W" u' e/ S# L' ?; i. B- [6 d
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    7 J: O7 u* k+ d5 ]) W# g
  358. $redis->sIsMember(key, value);/ e9 l# k& ^4 @) \
  359. * \* X* Q0 o: t# t  B3 m
  360. sCard, sSize7 p2 S" }; V8 W) G! M  m
  361. 返回名称为key的set的元素个数
    # S( j" D+ G( t' e

  362. 6 K8 a& q7 ]. G8 o5 c! b
  363. sPop
    $ g% z. G8 D! H- G- H
  364. 随机返回并删除名称为key的set中一个元素
    % s8 h+ b% P" ~5 t2 U( u2 G8 e
  365. - O4 M5 u: p) l# p4 x" v
  366. sRandMember- O1 y: C. q1 d5 p- j4 Y7 [6 v
  367. 随机返回名称为key的set中一个元素,不删除7 T" R8 O0 @0 r0 A, j* r. _1 g- n

  368. . P' E+ T4 U6 F0 z- }
  369. sInter3 R6 X0 O- p3 ~  ]& R$ n+ P
  370. 求交集
    : q9 d+ ~1 L; ^/ K  x
  371.   B8 d1 C. q, b! x. k4 @# r( r
  372. sInterStore
    % [: _: s- V) l1 D9 `
  373. 求交集并将交集保存到output的集合9 ~$ q* a, w9 V  a* U) a3 ]# V8 s
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    . I6 X( g* z0 ^3 T; e
  375. 5 u: ?5 o% F7 p1 O% A* }
  376. sUnion
    / N7 U0 {  O. d) v: u; H
  377. 求并集$ R& {9 A' Z2 L6 A# }+ J1 g, s
  378. $redis->sUnion('s0', 's1', 's2');; g& X/ x5 F( j- B' m' E2 ]
  379. s0,s1,s2 同时求并集, e, t0 h, j9 d3 h( K0 a* d

  380. # L" A3 p" j+ |# T5 F; t: _. k
  381. sUnionStore
    : r& j3 j. ?' M8 H* A' ]
  382. 求并集并将并集保存到output的集合- X% u1 U; t8 y, ^1 q# q: J9 N
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    - B1 t4 d7 K0 J5 F( Q0 F, I: l% w

  384. 8 a- |" D) w; f, ^- X# t
  385. sDiff
    8 z) b7 V6 c4 q  E
  386. 求差集
    : N$ x: [6 K5 a# q( t5 S
  387. $ s* f/ S2 o% O7 N% m% n* S( D1 M
  388. sDiffStore
    , F4 L& V# H8 K$ e
  389. 求差集并将差集保存到output的集合
    8 @' h4 T9 K) ~+ P

  390. ( b+ W0 U, X3 C8 J$ D
  391. sMembers, sGetMembers" b9 y5 y; S8 n2 P6 V' v
  392. 返回名称为key的set的所有元素1 U7 E  V+ I+ l, H5 v' W
  393. & f4 t# S/ U/ C2 J
  394. sort# ^0 e! L" c* B$ c( T# J; E/ d
  395. 排序,分页等* q9 T- c% j# @4 t! }; Y
  396. 参数
    & U( D/ G  R, k$ i4 Q
  397. 'by' => 'some_pattern_*',, s3 q3 T4 B! r: a7 v
  398. 'limit' => array(0, 1),
    $ Y- X7 o& |+ {  l( @! b0 K! R& R
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    $ F7 j+ B* \: I" |7 }& R
  400. 'sort' => 'asc' or 'desc',% A3 f9 A% B( O7 L
  401. 'alpha' => TRUE,9 R: n) j0 N& `$ Q: k( V& v% t8 V% z
  402. 'store' => 'external-key'3 M* V- r- O# h" @9 e. N
  403. 例子
    / B: M# G$ S! E3 D$ ^' B
  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 {  D# R2 s( c# t+ p
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    . b: [* _. p* t4 m* p, G
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1: d; U7 m( Q1 _& m5 c6 f& g
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5" M2 \" }# C+ k" O' F; V6 \+ x

  408. 7 M8 I" [, ^$ s8 _6 z
  409. string命令1 [: j/ |' l4 T7 [& c
  410. getSet7 Z/ U: o! F8 l+ \0 D
  411. 返回原来key中的值,并将value写入key
    1 C- N2 E# f; A, ]6 u. k6 _9 Z5 L+ }
  412. $redis->set('x', '42');# j; Y" u1 E" n. H1 `0 D
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    5 u% |8 ^7 E& A
  414. $newValue = $redis->get('x')' // return 'lol'
    , l* ^* I% i* f. [# k
  415. % _7 d/ V3 Q3 y1 C" j
  416. append: H( |* d8 |7 W" V7 l& H$ I# i
  417. string,名称为key的string的值在后面加上value
    + Z2 I& ~4 Q5 @; x" G9 I* N
  418. $redis->set('key', 'value1');  H7 d: h2 B/ g& b3 W6 P
  419. $redis->append('key', 'value2');
    - p( @; y% v5 N
  420. $redis->get('key');* r/ z6 E% z* N& U8 S
  421. 9 q) |, A* I0 x) i; |9 p
  422. getRange (方法不存在)% F1 t/ J4 f9 ~, P; U  ]
  423. 返回名称为key的string中start至end之间的字符
    1 L( M5 N' [, ]) r* X+ c$ Z
  424. $redis->set('key', 'string value');" m: u6 X; X9 e9 {6 @4 O6 D
  425. $redis->getRange('key', 0, 5);
    . [( H; G$ X! A
  426. $redis->getRange('key', -5, -1);
    # Z" H# b3 [6 x# H; h8 D9 A# q
  427. ; ]8 ?6 i8 o% }) s9 e. m( |2 H
  428. setRange (方法不存在)$ S& V8 K: y3 n! @% g# Y6 n
  429. 改变key的string中start至end之间的字符为value4 z$ W# k0 M# H0 }1 }
  430. $redis->set('key', 'Hello world');" g# X' _* q# A0 y7 e9 j# j. |
  431. $redis->setRange('key', 6, "redis");# L1 r' f8 ]* ?
  432. $redis->get('key');
    2 b) n6 M8 p0 O9 b8 H, o7 g/ U& d

  433. ; U7 `' N% H% H( R9 [( Y( d
  434. strlen
    * Y7 {1 i0 B% g# R% p' {
  435. 得到key的string的长度" L: h) q& N* Z% Z8 w: F/ G
  436. $redis->strlen('key');
    ( a) P/ _: E/ x1 U! x

  437. 5 m" Z/ Q" E+ ]0 [1 w2 l
  438. getBit/setBit# z& {9 d5 {4 [( @- l
  439. 返回2进制信息
    - ]# v; d  O9 K/ F% _* }

  440. 4 f6 D0 v- N. y- |" j  D0 h2 ^& ~) B
  441. zset(sorted set)操作相关  j2 C) q, O5 m
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    9 w0 o. d$ o; N: H- I, b* n
  443. $redis->zAdd('key', 1, 'val1');
    0 z# Y) d; L5 e8 X" M+ |5 J
  444. $redis->zAdd('key', 0, 'val0');
    . X8 Z7 O$ F5 h, ?6 _! P' r
  445. $redis->zAdd('key', 5, 'val5');
    . G, k8 c0 n& [; F! T1 ^
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    ) A  Z, e/ ?8 `1 w

  447. , f/ G% @! S! I; n6 _
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    : [4 V) ?, S& Q4 v+ t+ e5 C
  449. $redis->zAdd('key1', 0, 'val0');
    2 z( \: b) ?& j# U% Z
  450. $redis->zAdd('key1', 2, 'val2');1 S& m" n+ A5 a
  451. $redis->zAdd('key1', 10, 'val10');, N4 Y9 H- v6 s, W
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    $ p' P( s# ^9 N3 Z7 w$ Z
  453. # n% e: M* l6 p" x
  454. zDelete, zRem  X! V. t6 G# q  r0 J% Q1 R
  455. zRem(key, member) :删除名称为key的zset中的元素member0 U, C% ?' }/ J
  456. $redis->zAdd('key', 0, 'val0');' P. _$ e: r3 b9 A
  457. $redis->zAdd('key', 2, 'val2');1 d. Y8 R1 K; J6 m8 f
  458. $redis->zAdd('key', 10, 'val10');, f, s$ L( \% @. ~6 U
  459. $redis->zDelete('key', 'val2');
    , ^9 W6 d) i8 Q# I
  460. $redis->zRange('key', 0, -1); 2 J4 v  H$ I0 p* m! i  W, R1 U
  461. 1 Y) B! S6 D- ?: L9 s, z, K( @0 P" R
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    8 Z0 Y% m2 o: q3 X& u
  463. $redis->zAdd('key', 0, 'val0');
    8 Q. q! \; c4 O1 X
  464. $redis->zAdd('key', 2, 'val2');/ U; l6 s$ B! n7 r
  465. $redis->zAdd('key', 10, 'val10');
    ; O. N5 a' R5 @' D& S! h
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    - F$ H! q' Z4 i8 q, ~

  467. : e" t& _) b/ |4 F
  468. zRangeByScore, zRevRangeByScore; F( @1 n  Z" _' A* `3 D
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    7 m) s+ {5 u% I8 c6 T
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    2 B3 X  R$ [" {5 T  H0 E

  471. ; n+ X1 b9 |/ R6 z/ p
  472. zCount
    ! a7 H" Q) |+ m
  473. $redis->zCount(key, star, end);
    8 S  s' H( R+ A& g- y
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数% d8 I) I/ I' n1 k0 h$ L7 v8 o

  475. 9 `  ^" y# _+ u, k8 `" b, v
  476. zRemRangeByScore, zDeleteRangeByScore+ Y0 X+ N6 |: x) E0 {
  477. $redis->zRemRangeByScore('key', star, end);
    2 U6 e* C' f, ^' h
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    5 X0 i1 ^% [0 }3 g6 A6 {) U

  479. 6 L' I1 ?' v7 h3 B8 n5 |: E" x" L
  480. zSize, zCard
    8 E, m* I1 s* [7 b2 z9 v- P/ A1 Y4 u6 r
  481. 返回名称为key的zset的所有元素的个数
    & P, ?1 f2 |( R; v6 M2 {# W
  482. $ n7 W8 D2 A: G
  483. zScore
    - M4 c( X" c2 k: v- ]* _& P# s! J
  484. $redis->zScore(key, val2);2 f$ B2 P* k9 u  [  ^# d8 x( j1 `
  485. 返回名称为key的zset中元素val2的score: S+ A; x; F8 y% r' M/ }9 k" ^
  486. 4 @/ _! p+ d6 V' j
  487. zRank, zRevRank# j# i: t' P0 ^! v# d
  488. $redis->zRevRank(key, val);# s& \4 A! J; j+ l5 @
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    . c: i0 B5 S; K: c) h; x0 W' g& W
  490. - ~' Y6 I; l5 u2 F6 N! _: F+ l: ?
  491. zIncrBy; I: ^4 j, ]. c/ P
  492. $redis->zIncrBy('key', increment, 'member');
    + t, {6 I4 X, Y/ G8 k
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment  {; d# N" {1 Z7 ?1 i

  494. - B0 I! k/ P+ w# Y
  495. zUnion/zInter
    2 X- u* L2 w, X
  496. 参数
    3 ]3 i+ X0 Z: V! K! s: u* L+ z: g
  497. keyOutput
    - J" h" T% q$ W; i
  498. arrayZSetKeys
    ) M; s# ~) h$ |2 s7 W9 E# _
  499. arrayWeights- `$ \. K; U+ H
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.# O8 l" T* e3 ~0 h7 ]2 S6 I: m5 p- R! M
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    + r1 Q0 P. I1 H) \4 e2 e! t
复制代码

/ ?" k" D2 R# u4 G0 Z
3 \' _' w  m( o/ U
+ D! G" K6 q' P+ T6 Y0 {$ ~* k& r$ b: L$ v5 A5 M; R( r! H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); & \$ {5 K0 j0 w. R
  2. //连接redis服务器
    5 S  x- b; X+ m- v+ D$ l3 o4 f, v
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 20:02 , Processed in 0.068030 second(s), 19 queries .

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