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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php% w5 t4 ^8 W0 o" B$ W, Y- N
  2. $redis = new Redis();  
    # U* U7 G8 B' d4 v2 V+ \$ D0 \- I
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    2 W" J5 C/ y: q5 }
  4. $redis->auth('mypassword');//my redis password , c7 J& B9 ?: D0 y/ n
  5. $redis ->set( "test" , "Hello World");  # t' K) M  v0 `* q: p( g
  6. echo $redis ->get( "test");; W, l0 |7 A0 |( B
复制代码
php操作redis函数封装
  1. /**6 \5 C8 T7 w# P7 n( {+ Q+ F9 m
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数# e* U# b8 U# K. I) e. x
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi8 d, y" o6 Y* }4 d0 T( E7 V" e
  4. */* l4 M% Z. z0 H
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
      M1 w: C4 q  B7 g8 S* R8 d$ @- z
  6.     if(!$key||!$value) return false;
    3 q) z- g) o. T' ^, d* s
  7.     $host = $host?$host:getenv('REDIS_HOST');2 o% j  U5 T" h: F; C& ~- Z
  8.     $port = $port?$port:getenv('REDIS_PORT');) _# G& ~9 B+ j7 q% ~! u0 Y
  9.     $redis = new Redis();
    0 o" d- q' Y' h- S7 [! Z; ]! B2 P
  10.     $redis->connect($host, $port);
    # C4 X5 ~: I; I
  11.     $value = is_array($value)?json_encode($value):$value;
    & y5 M+ |0 t0 q9 W( d4 y: X- ^4 u
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);0 T; V! s' I5 U: B! O( L0 }$ u
  13. }
    + Z" ^8 A3 a2 ]+ s' V
  14. /**
    " W3 ^+ b5 m" q+ Y
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    * Q$ m7 Z/ K& [: n7 v( r7 H0 i
  16. */
    8 ^5 h2 b: z  F5 K
  17. function RedisGet($key,$host='',$port=''){( |# o  L* z+ W% N! U
  18.     $redis = new Redis();
    ( L9 U. `" ^/ `5 x! a$ m, t
  19.     $host = $host?$host:getenv('REDIS_HOST');
    # K: C* R; t) g' L7 t
  20.     $port = $port?$port:getenv('REDIS_PORT');
    - ?- t, s4 F6 U. T( |% M4 b
  21.     $redis->connect($host, $port);
    " E0 q  E+ q8 {1 r2 L4 ?0 J
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    # t. `% K6 Z5 N, _
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    7 Y: h; g/ f6 z
  24. }( k3 v7 [: i# w/ Y
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了' b8 T! r( r, ^. @1 P
  1. setex 带生存时间的写入值
    : w- f7 ^% z: a1 U% @& @" c5 }1 S
  2. $redis->setex('key', 3600, 'value');
    ) |9 }) F; I/ [# o3 e: |
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    * d4 d: H7 j' x% J  w
  4. $redis->setnx('key', 'value');
    0 V) e1 L( }* U# u4 ^" a
  5. 返回已经删除key9 q6 n/ K7 @+ l, z6 C0 c% n) ]
  6. $redis->delete('key1'); 成功返回1失败返回0
    ) T; `9 v# ?' \# u
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回09 k$ M* }/ w' z7 K7 a/ n( O
  8. 查询生存时间; t! H6 r0 O7 p, x! i& J
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    / T% [0 U; _" T( c0 I4 G! S
  10. 同时给多个key赋值,同时设置key0和key1
    + o. `" _* T6 Q! D; ^
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    2 B) c- H4 S. e- G$ Q/ {$ L
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值3 |- e4 U3 x' R
  13. $redis->incr('key1');
    # B" \' f7 K* v
  14. $redis->incrBy('key1', 10);
    + K; Y: f* b" \" O
  15. 减法跟加法一样
    8 T% [% C& {  i& `; N8 r
  16. $redis->decr("key1"); 减少1
    2 _: @: U0 j$ P: a
  17. $redis->decrBy("key1",5) 减少5# X" n/ h( A1 z  Z5 Z
  18. $ X( W! @' r5 R# Y. P7 d
  19. list相关操作,连表操作# `2 [1 C% T! H* K# j
  20. lPush; g0 V. k6 ?$ b- n9 `1 Y3 N
  21. $redis->lPush("list", "888");6 G) A9 y8 F1 B2 D7 Y% k
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    - n! ~. i* S, Q1 {! J6 r
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式; I4 G! w" v( v0 L1 b3 W
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素9 |+ v/ g  ^) J% [& o
  25. lPushx/rPushx
    3 J2 m" d1 i; U1 V0 B# C
  26. $redis->lPushx(key, value);! G) g! c. _( Z6 w  N7 V
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加: ^* _- i. ?' V5 x. Z" d( ?, K
  28. 4 ~4 f& ]" _1 c- [* y( P
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    % P: P' W( ]" ^& L
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key+ \$ m) e% I* r8 v- ?) X3 q& o
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    9 f: O- _6 u6 @
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序: c2 U# P. O) ^; J6 s1 a
  33. sadd s1 zhangsan
    4 [9 [0 v% Z3 T+ t8 J0 n  D
  34. sadd s1 lisi
    2 {5 \. x- Z. A1 F2 n+ o- K$ W: a
  35. sadd s1 wangwu
    4 R/ W4 R' @; T4 |5 I& l7 K# H; p
  36. sadd t1 yangxingyi
    % Z; p9 j4 [6 U% O  o; P# d
  37. sadd t1 lilei
    4 ^: f: W0 S1 }3 N: U- q) q0 C  Q
  38. sadd t1 zhangsan
    , r  c& d$ I6 T  c+ v) p
  39. smembers s1 s1的所有集合内容
    6 X6 r' ]( n2 M/ [- s
  40. sdiff s1 t1 s1有的,t1没有的,差集
    ; H5 Z8 w* X) U( Z" t+ M  s- v
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式( x" j2 O2 Z' ?5 _( h
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    2 @1 A, t2 Q$ @0 t2 b, L( p# A4 U
  43. spop抽奖场景,返回集合里面随机的数: ~( G8 K" e$ M" v  e6 P  P: b
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    ' D9 N$ o1 F1 ]2 @5 f
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数- |4 }8 a2 C  [2 C* ?
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
      u+ u0 m7 @& j! G8 O. A2 k' U
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    $ `9 h. Z* m2 \) G+ r& `/ w
  48. $i = $redis->srandmember('s1');echo $i;/ |, W# x( T4 e! P9 {9 |) O
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    & i% s) ~$ i9 s2 y
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false  U* b5 D% R' A% m# Z

  51. 1 ^5 y8 M8 ?+ H( F2 d# \
  52. zadd key 2 value 有序集合. |  u% k) |1 o) W
  53. zadd y1 1 zhangsan;
    % j! g) i5 b9 I+ }) Q: A0 [
  54. zadd y1 3 lisi;" ~3 ?* b3 Z" i& w& v1 g6 y: b
  55. zadd y1 2 wangwu;
    5 F; @* s8 _5 o
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
      a' A) ^% E! |$ ?- v3 h
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);) X! ~' k  z2 f, P. Q0 g6 m- @
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    6 Z- u0 R9 i. L1 R3 _) s/ [) [
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先9 j0 n3 d; d; l5 r+ a) x8 a; N
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    & Z% o$ O! E  p0 d- j; ~* N2 }8 Z
  61. 无序就scard,有序就zcard,有z没有s! }, h6 d+ |! R- ?- n; B7 T
  62. sInterStore% z3 I4 F1 N& ?  v
  63. 求交集并将交集保存到output的集合" @/ y+ O) Y5 l( Y' L6 v- @. K$ d; {/ ]& [
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    / w3 |: W( b( @4 I% i- F. P/ {
  65. ' M: F1 w8 O) k
  66. Hash操作
    ' {; K0 G" g! {" e- L9 v
  67. hSet
    % X/ W- D7 e* j7 t+ @
  68. $redis->hSet('h', 'key1', 'hello');' a% \" Y3 v7 V. \
  69. 向名称为h的hash中添加元素key1—>hello
    ; y3 H  P! ~. [" s. j" }5 n
  70. 1 }( a4 J4 R) J1 p9 f! u+ `
  71. hGet
    9 k  ?" |0 Q( G8 s
  72. $redis->hGet('h', 'key1');6 ~( R" z! d+ C6 ^- s: x
  73. 返回名称为h的hash中key1对应的value(hello). |, E) Y9 r9 ^. X5 w: F* O. y

  74. - l- ]. L7 g" F. {
  75. hLen9 b  T, y( U. N$ S1 Y
  76. $redis->hLen('h');
    # j/ W# K  ^6 R) z3 C
  77. 返回名称为h的hash中元素个数
    5 J6 N, e# J5 s, }: q6 M$ N2 s
  78. / V$ P3 \/ s" ?% v1 S) E- R/ u
  79. hDel2 c9 O) ?' _0 u; n
  80. $redis->hDel('h', 'key1');% Z: i7 n# d/ E& v& M
  81. 删除名称为h的hash中键为key1的域4 C% J' F3 T! A  O. e1 x7 w* u

  82. 2 _5 }& s+ v- |( B
  83. hKeys+ X$ g' l$ M- e1 a9 ^; E0 l
  84. $redis->hKeys('h');
      y) @4 I* x; n. Q1 u
  85. 返回名称为key的hash中所有键
    ! _4 k& Y- ?6 j5 F8 \4 B
  86. - r! P' M! z* R; u( S+ }
  87. hVals
    6 Q5 N5 D4 y7 @/ S6 J" R
  88. $redis->hVals('h')( g& W( U' N( w+ m! p, o) c
  89. 返回名称为h的hash中所有键对应的value
    2 E5 m7 L/ \5 h6 Z" F7 x$ H0 D

  90. . @2 n0 w2 X1 |' f8 V9 i1 t' m0 @
  91. hGetAll
      O+ Z) s! Y7 J8 D4 ^( K
  92. $redis->hGetAll('h');! S+ B4 a/ J' [
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    + G8 A) {  q: t" K5 y; }
  94. % i/ `& H/ J, p4 K
  95. hExists
    $ L1 j9 F" {& X5 s
  96. $redis->hExists('h', 'a');8 f/ X4 r% A0 {+ W
  97. 名称为h的hash中是否存在键名字为a的域4 {4 t  d: ?; k- L" z& e
  98. 1 g( z9 A7 s. n+ J! D
  99. hIncrBy) ?! s  I+ \+ L' @' f4 f( [2 w& ^
  100. $redis->hIncrBy('h', 'x', 2);
    - s" ?( p& n: ?: q
  101. 将名称为h的hash中x的value增加2$ q. m3 Q7 f3 f7 P

  102. 7 E; e5 U7 V4 d$ o8 t& X, D# F7 C
  103. hMset1 t; X- Q0 \. [
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));/ z4 X$ Z5 \1 E/ h  s7 d7 n
  105. 向名称为key的hash中批量添加元素
    2 a( W! ]2 Z4 g! O1 F4 T
  106. - I# \. s1 r" f+ V( J) s
  107. hMGet, ^0 o5 U: J/ b  _3 O# l' G# Q/ Z! p
  108. $redis->hmGet('h', array('field1', 'field2'));8 Q0 [* {# p- r, d0 C$ D
  109. 返回名称为h的hash中field1,field2对应的value
      a# p5 g; K1 r

  110. * x" q2 t8 u; E9 X" {/ _
  111. redis 操作相关
    ( `/ V1 B5 P9 K" c
  112. flushDB
    5 `. D  W, ?2 H% Z
  113. 清空当前数据库
    4 y9 f9 h/ ]- {! R
  114. 7 ~! ]* H2 V) M
  115. flushAll
    % M- f. u0 F! D  B
  116. 清空所有数据库
    9 B& ^  X4 K: K
  117. 2 Y5 Z8 S. L* h% \- m
  118. randomKey0 O) O: }# K. H: e
  119. 随机返回key空间的一个key& y+ J" b# [, A5 U5 c; i
  120. $key = $redis->randomKey();& D/ u: Y6 G% S9 A* b9 m

  121. / q0 L5 J( u+ R; H7 o3 L( R* K* ?
  122. select
    ! b' e+ E% G  B1 G* O8 o) u0 O
  123. 选择一个数据库
    4 I! p; O6 ?. |. F' g" D0 W
  124. move
    / v! S' k1 z3 E0 C* T, w
  125. 转移一个key到另外一个数据库
    $ y2 m: G; a1 H% w& F/ ^
  126. $redis->select(0); // switch to DB 0
    * ~5 q  B" Y& K0 S
  127. $redis->set('x', '42'); // write 42 to x2 {( ]) }! d- y. j
  128. $redis->move('x', 1); // move to DB 16 ~/ U+ B8 ~) V& J& }# b
  129. $redis->select(1); // switch to DB 1
    # ^) P0 W9 K; o. N2 }
  130. $redis->get('x'); // will return 42
    6 G( F/ A5 L; S& D( n

  131. 6 J( i% j- W5 U( R9 N
  132. rename, renameKey
    5 |  S# ?: m5 s
  133. 给key重命名" E  D. T5 }# a. i7 s% B
  134. $redis->set('x', '42');! {! R5 p; r0 r: H- b: _
  135. $redis->rename('x', 'y');0 M  x4 z+ }" D& U* _4 k9 A
  136. $redis->get('y'); // → 42
    % I5 J- b% m3 R$ d- J  T
  137. $redis->get('x'); // → `FALSE`
    3 x: M; F; w' x9 n7 I6 q' e% y8 A
  138. ) B9 v$ @% G* S
  139. renameNx8 V, {! r, I1 u7 p
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功6 c6 u  G: }; g

  141. * W4 u1 }2 ?% L+ ~$ }% n
  142. setTimeout, expire$ z, o0 Q# J$ u8 m) m9 C
  143. 设定一个key的活动时间(s)2 l$ R' f0 ]$ ?8 i( e+ `
  144. $redis->setTimeout('x', 3);
    " |( v$ c+ o* A, }4 L* Q
  145. # @# H, j4 o" r2 \1 x
  146. expireAt
    , z( }+ t4 L. A( |$ X1 ?
  147. key存活到一个unix时间戳时间, x1 f7 W1 i+ X* Y, a# [8 Y% O& ]  N
  148. $redis->expireAt('x', time() + 3);
    $ s  @; Y% \, R/ P: B
  149. ; B' X( U7 O0 W; I! f9 U
  150. keys, getKeys; A9 _8 D) M) g2 _9 U
  151. 返回满足给定pattern的所有key
    8 f. b; |3 \& H( v2 R, _* J
  152. $keyWithUserPrefix = $redis->keys('user*');
    / y% Z* Z3 B& r0 N0 V8 i9 K
  153. # {' R2 x6 S- f& I
  154. dbSize/ C8 h6 V, [) i1 F' H6 I  H
  155. 查看现在数据库有多少key- g  j& h8 [/ ^' Y6 V& n8 O; L
  156. $count = $redis->dbSize();
    , ^, t0 Q: E) _+ q! T3 C1 I) ^

  157. : }1 k; \0 n% }( \
  158. auth$ e6 `2 [) G! W" e8 l# U
  159. 密码认证
    9 C' X1 u7 ?/ R0 \& s
  160. $redis->auth('foobared');
    8 A' \, h" P8 ]# E" @
  161. 4 u4 S/ N9 S7 c
  162. bgrewriteaof8 J: a- e2 ]' n$ N1 N5 {
  163. 使用aof来进行数据库持久化) N- R$ m' u$ p
  164. $redis->bgrewriteaof();& o2 z6 m$ B0 p8 ?. e& a( R

  165. / l$ z, o& v6 I5 l# J( L0 }* ^
  166. slaveof
    + V+ j% r8 a0 K& W
  167. 选择从服务器5 e3 Y+ M- k' F0 c5 M- ]) L& ^
  168. $redis->slaveof('10.0.1.7', 6379);0 t/ `- W& j, _) `. r

  169. 9 g/ k- ~* ?1 u  i
  170. save
    9 Y' m$ Y+ H: F1 L2 W& O
  171. 将数据同步保存到磁盘5 l9 F5 v) a4 J
  172. 1 R/ b: Z7 s. E
  173. bgsave+ D, ~& F$ O( I4 N
  174. 将数据异步保存到磁盘. s3 b$ u# S4 z# |
  175. 7 @5 V1 o0 @' L$ y# b
  176. lastSave
    8 \% j8 T- S* |: i5 w8 r
  177. 返回上次成功将数据保存到磁盘的Unix时戳9 C+ r, ?& \7 b

  178. 7 _) E- ?0 S/ ^0 c5 V6 i- w6 T9 P
  179. info: Y/ ]# Y$ w# F
  180. 返回redis的版本信息等详情- d$ u. \* S0 O  J3 b
  181. ; Q, N6 Z4 T" Z" r1 s
  182. Redis::__construct构造函数0 @# e8 Q. }8 E
  183. $redis = new Redis();
    3 U6 d' M9 E7 j2 z) A( Z
  184. " O- t9 E; l- q
  185. connect, open 链接redis服务+ R5 q# I, d& n  L* p% l  T9 c, G
  186. 参数
    + h+ w2 c" J; v
  187. host: string,服务地址
    : z3 X6 j$ w+ n7 U  I1 C- i) x
  188. port: int,端口号
    6 f; l- c' y. ?/ M  M. B8 O
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    + M, M4 L2 W6 _" C" w
  190. 注: 在redis.conf中也有时间,默认为300& {" m8 I8 _$ R, c# o+ e; @

  191. + Q/ l0 b7 V  a0 p8 n. _! {  K) w
  192. pconnect, popen 不会主动关闭的链接
    0 h- G) @- Q2 {
  193. 参考上面$ y3 b' G, E9 m( K: s5 k: P% c
  194. + U1 X+ R0 c# p! V
  195. setOption 设置redis模式
    : R$ p3 R- l+ E6 I1 N
  196. * h: f; D0 Q/ ~$ @
  197. getOption 查看redis设置的模式
    & {* L6 t( T( B+ k/ k8 K. g
  198. 4 ]: L- D6 I0 P3 W- O( M( g  \
  199. ping 查看连接状态- I* g2 o- d; q7 I/ ~
  200. - w" o3 @: @4 {' F& n5 P9 C& G3 [
  201. get 得到某个key的值(string值)
    * Q( C0 X: |  M  Z3 P  L& c
  202. 如果该key不存在,return false
    ; q8 E. I7 h0 Q- E' ?

  203.   X0 Z! a: E$ U' x/ {
  204. set 写入key 和 value(string值)
    / t7 _. l2 A, ?6 E9 \7 K; l
  205. 如果写入成功,return ture
    " }0 b+ ?- l; p6 I7 R

  206. ' B; g9 B  x' m
  207. setex 带生存时间的写入值
    : Q/ D! R7 W% @  V% @# h- g
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.7 ]$ N/ B. `- f" S
  209. 2 M0 @+ A; i. ~1 j1 S
  210. setnx 判断是否重复的,写入值, `& c8 v  `8 ~5 l
  211. $redis->setnx('key', 'value');& f% M: F; `: m7 s# \
  212. $redis->setnx('key', 'value');
    7 c9 p0 I6 U9 }& k% P
  213. 8 Z) E: |4 e* `5 T
  214. delete  删除指定key的值/ F( Q5 \, m& l) f5 h+ N
  215. 返回已经删除key的个数(长整数)
    & }" f  a3 N3 g
  216. $redis->delete('key1', 'key2');. E( q5 o. n: d- Z3 |
  217. $redis->delete(array('key3', 'key4', 'key5'));
    $ b, u$ ^9 T( O) j% b1 F4 Z" C6 [
  218. 3 I/ x7 h  b3 r# R0 P3 s
  219. ttl
    9 J7 [1 Y5 J3 K+ G+ O
  220. 得到一个key的生存时间
    * y- F# T: E7 N% m

  221. & s+ H0 b7 M8 s- O
  222. persist
    $ [$ \- R) y+ v
  223. 移除生存时间到期的key- j8 j: Q7 W5 [
  224. 如果key到期 true 如果不到期 false
    7 S0 F7 d& ^2 D1 G: ?
  225. 8 I* o; r0 `$ w2 w( x/ l
  226. mset (redis版本1.1以上才可以用)5 J: j  k( ^0 _; V- D/ a# n
  227. 同时给多个key赋值. q( N8 N9 F$ C1 Y/ H
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    - O  w6 T7 O( `: o" ?/ A
  229. : d$ u" R: I5 ~, p- K1 R, v" S' S0 ]

  230. 6 c7 \: d2 A" U" r

  231. % W; {$ l2 Q8 L
  232. multi, exec, discard
    8 q  X. R! ~; V6 R* ~1 w
  233. 进入或者退出事务模式$ c1 L& _" |# H' s5 S6 D
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI- R; U  C5 k( b- I- X# f; y! b
  235. Redis::MULTI:将多个操作当成一个事务执行
    7 e; Z* {$ E$ _5 @6 I  H
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证" G7 X4 D: Y* a, ]
  237. discard:删除一个事务
    5 c$ j$ ]2 P- J4 n
  238. 返回值- _* R  J, G; r7 t' ^; G* d
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。* D0 }  e3 ~- O5 }) F
  240. $ G* O2 n; U4 B/ W
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    & N4 J* c  I# C$ V* G/ {- l
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    " J1 J. f4 I# {$ D4 _
  243. unwatch  取消被这个程序监测的所有key
    - Z( @5 U2 F5 l$ b. |' b+ H
  244. 参数,一对key的列表4 b( e! P" q% H  W" E6 U6 U5 M
  245. $redis->watch('x');+ w1 [8 r. x* }+ d
  246. & Q! P/ N$ P9 q7 E
  247. $ret = $redis->multi() ->incr('x') ->exec();2 D& {# U7 M; g! t) n0 R6 {2 r  Z1 C
  248. 5 N9 _6 X! i3 g  ]" |+ F
  249. $ `4 V. i$ v% O/ a
  250. subscribe *8 E% P! d7 B! z, Z$ b6 ]
  251. 方法回调。注意,该方法可能在未来里发生改变
    8 e( r, p8 c' F2 V/ c% [5 c
  252. 0 s; b8 w& d7 x- P
  253. publish *
      `: U/ l; ~" |: @
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变8 k" K0 n8 q5 F( t- w

  255. . [: l% ]( R5 W
  256. exists; k6 i, w0 |0 z. ~: J% y4 p
  257. 判断key是否存在。存在 true 不在 false
    5 h# ~1 r& U0 E* @% U

  258. , F6 G6 c3 o' ?& ~$ v
  259. incr, incrBy& u( q4 f* Y5 b+ W
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值3 V, l5 \1 a2 e: t1 v/ f8 g
  261. $redis->incr('key1');
    - i2 q# V8 R  q9 X- o
  262. $redis->incrBy('key1', 10);# w6 z0 m; w% p7 I; n0 T

  263. ) k) i1 P  ^4 }4 x
  264. decr, decrBy* \5 j# ?. X# S7 Q0 c/ C, Q
  265. 做减法,使用方法同incr
    4 D% i  C' ^% b- h: {1 l; q9 [, Z9 |
  266. ; P) }+ X4 ^# L" H: A' T, K2 W8 `
  267. getMultiple
    * h6 j& ~2 ?3 i3 _1 a" o
  268. 传参- o, H9 j% H& |# o, @' U
  269. 由key组成的数组
    ) H+ [1 n8 j8 l9 {) R3 }
  270. 返回参数
    # x3 @5 j: H& n! _. o8 c- e7 X
  271. 如果key存在返回value,不存在返回false
    " h! m" W$ ^& K0 a
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    % G) _  _) y# W# M' U% @% P  P: z
  273. $redis->lRem('key1', 'A', 2);- P( Q0 w- t& @- p6 s
  274. $redis->lRange('key1', 0, -1);
    5 }$ @6 F8 Y. {* q: Y# h3 n
  275. 1 ]/ [% }; V9 t7 U9 x
  276. list相关操作5 v9 ?7 S; p( O  Z+ B6 b
  277. lPush
    1 Z. O& o5 M5 m6 N
  278. $redis->lPush(key, value);0 d7 |7 R+ n+ B0 F5 X' |- I
  279. 在名称为key的list左边(头)添加一个值为value的 元素" o1 X  n4 j3 c: M0 u

  280. 9 j  Q$ }% }" n- Z6 ~! P
  281. rPush
    : H7 e2 R( Y1 d# R8 r
  282. $redis->rPush(key, value);
    / K" B# E7 H5 K# s* l% y# E
  283. 在名称为key的list右边(尾)添加一个值为value的 元素0 k% q- e3 q9 C4 e) e4 @9 V- F, Y
  284. " W: m4 k, i! c- p
  285. lPushx/rPushx
    + O' I; \" Q$ q$ ^
  286. $redis->lPushx(key, value);' N8 a0 k' {/ ]* A: \
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    2 w; l# B5 ?! R/ B" E

  288. - P  \; c& I0 \. ^. Y; `: L
  289. lPop/rPop2 f: ^% T+ s" f+ }. ]2 N
  290. $redis->lPop('key');5 {* o- S1 q; }
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素" B0 x. F4 D2 n  S
  292. 6 I3 s7 c% X& [9 o) ?( \
  293. blPop/brPop7 k1 A. X0 A! K9 f% B
  294. $redis->blPop('key1', 'key2', 10);
    : a9 b8 U4 ]' Y& @8 {, N
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作6 m3 v4 y& {* R& G' o2 ?: T% E
  296. 6 l7 \$ t' T- d$ @
  297. lSize
    ) X! i+ M5 k3 B2 y
  298. $redis->lSize('key');
    ' H7 [0 h) H. A4 o  [! v0 Y" \9 |* c
  299. 返回名称为key的list有多少个元素
    3 M& L6 _: h; o' @
  300. 8 r1 E7 O2 T6 n% J7 I
  301. lIndex, lGet  F7 `0 l( R6 E
  302. $redis->lGet('key', 0);. u; U# m- ~/ e$ t. F$ U
  303. 返回名称为key的list中index位置的元素9 S9 w2 C' y9 Q1 e: e; }% W

  304. 6 P. k& @! `4 ]( h. c! N& O$ P
  305. lSet; }; v- _! p2 v: F$ f
  306. $redis->lSet('key', 0, 'X');
    ! N* y2 }1 A* s* ^6 t4 x/ O
  307. 给名称为key的list中index位置的元素赋值为value( t  S& ^1 u+ D. S, q2 j0 F% H% F0 {

  308. . e) @6 g5 I3 @
  309. lRange, lGetRange
    + o6 j( R, H/ M0 I7 R
  310. $redis->lRange('key1', 0, -1);# e2 Q7 X, z% E1 j5 o+ O
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有), e& `0 u( _$ m/ c5 j! w3 k

  312. * O! Y4 E2 }/ {8 Q
  313. lTrim, listTrim
    . [0 R9 W! P$ p. y
  314. $redis->lTrim('key', start, end);
    5 `5 g$ ]( N% j2 l' ~  O1 O
  315. 截取名称为key的list,保留start至end之间的元素
    $ b7 L0 p  W& I/ T- A: [9 t! @, w" P
  316. 2 \$ e, y0 s5 _: s4 P+ N( K# r
  317. lRem, lRemove# O- M* @& ~0 E& \* B  N
  318. $redis->lRem('key', 'A', 2);
    3 U( D, \" X2 h3 f; p0 G
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ; |' ]* }5 ^# v3 ^
  320. 1 b/ N; ]* y$ k: k. o8 ?
  321. lInsert
    * W. B/ {! |' s% j, {
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1: `1 `4 w3 z* ]& X+ E4 ^( d
  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');
    & X! Z* l: l3 t( K5 s3 p
  324. $redis->lRange('key1', 0, -1);
    ! J# b/ H' u5 A
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    , C9 D! u" a9 ~/ B% P& L% P
  326. $redis->lRange('key1', 0, -1);
    # S- Z. D) e4 I" ~( e
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    8 O3 ^  c1 e8 E, N$ j

  328. 6 Y7 K3 z1 x/ @3 j6 m
  329. rpoplpush
    2 r& o, n+ k' s3 {" O3 m
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    % l/ P4 P6 Q( @! C
  331. $redis->delete('x', 'y');
    6 m" i! {! m/ x# C: E# H( I
  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'));4 u  m$ y  b- V' m) }- d( E
  333. var_dump($redis->lRange('x', 0, -1));: N6 m' Z, o5 c- r: N
  334. var_dump($redis->lRange('y', 0, -1));
    & X- p( e( ]3 p! Z+ t

  335. 2 w7 g" j. F$ `( O5 C
  336. string(3) "abc"
    ( B( B2 G/ H0 i, e1 e5 z. k$ z+ C
  337. array(1) { [0]=> string(3) "def" } ! e0 g( R9 g$ ]1 U$ b  P! F0 d
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }' d" s# q5 k0 ^$ Y; m
  339. : @! ^& B6 o& I+ I
  340. SET操作相关# s  j0 k2 H! `, e
  341. sAdd
      u6 P/ `% u  `. D1 h
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false% _2 H1 w5 K! U/ j; D' T( E6 L
  343. $redis->sAdd(key , value);8 j7 c) ~7 q- O* J* ~
  344. # R8 l, Y1 J. R& I* G7 J4 g
  345. sRem, sRemove" n& }& w3 `  B; d; h' h+ ^: V
  346. 删除名称为key的set中的元素value
    # {* B0 O  q4 U7 v( O2 h
  347. $redis->sAdd('key1' , 'set1');" F/ \  G5 f  Q4 T+ s
  348. $redis->sAdd('key1' , 'set2');+ y8 F8 d9 K6 p0 j6 m6 U2 W* b
  349. $redis->sAdd('key1' , 'set3');
    - _1 s4 x" F& r0 d9 I1 _3 q5 Z# a: q
  350. $redis->sRem('key1', 'set2');
    2 w) Z$ d  [9 f" c: y; p

  351.   j/ |+ \  O1 j# Y
  352. sMove
    8 }$ Q# B- g9 e; ]3 n" b+ J
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    ; G% C8 m* ~( i, x; M; W4 B
  354. $redis->sMove(seckey, dstkey, value);
    ' y; q) C9 n6 }; D! ?
  355. $ s, P+ q( o1 F5 A6 B
  356. sIsMember, sContains
    4 \+ S/ k; x$ b  y' k
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false% f+ p4 n7 W$ W
  358. $redis->sIsMember(key, value);& x2 u, s' v! s* R5 |3 R3 t& q
  359. + j$ ?8 Z3 m2 J) O$ J9 F/ M: U
  360. sCard, sSize
    ; u+ A: T" u8 Q  L7 t7 _% ?2 S
  361. 返回名称为key的set的元素个数9 I( T& n+ M2 u4 A

  362. / o* j# O  a7 W4 N& M
  363. sPop5 ?1 L2 k- f9 V0 O1 X7 r
  364. 随机返回并删除名称为key的set中一个元素
    / o2 i( h  d( u+ h
  365. 5 B: E* e9 y5 D
  366. sRandMember
    ' s" h/ s, K" w5 n6 ]( d/ @' D
  367. 随机返回名称为key的set中一个元素,不删除
    / U) J# l. A; ~
  368. " ]( q% j+ z  f+ G2 ^1 E2 A0 Q
  369. sInter$ c8 B5 T. x' M& R  X
  370. 求交集
    ' w  N9 p% h8 K# d! H& [

  371. + w! h- O* d; I' R, u
  372. sInterStore
    ' ?# h8 A/ K2 `! E# r
  373. 求交集并将交集保存到output的集合' l- P/ q# L$ ^% H; n
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')! N- `7 b- _# v! y% L! ]

  375. 8 r6 \& [2 Q) \/ V" i
  376. sUnion
    9 S3 D" b. d& ^' B0 e
  377. 求并集5 z0 O7 y, i- t# X! q8 M
  378. $redis->sUnion('s0', 's1', 's2');8 T/ i+ z  Z# w/ S0 }* n  H+ d  g
  379. s0,s1,s2 同时求并集8 I6 _3 s- T" A" g' I+ @# v

  380. 2 Y1 k1 X, P3 l0 S1 j
  381. sUnionStore) G! z9 d6 O& r/ E& i* i+ _9 R
  382. 求并集并将并集保存到output的集合
    / l* f/ V9 o1 K, p- O, T+ o
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    . v5 |& M! ?+ b; f. p8 V
  384. 1 ^8 s8 {8 Y1 p4 }& V* U, Z! _3 J
  385. sDiff, b+ M2 E4 H/ s0 M4 G
  386. 求差集. T2 s) E9 ^# Q: W2 n

  387. 9 J6 ?& k7 |, w9 Y; B
  388. sDiffStore
    # C% @& X) t* g5 b' R3 ?
  389. 求差集并将差集保存到output的集合& W- s' i. C# M7 d

  390. + k8 Q! ]3 g4 s3 Q4 J
  391. sMembers, sGetMembers$ v, U9 H4 n# G; V8 p( t
  392. 返回名称为key的set的所有元素. @' w# P* k# |$ S. ~/ A1 k

  393. ! y3 T0 [. e* C; D
  394. sort) Q9 d5 a7 s  W% ~3 C& ]9 {& U; d1 {
  395. 排序,分页等
    : P# K- O" F. m
  396. 参数
    6 L' i) G# ]/ o- }4 J! r
  397. 'by' => 'some_pattern_*',
    % m& p( g$ Z/ L6 A
  398. 'limit' => array(0, 1),# [& {9 G4 B! M7 `9 ^
  399. 'get' => 'some_other_pattern_*' or an array of patterns,9 W: g5 Z) u6 D3 A* g
  400. 'sort' => 'asc' or 'desc',
    * ^9 n$ o# B# Y
  401. 'alpha' => TRUE,7 X! _$ X2 j  S# ?9 p
  402. 'store' => 'external-key'
    9 n' C# m6 I+ t
  403. 例子
    + i( A4 f8 l* Y5 X0 v; h# {
  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 b& ^4 P6 z5 x. A/ y) B4 ?
  405. var_dump($redis->sort('s')); // 1,2,3,4,58 C) q% U9 J* U; W: q
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    8 c, G$ Z; z* V; d: }9 h
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    4 \9 G+ t2 |# ~; ?

  408. ( D% B- n) o( t+ a; V+ }
  409. string命令
    ( A8 D$ y" Z0 W8 B
  410. getSet
    * A* ]6 d9 W- d1 ^3 o& y2 c) A
  411. 返回原来key中的值,并将value写入key& i' ?& E# K# b' G/ L. |! |3 _
  412. $redis->set('x', '42');% S4 v; r( i6 b: I) z. i8 e0 G
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    3 ^  _+ N7 S* ~$ b) U/ ?! t3 z) @  q
  414. $newValue = $redis->get('x')' // return 'lol'% G& t  l7 p4 w2 P+ ]1 @

  415. . j9 x) v+ u( ~: V6 C! K
  416. append
    ' G4 q, a2 T$ k
  417. string,名称为key的string的值在后面加上value, h; C7 \$ i' Y- u" r
  418. $redis->set('key', 'value1');
    3 {# a  K& P, n) `* S) q
  419. $redis->append('key', 'value2');3 Q' m6 W! e# J& ]/ ^# k0 k
  420. $redis->get('key');9 j2 D& l- f! E- i2 `; I
  421. 3 `5 W# P- R  h6 s! |
  422. getRange (方法不存在)
    ( p' ~9 v6 [6 o4 d# |) n! ^
  423. 返回名称为key的string中start至end之间的字符$ S3 ^' {# T( f. P
  424. $redis->set('key', 'string value');
    6 j6 R7 J8 Y- ?$ Y' u/ y
  425. $redis->getRange('key', 0, 5);* d6 g+ U' y, d) V! _" s2 {
  426. $redis->getRange('key', -5, -1);$ t1 H& ]/ ^7 `

  427. 2 C4 I" Y( c( I6 m  U0 `
  428. setRange (方法不存在)" V' n& z# P& r! e! n) }0 `4 P
  429. 改变key的string中start至end之间的字符为value! e/ D# \* I3 r  h
  430. $redis->set('key', 'Hello world');
    & |7 L% V. J3 i& {0 _
  431. $redis->setRange('key', 6, "redis");
    3 u$ K* S3 A1 Z# b9 I" i
  432. $redis->get('key');
    0 n) |: t5 M' v; Q

  433.   P5 d8 [" m7 r, _+ s
  434. strlen
    1 s9 W9 [& [% c2 w: A; t0 A
  435. 得到key的string的长度: i+ i8 ]3 j2 F( t
  436. $redis->strlen('key');
    * i& E/ |8 a* \8 _. b
  437. & D" D0 b- [8 l2 s
  438. getBit/setBit
    & C2 O' |; [' Z, [/ s: d/ M" Z
  439. 返回2进制信息
    , ^" ^! d9 B; o  B* m! U

  440. ' m% _8 H( j% i+ G/ U! T1 s' O
  441. zset(sorted set)操作相关
    : t" j# J; `5 ?; M( n+ t9 H
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    $ R' L; _# I4 D2 U% Y/ o
  443. $redis->zAdd('key', 1, 'val1');
    5 h$ b' I3 J$ P, h
  444. $redis->zAdd('key', 0, 'val0');- M- d2 Y( I4 z
  445. $redis->zAdd('key', 5, 'val5');9 ?6 b. ~0 @# \, S  O
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    ' o& j% S/ O' N8 M
  447. 1 a& E0 H0 i' d; N" D8 l7 S6 V  x
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    5 N# v" z, j9 e% G$ ?$ d* E3 f
  449. $redis->zAdd('key1', 0, 'val0');
    # T. Z/ M" A+ U
  450. $redis->zAdd('key1', 2, 'val2');3 y# V% O8 ]! B2 D# }( \
  451. $redis->zAdd('key1', 10, 'val10');
    ' ~$ B7 W+ [  e: C4 H4 p
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);% |  G& \8 Y  q/ n( s7 V/ z

  453. ( x% g5 V. }) X7 w& H9 W# ?8 {
  454. zDelete, zRem
    0 \2 I. H8 [; L* E6 i
  455. zRem(key, member) :删除名称为key的zset中的元素member7 o! b8 G5 b0 v! v4 e
  456. $redis->zAdd('key', 0, 'val0');5 M2 r5 ]/ B8 n, X( D, c
  457. $redis->zAdd('key', 2, 'val2');. z+ J5 j* O" N
  458. $redis->zAdd('key', 10, 'val10');
    7 N# t& B5 h0 U) ]! }
  459. $redis->zDelete('key', 'val2');
    2 a: h8 B7 Z) J& u$ Z% G
  460. $redis->zRange('key', 0, -1); ; O& w  v. L, y5 a7 h

  461. + M# P3 f# T, o3 b
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    & y; V* D3 h" q6 _9 \2 b3 b
  463. $redis->zAdd('key', 0, 'val0');
    + D* F( `, X  E
  464. $redis->zAdd('key', 2, 'val2');
    - Z* q# X$ u  M# Z; ~
  465. $redis->zAdd('key', 10, 'val10');( Y/ ^# M, I3 x  J9 ^! F
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);2 z5 N/ X% ~3 y1 v3 u4 Q6 M
  467. ' `# f! Z$ o$ r+ s
  468. zRangeByScore, zRevRangeByScore$ Q" M, j) T! r' I6 Y
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    3 W% a" F. ]1 d9 Q% E3 K$ j9 ]
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    + k% ^: M6 J3 I- t& m0 d
  471. / i, k2 i$ |6 v
  472. zCount
    - F% Z2 ?, `& f. j$ `5 Q' |
  473. $redis->zCount(key, star, end);
    ) d1 \, |4 A# e& D) X
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数2 V4 Z: x/ k& C; v
  475. - k0 y0 k$ N$ V$ c4 Z: d( C& {
  476. zRemRangeByScore, zDeleteRangeByScore8 [! X% m: U0 k2 C
  477. $redis->zRemRangeByScore('key', star, end);& t: a! @& X1 W5 n3 a
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数! P) n& \* s7 ~7 X7 J7 I8 \2 c

  479. * ?* m/ g; U) H' g$ x# F! h, I
  480. zSize, zCard, @) M7 G5 c9 l* y
  481. 返回名称为key的zset的所有元素的个数" }  T& E- J6 S- w' G0 E  y4 N
  482. & s+ q; @# V) a2 c" I, T
  483. zScore: c$ M- i% [$ j# s+ X$ `
  484. $redis->zScore(key, val2);
    2 M5 Y) y$ _; L! Z4 c4 `. U
  485. 返回名称为key的zset中元素val2的score
    ; n* d7 o: R; V; @$ f) d' X9 ^

  486. ' W$ X0 l5 M1 V7 y. Z3 U. a2 ~
  487. zRank, zRevRank
    % Z$ X6 p* E5 L! {" F  e1 v! {
  488. $redis->zRevRank(key, val);
    : M1 ]$ J; E4 A* K" x, {! f2 Z
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序( h/ r1 x6 O/ @+ X( B
  490. * P, C! B% {1 i0 S
  491. zIncrBy/ i" I8 A3 b+ E: U! E" }
  492. $redis->zIncrBy('key', increment, 'member');
    3 }2 Z1 L. u( B: @3 a6 q
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    5 m7 M2 c7 S1 G" I6 `

  494. 4 a) [0 ~$ v8 g' R2 A4 ]8 k
  495. zUnion/zInter
    : ?: [9 }7 `# d* ]6 S, J( O3 H+ O
  496. 参数5 E  D( a2 M5 B0 d# \6 C# n- B
  497. keyOutput& P( \2 R' B1 b  g4 S# V8 c
  498. arrayZSetKeys
    : b) v( `6 j! }2 o; x
  499. arrayWeights
    + A. U8 M' Z/ U9 m2 C% H9 z
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.1 |- e7 E, }; v) P8 E3 s
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。; y6 P- c1 l. G; |$ K3 F
复制代码

6 P, k: e2 L6 ]) B7 d/ S$ `7 N/ q5 j3 ~" B" N# z3 q- h# J

$ ?0 L" i( {6 v+ ~1 K8 U3 ~2 K& L4 V( i  I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); . b7 i  ]5 S9 j% M
  2. //连接redis服务器 ) ^  C' C/ U- E4 N% c" \  W
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 04:47 , Processed in 0.055912 second(s), 19 queries .

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