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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    8 Q% g* C7 f& o" e+ O
  2. $redis = new Redis();  / Z, R' d% ]2 p, B0 Q
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    ; m5 C! K2 I3 y% c' O+ W, I0 b
  4. $redis->auth('mypassword');//my redis password . o& o- Y; v( |# U( r
  5. $redis ->set( "test" , "Hello World");  
    ) K9 x) i' e, H5 v% |) V
  6. echo $redis ->get( "test");% {1 F6 V/ v9 d# C
复制代码
php操作redis函数封装
  1. /**1 u0 m7 A9 C$ o5 V3 \! d
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数2 U7 ?3 g; c2 T2 q
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    8 A3 s5 Z( ]. F8 A6 i" H* |* C6 y. d& v
  4. */) M! |: ]! e+ V3 i, Z
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    1 f( B# B& R5 p1 Q2 U
  6.     if(!$key||!$value) return false;. _6 ~/ w. v. T$ h" O3 X
  7.     $host = $host?$host:getenv('REDIS_HOST');: }: d) ^5 k/ X) |$ r9 [5 h0 P1 E
  8.     $port = $port?$port:getenv('REDIS_PORT');$ I( ~8 |% P6 g( ]. [
  9.     $redis = new Redis();
    2 z2 Y+ f  @; ~) O3 i
  10.     $redis->connect($host, $port);, U. j$ O- x. F( x3 F# i) Z( C
  11.     $value = is_array($value)?json_encode($value):$value;9 \5 H; U6 i8 I% ^: q: }9 ]/ L! \
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    : f5 ]2 w. \9 Q% q, C' ?1 y
  13. }% h% Q  F0 X1 o& ?) S
  14. /**
    - T; Q3 ?8 p7 D+ [1 d
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi* y1 `5 a+ m$ }$ f' D& F7 c6 E9 D( {
  16. */
      Y5 J7 J( |1 A* \! \
  17. function RedisGet($key,$host='',$port=''){
    ( t- {5 L1 h0 W( |' I; q' ~# H
  18.     $redis = new Redis();1 Q% E6 l) N* o7 I7 H: a
  19.     $host = $host?$host:getenv('REDIS_HOST');
    ' U) ^; M: }3 o/ {% k4 a
  20.     $port = $port?$port:getenv('REDIS_PORT');
    " @/ h; F* s5 V
  21.     $redis->connect($host, $port);& x; L4 M* b6 @* P1 E" {
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);& c/ I& s6 U% Q
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);) D) l2 X2 O. u4 g7 y2 r
  24. }
    / f3 ^) u4 J- }# K( K
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
& G# }5 _6 U0 T: y6 J
  1. setex 带生存时间的写入值; k' A- I4 U# X6 O# C
  2. $redis->setex('key', 3600, 'value'); 0 S, Y& Y; g7 |% ?1 x
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1! k! {: X7 G: e. p4 C* g/ ]
  4. $redis->setnx('key', 'value');9 D+ V# Y. {7 l5 Z* [
  5. 返回已经删除key
    3 x! u4 {9 ^" }
  6. $redis->delete('key1'); 成功返回1失败返回0
    # m- q, w% _- Z" w9 ?5 e
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回06 H4 U% l  L" \7 P% \
  8. 查询生存时间
    9 T+ l+ m; ]& M) ^# W% g! Z, V
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)  C' G: [; q3 C7 P' M) A
  10. 同时给多个key赋值,同时设置key0和key1: O3 B% A" A  A6 j
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    . `4 o0 j6 X* P+ P6 I2 k
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    # ^: _5 Z. t6 R; j! d' H
  13. $redis->incr('key1');
    6 q) u3 M9 g+ \( u( U, I& S' I$ _
  14. $redis->incrBy('key1', 10);
    ! ?" e& o2 i: V% C6 o8 E+ m+ M
  15. 减法跟加法一样! P- }: S7 E. m  _8 }" r9 y
  16. $redis->decr("key1"); 减少1! g: z- r$ G+ @  x" k% A" ~
  17. $redis->decrBy("key1",5) 减少5
    6 z# ?; k; |9 a* a! X
  18. 8 O) i9 n) u; m2 l) \
  19. list相关操作,连表操作! K. M0 R) K! A3 j7 G( o" T
  20. lPush. ?4 |: K2 q& K) C7 M& |
  21. $redis->lPush("list", "888");
    8 m; T7 j0 S0 ^$ T7 D; W2 T
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数- I2 ~+ I* `- p' k
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式& ^9 m: K& R3 `
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素% v5 g0 f5 y" c3 n# k( w
  25. lPushx/rPushx
    ( Z, ~+ A# N% ?3 t* q  v. ^9 D4 D# H
  26. $redis->lPushx(key, value);/ Q0 n1 E1 o' I
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加! N  m: q, g( ^) l6 I
  28. - j2 f! ~0 o% J- T6 ?
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key6 V$ l& x5 ~4 Q/ ]! y+ ]
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    / l0 ?4 W  U1 i& X2 n
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    # n) c5 ?" j/ V* F; n
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序3 @, e8 t: ?7 _3 [3 ?" i
  33. sadd s1 zhangsan4 P; C9 Z$ _1 o* `! v
  34. sadd s1 lisi
    7 P  \+ @1 V# M$ v: u# ?$ \: A& g6 ^
  35. sadd s1 wangwu
    ; ?9 w5 H: T/ E) q: J
  36. sadd t1 yangxingyi
    6 U, @1 a; t- E# U
  37. sadd t1 lilei8 k9 k& F: H$ C8 {1 n+ \- |5 G1 z! u
  38. sadd t1 zhangsan2 ?* J+ A/ h; ?, H& M, t
  39. smembers s1 s1的所有集合内容
    ; a2 \( g- y$ Z. s
  40. sdiff s1 t1 s1有的,t1没有的,差集
    " M4 s! w5 z% U$ [) P$ t
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    . z% o* G0 D* R- o
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的, A# f8 y3 A& W& f  n% F
  43. spop抽奖场景,返回集合里面随机的数' i: g, s9 m' o9 b$ w  V
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了* c; y( ?. S5 ^! x* C- ?4 u
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
      L* G0 y/ ]6 a3 h# W
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的; K- Q, K: f6 u6 W7 ~9 G
  47. 随机返回集合里面的一个元素,但不删除,重复中奖* l0 y" k/ x$ l- {! y( H! P
  48. $i = $redis->srandmember('s1');echo $i;( q5 }6 g2 a! U1 I* w) U7 A! D' s
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false! |& p6 U* ^( @& g0 O; N  D; a) U
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false) r8 M! z. W' G

  51. 2 `1 I0 K1 x+ S6 e1 X
  52. zadd key 2 value 有序集合- I# T# r4 Y3 L& p8 ]' c! _
  53. zadd y1 1 zhangsan;6 N4 A7 ?3 s  N9 P& D+ o
  54. zadd y1 3 lisi;+ A7 G& P/ F8 q! ]" c. \# g3 }% h" |3 u6 l
  55. zadd y1 2 wangwu;1 P1 [5 V- B( ^* z; V. F; S
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    7 A% L0 b3 x% W% V5 B4 ^
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);& h0 i6 k8 w/ q; b) P$ i8 b- h3 z
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键0 s: S. I5 Z( Y. I: x: D
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先6 n# w/ M9 y( G4 q4 _
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的5 Q6 O) ^' Q9 O
  61. 无序就scard,有序就zcard,有z没有s" O' L7 G0 x* F' u; h. ?
  62. sInterStore  V( O' X4 y) ?" X) f- ^/ I2 r
  63. 求交集并将交集保存到output的集合
    2 z2 t2 H( a, L0 b7 d, S, |2 M
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ! g1 W- ~' F) \7 ?7 g

  65. " K' C  K. A9 N+ R
  66. Hash操作0 \6 i1 \& {0 T) X; u7 i% A) Z
  67. hSet. c% I9 D7 [2 j, S: h
  68. $redis->hSet('h', 'key1', 'hello');
    6 \6 m! u9 n4 H; e$ G  @. m- Q, O
  69. 向名称为h的hash中添加元素key1—>hello5 N" e7 ~. d4 k* w0 M; d- ]
  70. 9 r6 K& ^' Z& q! n4 z- \" ?1 R+ K( [
  71. hGet
      Y! }9 v! I1 ^" |" g6 h8 H, G
  72. $redis->hGet('h', 'key1');8 a, V4 ~' L- f
  73. 返回名称为h的hash中key1对应的value(hello)) p2 U5 ^2 P0 e# z+ z! k
  74. ; i+ A) D* j. Q* v! y  R5 i/ d& f
  75. hLen
    * f+ u' u: P; T; ?  y0 S+ Z" E
  76. $redis->hLen('h');
    4 s$ ~7 P1 G( o
  77. 返回名称为h的hash中元素个数( V/ c1 e& W0 a' ~# Z9 B, L5 [& p
  78. " K! I6 ~1 N! {5 l( }0 }! y
  79. hDel1 O7 D% U' v6 u
  80. $redis->hDel('h', 'key1');2 T: \5 \1 N& \# `
  81. 删除名称为h的hash中键为key1的域% o* r2 X' n- j5 _
  82. 5 Q9 Y9 O* u% O! |0 A
  83. hKeys
    9 K4 W- C! _) a: \5 o
  84. $redis->hKeys('h');- R3 I3 X$ d1 J
  85. 返回名称为key的hash中所有键; b2 W' y! G; @. x) P( G' ~

  86. 9 V8 L' `! R1 G; @5 ^2 a" D
  87. hVals: k2 z# Q  |6 s2 r
  88. $redis->hVals('h')  q1 T' G$ |+ |- d! o, D" c' w
  89. 返回名称为h的hash中所有键对应的value3 x2 m3 S+ Q8 p6 J: B2 }

  90. - b9 O, s$ Z0 n: ~( ]2 y
  91. hGetAll2 c. X' R& y/ M
  92. $redis->hGetAll('h');1 Y; a* g* j- R3 [" M/ q0 s) M- K
  93. 返回名称为h的hash中所有的键(field)及其对应的value2 b6 V3 I* Y* R
  94. & S& W& C  O" \% _' }6 q3 I6 Y
  95. hExists
    ) m: o8 W5 |0 b8 T9 O4 A  \# I, }# ~
  96. $redis->hExists('h', 'a');
    9 A5 P/ E4 [- L
  97. 名称为h的hash中是否存在键名字为a的域
    3 D/ S9 F9 M5 s
  98. + L, O6 [/ E0 Y7 J& `$ S& T
  99. hIncrBy
    0 B! D& G; M6 n" C8 ]4 }3 n) o
  100. $redis->hIncrBy('h', 'x', 2);* k* p0 E9 ?. s7 J& u
  101. 将名称为h的hash中x的value增加2, y% L/ y4 W7 ^
  102. 8 x5 _. `" s, ]9 R" `4 s7 R2 Z, G
  103. hMset" Y& M' V1 ~) e' H) m9 Z# ~9 e/ |
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ; G0 B9 i. p* }7 A  b& t5 J4 s
  105. 向名称为key的hash中批量添加元素# T" q+ Y( N/ L1 ~- p
  106. 2 X) i9 _* J6 m# S! }( ^% j0 N
  107. hMGet! A. M) r" X% O; T- G/ T; N
  108. $redis->hmGet('h', array('field1', 'field2'));* p) k0 Q. l/ M, r" V% y
  109. 返回名称为h的hash中field1,field2对应的value/ v, F9 X1 [# h. r
  110. * D$ Y6 r6 P+ I5 k7 }. B
  111. redis 操作相关
    # f( G" N( e/ i) g
  112. flushDB* C  A* d5 f& o/ P0 r
  113. 清空当前数据库# ?: U  Y$ w* l' G& B$ I

  114. * K+ }  [! v/ \
  115. flushAll
    2 B) k7 @( g' @! K% k/ W* u2 C$ F( \
  116. 清空所有数据库
    $ b2 B8 ?7 T7 @& }* D5 I; g4 F& B, b8 W
  117. 9 D' O3 X) Z9 ?
  118. randomKey" }. I2 W; F* l  S- r
  119. 随机返回key空间的一个key
    - [2 u+ Z' y( O) b# a9 T, z# x. P7 t
  120. $key = $redis->randomKey();
    ; b8 x5 `" g' e. l# `1 ^
  121. 1 Q' z8 M+ E0 [6 I7 S
  122. select
    ) H) U$ g4 f9 U5 r' z
  123. 选择一个数据库8 d3 ^( N$ o' W7 b# Z: ~
  124. move
    : J5 i' {. ?  ^  V
  125. 转移一个key到另外一个数据库+ Q1 R8 y* |; h& W8 W3 R0 j9 e
  126. $redis->select(0); // switch to DB 0* F; h7 _6 D" R2 m3 U, i' `
  127. $redis->set('x', '42'); // write 42 to x' [2 M) [+ V* Z: n5 n! ]$ B
  128. $redis->move('x', 1); // move to DB 1
    : ~3 S6 Z+ G4 w% _) V# u
  129. $redis->select(1); // switch to DB 1* d: U; z9 J# c( P9 J% Y. L$ U
  130. $redis->get('x'); // will return 42
    6 k8 ~! v! p: i! m$ M$ c* i+ a

  131. 8 Y( M: k4 m# X+ O$ b+ y6 j
  132. rename, renameKey( c' {  _/ d  x" m
  133. 给key重命名% V1 @1 u# z1 x) }% |- p
  134. $redis->set('x', '42');
    " L% K3 d8 g. b+ q+ H  j& u
  135. $redis->rename('x', 'y');0 m9 w5 o" n1 q( Y
  136. $redis->get('y'); // → 42  H- |. A8 y# d# n/ ?! a" i0 ?
  137. $redis->get('x'); // → `FALSE`5 p6 w8 R% d  s4 ?, `+ Y' g
  138. 1 e$ p8 j, z. Q+ T! e4 i
  139. renameNx
    * {( i. R, V9 {9 ^
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    - P1 g+ R- S+ n
  141. ) K9 L. m4 w) v1 N
  142. setTimeout, expire2 q; ?& [1 o: T% p7 c: A
  143. 设定一个key的活动时间(s)
    2 u4 V, @/ @* P2 n
  144. $redis->setTimeout('x', 3);
    7 a+ v+ t7 }; Z) W) u9 M
  145. % F2 P8 t" r5 K0 E
  146. expireAt" v- ]2 w! E/ D7 ]
  147. key存活到一个unix时间戳时间
    4 i) c' ]+ Z. ~9 ~. ?( ~
  148. $redis->expireAt('x', time() + 3);8 P5 F% C0 }& ~2 H/ g# g3 _. B
  149. 3 ]3 a& {2 j+ E. ~8 G
  150. keys, getKeys
    6 e6 V- W7 X5 F( ?0 C
  151. 返回满足给定pattern的所有key
    , J2 z) K+ }  h3 D' |. A, L6 f, L
  152. $keyWithUserPrefix = $redis->keys('user*');; U1 {, R3 E. F6 h/ ~: f2 h" u+ `
  153. 7 s- C) k+ L( W! J- _7 C" P
  154. dbSize, k/ u2 t% F& I% I  v
  155. 查看现在数据库有多少key+ Z' a/ U  f5 K. e% ^
  156. $count = $redis->dbSize();! ], Z# h2 h( D% A

  157. . e0 k; u7 x) X
  158. auth
    2 U9 @* W9 z0 ]
  159. 密码认证" j; D4 ]  u, E. {, p' g: g( n  x" s; B
  160. $redis->auth('foobared');. U$ `  v( Q/ }0 g6 W+ o5 U
  161. ! ?: W( P6 H' h9 C
  162. bgrewriteaof
    ! X; w+ l" k+ S" |
  163. 使用aof来进行数据库持久化
    9 B! l8 }) F# \1 U" M
  164. $redis->bgrewriteaof();/ H6 G/ q0 w$ E2 O* E
  165. 4 E7 G0 `9 Q- o# k8 ]) A/ @
  166. slaveof
      {2 ^) |1 f" h3 C- d; J" R0 @) `
  167. 选择从服务器! q* Z9 u* p0 M
  168. $redis->slaveof('10.0.1.7', 6379);$ J; u7 h  ~. S! X
  169. 2 w4 U" X0 R# z) U& G/ \8 b
  170. save5 h+ f; f$ |- ?# u/ }+ H: A8 z0 x
  171. 将数据同步保存到磁盘
    9 F  `8 v/ Z  }8 R3 N! E0 M

  172. * ~$ @7 U2 z' a; m
  173. bgsave
    ( K, d+ h1 B& \+ a, E# K- D
  174. 将数据异步保存到磁盘
    8 T! e, H8 A5 i( K

  175. & F3 M: S4 [7 j( n
  176. lastSave
    + H0 H9 [  r( k- h7 o3 z7 _
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    ! d# G2 V# g' i6 T# F+ }( ]6 h

  178. ( a" u( S* i* X0 d7 j0 x6 v
  179. info
    7 M- A4 k* p# }8 a; L( M$ a
  180. 返回redis的版本信息等详情
    ( U, _8 D% D, {' L1 V6 a4 N: g5 N

  181. ' r4 T  `- S6 s( T7 q
  182. Redis::__construct构造函数: h: t+ F  O" |1 g
  183. $redis = new Redis();$ |" Y; n+ Z# V2 E0 b: i/ F# b- z
  184. # p$ p/ M/ N. Q6 w- p, V$ `
  185. connect, open 链接redis服务
    , P- t; q% q! L/ V4 u  q! e
  186. 参数
    ) M0 B7 I3 P8 Y, j/ c- ~) T4 x9 q% W
  187. host: string,服务地址
    ) X* g' v0 M( }- i2 n
  188. port: int,端口号% a/ f5 z3 _9 I; X5 S5 _, }9 m0 b
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    9 @: [: p* K1 O, h
  190. 注: 在redis.conf中也有时间,默认为300
    * e( w5 j$ \1 A
  191. % L! i* q" H. ~
  192. pconnect, popen 不会主动关闭的链接. N  |% V& H4 g* I
  193. 参考上面, \8 Z# l5 K" Z9 V: N* }

  194. - z! A+ o* l  V$ K
  195. setOption 设置redis模式9 Z7 B9 w3 `7 x) o9 k4 Y
  196. / x4 @: p/ o( s  q/ l
  197. getOption 查看redis设置的模式& I/ V. K- r& \2 }5 o$ w
  198. ' h) S( j  V- t
  199. ping 查看连接状态
    2 y; W$ k8 v0 ]/ y. U  T+ `
  200. - a8 r8 e% U# k' k* Y- J
  201. get 得到某个key的值(string值)
    3 {% O& A$ c& n3 X$ r5 H
  202. 如果该key不存在,return false
    5 F2 u% R$ W# t6 {2 Q+ |% ~: d' P

  203. 6 m6 j5 C1 ?" ]$ n2 e% H+ t0 Y/ ~
  204. set 写入key 和 value(string值)
    8 x6 r$ }3 ]- N
  205. 如果写入成功,return ture
    2 K. r2 z& L+ k. b
  206. ( {. `8 K9 `8 U: K3 h$ [
  207. setex 带生存时间的写入值
    ; l" l* R# J' z, @( N* g0 n
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.$ C& W! _  Z5 G

  209. 6 I& Z/ _3 y; ?( Y( X
  210. setnx 判断是否重复的,写入值
    2 _. f# t8 B& ^$ g3 F# D/ B! E
  211. $redis->setnx('key', 'value');
    ; m& D6 r$ J" F# `0 G$ K6 q' o& o
  212. $redis->setnx('key', 'value');
    ) \' ~& m! \- T) v1 H! j3 v
  213. & L) a4 x! ]: ~3 b$ @) P
  214. delete  删除指定key的值+ [$ p5 v4 h" \4 _( ^6 A; S' t
  215. 返回已经删除key的个数(长整数)
    6 S* ~: X3 @7 a2 {
  216. $redis->delete('key1', 'key2');! c+ A' i- V9 j8 [3 @. @
  217. $redis->delete(array('key3', 'key4', 'key5'));
    / \+ t$ s/ u' t

  218. + D* r* u. m- N2 l
  219. ttl2 a6 R* `" e) @9 Q: w
  220. 得到一个key的生存时间/ V$ p: n/ w. r- H6 `8 f
  221. ( P! H8 G$ e; D/ X5 `' T5 z
  222. persist
    2 i* J4 c8 h! I
  223. 移除生存时间到期的key
    : N4 x5 `3 z, ?$ u; Y4 l% G. P
  224. 如果key到期 true 如果不到期 false
    + @9 g3 b' ^. O0 b4 P; Q

  225. ( z5 {' P% y  T  |4 o2 u& B/ B  R
  226. mset (redis版本1.1以上才可以用)! r$ K# O8 a* @3 O; r) _# ^4 X
  227. 同时给多个key赋值. I+ v9 H8 `, x8 W
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));4 \% Y& E" T- \* H$ T) H" Q5 m2 e" [" {. D
  229. , i, ~+ J' A- K- {$ S- |6 K
  230. 8 q3 y* r, }2 L
  231. - Z: Z! @/ c5 U" z8 ~. D* b
  232. multi, exec, discard+ Q& O6 S7 {+ q" ^
  233. 进入或者退出事务模式
    & A6 O: n& _& |/ A  i; ?$ l2 O
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    7 m" v& o% o4 \& p' y
  235. Redis::MULTI:将多个操作当成一个事务执行1 T" B0 J' ^  j4 \' d; \
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证, n/ n/ x8 r2 q! ~  C9 \2 E, G
  237. discard:删除一个事务
    " }5 q/ C5 l- P. y' I: L* @
  238. 返回值
    3 C% E$ D3 `! \2 N5 h
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。: [- n: t* c& W5 m
  240. % B  R: r0 k& e1 d
  241. watch, unwatch (代码测试后,不能达到所说的效果). V& f0 D+ P, V0 l3 a2 u0 p# _
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    8 ^" ^6 W" F. S. _: h9 U$ [2 E
  243. unwatch  取消被这个程序监测的所有key0 A5 v: P/ j( v
  244. 参数,一对key的列表
    6 [& S) ]. w% }/ A
  245. $redis->watch('x');' \0 R( q+ O/ d8 O0 J5 o4 \. t$ {
  246. 4 a6 S, Z7 Q3 ?5 a7 c4 }
  247. $ret = $redis->multi() ->incr('x') ->exec();1 P5 ?/ R; ^. k  `$ |+ ?* x

  248. * y* y) ?7 T2 [% {& B" k: {6 O

  249. 5 Q9 ~/ C8 R/ j$ B$ K
  250. subscribe *, B, Y7 X( j. m( o' h- v& ?
  251. 方法回调。注意,该方法可能在未来里发生改变5 Y, h, h$ e  y
  252. * l9 k. W, g8 a2 r( w3 \5 n
  253. publish *
    ) T3 h8 b. s$ j. {! Z) \6 {
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    " ^6 n; N+ s& f
  255. ' \$ u, H2 x2 u. p5 [# I6 _7 Q
  256. exists
    ; D4 b0 T& {1 E; K
  257. 判断key是否存在。存在 true 不在 false
    + j, z' c  @% Q( B9 n, W" C! f8 i

  258. 4 s& C0 ]8 }, I. S5 a- ^
  259. incr, incrBy
    1 E5 q4 N8 j  B5 e# z/ R
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    & r" c- e: ]; L( b8 h5 S5 n6 M
  261. $redis->incr('key1');
    . [3 a4 Z( j, u8 Q9 w) @8 s0 \/ f
  262. $redis->incrBy('key1', 10);
    + \0 ~' c% V# Z

  263. ! T. m6 p. T: \9 t$ S7 ^
  264. decr, decrBy( Q) ]6 _0 S: U2 |4 J  P" ^
  265. 做减法,使用方法同incr: ?& c2 r# Y+ T& }6 a: z( B. ^

  266. . J1 o% @, B; X  B- K0 y- _
  267. getMultiple: _! _5 Q/ `. \4 W! W
  268. 传参! s0 j* ]' n4 w# B/ Y. _
  269. 由key组成的数组" D/ J3 s4 B) Z& _. d1 n4 q9 V
  270. 返回参数- k8 f3 X% \8 {9 J8 H
  271. 如果key存在返回value,不存在返回false
    " @% @8 x, E( ~0 D
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    / N8 Z9 H4 F* }8 ^" N' i% R$ a, b  T
  273. $redis->lRem('key1', 'A', 2);+ e! c) V+ I. ]
  274. $redis->lRange('key1', 0, -1);* e' G8 H8 x7 ^: M0 S. F
  275. : ]6 k( y( R7 T0 |% @# V- Z
  276. list相关操作
    2 b+ W  G1 ]( {1 |
  277. lPush# S9 v$ u: A, w1 h. C
  278. $redis->lPush(key, value);. ?: y" n; r$ V' B6 H
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    ) q* {  [6 a) T/ n5 u% W' T

  280. # Z( A! x8 q+ ^& o! i3 ~
  281. rPush
    6 M0 D! V! Z. R+ P7 Z1 h
  282. $redis->rPush(key, value);
    % Q2 h1 ]2 w1 n0 g- b0 q8 z( T
  283. 在名称为key的list右边(尾)添加一个值为value的 元素+ t: D6 `; ~, }
  284. 2 G& |- s- s" `" l
  285. lPushx/rPushx/ w% o3 z+ O  |" X1 C9 G
  286. $redis->lPushx(key, value);0 u: f5 `3 X8 E( C" i, y4 P2 q
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    $ {. N; I2 W2 t$ X' I5 A! v" Q

  288. / U+ R1 B# ]9 ~* V3 R: y% P
  289. lPop/rPop
    ( I1 D3 |+ O3 y5 [' Z1 M( k
  290. $redis->lPop('key');( R6 J6 L# ?: G* `2 K/ K
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素0 l) P8 E& X5 B' A8 _3 @
  292. / v, f. M: s" d
  293. blPop/brPop
    0 b3 H! x8 R# z  h3 j
  294. $redis->blPop('key1', 'key2', 10);
      ?# n/ F1 n: N" f% U% A
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作: W& \, N# A( y* J3 o' t

  296. ; A5 e$ I2 c! }9 [' [. ^
  297. lSize$ G  v- d) V* X: P- n, N
  298. $redis->lSize('key');0 g: W3 o- t8 L5 ^
  299. 返回名称为key的list有多少个元素
    6 y. F( i& ]' e# @7 R4 T+ f/ b

  300. ( R; K. d% @9 E; l: N6 u
  301. lIndex, lGet
    " M6 X9 W) a: y+ j, P+ W
  302. $redis->lGet('key', 0);  d! Q4 m) e( }5 m! Q7 ]
  303. 返回名称为key的list中index位置的元素
    0 @+ ]: X+ f  M: z0 L/ N
  304. 6 R7 x( R+ c# a: b
  305. lSet
    % N+ j# c. m- ^* J5 Y  E$ x% o
  306. $redis->lSet('key', 0, 'X');% m" g' Y6 |- X& w+ I: P+ k
  307. 给名称为key的list中index位置的元素赋值为value
    , k2 q* _" x! w! T

  308. ; e- C; \) b4 B7 o% j* R( H
  309. lRange, lGetRange# `  y( c' O2 d, }# C& k
  310. $redis->lRange('key1', 0, -1);
    9 F% Y" d$ w$ D1 l: D) D6 U6 D
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)/ H) |% @2 V: G. Y7 ?5 \6 o5 T

  312. * ?$ o5 |9 j6 G
  313. lTrim, listTrim
    9 P5 |+ }8 r+ K
  314. $redis->lTrim('key', start, end);
    ( x6 E7 \+ a* M1 ]
  315. 截取名称为key的list,保留start至end之间的元素3 }2 f  f' ^% P: p3 e0 j
  316. ( [$ W2 p+ f6 _+ K9 j
  317. lRem, lRemove
    + x# d6 j$ Y0 v0 ]+ _% o
  318. $redis->lRem('key', 'A', 2);0 E$ k' F3 k( D5 m
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    3 k- M& x; \" e) X8 Y* n
  320. 6 _# x8 s/ l. y$ G" y
  321. lInsert
    / U$ m8 z6 t7 V3 d
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -10 y8 g5 ?% F, x1 z, F% T/ l8 Y
  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');
    , l5 U' i% Y) P, J- d
  324. $redis->lRange('key1', 0, -1);8 }* _* g) d7 r# q
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    ' G/ t) F$ Q0 H* `6 z$ q; @
  326. $redis->lRange('key1', 0, -1);7 I' R0 H: u: I* J' g
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    & X& |$ B/ g; v! l, o$ j
  328. - T# Y/ T0 y& m$ d% u* T0 R
  329. rpoplpush1 B. H+ d, b, t6 \
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    $ t; y6 e+ f4 P5 O2 M
  331. $redis->delete('x', 'y');- e" e. h# {& J$ t
  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'));3 q7 V4 M1 f1 z$ Q: q. J
  333. var_dump($redis->lRange('x', 0, -1));
    ! ~6 m3 ]0 y  c% Y& j
  334. var_dump($redis->lRange('y', 0, -1)); / b$ O! }1 V! `- m$ k7 i0 N

  335. # [* p- e7 ]: M1 d( k* W9 P
  336. string(3) "abc"
    ) t, Y4 y8 {' F9 L2 V1 {8 |
  337. array(1) { [0]=> string(3) "def" } 1 ^6 r0 f6 I' Q1 Q) u
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }' l7 j: C2 t: k+ S% }) K* N. ^

  339. 2 D" k* ]7 q. O3 T( a" N
  340. SET操作相关
    8 I& n# w/ k( x( D
  341. sAdd
    5 L  g# Q) t. j" x  s0 t8 x
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    , ~& [* q6 `) E8 x! I+ S
  343. $redis->sAdd(key , value);
    6 H/ A; h% F9 e2 y" j! @
  344. + P- k" w0 b0 j" X1 C1 s0 ~
  345. sRem, sRemove8 Z7 ^/ ?& ~* l" b
  346. 删除名称为key的set中的元素value
    8 w% O3 F$ L2 u  ?0 i. f% I
  347. $redis->sAdd('key1' , 'set1');# K* x+ ?& ~; }) B7 ?+ z! E* \
  348. $redis->sAdd('key1' , 'set2');, Z* s/ K5 ]* {/ E
  349. $redis->sAdd('key1' , 'set3');
    8 _2 M  q6 z/ Q; P$ t# q1 v
  350. $redis->sRem('key1', 'set2');3 ?! ~2 X& \( I- O4 @# V0 p6 s! K+ S
  351. 3 H. Q$ m* A9 a' m
  352. sMove
    , W# v7 ^# f. S- z
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合0 ?' P: n' b- \6 A+ _+ H
  354. $redis->sMove(seckey, dstkey, value);/ d8 d$ i0 ]8 ]! |2 R
  355. 7 w! |  ?- X, V3 K$ K2 }
  356. sIsMember, sContains( F) Z$ b/ ]; Z/ c' n/ j) X+ V8 ]
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false2 Y8 z: R) i- ^& L8 V  e/ M& S* p- e
  358. $redis->sIsMember(key, value);
    1 ^$ |- q! e7 e
  359. 6 ?9 w6 @) t/ L2 o
  360. sCard, sSize$ ^, a. X# v) P
  361. 返回名称为key的set的元素个数
    ; u7 E% O6 J' W  L

  362. / g" W1 Q0 O1 n: v4 L, W3 m
  363. sPop) P2 Z9 L8 f' Z( C3 j
  364. 随机返回并删除名称为key的set中一个元素8 J' ^& D& ?% y( h4 S6 n- z& J; F7 g
  365. . i$ S$ s3 z$ S  v6 U1 L$ Q
  366. sRandMember
    6 n% |* a  c$ o: w' E1 b
  367. 随机返回名称为key的set中一个元素,不删除2 T  H& y7 I& d" B5 U" s. M

  368. ' c# n$ c7 t3 Y
  369. sInter' r/ d) S4 |( K  d
  370. 求交集
    6 k/ E# P8 y) ]$ c

  371. % T6 W8 M2 L8 K. ^: q! G/ w
  372. sInterStore
    8 \2 Z# ?7 I' {4 \& l/ X7 l
  373. 求交集并将交集保存到output的集合/ R7 Q6 D; ^6 s* V+ A: I
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ( ~6 ~6 d8 C( p9 K0 `' c+ f
  375. ( ]( r; b$ F) M0 b! P1 q% |: x
  376. sUnion  O! M) b: d% F  G& f
  377. 求并集0 h& j* U3 f/ e. L% R7 }1 I6 u
  378. $redis->sUnion('s0', 's1', 's2');
    ; m( i3 D5 t7 u9 Y
  379. s0,s1,s2 同时求并集
    * B( I5 ~, D) r0 z5 L9 P

  380. 1 m3 z$ N: _* W: @! k, V4 l. e
  381. sUnionStore% {% r! t# z8 |! `) H
  382. 求并集并将并集保存到output的集合
    . Z7 y. [9 q! L; a1 |. ^
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    + y$ Q) `. @1 ~# S, d$ @

  384. % }1 _+ i, t: L
  385. sDiff$ H8 Q1 u/ B* H3 g9 M$ f& F6 `
  386. 求差集
    9 n. M1 j0 Q# F! m! _) D
  387. : ?" L  {/ R  }1 P- S! ^( W
  388. sDiffStore
    % N: x% i- B9 y* _2 l( X  m5 h* P
  389. 求差集并将差集保存到output的集合- D  p( ~) T. Q, f" {! H& L" }9 d

  390. 1 w* k2 k( i( Q; k
  391. sMembers, sGetMembers
      k3 ~( y1 A* Q' F) e9 m, }
  392. 返回名称为key的set的所有元素9 ~$ ]. J; _9 U8 |3 I. R
  393. : O  ?' I5 g5 P
  394. sort5 [3 ]$ R0 n  U# W) X) N/ w
  395. 排序,分页等
    / y' v, |0 {, G" Z
  396. 参数
    $ n9 j2 d' t2 Y: X* k# F7 Q3 I
  397. 'by' => 'some_pattern_*',
    7 m; m' l$ Q. d; ]' L" x
  398. 'limit' => array(0, 1),
    . f) o  _) k) Z& u" G( u
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    # G; V7 D3 U8 I
  400. 'sort' => 'asc' or 'desc',
    $ a0 y) @, H; l; |
  401. 'alpha' => TRUE,
      s' E( X( S% B
  402. 'store' => 'external-key'1 S; W0 @  R# f, }( R4 |
  403. 例子/ ]3 \% D1 V* B  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);
    ) t( r, G- H; I1 s2 x' q, G
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    6 p5 R, O+ q, F6 g
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    2 V* ~4 z# b! ]8 q$ f) e8 M* n
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    ) H: U# `/ k) A3 {7 ?' I
  408.   X( A% o" V' ^# l2 R4 J: y
  409. string命令
    4 T% [* f. Y( O; x9 [9 S
  410. getSet
    6 C5 b* s8 u. O' c0 `7 H
  411. 返回原来key中的值,并将value写入key: `; n( p$ c& H* ^% R) z
  412. $redis->set('x', '42');( D! D' K4 b; Y1 ~" H8 k3 b
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'9 K, f! d4 C; C$ i
  414. $newValue = $redis->get('x')' // return 'lol'
    * Y  `1 w9 s8 e$ g+ n3 y

  415.   v$ |* U3 \, G3 Q3 H- t
  416. append& w" |' D. R7 n" _3 @% F
  417. string,名称为key的string的值在后面加上value& W* B; S  j, C9 y- f  f
  418. $redis->set('key', 'value1');
    ( m1 Z3 M, T5 x: t$ Y
  419. $redis->append('key', 'value2');- c8 b0 @: |5 r
  420. $redis->get('key');; D" V# s0 N1 x! ?
  421. + M! f. {' _. g; i! H- Z
  422. getRange (方法不存在)
    2 [: u  {! P4 J& I+ L% y/ m
  423. 返回名称为key的string中start至end之间的字符
    + R$ o& N5 l& c' s$ M
  424. $redis->set('key', 'string value');
    4 L+ Q6 e7 W, e: C5 k8 X
  425. $redis->getRange('key', 0, 5);+ V! }; }  X  Q. {) I+ ^0 e
  426. $redis->getRange('key', -5, -1);
    ; b% a, g  K( r* C8 p% h( c

  427. " a3 @- o1 F: I# c; S! U  ]
  428. setRange (方法不存在)
    4 I; A! [$ I& f* ~7 [
  429. 改变key的string中start至end之间的字符为value0 x. W" S5 l& }9 y
  430. $redis->set('key', 'Hello world');( I4 [% h% S' B
  431. $redis->setRange('key', 6, "redis");
    & c4 o4 c6 @5 V! D
  432. $redis->get('key');& H# Y5 q! m/ ]3 @, C. M/ x

  433. * h( \1 F: t( {6 {
  434. strlen3 J4 I- C% ]* [( y4 ?5 c
  435. 得到key的string的长度/ \4 O" `; M* _/ K0 U
  436. $redis->strlen('key');
    " [5 a, O( h3 ]; X$ W. L  m
  437. & ]+ |/ ~0 m# W" ]/ [# ~" F: o
  438. getBit/setBit( s6 _$ v1 c. M% ^
  439. 返回2进制信息
    5 C3 `" s8 Z" W& p+ N! Q, k& b& f
  440. 9 K3 w5 y  i& j( o- [) V- e4 n1 k
  441. zset(sorted set)操作相关
    3 l' n5 f! U. E
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。# C5 t4 A7 l) e2 I7 {, V. Z8 r
  443. $redis->zAdd('key', 1, 'val1');( b5 M% C! s! w8 P. x4 \
  444. $redis->zAdd('key', 0, 'val0');5 M) @% M( L. d% E3 y
  445. $redis->zAdd('key', 5, 'val5');
    ( v6 }6 J3 A) w" J0 q( G* U
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    * e0 x/ \3 _' d- p
  447. * J) u9 l$ o( [% ]; y
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    7 X( q& N1 {' m% E9 W4 h# u+ M. F3 o
  449. $redis->zAdd('key1', 0, 'val0');  `3 o; @  x- m- a
  450. $redis->zAdd('key1', 2, 'val2');
    5 g  f4 |9 Q/ Q  u  t* |$ Q
  451. $redis->zAdd('key1', 10, 'val10');, g6 O1 o  b! u/ |
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    : A4 C" s0 l0 Y5 b
  453. ! ]& ?+ o  H2 k0 B. o
  454. zDelete, zRem% T' _8 S1 o0 f8 e' R3 g
  455. zRem(key, member) :删除名称为key的zset中的元素member
    " \1 {) {' ?8 L9 t# s  K
  456. $redis->zAdd('key', 0, 'val0');/ T0 Y' Y  M; t# ?2 ]; X( D5 ]
  457. $redis->zAdd('key', 2, 'val2');  h3 A, s) [% w1 D" s$ Q3 z
  458. $redis->zAdd('key', 10, 'val10');% E3 R7 k: W+ o8 |- U+ F
  459. $redis->zDelete('key', 'val2');8 w$ R  H9 F9 H+ n+ @
  460. $redis->zRange('key', 0, -1);
    4 u# f# m0 H1 V7 T. K
  461. . z# C. m4 k: y
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出# z/ M% o  M+ z9 z) T
  463. $redis->zAdd('key', 0, 'val0');
    7 u" m1 `; I, {  y: j# K
  464. $redis->zAdd('key', 2, 'val2');
    7 [! u+ [/ \$ h6 ?0 x  E
  465. $redis->zAdd('key', 10, 'val10');
    5 `; O* S' ^6 e: D5 g( ~
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);. v" X8 G: k6 m0 e* Q
  467. ) h6 L% c1 e/ b$ n. q
  468. zRangeByScore, zRevRangeByScore: Z. j, }( z' W0 z
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    # |1 G- N: v; b9 L
  470. 返回名称为key的zset中score >= star且score <= end的所有元素+ `% g& X$ F; X" {* J

  471. ( @& ?( Q  P2 l* p
  472. zCount* e' X" k7 [7 [& g0 ~, Q
  473. $redis->zCount(key, star, end);$ D/ U$ l: Z# g3 U- Q) s
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数8 u9 ]: U5 v2 W/ X
  475. " \( r6 X* z9 M' U/ O
  476. zRemRangeByScore, zDeleteRangeByScore
    0 X9 Z# v, z# G  z
  477. $redis->zRemRangeByScore('key', star, end);. d6 C3 \* w; @# d4 R/ x
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    2 ^) r# d# F' S
  479. * P7 y: G9 c/ O! ~: Y( O! ~
  480. zSize, zCard
    * {% c' D  l) D' e. I: d; Q( B
  481. 返回名称为key的zset的所有元素的个数
    1 w% D9 P: D, N7 X7 g1 h; ^
  482. 1 z% I" P; ?; @
  483. zScore
    ' A2 \* M/ |" j+ j4 Y! ^
  484. $redis->zScore(key, val2);; ~3 y3 k+ Y2 x1 c
  485. 返回名称为key的zset中元素val2的score$ R& U& D* t! v6 c8 M: G
  486. 0 o0 B0 z* j! y- \8 O
  487. zRank, zRevRank) \# P" a' }( G# _( j1 v. D. c, r
  488. $redis->zRevRank(key, val);, ?6 O6 t4 M& Q% F7 R% t8 i
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序9 J8 `+ \( _! a, ~3 Y! V/ ]$ J" `3 ^

  490. " g9 H$ l% A' a
  491. zIncrBy
    ( K9 l3 Q5 ]* T: O( j' d
  492. $redis->zIncrBy('key', increment, 'member');' ], {& ]  C: D, e- M9 ~9 e
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment  e" }8 l7 H5 o6 R& y4 c; J6 F
  494. ; q9 ^8 k7 f) d/ F- v0 e3 b
  495. zUnion/zInter
    , W7 D$ A- k' {) ]
  496. 参数
      |& I8 W& e5 v& B6 z
  497. keyOutput
    9 ]6 |. B1 B" |1 i7 }" p3 U% W
  498. arrayZSetKeys1 l/ L" n7 g. t' W7 c
  499. arrayWeights0 v! O9 ~9 V" r0 J' J
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    / f' c5 o9 m8 a! e% {5 z+ ?
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    ! r* z4 f4 B0 ~% B$ ^6 d
复制代码
0 C5 B  p6 i: I( A

, C/ l# H6 r0 D1 q* R3 t2 ]& M
+ J0 L; t, N5 C1 g
3 S3 S. U! E  Z: h0 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 9 k0 \0 ]- h) `9 w- C  m8 S
  2. //连接redis服务器
    5 P: k2 `$ [5 A
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-7-4 03:11 , Processed in 0.143720 second(s), 18 queries .

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