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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13107|回复: 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 L. f3 A+ I2 d6 l
  2. $redis = new Redis();  / c* u" T. J; X% t6 o9 \
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    8 y, i9 m5 p. d. ~' f5 X
  4. $redis->auth('mypassword');//my redis password
    * J1 J( q4 L- [" f6 e/ q
  5. $redis ->set( "test" , "Hello World");  7 b$ H0 O9 c/ `( Z, y
  6. echo $redis ->get( "test");( Z  [) Z+ G0 l1 ^
复制代码
php操作redis函数封装
  1. /**4 F/ d( b' C& c; I
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数- Z) v, f. B4 @' W4 k2 i! u
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    ) {0 b. h! w& s' L: y1 i& O
  4. */
    1 w' _6 o4 A0 R5 H
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    $ |4 Y6 g0 F9 V# b
  6.     if(!$key||!$value) return false;" |2 l1 ^# p: Z: D
  7.     $host = $host?$host:getenv('REDIS_HOST');
    3 a6 |8 \, b% J( I, u: k/ {
  8.     $port = $port?$port:getenv('REDIS_PORT');1 j: b" b3 Y( S+ l3 Y+ ^  ~2 r
  9.     $redis = new Redis();. ?9 x) q- Z8 Z6 a7 Q
  10.     $redis->connect($host, $port);
      [* x5 |/ E6 E0 D
  11.     $value = is_array($value)?json_encode($value):$value;- {0 r" L, g% }6 j4 b
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    7 n6 {- x' [' e) @) F
  13. }! D) g3 ~/ v" G: S, k
  14. /**' t: i' e0 E8 E  `. ]
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    3 |, }& X8 [( u$ a6 o9 C% G/ f
  16. */' s9 q9 }5 F7 D) a. Z  v% @
  17. function RedisGet($key,$host='',$port=''){
    : T# |, M% H$ t# S# C
  18.     $redis = new Redis();. b8 @" P) m) V9 e0 ?, n/ _9 m
  19.     $host = $host?$host:getenv('REDIS_HOST');
    . w1 T3 X# q7 G
  20.     $port = $port?$port:getenv('REDIS_PORT');- D( M- a! n- d0 s
  21.     $redis->connect($host, $port);3 i! k. {8 V2 Y  y9 i
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);! T* y8 `0 `# k  e3 t! U9 S+ C
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);- Z. v8 b& P# H) S1 s# f( L1 ~
  24. }
    - _* ~8 L1 {" H2 P" [
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了8 f( `( Q5 @' O4 k7 K6 g
  1. setex 带生存时间的写入值  G- l' Q! }" @- E7 i; T
  2. $redis->setex('key', 3600, 'value'); 0 `: p" k) D" n+ r" n
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1& c( F$ n9 Y5 _+ K7 S
  4. $redis->setnx('key', 'value');+ L: \& e1 P- `
  5. 返回已经删除key
    8 B6 j2 V' ~& v
  6. $redis->delete('key1'); 成功返回1失败返回0
    % q8 ^# u; C) K( f$ D# S' r* ]& I
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0* c% Y) A0 s; w- `/ p
  8. 查询生存时间
    9 ]* T1 A, j- e4 _& u% Y4 i
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)9 g6 g0 }: @& v* r1 a! ]: E, ^! ]
  10. 同时给多个key赋值,同时设置key0和key10 e# N4 a; E1 A
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    * y+ X& }' h9 N, ?- G0 e
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值6 d, Y4 N- P1 u! W
  13. $redis->incr('key1');
    5 n& W+ n+ j; i  A8 K) f' S  z
  14. $redis->incrBy('key1', 10);
    : ~$ u# ]: l; v9 x" U, I+ s* v
  15. 减法跟加法一样6 p5 G1 K( W9 ~! M" T( R
  16. $redis->decr("key1"); 减少10 V: M9 E4 K$ P4 g+ Q: }
  17. $redis->decrBy("key1",5) 减少5! b. j6 K; ~# i+ e
  18. , G5 t# \0 a; O. I, n8 N
  19. list相关操作,连表操作1 S; N2 x2 x9 k+ X: J9 q  s5 B2 w
  20. lPush
    5 G' F( s3 B( Y% ?0 q5 K+ k
  21. $redis->lPush("list", "888");
    ' t( t( C& K5 p: }
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    ' g. F) K8 I7 y1 R# D- b
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    ) ^& l! i( _$ M" j) h
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素; w2 M+ r# p# Z" [9 S# O% ]% A. I/ Z
  25. lPushx/rPushx
    # h7 i% F! n3 l! ?- W/ Y5 M
  26. $redis->lPushx(key, value);
    8 x; {: e* M% `3 ~
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ! `0 q0 @& |* F* ^4 Q$ R5 L! {8 L6 n

  28. ; p& L6 c% ]1 M2 K
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    ( P% Q# O# G8 C6 K! L7 Q8 ]2 }
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key( M+ a6 p* w6 t. F
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1, @% d) S; Z) z4 E
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    0 q7 j% |; X# Y6 Y$ N$ d# ~
  33. sadd s1 zhangsan2 r  {$ W4 }6 e' n! i% p
  34. sadd s1 lisi; G$ u9 I5 b4 j0 W/ a' Y( f% L6 b
  35. sadd s1 wangwu3 H! w$ s; S/ X  V# {% [
  36. sadd t1 yangxingyi) @+ a4 ?. z8 S! I
  37. sadd t1 lilei$ s- {1 B3 u( l
  38. sadd t1 zhangsan  \( O5 ~/ M+ `* q' d+ C0 \, ~
  39. smembers s1 s1的所有集合内容/ D) `  |7 i9 G( e, D# o- ?$ A
  40. sdiff s1 t1 s1有的,t1没有的,差集+ p& f. \' B& I: Q+ ~
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式- X; s0 m! K: a/ ]# i
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    , C0 a" l) x& K% M! g
  43. spop抽奖场景,返回集合里面随机的数
    + j/ C7 {4 ]1 Z
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了% A' n% P4 ?9 m" Z) d) t: |
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    7 _* f  [9 H+ n
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的( k* h% |  p% S( p, g
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    8 ~$ Q% |8 i7 K) P0 k
  48. $i = $redis->srandmember('s1');echo $i;. r$ I7 w. o: k, U' X4 c
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    ! @3 C! w% R" _* k
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false9 ?+ S5 F0 X: @$ N% i
  51. & p, H$ W3 d  f' m( q$ I2 w! H
  52. zadd key 2 value 有序集合
    / i0 y$ A# U9 U. N) h; I! A5 K
  53. zadd y1 1 zhangsan;
    * L8 L) f3 E3 ~
  54. zadd y1 3 lisi;
    . W& @- H% h; ?- A% n/ p2 d
  55. zadd y1 2 wangwu;" h; F+ C2 s% X. E6 N
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    * B9 I# Q0 ~$ |3 c
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);5 H2 m$ p5 I" n' c6 y# o  [
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    2 G; j' L7 S6 q
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    - n7 l6 y. {9 w& _$ K$ w" t
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    . \& Y% F3 S! a& R3 S, I
  61. 无序就scard,有序就zcard,有z没有s' F: {6 x( e& |+ q; V
  62. sInterStore4 s1 K6 u% R6 R8 n3 I9 s7 A. s
  63. 求交集并将交集保存到output的集合
    8 i8 p2 ~) j: g2 z( n' P
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')# ?* R* m7 Q' Y& X

  65. ! b; O  g# W1 R1 a
  66. Hash操作* g7 S* @$ P9 P/ m
  67. hSet
    ) n' Q: P9 t, A4 d2 E: x
  68. $redis->hSet('h', 'key1', 'hello');5 l. Y; [1 c3 S2 _
  69. 向名称为h的hash中添加元素key1—>hello
    8 V9 F/ I; m0 v  I6 h2 }3 C
  70. + q5 U$ ?3 D9 T4 J) w5 q
  71. hGet
    4 c5 D* g. E4 Q7 Z' O
  72. $redis->hGet('h', 'key1');! q7 ~  e& L1 A# b1 [) H1 b0 _
  73. 返回名称为h的hash中key1对应的value(hello)
    & z. B9 ^5 b- X2 T. g' a
  74. % P* U" @* s' c  {
  75. hLen
    " `! Z: b& U. @+ f
  76. $redis->hLen('h');) E1 ]/ k. z( Z6 K( o4 \
  77. 返回名称为h的hash中元素个数
    * Z) M' A7 |$ K

  78. : |5 X# b5 i5 R4 C! {0 c, ?+ w
  79. hDel
      ]. O9 I4 O) y  N+ D8 L
  80. $redis->hDel('h', 'key1');) n& c! H8 d' G+ O% s
  81. 删除名称为h的hash中键为key1的域
    : b. A2 }) n6 j% `3 ~
  82. # O( d) M9 q; n$ {, G
  83. hKeys
    2 V' r  m- E- c
  84. $redis->hKeys('h');
    5 e5 [3 G% u/ X% I# R
  85. 返回名称为key的hash中所有键
    $ k; V" }+ X, s, b$ @4 w, b# G

  86. ; i  ]! e- `5 D4 ^7 L
  87. hVals
    - v8 a2 g! ?! p6 _
  88. $redis->hVals('h')
    / X; r- I" _0 B' {$ w8 A
  89. 返回名称为h的hash中所有键对应的value) r- ^  ^4 _/ U; y: n' V; t6 v

  90. + U& J: {" Y* q7 y/ Q
  91. hGetAll
      e& S( m1 `& v1 m. I
  92. $redis->hGetAll('h');
    + I+ n# K0 M+ d# l- g
  93. 返回名称为h的hash中所有的键(field)及其对应的value! e8 m5 [4 Z6 d. |
  94. # V6 D- M1 s) ?- @: ]
  95. hExists( Q. {1 Z9 E" V# u# `6 Y' j
  96. $redis->hExists('h', 'a');
    . L  ^6 t$ O- f/ Y6 z! O
  97. 名称为h的hash中是否存在键名字为a的域4 v  a0 w5 u& O3 v9 S4 w- y

  98. 9 j' }: q9 t, k( Q# ~3 I2 D/ @
  99. hIncrBy
    % E+ K, ?7 g, m  E% i9 r2 k7 G5 z% j
  100. $redis->hIncrBy('h', 'x', 2);
    3 y9 S1 w% b( o6 N9 W0 ]
  101. 将名称为h的hash中x的value增加20 J8 d) k! q0 q2 V( }

  102. 7 F, Q7 O* y7 N2 u/ W9 Z& c1 M5 ?* [
  103. hMset( X+ w7 L- Z) S7 x
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    " D. Z/ z9 l5 N  X3 q" v& F
  105. 向名称为key的hash中批量添加元素
    7 D- o5 Y- Q5 `6 x  a4 P/ a

  106. $ H/ ^9 B+ p5 P8 i
  107. hMGet/ s6 O, L7 r7 W5 D+ T) S
  108. $redis->hmGet('h', array('field1', 'field2'));
    - w1 }1 M; {! G1 i5 Q, p& g! t
  109. 返回名称为h的hash中field1,field2对应的value) q8 H: F+ B4 @3 J' N7 k7 L( A
  110. ) s6 i. t4 t9 d( S& h
  111. redis 操作相关
    * S: Q+ T; m& J& h( _; {% d; T  t
  112. flushDB  d" J3 {. u$ H- q
  113. 清空当前数据库" r$ q: k* Y! G  z9 `) R8 p% S

  114. ) r" o0 \/ a+ e# m: }3 d* R; B
  115. flushAll8 K6 U% J( \( ^' |
  116. 清空所有数据库
    0 V/ i) h# e0 c1 O$ O

  117. $ Y2 {. Q) L+ u' V7 M5 z( D1 P# R
  118. randomKey
    " f% X9 b9 l; X9 L
  119. 随机返回key空间的一个key
    ; E( N- l/ C8 c/ w& k0 c5 s: D6 U
  120. $key = $redis->randomKey();
    3 `0 \# I+ Q; E9 p7 g$ l8 u' A2 t

  121. & M9 O: r8 c/ j: K* {
  122. select. L  Z8 u$ F, I3 E+ |7 D
  123. 选择一个数据库: L- x0 v% G: C( r1 f4 V
  124. move. F% `! V/ g, J) |5 |# n
  125. 转移一个key到另外一个数据库
    1 d- M6 ^" l% y0 N' z& j: `
  126. $redis->select(0); // switch to DB 06 b+ o0 N: K" E
  127. $redis->set('x', '42'); // write 42 to x, \! {5 ~# V6 n/ O% S
  128. $redis->move('x', 1); // move to DB 1" E+ t* o& i; \- T! ?
  129. $redis->select(1); // switch to DB 1( Q& J7 V9 E9 k
  130. $redis->get('x'); // will return 42
    1 S0 }" U' `3 c- c) [" w3 v: H
  131. ' `% A( \& G5 a
  132. rename, renameKey& D/ x- G( _  O% y! X
  133. 给key重命名+ J( e7 O- Z5 ?( m$ f! i
  134. $redis->set('x', '42');
    5 k6 [+ Z9 O  O2 w' b
  135. $redis->rename('x', 'y');$ q0 P6 Y1 a% d3 j, V1 c2 g" F: W0 M
  136. $redis->get('y'); // → 42( l6 n) J0 W8 Y* }! v
  137. $redis->get('x'); // → `FALSE`
    + S! ^3 _! r, S, x& w
  138. + K2 b7 x9 |# t1 s* d- h2 q$ X
  139. renameNx
    0 l; A# m8 F. h' X5 d
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    2 }5 ?8 T- y# t  H# m8 w

  141. , M! Q" M0 v) ~$ c, R; ?
  142. setTimeout, expire: s) Q- X8 s; l3 R" @$ i
  143. 设定一个key的活动时间(s)( e# W0 A$ E& P
  144. $redis->setTimeout('x', 3);' ^' m7 i( H& D1 Q3 T* z, u( J

  145. 3 b& n4 o% Z% Y
  146. expireAt( ]; l4 }, z7 P6 ?8 `( _
  147. key存活到一个unix时间戳时间4 X% L/ @" R" t/ W; Y3 ?! i8 H3 ?  t
  148. $redis->expireAt('x', time() + 3);* X% T! T" b- d7 t

  149. + Q" `) F5 ]- p! ^6 k" N/ t, F
  150. keys, getKeys, T" r' o6 h5 j7 q9 j
  151. 返回满足给定pattern的所有key/ q; }3 Z+ r% N! {( y5 l% }
  152. $keyWithUserPrefix = $redis->keys('user*');
    2 h' M# M5 }6 i; _$ R( w. u

  153. 6 G" S$ o  |' \- a) k; D
  154. dbSize5 O0 p. R$ k- x8 I/ U1 s  b% Y7 w
  155. 查看现在数据库有多少key
    & h. k! i0 D% z$ a: i
  156. $count = $redis->dbSize();
    : S9 J1 ]. q9 E7 G1 ?! ^

  157. 7 K( e6 X2 P8 v$ X1 ^
  158. auth
    $ p+ u$ I* v' k; G) g9 a0 U
  159. 密码认证
    3 N! `# ?) B9 U" e3 Z0 ~( p
  160. $redis->auth('foobared');
    7 T2 J! l  f) Z+ O5 N5 k/ u) R( B/ W

  161. , o2 M8 v4 f' C, B3 A- }0 I
  162. bgrewriteaof
    & J% }, w) i3 c0 a2 Y, Y
  163. 使用aof来进行数据库持久化- q+ r( U6 F' o5 O
  164. $redis->bgrewriteaof();
    : o* r7 \8 p) l. n6 F; o

  165. ! m# g3 u' z5 Y3 K% E2 Z5 Z3 X
  166. slaveof
    9 F# E+ Z% b& U2 f! u9 n* O
  167. 选择从服务器
    7 P1 E8 t" ~, H
  168. $redis->slaveof('10.0.1.7', 6379);' n" N6 L1 ?$ |6 n$ D2 D

  169. 0 B0 d4 K$ p$ o6 J; b% B1 ?
  170. save: |9 g& Y! [& y3 Y* U% q
  171. 将数据同步保存到磁盘
    ! x; d! [/ f- z) C/ G
  172. : y4 Z2 @. J/ ]: B2 ]2 @* C2 Z0 z
  173. bgsave
    6 O" P# t0 t: H; o4 F
  174. 将数据异步保存到磁盘6 c8 R( M$ K1 N7 D3 @/ H: O' m% E
  175. * ?  ?9 H# u! `2 c/ [! n% I
  176. lastSave& z/ ~+ G, P0 u
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    ! n2 _5 n! m/ _

  178. ' f" f' ^" A+ p8 b4 W# v2 }
  179. info
    ( _/ x( ^8 M: h& s; }- S! }( U' h
  180. 返回redis的版本信息等详情4 B7 x( k8 f4 ^% }+ B; J

  181. ) J% L  V8 R( \1 m. ?
  182. Redis::__construct构造函数% E/ c! k& ]& A6 W
  183. $redis = new Redis();
    6 K3 ?# O7 M& q" m* i8 E" U3 s% P1 Y
  184. ; e7 c, D  b- K* g( a
  185. connect, open 链接redis服务! J, g# G# B# ]6 p) d/ Z
  186. 参数3 H  b- j1 J, L8 T6 e4 i
  187. host: string,服务地址. \4 f' W+ Q; X/ i+ o0 Z# ^
  188. port: int,端口号
    & t8 A9 X3 j4 A2 @3 t2 a1 z
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)$ L( D& @8 {. t: C2 w# Z
  190. 注: 在redis.conf中也有时间,默认为300# g. L( y/ H$ _, J
  191.   ?7 M- I& h, [
  192. pconnect, popen 不会主动关闭的链接
    # O  C) a/ H7 P) g1 o
  193. 参考上面* e, h" \7 P8 w! t

  194. $ W; y: y0 o8 a/ L$ m
  195. setOption 设置redis模式9 y9 L' V: @4 q- ?0 q3 H
  196.   I2 L1 J  h, X) Q5 h
  197. getOption 查看redis设置的模式. E6 _9 X3 n5 d* k+ Q: N- j
  198. 3 [9 f% c2 }: d% K1 J8 T
  199. ping 查看连接状态) K, w, _' x4 w/ e2 j+ f- y: I3 o9 U
  200.   E* F  Z# B& g1 v
  201. get 得到某个key的值(string值)
    % z% z4 m/ A9 G1 z( x+ j9 _
  202. 如果该key不存在,return false$ e  d% {& d- Z0 G( F+ N
  203. 7 \6 o& ^3 ^9 {5 m: K1 D
  204. set 写入key 和 value(string值): Y1 V# ^" t: I5 {% }+ q* Z
  205. 如果写入成功,return ture
    * i& J( A7 k5 ?3 `! w) Z

  206. " x+ _' h( R9 v; v6 r4 m
  207. setex 带生存时间的写入值
    9 ~3 s! V. t: N2 a" T( V+ `3 j
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.8 I- ^! i4 }  T5 j( r' m! n3 o

  209. % ~9 c& n/ Z- t; o' y( C* I
  210. setnx 判断是否重复的,写入值
    % I: c4 k8 @4 X+ f/ {* z/ c
  211. $redis->setnx('key', 'value');
    * q6 s5 b/ n# I) G2 V
  212. $redis->setnx('key', 'value');
    ! [; b! N  ]' t4 \% P" [; {
  213. 1 ~  L6 c" I0 X& C1 U% @7 _* V. x
  214. delete  删除指定key的值3 j/ F) e6 E+ C
  215. 返回已经删除key的个数(长整数)6 e& H- A$ k1 G/ u& Q
  216. $redis->delete('key1', 'key2');1 p6 C$ u* k5 _8 c1 o
  217. $redis->delete(array('key3', 'key4', 'key5'));, e* e, z- q0 Q. e

  218. % g5 x& z( U2 e1 O7 s7 e
  219. ttl
    $ z2 r: k$ \% @4 p6 [: y
  220. 得到一个key的生存时间3 Y) p9 I, k6 ~% |  h. b+ j

  221. , C/ @" ^- C& G- p, K" C
  222. persist- m* A- Q' J' s9 q! x$ K* @
  223. 移除生存时间到期的key
    ; u: r2 |3 g1 {. w
  224. 如果key到期 true 如果不到期 false8 D2 k6 G% s0 ~
  225. 0 Z0 ~# V; u6 |' |
  226. mset (redis版本1.1以上才可以用). f/ b* ~! @. W3 O$ G; ?9 V, L2 s: I
  227. 同时给多个key赋值
    1 W# K) y' l" Y, @/ J
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));( u; q; `9 v" Q9 ^

  229. ' d) p9 T6 _) K6 D  V  D, b

  230. / w! d5 n# q# ^( [8 z- U
  231.   l/ A" b8 V+ `( N# G) U
  232. multi, exec, discard
    5 m/ [% p* q$ l) V$ ]! G! W* m
  233. 进入或者退出事务模式0 t8 x, P( U# B: c# w! Y  i5 B
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
      Y' f$ y( D( v  \- j/ W1 ^
  235. Redis::MULTI:将多个操作当成一个事务执行
    3 v* b  S0 f: g/ S1 F( ]
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证  G( a2 {, ?' S  m% R/ h
  237. discard:删除一个事务
    5 ], B' ^3 Z- n0 w8 {9 N) X% i
  238. 返回值
    & V0 B" Z, p/ F, K  V1 J
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    % x, L3 J2 k, @
  240. ; D; y! g3 j* u" T  t
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    4 f/ X1 P! I; K# F
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)% ^, {0 o. c& G  }4 [! W
  243. unwatch  取消被这个程序监测的所有key9 r1 j0 f# G. b. r! v
  244. 参数,一对key的列表
    6 J- Y  m, f7 [
  245. $redis->watch('x');
    ' ~! u: ]( o( _$ w3 O. ^! Q
  246. ) O) F8 r& C$ ?: p
  247. $ret = $redis->multi() ->incr('x') ->exec();
    1 e1 |" m9 q3 N9 y. b
  248. 9 o4 e5 o0 S; n) p- K

  249. . ]* D4 c: f$ v" x' m$ p
  250. subscribe *
    $ p3 ]6 \5 \( P+ H3 S
  251. 方法回调。注意,该方法可能在未来里发生改变! Q1 b/ _7 V/ Z5 m: V' z
  252. 8 F; K( z0 F1 P; Y7 M
  253. publish *
    3 l! ?  f9 w% e/ ^
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变. H! I  W7 s9 P4 n2 @

  255.   g: Y! ^6 d1 p; @8 |1 s
  256. exists
    + f2 c" t7 U) D) D& H. g
  257. 判断key是否存在。存在 true 不在 false
    6 b( a% Z( m* V* E4 N

  258. 5 u1 T1 I9 [$ l; ~( h
  259. incr, incrBy
    # s0 {8 ]7 Q8 H
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    9 H! x# f: Y# c
  261. $redis->incr('key1');$ n) [' ]6 e# G( Z$ N
  262. $redis->incrBy('key1', 10);
      [+ X' x4 W" W( y7 y/ @

  263. ) w" h7 G& ?* Q9 ^/ B; ^3 ]
  264. decr, decrBy6 U2 G; R4 Q1 x, {
  265. 做减法,使用方法同incr
    ' g* L# {$ p4 I
  266. ' b7 _5 i4 ]7 @# [# r& C
  267. getMultiple
    1 ]! o+ I  S" z" H4 N3 P. `
  268. 传参
    : A$ V) V7 a3 S& \  P+ h/ Z  q* U+ c
  269. 由key组成的数组
    ( ?$ [2 Q- G7 D
  270. 返回参数
    # R1 a+ Z) D2 c8 c6 U
  271. 如果key存在返回value,不存在返回false
      f& t+ X2 h5 c* u+ f
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));6 j+ a- I! a2 r! ^, _) D
  273. $redis->lRem('key1', 'A', 2);
    ( F" g/ D/ O8 z- G1 ~) \* d- c
  274. $redis->lRange('key1', 0, -1);6 ]( x7 @; M6 m. N$ A
  275. ; w3 J; A' Q/ V& p
  276. list相关操作
    $ d% U& j+ g3 D0 G" K
  277. lPush
    " w& f+ c( Z  ~* m$ }
  278. $redis->lPush(key, value);$ a$ V/ i7 A6 F1 u
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    ! Y- f1 ]$ ?, L; V; g3 D& J' Q

  280. , i( d2 i2 l! r$ v4 n+ r. d
  281. rPush
    . W+ V3 J# U0 t. O
  282. $redis->rPush(key, value);
    ) |, Q0 B7 \# u
  283. 在名称为key的list右边(尾)添加一个值为value的 元素# v1 g& c( n9 U( m' J! o

  284. ; y0 i1 P" U3 i2 q' R; Z) F! ?
  285. lPushx/rPushx5 v  b& P( ~" g$ i
  286. $redis->lPushx(key, value);$ p. t- U0 X  ^& c* t
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    # z$ `& \# c, V+ a- h/ F0 Y

  288. 0 R1 E& A+ r3 p3 ?9 F7 Q1 `, O. i" Q
  289. lPop/rPop) ?% S5 R" }# x+ E/ k
  290. $redis->lPop('key');4 x% P+ g( K5 {$ b% X8 I
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素* ?  j, [: t. L' t
  292. 9 G# N# ]( Q7 O) Z: c! N
  293. blPop/brPop
    ' K( i( Q1 S* ~1 q& m4 U- A% c
  294. $redis->blPop('key1', 'key2', 10);7 n5 N9 Y- _/ U: |, ^' ~: p
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作& t& {7 V+ Q$ \# }6 Q2 h
  296. ) \9 X+ k/ n; D$ A4 h
  297. lSize
    2 d# H* g! z% |; |
  298. $redis->lSize('key');4 W* [  ?0 `8 {: K9 V
  299. 返回名称为key的list有多少个元素% V& Z/ I$ o6 a3 V/ D' [% X2 [" R

  300. $ C0 `0 Y" ~* Z- {
  301. lIndex, lGet
    : C" s) G; g1 E7 z$ B# a: ?4 f
  302. $redis->lGet('key', 0);
    5 }+ j& d! K4 q( R# v
  303. 返回名称为key的list中index位置的元素
    9 H1 e* i0 m" f: h4 t
  304. % V8 h  q  i* A( d
  305. lSet
    2 e. |9 l0 y# ?' E
  306. $redis->lSet('key', 0, 'X');
    - C9 ?4 a. C( L4 S8 k# V6 h; N
  307. 给名称为key的list中index位置的元素赋值为value
    9 F8 p. p( g: `6 M

  308. : S% ]9 n: W% X* F( P
  309. lRange, lGetRange
      Z. L4 M+ }8 s3 o
  310. $redis->lRange('key1', 0, -1);% R! A5 l) r- C
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    3 O% Z" A  h% A
  312. 7 A! {: M% Y5 A6 o) K, |1 H% L+ c, J
  313. lTrim, listTrim
    3 u; a/ j  j6 E7 \: c- c: I
  314. $redis->lTrim('key', start, end);
    9 @% K- b! M" z
  315. 截取名称为key的list,保留start至end之间的元素
    8 Q) i4 \9 {5 n! ^2 ?8 E# T

  316. . y( }/ ]/ k3 V3 j5 Z) ]
  317. lRem, lRemove
    2 s% S$ x# p- ^/ _1 Z) D3 B
  318. $redis->lRem('key', 'A', 2);
    9 n( Y7 Z# ]! Y( h0 ^) v, V+ X% _
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    - `3 L% ~' o4 N7 I0 R- W2 Y7 ^

  320. 6 I, c% _$ h5 l0 J) X1 f
  321. lInsert
    # c3 C" O) C$ m) |- L$ |$ @3 o
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1# o, Z. W( x: R; 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');
    ) g8 j( M# w( v. O+ c" f$ l  Q
  324. $redis->lRange('key1', 0, -1);
    ! |. S0 s9 `7 `1 P; W2 }
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');* V4 k- o& a/ R* P4 [
  326. $redis->lRange('key1', 0, -1);
    , h: o6 D+ Q$ I2 S
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    9 ~% p, y- ?3 E7 f( s4 f2 G6 V- P4 X

  328. # K6 T2 ^  m! Z+ B4 Q
  329. rpoplpush! j& l6 q* C3 r0 x1 F1 V
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    % E" L4 K' w, R+ ?3 I. k. D! @
  331. $redis->delete('x', 'y');
    $ v- F1 O. F' y! d- z  w
  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'));0 l1 B$ }5 w$ h5 S
  333. var_dump($redis->lRange('x', 0, -1));
    : Y% @% r7 c4 \" |
  334. var_dump($redis->lRange('y', 0, -1));
    + M, |% R6 \. d. o$ Y

  335. * m: r$ l  J# v  x  A% O2 N
  336. string(3) "abc"   ?! }! X- [+ B& w) z5 ^3 Z, M- d
  337. array(1) { [0]=> string(3) "def" }
    1 ~& ?1 K9 P9 @
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    2 [* ~2 C. {6 G7 b1 R- a% ~( E5 P& Z

  339. 9 K* `1 B  [" P( C/ Y
  340. SET操作相关
    + f, V3 j; ~( L; A/ d- M
  341. sAdd4 h" Z' W1 s& O
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false1 ^/ v5 T3 z+ a
  343. $redis->sAdd(key , value);- W, v5 i4 r) F
  344. 6 p% k/ a/ i7 N
  345. sRem, sRemove/ J4 _6 W# z" z1 w' z- s% G- G& |+ h
  346. 删除名称为key的set中的元素value5 B! Q# P; H8 C0 U& F: h, X
  347. $redis->sAdd('key1' , 'set1');8 E  `8 L$ s) \% v6 J6 U
  348. $redis->sAdd('key1' , 'set2');3 T0 b4 I4 D1 C$ a# k! r/ r" G* ?
  349. $redis->sAdd('key1' , 'set3');
    % D( G! y; m; M
  350. $redis->sRem('key1', 'set2');
    ( w9 R- B- \+ i8 b& H# R

  351. 9 S, \4 T0 f4 w/ {# Q# h
  352. sMove* m3 t: L; U1 e# w' S
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合6 A/ o/ X) ~5 V+ s; t9 i
  354. $redis->sMove(seckey, dstkey, value);" I3 z; b- k( c' h8 K' Z( q

  355. " E& X8 Y3 |0 u2 m* F
  356. sIsMember, sContains0 P, i3 `/ b) M( d& q: p& @) Y7 Q
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false0 x0 t( n4 [" v8 s( c. b1 j9 P( }
  358. $redis->sIsMember(key, value);
    & a2 n4 T& V  F% \# e; E* p6 |; u7 W
  359. " J  |* l* c) R( r* M& k/ _4 T
  360. sCard, sSize% ~5 l- o+ a) g# [1 F
  361. 返回名称为key的set的元素个数9 d' c/ i" R+ w7 d. [

  362. 8 s% I$ r$ N( C" k
  363. sPop
    7 N' ?# L/ R& L: N% \
  364. 随机返回并删除名称为key的set中一个元素( r. F8 i7 L6 o) N4 }5 t5 a

  365. , g2 m1 t" R3 Z
  366. sRandMember1 `2 Z4 ?, c. W5 }+ v: A
  367. 随机返回名称为key的set中一个元素,不删除$ z, w" ?. ^! o+ R1 r4 J
  368. " Q( L$ X  K0 T8 q/ {
  369. sInter, |+ B1 q7 h7 E/ m9 Y" K2 w4 B
  370. 求交集
    9 i' m; D" M4 b4 a9 @" q

  371. 1 G. J5 m* I; }+ B5 f
  372. sInterStore
    6 I9 A) D3 L* q8 S- Y9 B
  373. 求交集并将交集保存到output的集合
    / D  q2 O2 o1 j- V9 p! B
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    + T! y" {, R* O
  375. 0 `* z6 O/ b: M. y3 _
  376. sUnion9 R* U$ R* n' x- q
  377. 求并集* h8 y: }9 m9 t% W* y5 U
  378. $redis->sUnion('s0', 's1', 's2');; H- @- g: {: g3 `
  379. s0,s1,s2 同时求并集6 \4 h) {8 n' _) o  b  P
  380. ! @6 S3 C  m" |: c. H
  381. sUnionStore
    + r1 C. R" ~: M( ]# k/ I: \
  382. 求并集并将并集保存到output的集合
    7 T9 T- _- E, g) {
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');: y1 [/ J: l& H9 S

  384. 5 j+ N/ [; W* d
  385. sDiff
    + K# T+ P7 a6 P" w( y# V# _
  386. 求差集1 o  n9 }- E) E0 d8 w1 y+ [7 B- ^* j6 `
  387. * X8 Z2 f: w# F0 I
  388. sDiffStore
    7 W& Q+ n! p" O/ R/ H% j, n
  389. 求差集并将差集保存到output的集合( T3 l7 Y& D2 x( p
  390. 1 R8 Z' T7 u( O
  391. sMembers, sGetMembers
    $ g( f: k6 f' A% k6 M! c
  392. 返回名称为key的set的所有元素
    " c& x; N/ _. X3 c# R
  393. ( N6 B7 p( t, W$ s! b& m3 L
  394. sort4 A/ S0 Q" g6 z- d+ q6 W
  395. 排序,分页等9 V, @; D. x( @* ?8 P! P
  396. 参数# R# U) d0 n; |# W  L( X
  397. 'by' => 'some_pattern_*',- |( m' [& X  d! I! a
  398. 'limit' => array(0, 1),
    " \& S  g1 U6 n3 [! p
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    , `+ i1 ?% @+ c4 G
  400. 'sort' => 'asc' or 'desc',
    - ?! ?7 h9 I+ J; B
  401. 'alpha' => TRUE,
    , o0 c. m6 U+ B: N9 \% o
  402. 'store' => 'external-key'
    , u# M; B9 K3 K( l4 F
  403. 例子3 {6 ^1 `2 b# E7 X, w$ N7 n8 h; o
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    0 g) G' ^) }# [6 }7 a
  405. var_dump($redis->sort('s')); // 1,2,3,4,5* B" j9 ]; G2 y3 R
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1  I5 b; D8 j6 a: l9 \3 Z( {
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    1 A+ \; @  f9 s$ y5 A( `
  408. $ c6 U8 W  l$ |) k! T9 O4 V
  409. string命令
    ; c+ A  B2 V% e, ?2 J9 D3 E
  410. getSet0 s, d, ?1 }! T
  411. 返回原来key中的值,并将value写入key
    + P, ?+ m0 Y* L, J. q
  412. $redis->set('x', '42');) G9 S$ a- z3 n
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'( o  `+ q# F  U! \! X# M# X' o
  414. $newValue = $redis->get('x')' // return 'lol'- P1 T: Q# q* {1 T/ C7 D

  415. * O0 u! V- G" U7 I. N* U
  416. append
    2 c2 E# ~. o. H: `  n) J' v& o) E5 l+ l
  417. string,名称为key的string的值在后面加上value
    4 w1 E+ `: U: P: @+ `0 P
  418. $redis->set('key', 'value1');
    ; N; q4 i' w7 F2 L; y
  419. $redis->append('key', 'value2');
    0 L* p; f$ ~7 O% D; D6 y* ^' d8 w
  420. $redis->get('key');; [6 P0 B+ d1 j1 @: m2 c
  421. : C, Y  s- o& V$ g4 P
  422. getRange (方法不存在)
    " e. e5 V/ q% G" }: Q! c
  423. 返回名称为key的string中start至end之间的字符& P5 m7 I1 h7 z1 ]
  424. $redis->set('key', 'string value');% F) u' a" g7 |! x3 Y! U
  425. $redis->getRange('key', 0, 5);8 A5 B; g; l( B
  426. $redis->getRange('key', -5, -1);
    # _% A9 z) u6 R
  427. 5 @( r/ ^9 a) D& F
  428. setRange (方法不存在)' X; }' g' \% h) E9 D( I6 }1 e5 q# E
  429. 改变key的string中start至end之间的字符为value) X7 I! X5 o6 @/ n0 e7 S
  430. $redis->set('key', 'Hello world');9 h; p( j# H2 n5 O8 V4 A" }9 K
  431. $redis->setRange('key', 6, "redis");$ W4 [$ S4 W; ~: ~' h: s1 c* s2 ?
  432. $redis->get('key');+ E# e& {6 d" _, {0 m

  433.   w1 V$ r9 d) X: t7 N" a4 j
  434. strlen
    7 Z) o, z, k" o2 p# Q0 o
  435. 得到key的string的长度  z1 t6 P0 v/ B# j- c# W9 ~
  436. $redis->strlen('key');
    ' ?. C5 q  ^7 s% ]6 R8 y

  437. 2 n9 D: n" S: Y- E& U, m
  438. getBit/setBit+ ]& h! u# k1 e3 t% u9 q% f$ x) [' A
  439. 返回2进制信息# [+ g: y) g( D
  440. * C" q  g# O9 g
  441. zset(sorted set)操作相关: F' V6 A# P* R; S) ?* `8 W
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。% ]; ?0 S+ C& |5 g0 k
  443. $redis->zAdd('key', 1, 'val1');
    5 |) c7 q8 K  Q8 P
  444. $redis->zAdd('key', 0, 'val0');8 W9 c& L6 A8 @& ]: D8 E
  445. $redis->zAdd('key', 5, 'val5');
    - ^: a4 F& w. b- X! }; G( W; I
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
      ~7 [$ U3 ?! i% f. E" B, A$ _* s

  447. 9 V' Y  o/ @2 L* A3 ^
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    5 j3 T3 r' S* `9 {  h, [) e
  449. $redis->zAdd('key1', 0, 'val0');
    4 D0 _) q( X) y) _) a
  450. $redis->zAdd('key1', 2, 'val2');# i' L0 `5 a& O# U# q" ?# b- Z8 Z
  451. $redis->zAdd('key1', 10, 'val10');2 N0 u+ N6 @6 p; g
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);$ V, ~3 r) ^5 I
  453. * ]" L3 Y3 y' z2 o3 U, X( r
  454. zDelete, zRem2 @* I' K. w( U- E
  455. zRem(key, member) :删除名称为key的zset中的元素member
    ; `5 e) y/ y6 d
  456. $redis->zAdd('key', 0, 'val0');+ [5 ]& h+ N0 S6 F; h
  457. $redis->zAdd('key', 2, 'val2');
    : j, a0 d. K) Q/ O# A) ?$ l. g" T
  458. $redis->zAdd('key', 10, 'val10');8 I$ K9 e$ N. h/ C5 z) E
  459. $redis->zDelete('key', 'val2');
    0 m$ {2 z7 I* K3 L, R- D
  460. $redis->zRange('key', 0, -1); 3 |8 d: e* W3 `6 O7 G
  461. 6 z6 f3 u  f+ a8 p9 ^! H9 L, i8 d5 \
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出, G7 J% p( s- u, u1 r* T
  463. $redis->zAdd('key', 0, 'val0');
    5 Y' H. e& c' Q4 ]' B
  464. $redis->zAdd('key', 2, 'val2');
    , O. w# @0 M' j
  465. $redis->zAdd('key', 10, 'val10');
    % V4 ]0 i- s: I* E
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);1 u2 O, V7 ]3 X' l
  467. ; W$ F* b1 x* P. m3 @$ C6 s3 a
  468. zRangeByScore, zRevRangeByScore0 U0 F9 A1 i. L% _1 y% q+ F
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    , E! i2 N: U' A) S2 n: T) n/ v
  470. 返回名称为key的zset中score >= star且score <= end的所有元素$ c" z, @5 b- @! H5 j
  471. 3 C- c* g9 p1 y8 h% l: X
  472. zCount
    + k% U) i4 r( C) g* D9 v2 H! U
  473. $redis->zCount(key, star, end);" |- B% K5 B( ~( H0 b& ~% m
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    9 k; Q7 `1 ?5 q' r( |7 {
  475. , }( Z4 L4 q5 {$ Y4 f
  476. zRemRangeByScore, zDeleteRangeByScore
    ' B( U8 F$ r+ i. f9 I2 Y  S/ I6 |! z
  477. $redis->zRemRangeByScore('key', star, end);: v1 @" A7 L$ H2 _' R: X
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    ; {- m5 j/ Z8 d! ]
  479. 2 r: J9 G% z$ [& _6 }( q) h1 p
  480. zSize, zCard0 f5 @6 X8 o$ N# y$ i
  481. 返回名称为key的zset的所有元素的个数- i& m' L6 M; y3 J: {( l/ c! P
  482. - M# s& y2 X7 a
  483. zScore9 K8 w8 f7 _  d5 A# S0 ?8 o
  484. $redis->zScore(key, val2);
    , ~+ I7 p/ ?+ }! L5 w( i
  485. 返回名称为key的zset中元素val2的score$ C, C8 B# R  `7 ^, V+ ]! U  A  ]" h

  486. 4 v% N1 h2 N. ?  j+ q2 B. ?
  487. zRank, zRevRank
    : P$ e% P! g+ ^. J% i2 O  g, _
  488. $redis->zRevRank(key, val);' \: R( U# ~& \7 H$ N/ }
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    ! m9 W  A* c3 u6 i- M
  490. . m: G& G' v6 r$ y5 \
  491. zIncrBy
    : \  f  P- C$ m/ c$ G' _
  492. $redis->zIncrBy('key', increment, 'member');
    $ z3 S! G5 `; l9 S7 K: i  Y/ Z: X
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    ; Y( ?5 c. W9 v$ ]9 d9 N
  494. 5 m# d# V9 E( L( e/ |5 [& S
  495. zUnion/zInter8 ^7 j. G% l+ D
  496. 参数" G: Q+ l% b2 C6 w0 H7 n" Z
  497. keyOutput
    * [/ o" t$ _8 I" i& ~
  498. arrayZSetKeys, B7 [0 k, J6 P) U5 U+ h
  499. arrayWeights. l2 H. R- }  }7 ^* }4 Y. `
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    % F, L5 z# B0 {6 ~% V
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。+ g4 U9 v1 w6 U( k) g
复制代码

( y! O1 t# C- ]7 S
; y4 _. Y& E3 z4 B/ X3 p6 [
9 j5 j1 m) k9 B# ^4 c0 l
/ O/ Y+ O. A$ R$ Y, d: n0 R# I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); " m* x; G- `5 Y4 ]5 p! O
  2. //连接redis服务器
    3 w- F" y: o( H: w
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 17:34 , Processed in 0.076430 second(s), 18 queries .

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