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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
      N. R  z& u0 X8 G5 A/ F
  2. $redis = new Redis();  
    0 ~! l; ~6 P8 Y: V
  3. $redis->connect('127.0.0.1', 6379);//serverip port( ]8 ~* ]6 g( f; e) H/ A* w
  4. $redis->auth('mypassword');//my redis password
    ' {4 \7 y$ P/ q8 D" A6 i) {. s$ f
  5. $redis ->set( "test" , "Hello World");  
    4 U5 Z: `# e! H
  6. echo $redis ->get( "test");
    ' G+ F9 B& E0 M
复制代码
php操作redis函数封装
  1. /**
    8 m4 g5 l( H0 E9 ~5 ?( Z' C/ T
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    : C" D5 ]7 ]# {) z
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    1 Q) W' V0 o$ _
  4. */4 u* i( S5 V7 b9 n5 G
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){# {+ g8 ?/ A1 \1 M8 J* g0 y: o$ L
  6.     if(!$key||!$value) return false;7 ~* r0 M+ B3 A+ A1 m, x
  7.     $host = $host?$host:getenv('REDIS_HOST');, D, o. ]) a0 Z* \9 C, B% ^/ N" [
  8.     $port = $port?$port:getenv('REDIS_PORT');% @3 D  G* H) M/ h# [# {2 ?
  9.     $redis = new Redis();/ ^9 n5 I. L" N  }5 `) }' b
  10.     $redis->connect($host, $port);) q3 ^0 z9 g7 }# ]
  11.     $value = is_array($value)?json_encode($value):$value;: L. O1 ]! \! u- P6 o6 n8 `
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    8 F1 d0 Y+ z6 \/ E8 g) `
  13. }0 D. e6 o% r( w7 M) X1 v/ _- D
  14. /**: @) `8 z* L" H9 F/ @2 w3 @- b1 n
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    0 j. e: [" ]' z+ V2 m: i4 V8 T
  16. */
    0 r! ~- u2 U0 }: f1 h6 d5 O
  17. function RedisGet($key,$host='',$port=''){
    : A8 y: _. T0 T. I
  18.     $redis = new Redis();) F( I; i- m4 x1 U2 E$ t/ b
  19.     $host = $host?$host:getenv('REDIS_HOST');  g) [7 @- L. j! G! W" b# c0 R
  20.     $port = $port?$port:getenv('REDIS_PORT');
    ( ~4 ?* j/ h% p3 o$ g
  21.     $redis->connect($host, $port);, {/ h- P& n0 v4 P: G
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    - b' q  i# |* L% @% S9 c( r( L8 b% T
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    ) i3 `- u) Z' U# i3 I5 q
  24. }- E/ ^6 W; E: w  O! e! h9 [
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
+ P' @  {, R  T( ]7 N2 X  I  u
  1. setex 带生存时间的写入值9 l( ~: T' {9 s5 Y; ?8 h6 K3 S* A
  2. $redis->setex('key', 3600, 'value');
    + b# `: Z! ^7 J2 U, i
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1& k+ ]) j  N9 N2 C' v
  4. $redis->setnx('key', 'value');
      t" f$ b+ H6 t
  5. 返回已经删除key4 J; d: M' n2 u9 y4 Y
  6. $redis->delete('key1'); 成功返回1失败返回0
    9 f3 ^; ^( a' Z2 T2 R) ^+ r
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0$ l( c% w8 b. O: M
  8. 查询生存时间" }8 \$ T* P+ y+ p6 T9 {: A3 c
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    6 C1 c) g4 n5 S3 V1 f, s
  10. 同时给多个key赋值,同时设置key0和key13 g7 X. N1 R8 B+ {
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));3 B! W/ v' w1 ?' |7 [
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值. x+ h+ p+ K) }+ P
  13. $redis->incr('key1');
    " \* M( Y: P8 N. ]/ w% q
  14. $redis->incrBy('key1', 10);* F- A* H8 C/ T& J$ y
  15. 减法跟加法一样9 D- d$ j' g6 w7 s/ m
  16. $redis->decr("key1"); 减少1  T- |( K, k# `7 r5 s
  17. $redis->decrBy("key1",5) 减少5
    / |% S1 v2 f4 x& u' J
  18. / b+ m0 \6 U: ?. z1 Y: s
  19. list相关操作,连表操作- g0 U! {+ R* a3 E4 @- C
  20. lPush
    - M0 Y& d  n; ~+ z5 R8 s
  21. $redis->lPush("list", "888");! T  Z" [5 t  |9 @# ]7 y/ w
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    3 b& c+ _; d( b+ C3 R
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    / N* y$ G4 l; E
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    * }& v6 e! i# z; q4 P3 h
  25. lPushx/rPushx
    - k  [0 F! [3 H5 N' ]% N- u' E
  26. $redis->lPushx(key, value);
    9 F0 y* g9 A# J4 m9 v
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加9 w7 ~7 q8 C: {2 E2 ]% [- K3 W4 Y( L  Q
  28.   S  I8 \1 ]- ^) b8 m- z- Q
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key9 p' x% Z% m2 N! I) k
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    4 D! r6 X0 G0 A5 A( P9 h$ I( B
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1! U5 v$ y; {5 J& S
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    1 k% P& ~1 j8 y9 X1 f$ H+ X
  33. sadd s1 zhangsan1 X) q! O# n7 P' K# y3 P8 E2 d
  34. sadd s1 lisi. Q) w( G) q& D( [
  35. sadd s1 wangwu- b/ [  q% R% l
  36. sadd t1 yangxingyi8 M' ]( Q0 |8 ], i$ F# z# q' e0 }
  37. sadd t1 lilei: N; y3 S8 L. g
  38. sadd t1 zhangsan
    6 e* ?# Z; y9 t
  39. smembers s1 s1的所有集合内容, i) |$ i. ?- w, \8 I- @3 f
  40. sdiff s1 t1 s1有的,t1没有的,差集' k0 w9 G) W3 b' O
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式" i2 P5 L: {+ ?5 W+ G) h; R
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的9 G; b3 k0 U  G2 @: f9 |6 L7 T
  43. spop抽奖场景,返回集合里面随机的数, ^+ Y5 Y, s6 E8 @- u- \
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了' y1 O. K: I6 P) O+ x" K
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数) j9 Y' u" [% c2 X+ Y. _4 x' T( ^
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    $ W4 u+ c$ b6 }( @. m8 W* O
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
      A) a8 x* o' G6 J0 q  a! i3 N
  48. $i = $redis->srandmember('s1');echo $i;
    : }( r! n- e) ]; [) C* ^1 t
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false, a; X: Z+ W  B" c) z
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false# e7 {/ Q2 A# W/ j
  51. % Y1 w/ t: u2 L  M" k4 R
  52. zadd key 2 value 有序集合
    # `+ ^8 w9 Z4 A
  53. zadd y1 1 zhangsan;: V2 h6 Y6 L/ Z3 y
  54. zadd y1 3 lisi;5 Z- I/ f+ r; X2 n
  55. zadd y1 2 wangwu;
    3 w8 N! z4 L, Q! F9 N  `  P1 S
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi, a' G, X0 x/ _0 M; B7 E' T
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);4 y/ E1 A6 `2 C" p) r! ^
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    9 I7 p) U' ~0 W' v) C
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先, ~) i" p. J9 P- v3 j
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的# K2 _4 p8 Z. l3 I
  61. 无序就scard,有序就zcard,有z没有s
    - R9 K+ l3 O0 r
  62. sInterStore
    - }. @* w, `: `/ m
  63. 求交集并将交集保存到output的集合3 j+ E* j( _  ]( l! n) }
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')6 D+ K0 |* Q; S/ Z/ E+ B

  65. # }, M% l4 @9 m& Z+ U6 m
  66. Hash操作0 \4 _% m- {9 d* p" S- c  s
  67. hSet( F0 U8 [9 q! v
  68. $redis->hSet('h', 'key1', 'hello');% T1 t+ R/ h- L/ w* A0 [% ^% u& F% F
  69. 向名称为h的hash中添加元素key1—>hello8 p& q7 L. x& _

  70. 7 d: X4 a& N# k' A% V- M2 `4 |
  71. hGet7 }* w, M  j% a5 |6 C
  72. $redis->hGet('h', 'key1');
    / p( |' U4 t  ~! M. m; @2 [4 l
  73. 返回名称为h的hash中key1对应的value(hello)
    ) Y5 p5 E$ v1 e: ]

  74. % }# s  l1 E9 d, @3 q: n# w' U
  75. hLen$ u7 U+ F7 U* c, E
  76. $redis->hLen('h');/ Z6 ~. I. r# i: y1 Z9 q) N
  77. 返回名称为h的hash中元素个数- e7 G4 ~. e/ m* F  n. I
  78. , l- R6 a1 i5 P4 _8 h6 E, e
  79. hDel
    3 g' q8 P+ b1 n! Q1 {" l
  80. $redis->hDel('h', 'key1');0 h* o' a* w5 h  F
  81. 删除名称为h的hash中键为key1的域
    # m( x# w5 ~; Q  A2 [5 [5 O5 i
  82. 8 Q  a  v# u$ ^8 L
  83. hKeys, D! T  a- x, _1 c: t4 L
  84. $redis->hKeys('h');
    4 q2 P! ]7 o  v4 F% d. w
  85. 返回名称为key的hash中所有键
    ; e/ |6 w/ o2 ]3 B! N+ e; ]
  86. - e2 Z4 \1 v) n
  87. hVals
    # q1 ]1 i2 A' \/ L7 Y1 J
  88. $redis->hVals('h')" z! J3 R# C* V$ \
  89. 返回名称为h的hash中所有键对应的value) g: ?9 F! ~& f

  90. 7 V8 D9 q( ?3 H( }
  91. hGetAll
    & x! A% H( J6 T6 |/ W0 `
  92. $redis->hGetAll('h');
    2 H0 E1 N" m! D1 b$ i$ i+ i
  93. 返回名称为h的hash中所有的键(field)及其对应的value& I( Y+ x( ?- o6 H! \# p

  94. ) F# u  h0 h3 L% P
  95. hExists
    , N; T* T7 Z% U# V' \4 L
  96. $redis->hExists('h', 'a');7 [' N: m8 C  t; Y' y8 ?! j
  97. 名称为h的hash中是否存在键名字为a的域
    * A$ }' p9 }; k. G8 _

  98. ' W3 p5 `' U4 [% r
  99. hIncrBy1 h% s; Q+ @8 y9 D/ M  g9 \2 O8 ~
  100. $redis->hIncrBy('h', 'x', 2);
    % R" Q, F1 a6 Z0 Z
  101. 将名称为h的hash中x的value增加2
    " o+ s8 Q* u. [. O
  102. ; T; `/ }+ k) ^$ r9 Y+ C8 X
  103. hMset
    9 L( \) d" o0 A6 m. ?
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));" f! O3 \4 Q- ?" J; t' P8 \
  105. 向名称为key的hash中批量添加元素
    : ~, m  @5 w* r8 @' ^

  106. 4 r3 t. N1 i8 C' G7 |8 a7 J* }5 A
  107. hMGet
      v3 }! q4 t& {5 @: A2 C$ k
  108. $redis->hmGet('h', array('field1', 'field2'));) J( N; R1 g* e# W
  109. 返回名称为h的hash中field1,field2对应的value) J. T4 O8 f6 S; I* T" x- x" a4 p
  110. 3 _8 @4 a% X  [+ _8 G
  111. redis 操作相关
    2 D% T! K0 b  O8 O% P2 ^
  112. flushDB
    * j. p6 r( l; c/ Q6 q; }
  113. 清空当前数据库+ \, R1 M1 q- y9 ~6 ~' B
  114. 9 n& i$ `; p! U3 @. Q- u" e' p
  115. flushAll3 |5 E; L8 n: o/ M4 _8 R0 C7 Z
  116. 清空所有数据库/ T9 `! w) \/ J% m( I
  117. . F5 c1 j! \: N
  118. randomKey9 _1 J3 g: x1 B. [
  119. 随机返回key空间的一个key5 W1 U" N# ~3 n" t( T% R
  120. $key = $redis->randomKey();
    ! e* i8 _: R) c  E* \
  121. 5 w! g' R, j" F. d& J8 N
  122. select" A4 u' }1 x+ ~% C4 T
  123. 选择一个数据库
    , \' n* Q1 h6 E* p$ Y* Y  y
  124. move0 f  r3 @' w& t( t" F; @( \
  125. 转移一个key到另外一个数据库& ~& k; }/ O" ^( X
  126. $redis->select(0); // switch to DB 0- Z. e; r: Q- u1 G2 J  r( g! q
  127. $redis->set('x', '42'); // write 42 to x* D" M# c. w/ ^
  128. $redis->move('x', 1); // move to DB 1
    0 V' x% ~( H$ Q, \
  129. $redis->select(1); // switch to DB 1
    ; D1 }3 @& H2 j% l8 ^& n
  130. $redis->get('x'); // will return 422 O0 l3 l. ~7 p& S1 b" V
  131. - s0 l! z$ I- ^
  132. rename, renameKey  S( p7 @) `( W( y
  133. 给key重命名1 _+ N' @3 v  i% W
  134. $redis->set('x', '42');
    , [" u+ v7 `  w" y9 m
  135. $redis->rename('x', 'y');4 |# B3 p8 P; w- M& y
  136. $redis->get('y'); // → 42
    % _  _# M9 C! I* c
  137. $redis->get('x'); // → `FALSE`
    ! q* w0 `9 f% D

  138. + d6 {, G; [1 l( h
  139. renameNx+ c. P, k* `; I, a1 [; w3 r1 [
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功  t4 h; F8 t4 @; d2 M

  141. 5 Q/ n% d: n0 s* S+ w0 E
  142. setTimeout, expire' V& K+ T4 L4 S7 Z
  143. 设定一个key的活动时间(s)
    6 T1 u- W$ I3 i) u) ^. N
  144. $redis->setTimeout('x', 3);- d! g( B" u- }0 q# b
  145. 3 G$ {+ F, z) V2 `$ i* q+ ]1 {
  146. expireAt5 p" Y! b5 J( n& Y! H5 \
  147. key存活到一个unix时间戳时间- }0 x5 l! ^# n5 K8 j* G" ~
  148. $redis->expireAt('x', time() + 3);
    6 y+ {5 ]) X; v5 Y: k

  149. ) H" P( P1 ]2 p
  150. keys, getKeys: ?4 Z0 D8 v. h7 J7 ~
  151. 返回满足给定pattern的所有key- ?7 R2 L- d1 s, }
  152. $keyWithUserPrefix = $redis->keys('user*');5 ?2 m- `% u/ ^+ S* E

  153. ; Q) m4 \' i& O1 }+ ~. v; J9 {: }
  154. dbSize
    3 v4 e$ {. y' I2 w! o, |, I
  155. 查看现在数据库有多少key
    8 p3 u* I' {2 \' j% B  T
  156. $count = $redis->dbSize();9 N% g) x3 t4 _  u& z, T% O
  157. 3 u% v6 O6 i( q3 }* t- l" ]
  158. auth
    : D+ |: Q  V0 |. \
  159. 密码认证
    3 W$ o( q5 B9 b% `
  160. $redis->auth('foobared');* ~% p( e" N- p0 ]. q4 c$ X4 @3 A
  161. 3 g: V/ ]* d  W4 V' ]! W
  162. bgrewriteaof
    - }: Y( y# [3 x) R1 M6 _
  163. 使用aof来进行数据库持久化
      D6 [/ D( o1 `7 ^
  164. $redis->bgrewriteaof();
    1 e+ b7 a  f3 K6 S! O; }  n- k

  165. ; t( f3 s/ @4 s! r: Z/ f( `- R
  166. slaveof6 \7 V. |/ ], l" a* ^+ |. W
  167. 选择从服务器
    ' Z- K: S- V! @; E& A
  168. $redis->slaveof('10.0.1.7', 6379);$ g5 O5 S: ?8 A+ f- i
  169. 9 [0 I" x; z5 v* V: M
  170. save
    3 z& y# m5 b  X8 G6 L
  171. 将数据同步保存到磁盘) N) t+ U' s- v2 u% ^* d
  172. 6 g, U# r& d5 H8 q' \3 [& i+ w
  173. bgsave. F7 a& ^% H' m! p, {! z+ L' I
  174. 将数据异步保存到磁盘
    # {6 |$ R7 j0 }% E

  175. 7 N2 Z4 [& L2 U! E/ h9 Q+ Z# p
  176. lastSave
    6 R2 U( q& H) m% n7 J7 h  U* X  B
  177. 返回上次成功将数据保存到磁盘的Unix时戳$ B* f( b* c% i9 @. t

  178. 7 q" R- s6 S+ x- ?( t
  179. info
    2 z* l- V, q% n  y+ z- u, b4 _
  180. 返回redis的版本信息等详情
    5 H' a, P% ~7 L, s5 d/ |
  181. ; D! n) L$ L) K5 I0 l
  182. Redis::__construct构造函数, B; O; P9 P: z* C3 c- }7 k" F
  183. $redis = new Redis();7 L  J9 o, D: {( g: G! x$ N9 h
  184. 3 _/ a+ @0 F1 w
  185. connect, open 链接redis服务
    $ a' ~( ?, C0 G- c- e) K& l6 N) V- m+ g
  186. 参数
    4 W) O" z' O3 Q3 f( u" q7 L' q
  187. host: string,服务地址9 A; Z7 t8 j2 n% V+ p$ ]
  188. port: int,端口号- c/ Z& d+ X5 t3 n( u. T2 e6 w
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    $ U$ ]: X! e% W0 g& s& b8 I* _
  190. 注: 在redis.conf中也有时间,默认为300
    3 ^7 V+ s7 @; t% G: Z
  191. * g8 X+ {: i+ d/ ]3 ~
  192. pconnect, popen 不会主动关闭的链接
    & D& J3 Y- o1 M
  193. 参考上面+ L" b' F7 Z7 o5 ?3 R
  194. . j3 @% z0 T) ~0 r2 w
  195. setOption 设置redis模式3 P, ]6 P# R! N8 c

  196. % a- f6 G3 u% Y' L7 |
  197. getOption 查看redis设置的模式
    : |. j" Z  l" J" N

  198. 6 _5 A% f2 G1 l/ W" y4 |. L: y
  199. ping 查看连接状态. n- s2 }% e/ u

  200. $ W( P3 h4 h& \# S1 N
  201. get 得到某个key的值(string值)0 J0 P* q" p2 x) E7 J
  202. 如果该key不存在,return false9 Y5 `! j3 _+ y; k/ m# n
  203. 3 F1 x, ?" ^1 H: l
  204. set 写入key 和 value(string值)
    + W9 x* m4 A8 Q4 \' K, ~
  205. 如果写入成功,return ture' N' M9 K; D+ E! j1 }1 G4 @/ E

  206. " I' N4 C1 u/ n$ t! i+ u! n+ Y
  207. setex 带生存时间的写入值3 F  Q1 R! y8 V; Q+ a4 P
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.: }- P; ]  a# k1 F3 D/ L
  209. + {$ X  ?$ t% N
  210. setnx 判断是否重复的,写入值
    3 C9 j+ c; K5 e% v8 v# X7 W
  211. $redis->setnx('key', 'value');
    8 p0 t; r, p9 M1 F, J4 d9 `
  212. $redis->setnx('key', 'value');* ]1 a# p9 k# B0 v* L

  213. # F* h: Q3 o6 ?: d
  214. delete  删除指定key的值
    $ P, s( x% P) U8 u) `4 c
  215. 返回已经删除key的个数(长整数)4 S, k/ S4 ^- i2 Y6 g& B6 v
  216. $redis->delete('key1', 'key2');0 J5 Z/ u3 _, V! O
  217. $redis->delete(array('key3', 'key4', 'key5'));, Q$ r0 B9 G$ P- j/ j
  218. 5 N1 v. h- ]' d5 s( c4 S4 v
  219. ttl- Z" T0 g, M" t6 g; a
  220. 得到一个key的生存时间! z! \/ P+ r$ A! [" M  x7 @
  221. 6 W: C! c! G2 C1 @0 ~: {
  222. persist0 y* X: [6 z9 k* N4 l
  223. 移除生存时间到期的key7 a3 q$ `! ~. h: B& o1 u
  224. 如果key到期 true 如果不到期 false
    ; d# Y0 w7 O  I5 M

  225. : ?. |( G! ?% m. W- z* l' r, k
  226. mset (redis版本1.1以上才可以用)
    # b& [" {" }/ ~
  227. 同时给多个key赋值
    ( i0 S9 t5 ~9 W
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    " G% q5 @+ ?; p( d$ t+ g* z5 A

  229. ) t! g. J/ R# ]9 G0 C  }& U0 Z' d" H+ F

  230. 5 Y- |% O( g$ T

  231. 6 L  }7 b! B& L# w- Y0 a$ D
  232. multi, exec, discard" z: x: \5 T- p
  233. 进入或者退出事务模式8 w+ d; V; e. v' Q" J; G
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI( V" F2 E" q' |/ J' O+ g
  235. Redis::MULTI:将多个操作当成一个事务执行
    + G2 c- C2 M- n; u5 R
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    & F/ N* ]1 _( D( G) T7 P  H. e8 A
  237. discard:删除一个事务
    $ H0 @# X* {) f) {/ U) }* b+ O: N
  238. 返回值
    * P" W  J% p- x* L$ @
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。9 Q3 C4 S% H! ]3 O+ g# V

  240. + u, S+ S1 @7 e8 t  P: k: ]& D) n
  241. watch, unwatch (代码测试后,不能达到所说的效果)+ w: \6 q; K7 z  }/ o# l9 i; Q
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)  Y6 A; p% d, \4 K
  243. unwatch  取消被这个程序监测的所有key
    $ s1 w; t- d! Q3 D+ q  v# b
  244. 参数,一对key的列表
    " b0 u' V+ L: U4 X7 ?
  245. $redis->watch('x');6 _( _, s+ N4 O) ?4 J: e

  246. 4 E4 s: ]: h/ z: x; o) v
  247. $ret = $redis->multi() ->incr('x') ->exec();
    " r' K3 R7 ^' Q2 t; M

  248. , }: B8 v" e: u+ O

  249. + n  E3 H* P8 a8 ^) Q& h' t
  250. subscribe *: u, t0 g& R$ K, k
  251. 方法回调。注意,该方法可能在未来里发生改变, G) F! X, f9 ~( ^- m( P
  252. 3 |5 u2 J8 J$ g' Z# s& [
  253. publish *
    ! K2 p$ H# }5 ~  ^
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    " K6 q2 B! u4 X% `% K9 {, u0 K# J
  255. # b$ C5 q' K" n: q
  256. exists) z2 D( ?" m. H: t
  257. 判断key是否存在。存在 true 不在 false% A. v" H) d& [
  258. + s2 s7 ^( k2 q$ U
  259. incr, incrBy
    & g8 l! _: A9 v' V2 x5 w3 H
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    $ K) h0 _6 y+ Y9 g9 G
  261. $redis->incr('key1');% \# d& b* _( j% [
  262. $redis->incrBy('key1', 10);
    / v- i& }* Y# |

  263. 6 p8 m* ]) X8 ~8 p) L# g4 Z
  264. decr, decrBy
    " G7 V+ z: I" Z( |1 U4 l
  265. 做减法,使用方法同incr, h6 ?# ~$ l& ]$ w3 ~0 X7 z

  266. ' m9 {1 J: t' V5 {7 G1 l4 X9 y
  267. getMultiple
    & O  k" X4 ^8 a2 Z9 D" j
  268. 传参
    + j. M+ X/ q9 V# {
  269. 由key组成的数组
    - E3 ?7 ?. N+ b& C( q* q2 A
  270. 返回参数/ n# D0 G  r5 l! o4 o
  271. 如果key存在返回value,不存在返回false
    / B8 e( u3 f5 F  h- r4 c
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ; d4 |9 E" b, {! }' n$ s5 @/ ~
  273. $redis->lRem('key1', 'A', 2);3 l, G4 @8 A/ |  h6 J" k- }6 a
  274. $redis->lRange('key1', 0, -1);6 s! z2 h* k  ?/ M1 k
  275. - O& r1 A" ?1 N. p9 B8 d4 Z
  276. list相关操作
    # w$ c# [* c; u
  277. lPush3 q2 t" v- p. E/ C9 O4 l
  278. $redis->lPush(key, value);
    6 Q" Y% C" i7 C, _$ y. K
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    & I7 ^$ t: M) I; k

  280. ' {2 Y/ u% F6 F9 I3 S
  281. rPush
    8 t# H0 Y$ `/ e" ^
  282. $redis->rPush(key, value);
    4 |% {6 o, i: P7 F2 E) n% o0 {
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    3 N! |5 `' V, L. u. H8 e  X
  284. + X2 I/ R; y% z: f- I* K
  285. lPushx/rPushx
    " Q( b" h7 I& G5 P3 H- I
  286. $redis->lPushx(key, value);# e. K( Y8 G* i! [: D
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    & S9 x  n$ C  ?' E2 l' \. F

  288. * F  P7 x2 K7 L
  289. lPop/rPop
    4 k2 d' g  B- J; \" j8 Y
  290. $redis->lPop('key');
    ) `0 L! e7 o- r
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素0 f  H: f6 `) N1 l! ]. C: R

  292. 9 W9 l# N( x% j# c  `; r% W
  293. blPop/brPop
    , q  V6 T  h; u% Y( ~" @
  294. $redis->blPop('key1', 'key2', 10);, v" ^# X6 s/ y' `1 V  ^6 R' ~4 l
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作5 [. Z! ]4 d/ A+ N  x# w2 \
  296. 6 a- q9 F% ?! c$ B. c# _9 v, n
  297. lSize, m5 o& T/ V/ T% ^$ B3 E$ [
  298. $redis->lSize('key');5 w( F: N9 F4 X
  299. 返回名称为key的list有多少个元素% N8 I3 N6 T  @4 C7 T0 E. j, r) _" t
  300. ! i: U3 b0 J9 q. x
  301. lIndex, lGet1 F' v1 T5 L' {; T
  302. $redis->lGet('key', 0);
    4 w( l- Y+ d9 q# H8 J& l/ e
  303. 返回名称为key的list中index位置的元素
    1 Z" e# e  \% K7 {6 K' q$ x
  304. 9 \6 q+ f* @1 S4 A4 k
  305. lSet
    # E+ }* }$ M3 B" X  k' V2 ~
  306. $redis->lSet('key', 0, 'X');
    ) O6 q: r2 E5 a
  307. 给名称为key的list中index位置的元素赋值为value
    2 A; T7 R  w2 r
  308. 0 Q" e; S. D! [4 T+ ~
  309. lRange, lGetRange
    + Z( C; ?( t2 V0 |3 q, z
  310. $redis->lRange('key1', 0, -1);5 T* H$ k: Q( \: a0 j3 [# d
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)- g4 i' t8 ~' n9 s) b& b8 L
  312. 7 s1 t2 _6 w! u) P& z# s
  313. lTrim, listTrim
    ' p. O% N2 }* f/ |, k8 n
  314. $redis->lTrim('key', start, end);
    " J0 y$ i& W6 Q7 R9 `5 z& `
  315. 截取名称为key的list,保留start至end之间的元素
    ) B+ V/ X" X* p) M6 p
  316. 6 M) T6 D( w$ o% F
  317. lRem, lRemove
    ; _" a1 E; @# ~3 u' z
  318. $redis->lRem('key', 'A', 2);( [+ T# s$ Q! ^. k( X
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素; `4 P. N( Y" k4 Z# i+ L8 @" U9 W

  320. ! h- U0 @3 ?" Y" u) b5 g3 \7 R) q
  321. lInsert
    * A  x  S& U/ \; Q
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    5 [6 @9 J8 d# \. m0 j' y6 b1 s
  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');
    " e) V' m( t  \, U. H) g( k& Q  s
  324. $redis->lRange('key1', 0, -1);
    8 K# F- Z$ z( v/ w7 n
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    - T+ N/ J  ]0 P" l: `2 R# P+ G
  326. $redis->lRange('key1', 0, -1);
    * J( M9 m" p8 R0 K% z! G
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    * x  o9 G" d8 L6 F

  328. 1 l) p2 A$ C. G& T* d
  329. rpoplpush
    : {& c1 f# ]( j+ a) k# ]* v
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部% h8 N$ P; C4 z; w, u  J( g1 N' p
  331. $redis->delete('x', 'y');
    - Z1 l" y6 {. C) d* |- s" I* p
  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'));" L0 x& z1 z0 O0 B/ M/ O, \. G
  333. var_dump($redis->lRange('x', 0, -1));
    * S, p( f0 S6 c6 A9 I9 h' L
  334. var_dump($redis->lRange('y', 0, -1));
    7 U' Z; j* N% R4 v. N, E

  335. + t/ m& i/ t9 }. ~7 t; a( E
  336. string(3) "abc" ! m$ d$ T6 s; q/ v9 N) J6 O
  337. array(1) { [0]=> string(3) "def" } 9 w) E) F, m6 h1 j
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }& Q5 [$ D: h( D  }
  339.   H( u/ L5 U8 x1 j" k
  340. SET操作相关; T! z6 a; E3 P# ?; D
  341. sAdd
    ) W+ Z) Q: o6 Z* Z+ [, t$ i3 G6 p$ ~
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false2 I4 M, O0 A: [1 s3 X5 C5 m% j/ k# L
  343. $redis->sAdd(key , value);
    ) M. k& P; U& j. w6 U

  344. ( R/ L2 H: G$ Z  L6 J
  345. sRem, sRemove# J( Q- P: Z* K. [# _" g
  346. 删除名称为key的set中的元素value
    + k# u" N4 f2 [- Q1 f; A' f2 Q
  347. $redis->sAdd('key1' , 'set1');
    7 M8 U1 V2 [# J& C+ S
  348. $redis->sAdd('key1' , 'set2');6 ?, t- j. S5 q- z5 J
  349. $redis->sAdd('key1' , 'set3');. G+ m/ |, ]  q
  350. $redis->sRem('key1', 'set2');
    / k+ S/ u" r* D: x

  351.   {" ^( j3 W; j) K/ b
  352. sMove
    4 ^- h* i, H, S$ k$ m
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    / b! r; ?5 G- n9 R/ C
  354. $redis->sMove(seckey, dstkey, value);
    1 E- q% g, t; ~4 R" o' d
  355. ( U  ~0 l& \1 u! c9 z/ x* n+ W
  356. sIsMember, sContains3 l7 a: n' u' A5 s; B, ]: y3 |
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    : u' P" r$ {, Z8 l# S" W$ q& l  T
  358. $redis->sIsMember(key, value);/ U+ V' I/ J5 |* E
  359. ; j7 a. G9 T& v% c( K% _
  360. sCard, sSize
    % L$ x. T- Y( ~* A; L
  361. 返回名称为key的set的元素个数
    7 l4 w# ]1 m3 l) B
  362. & N5 S2 x' R) z4 V: P. T4 I
  363. sPop% M3 V4 n+ T8 w
  364. 随机返回并删除名称为key的set中一个元素! `- d  J0 G5 K) P4 u5 U7 n) Q
  365. ) ^! Z: c5 Z! J" c8 y2 u
  366. sRandMember: p( j; X+ b) v) L/ r) g
  367. 随机返回名称为key的set中一个元素,不删除0 m8 I$ [/ C( M3 a
  368. 2 d, W' |  n1 |0 L9 }7 o8 ^
  369. sInter
    ' `1 \# g8 u$ _2 n. K8 J
  370. 求交集
    & ^, x: T/ V$ q6 U( w1 _
  371. 1 H8 k# ]# o, b1 ~: ?/ s0 _
  372. sInterStore
    8 r0 \2 z% T4 ^+ a5 y- i6 X
  373. 求交集并将交集保存到output的集合
    7 u5 ?  x2 n$ r( |  f- ~
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')9 y% A, e8 W* @' p
  375. ; {- h$ N, l  O  x
  376. sUnion, d5 z& E; q/ M7 ?- G
  377. 求并集
    : X: C5 p5 n% n
  378. $redis->sUnion('s0', 's1', 's2');8 D; m' e5 w  {# n6 i0 {
  379. s0,s1,s2 同时求并集
    5 y" \# P+ n) v5 |& B

  380. : o+ b8 X* v- g0 O( y5 x
  381. sUnionStore
    . l5 \0 }8 l) t* ~* f$ x; N
  382. 求并集并将并集保存到output的集合7 u4 o" w1 i* ]. D
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    5 N/ K% g' b4 g+ _* p- k, d. C
  384. % ^% U+ a- Z" k. e  [, L
  385. sDiff
    5 t; |$ K& G2 P/ `
  386. 求差集
    / }# p! S' U: s" m- H
  387. 5 [! `% a0 Z, Y: M/ G3 `6 \! c
  388. sDiffStore
    " J2 T1 z3 l7 }
  389. 求差集并将差集保存到output的集合6 |1 U) ]/ g4 \9 i
  390. , J: L# Q4 j( J/ {) t7 |1 O
  391. sMembers, sGetMembers
    5 p; f! L9 s( D1 V- _% y
  392. 返回名称为key的set的所有元素
    7 N# t; [' f, f( O6 v

  393. * U: V! ]& v/ E+ W: U/ _( j7 @" ]# w
  394. sort
    ; i4 A, r% P; Y# ^4 L9 z
  395. 排序,分页等
    + S1 y5 p( d1 l  r
  396. 参数6 ]1 J0 k5 t$ k5 }# l/ h$ ^
  397. 'by' => 'some_pattern_*',: y: D9 w* z5 e/ F
  398. 'limit' => array(0, 1),; d: t4 p" e7 }; G+ C
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    % N, L3 d' s) c* Z0 A6 ]
  400. 'sort' => 'asc' or 'desc',
    1 F, i+ N' ?, Y1 p
  401. 'alpha' => TRUE,
    9 ^, q5 v3 _2 u7 b
  402. 'store' => 'external-key'0 M$ D. n$ t) U8 D! p: g
  403. 例子1 H" U. E0 e0 t; Y6 s$ g, ]6 M
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    7 x1 |2 D6 A" D5 g% }! R  w
  405. var_dump($redis->sort('s')); // 1,2,3,4,5) n0 f2 C4 P" `) X) a! c, w
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    + ^% s" I9 _% C, L
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    + {# [8 J9 W& B: W, s

  408. $ q0 c* m) I9 r. j5 Z8 r  h5 \
  409. string命令4 C# Y/ j8 p: s
  410. getSet+ `! M0 ~7 q) n9 |# O* ?+ C$ a
  411. 返回原来key中的值,并将value写入key- g, `# R8 ]8 O$ A1 y' ^( s
  412. $redis->set('x', '42');" T* M- r3 t* V* C" j$ Q0 U
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol': z8 {# v: Z9 Z* V
  414. $newValue = $redis->get('x')' // return 'lol'# j1 ^( B. E: R4 ~
  415. 7 H" S+ o7 M4 T% s1 `
  416. append, V" f4 i% u$ a+ e, E8 v
  417. string,名称为key的string的值在后面加上value
    5 o+ p" D( o5 _
  418. $redis->set('key', 'value1');. }) u; D9 M& |( O9 I8 w
  419. $redis->append('key', 'value2');
    : u7 A% Q, r) r& _; B
  420. $redis->get('key');% q/ I/ y5 G, ^4 V2 P+ n
  421.   s( n! s& a3 Q0 r8 H5 m" Y
  422. getRange (方法不存在)
    9 K! X' M0 q4 a$ k! f
  423. 返回名称为key的string中start至end之间的字符
    + W; m, [1 `( @  _+ l* a4 A- l
  424. $redis->set('key', 'string value');5 c% A# S! w% \6 k, o( j
  425. $redis->getRange('key', 0, 5);5 G8 \  `+ r0 C9 y( W
  426. $redis->getRange('key', -5, -1);
    ( |, h0 \  b& |

  427. ! Z- k8 s) |3 x  y
  428. setRange (方法不存在)
    7 K0 D9 W8 r( G) D
  429. 改变key的string中start至end之间的字符为value
    8 C' T7 [: ?/ f& T% u" _* G* s
  430. $redis->set('key', 'Hello world');
    ) t- W# M, h) O- I& p2 p
  431. $redis->setRange('key', 6, "redis");
    * l; W9 M3 h! }: n  R
  432. $redis->get('key');
    1 ^; R1 U3 w! N
  433. & E- z1 {) n( J9 c7 Q0 t* x. v
  434. strlen
    8 p0 d0 X+ z$ k& E- r$ W. K6 ?  t
  435. 得到key的string的长度
    , z/ ?! w; |3 |* W% m8 S6 j5 ?
  436. $redis->strlen('key');' A# N, Q3 T6 V% T

  437. % ^3 W; Z2 Y+ l7 Y* F/ B" ^
  438. getBit/setBit4 {1 X' y& h5 }: P( m( f
  439. 返回2进制信息
    5 l. b# M, z% p  l* p3 R7 d
  440. - ]4 ~' J1 _- {
  441. zset(sorted set)操作相关
    " [' e  S1 D# k* O) }, `" ~$ r5 S* [5 ]
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。! {( ]+ ?7 P( i: t
  443. $redis->zAdd('key', 1, 'val1');2 t7 D' L$ S- [! ]
  444. $redis->zAdd('key', 0, 'val0');
    1 [7 r0 c3 Q! a) f
  445. $redis->zAdd('key', 5, 'val5');4 u* ^, P  _+ v, Q# @8 m" E
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    # s+ I, u5 g3 p
  447. / N  J) G% ^+ _: L/ V8 J
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素/ B( k- q( E2 G/ P% @1 I
  449. $redis->zAdd('key1', 0, 'val0');
    9 @+ c& \' r0 e+ `% O; I7 Z# \- Y
  450. $redis->zAdd('key1', 2, 'val2');* X5 L4 J$ n) X$ ?) w
  451. $redis->zAdd('key1', 10, 'val10');
    & t9 g6 H* b- Z
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);+ Y2 _  z& ^- O) ]

  453. 0 Y$ s- p& k3 u: S4 X: Z
  454. zDelete, zRem
      S3 U9 h4 S! U( X% \# w- I
  455. zRem(key, member) :删除名称为key的zset中的元素member
    1 i) p/ t& L: {* l  ^
  456. $redis->zAdd('key', 0, 'val0');
    " M! T2 }, m4 j# {1 p
  457. $redis->zAdd('key', 2, 'val2');
    ! j4 W  |7 k; @, [1 L* u
  458. $redis->zAdd('key', 10, 'val10');/ x, \/ Y! c) T$ U
  459. $redis->zDelete('key', 'val2');% E9 F+ |$ y  W' V* ^- Q- Y8 U
  460. $redis->zRange('key', 0, -1); , I4 o' M6 }) K; f" G# p
  461. 8 ?. H: ?7 |" S' Y- U1 Q2 n! }3 f
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    2 @2 L3 r  ~1 @6 y! N' T' H
  463. $redis->zAdd('key', 0, 'val0');
    " n$ g' O! `' @6 z& A
  464. $redis->zAdd('key', 2, 'val2');: G! X# J( w& |8 W
  465. $redis->zAdd('key', 10, 'val10');
    * X) [( _/ t- P4 O' P! h
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);" Y7 J4 V* o* h$ ?
  467. + Q8 S6 u& C) m7 o. o+ Q% }
  468. zRangeByScore, zRevRangeByScore+ }( i& G/ m" m4 L/ c, o
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));$ [! B- v, k" u" ^9 C, j0 z
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    3 R# O( F8 ]+ U' r# F  Z

  471. 1 I  c* _7 j+ D# D8 a
  472. zCount
    ) q& X* Z/ @1 N8 G
  473. $redis->zCount(key, star, end);
    + p. W, U- @. N# K" g
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    ' ]1 w+ Y. H" W2 k( G

  475. 8 ~) d1 i: B" l
  476. zRemRangeByScore, zDeleteRangeByScore
    # l' H" l) K5 l
  477. $redis->zRemRangeByScore('key', star, end);
    5 L/ y& K$ e1 @: J
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    / h6 m  w# i, _1 c/ I1 b, S- {

  479. 8 x' h; Z, Z. P
  480. zSize, zCard
    ) e( F; n& J. r+ X% m; c
  481. 返回名称为key的zset的所有元素的个数
    + w& y& Q$ E) B4 |
  482. % a. J6 D7 m, g4 f# C: P/ v
  483. zScore
    9 y+ g% Z. B1 P2 c  E: b/ u
  484. $redis->zScore(key, val2);+ R  u; E  f8 R% v  j
  485. 返回名称为key的zset中元素val2的score
    ( X& f; Y1 o+ f* L2 s

  486. 9 Q9 O9 j+ Y: _; W) H$ t9 i1 Q7 @( @! e
  487. zRank, zRevRank9 x; S% K$ |2 \7 h7 s! y
  488. $redis->zRevRank(key, val);: z+ Y# i" p$ g- N6 A" m2 \4 O, r
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序6 V+ D& y* T' a+ ~. [$ y

  490. 8 s5 g- d. f" E0 m; t0 j5 j( ]" V
  491. zIncrBy
    ; y; w4 U4 y  Z* {
  492. $redis->zIncrBy('key', increment, 'member');
    9 M8 y4 d2 V) j/ Q1 {
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    # I: f7 G- Q) q! H

  494. $ P5 w; `+ p* X: u* p
  495. zUnion/zInter
    ) G, F: r. k1 Z+ ?
  496. 参数
      B/ ~" N0 ]- n7 O% o( @
  497. keyOutput
    2 L0 a% v: f1 d2 j9 o2 k6 F- y
  498. arrayZSetKeys2 n5 t. m4 d0 K8 V
  499. arrayWeights7 [" C8 }& d# f* M
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    , f: `, ?, y7 @- e# F* A$ |
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。+ S0 s& f8 Y1 ?6 O1 m/ U8 L/ C0 Z6 l9 p
复制代码

/ G7 W2 z6 V+ {3 _: D( s: t
6 O& G, E& E- D4 p0 s- {8 W2 j4 n. N$ ]% Y( k
8 l) g* l6 C# T4 L' x2 ^& [: ~" z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    , G& T$ }& u& t- L( V4 W
  2. //连接redis服务器
    : l0 F$ t: G+ U9 h, ]( X; }+ a
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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