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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php! c; _2 N) i* u. P# u' f7 a4 }; R
  2. $redis = new Redis();  
    ; S4 {" @9 z' d3 H
  3. $redis->connect('127.0.0.1', 6379);//serverip port: M! W, P4 b' P3 S* h% W' h- X
  4. $redis->auth('mypassword');//my redis password : y4 L1 p; Z1 g0 z4 g6 N, s
  5. $redis ->set( "test" , "Hello World");  1 ?! R. `$ ?% R1 |- k8 u
  6. echo $redis ->get( "test");* C' M$ Z( V: R- }
复制代码
php操作redis函数封装
  1. /**
    ; h* Z  U' o5 r' F3 ]+ N7 c
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数) [8 t. m5 ?3 c
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi5 Z- L# o; f3 w0 @4 P, F
  4. */
    4 v5 b- x( }4 m
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    * e# r" ?1 o7 P* @& H! ]
  6.     if(!$key||!$value) return false;' F5 ^4 ]1 F) ~- i0 u
  7.     $host = $host?$host:getenv('REDIS_HOST');
    , r2 k  T- S/ K9 K) Y4 J
  8.     $port = $port?$port:getenv('REDIS_PORT');
    " x( _* l! Y; B: s: [9 n& M
  9.     $redis = new Redis();
    $ m/ t4 T, V* n5 u
  10.     $redis->connect($host, $port);
    . D, C% I" X5 T- H1 P
  11.     $value = is_array($value)?json_encode($value):$value;3 [6 q1 d( R  f
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);2 E2 {' T* g3 e' M
  13. }
    + o. @6 n# e* g+ Z$ s' s+ h0 K% r
  14. /**
    ; V; d: e- D+ L0 T3 @
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    - d! N( |9 F' R+ W# X2 H, ^1 l; g
  16. */
    5 h! q4 Z% K5 {$ Z1 B
  17. function RedisGet($key,$host='',$port=''){8 @/ k+ |/ u* m: i: i
  18.     $redis = new Redis();
    . K# z( r# K% i; R, X
  19.     $host = $host?$host:getenv('REDIS_HOST');
    % N2 S3 U9 R, g0 ^4 E; q" n
  20.     $port = $port?$port:getenv('REDIS_PORT');
    * B* ^/ z! Y. p/ q  N
  21.     $redis->connect($host, $port);  V- c! H" K' f; E1 {6 g. v
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);" [5 S1 g5 P* H% F
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);  B3 n7 u. U, S  L# R' u& h' c( C
  24. }
      B9 [% P, A7 A4 m+ p2 M
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
) W5 t8 C+ ?9 _
  1. setex 带生存时间的写入值
    $ p* S* _% W4 }" k3 N8 U. U
  2. $redis->setex('key', 3600, 'value');
    $ G4 ]  k% u  E7 n1 B
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回19 S8 P( f) |: w. c* b+ k
  4. $redis->setnx('key', 'value');
    & I$ U9 S, @2 |9 S' t
  5. 返回已经删除key
    1 p$ W  {7 z* e; V
  6. $redis->delete('key1'); 成功返回1失败返回0( ^7 `6 J. N3 @2 U
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    4 h0 x' a4 h: B, _- y' S
  8. 查询生存时间( R$ i: i2 m: D: g9 y* H* G
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)5 P! T8 `" r, o  b
  10. 同时给多个key赋值,同时设置key0和key18 Y+ r7 t' \, \. N8 N) X0 w/ Z2 q. Y
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    " ~9 G. F3 G- C: g
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值$ C7 l# K7 H$ f2 ]! t
  13. $redis->incr('key1');
    0 a; t! |+ Z: Q6 G+ e
  14. $redis->incrBy('key1', 10);
    8 W  L  x$ O+ w/ g/ |+ X
  15. 减法跟加法一样
    ! X, h% @5 q% M( H
  16. $redis->decr("key1"); 减少19 b# O; ^5 T) W& f+ E9 B4 }
  17. $redis->decrBy("key1",5) 减少51 s( e# u- x4 l4 k: m/ L

  18. & c8 O9 d4 {* @6 q2 n9 f
  19. list相关操作,连表操作# C: v& R* n! z' a% Y
  20. lPush
    $ C2 j' g2 t& |! W% d  V) y2 `. f
  21. $redis->lPush("list", "888");
    , e9 ]/ b, \" F+ K
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数) T. G- u3 h$ Q9 g2 N
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    6 S0 ~6 d% w8 e3 k6 J, s- y) f
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素2 ^# s7 l" u. K# ?
  25. lPushx/rPushx
    + w" b' \9 a0 h) S5 h+ a' X9 L, Y
  26. $redis->lPushx(key, value);9 ?% ?( s! Z; O: Z
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加; Z* k) k' @5 }" q+ [* l
  28. % Z7 P6 V$ j3 d1 P* O2 \
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    2 H% D/ }6 P) y% I/ \3 Z# y8 S1 M  s
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key: M$ ~4 @8 K' p& b& N9 i4 J
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回13 u% w0 a  p9 l3 z7 k
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    2 j  I6 L( Q) [* O8 d/ _, t
  33. sadd s1 zhangsan
    7 E! }; q7 D! N1 W
  34. sadd s1 lisi
    1 {" [9 x: y0 {3 E) ^. K8 _3 r; r
  35. sadd s1 wangwu
    5 J4 D; N6 |; H8 L
  36. sadd t1 yangxingyi
    3 s" ~# C+ H( O4 a8 v
  37. sadd t1 lilei
    # {7 c% _, L* r$ z& g* s* F5 I
  38. sadd t1 zhangsan4 p/ S' R4 T# x6 H  x: k
  39. smembers s1 s1的所有集合内容
    & H" U  o5 s6 T! C
  40. sdiff s1 t1 s1有的,t1没有的,差集7 p9 N$ A6 B. R. Z4 Y
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式. ]7 l! W, u' u! N/ O- w7 m! M
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的7 K' ~6 \0 M/ z8 f' X4 D7 U* R
  43. spop抽奖场景,返回集合里面随机的数
    2 g2 Q9 Q- h, _6 O4 S5 g! a
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    0 j2 O& H9 ^1 L2 r  R# u
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数$ p' P; s. V! s  k8 C; G
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的8 c: ?* l# k( k  s# G# @, W
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    0 G' ^2 @4 m+ {( b4 [
  48. $i = $redis->srandmember('s1');echo $i;
    / u) @# a; G7 k' w5 k1 L8 G
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false* A! z4 l& A1 c& _  g2 D( B# z2 D
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false4 }* h1 C) }4 K1 _4 R

  51. 9 V' x% u7 |1 P6 u) K. `" J: s
  52. zadd key 2 value 有序集合
    4 Q5 Z2 _" L. x! [" \! G
  53. zadd y1 1 zhangsan;
    / J; ~- N& M: ^+ M* \
  54. zadd y1 3 lisi;
    . t( T, z4 ~" u2 h* G2 A
  55. zadd y1 2 wangwu;% U% g1 g7 O9 E2 `
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    ! H7 _0 t' J  I% _
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    , \: Q- b2 s7 {' R' x& r
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    % X+ r0 W/ x6 A! P
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先. y) ?- E( R% }3 q9 w- g* _
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的! M/ X$ G" c/ [+ `/ y
  61. 无序就scard,有序就zcard,有z没有s; Y1 ?& [$ r, G6 C- H; ]
  62. sInterStore: j) a8 X$ z8 N6 n1 N+ v9 n
  63. 求交集并将交集保存到output的集合
    % a0 J& K% a$ q6 O! G& L" U6 I% |  {( @
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')! M. o7 v7 Z0 x  `( e; D

  65. 2 y& N* K' G# L3 w" y( q; f# A$ n
  66. Hash操作& h4 l) t7 S8 j4 r) E5 J
  67. hSet
    8 J8 l$ W5 w/ M
  68. $redis->hSet('h', 'key1', 'hello');
    ; {4 [# V0 _1 S- z5 |% k  Z2 `
  69. 向名称为h的hash中添加元素key1—>hello5 B0 r' @7 |. t' x* q  V5 f7 J) Y
  70. " C2 i; i+ o" S& Z6 l* L2 o! g
  71. hGet+ a4 W% ~! {/ A- a9 e0 W
  72. $redis->hGet('h', 'key1');
    * A* P1 ]+ P6 O: w
  73. 返回名称为h的hash中key1对应的value(hello)
    . |6 g9 w; n8 u+ _: |% C$ E0 R) H
  74. 4 ~, |4 U0 I  N7 D
  75. hLen1 l% N2 K, G% e! d& X) q6 g3 K
  76. $redis->hLen('h');& Z$ S- a$ X8 ?# m" n
  77. 返回名称为h的hash中元素个数
    / ~' q* g6 g* Q# C( z0 R* L
  78. 3 B# g- T; \& r8 E1 C2 b; |: @
  79. hDel2 R0 Z0 p: @8 h' R. r1 r
  80. $redis->hDel('h', 'key1');
    2 X+ G# S: @; O2 }- h% M; I5 W. z
  81. 删除名称为h的hash中键为key1的域
    . [1 y1 I! s$ C4 Q
  82. * f* V5 Z- r9 \  I1 d+ K' a
  83. hKeys
    - w9 b- t3 ^5 T* P! ]% Z
  84. $redis->hKeys('h');
    % P+ Z9 m/ j* Q) p3 V2 w  K4 r
  85. 返回名称为key的hash中所有键  n8 d/ H: _* q
  86. & ~+ E4 y3 D- b4 P7 }# w# {
  87. hVals
    - W8 z! Z! {% J0 C5 D7 A; N
  88. $redis->hVals('h')
    4 e5 c" z; d' E5 O
  89. 返回名称为h的hash中所有键对应的value2 E6 T9 q. \5 ?$ F

  90. 1 r0 c# q% c4 ^# M$ @5 z/ f4 T
  91. hGetAll6 @; U/ F8 h  ?& u2 {
  92. $redis->hGetAll('h');4 F! I8 \9 M5 e  N
  93. 返回名称为h的hash中所有的键(field)及其对应的value, K" I2 S1 [4 r& o$ m/ z5 V
  94. 6 j" k1 l& k4 Q" [2 ?
  95. hExists1 p, y! d4 h) g) f4 |
  96. $redis->hExists('h', 'a');
    7 p0 ^) Q) v3 C- a# ~+ y4 z
  97. 名称为h的hash中是否存在键名字为a的域+ [/ {) n7 F4 i" H4 Y

  98. 7 M* _/ g! _- ~5 H9 ~* D
  99. hIncrBy
    4 D6 _$ W2 S$ o; @* T8 L' P
  100. $redis->hIncrBy('h', 'x', 2);# C3 e" \/ [- a- R* E
  101. 将名称为h的hash中x的value增加2. T' `; b: @0 N
  102. 7 B& T3 v3 r% E7 {
  103. hMset
    3 ]9 G, e; y- z8 r4 o: N
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
      K! x! \+ }  R2 A9 s6 g. {( t
  105. 向名称为key的hash中批量添加元素
    * t* G1 F* Q4 I! y# w

  106. + b3 c4 w- C! B" C' V0 K" S
  107. hMGet1 B" i* J1 J9 y2 Y
  108. $redis->hmGet('h', array('field1', 'field2'));
    . T$ r/ H: r' l: `# P
  109. 返回名称为h的hash中field1,field2对应的value
    9 K$ m' F! L, ~0 G0 g

  110. ; T1 x' u+ a; ^. [  D
  111. redis 操作相关1 u3 x$ [7 Q3 J0 A7 x: K
  112. flushDB
    # L7 z, e+ B- g0 l
  113. 清空当前数据库: a0 s7 \# W7 H) q! B1 p

  114. : R1 y4 e$ v+ e6 U5 N: A7 j7 P, H' b/ j
  115. flushAll
    2 B: ?4 F2 S- H
  116. 清空所有数据库
    , X. @) I6 X' Z! J: I$ h9 w

  117. ) `. O+ L5 Q- w9 r
  118. randomKey) _& T( P/ D; P% D$ F
  119. 随机返回key空间的一个key
    / ]: W/ C9 |$ m: l" w
  120. $key = $redis->randomKey();: `$ P3 \; D- S* ?
  121. 3 Z# V. v; m8 s! j
  122. select
    7 ]# s& @" Y4 ~" N7 M" `9 `
  123. 选择一个数据库1 C. N0 D6 l. [1 p4 Z+ H
  124. move
    " Z2 O7 L( ?# C+ b0 E) Y
  125. 转移一个key到另外一个数据库
    ) p: n0 Y! X0 Q8 v
  126. $redis->select(0); // switch to DB 0
    4 a8 N& x; f* e" I3 B' _- k
  127. $redis->set('x', '42'); // write 42 to x
    ! ^" ^& M( {4 e/ b. _
  128. $redis->move('x', 1); // move to DB 1
    $ j; n( ]1 [7 f5 J+ a
  129. $redis->select(1); // switch to DB 10 F: y, ^' {3 }6 e" l" A/ K
  130. $redis->get('x'); // will return 429 `$ ^% h! ^3 b' I- H( y1 s' b+ `) f

  131. / X9 A4 I: i2 M, ~4 c
  132. rename, renameKey
    . K! u. w8 W. a5 M" a' e( A9 }
  133. 给key重命名, a, _" q: n) ?7 x* }  z
  134. $redis->set('x', '42');0 ?6 U: K8 d  q
  135. $redis->rename('x', 'y');. h& P; S9 c1 V4 Y+ B# a
  136. $redis->get('y'); // → 42* F1 j- N8 Z, Z) o
  137. $redis->get('x'); // → `FALSE`+ Z* O# m, o( M: W' ]

  138. + S% Z" z/ j6 e
  139. renameNx5 i4 h) H0 K7 z* b1 C2 c7 ?
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功9 g8 ?' A& |0 p

  141. + g# ]$ e  j, G' D: F
  142. setTimeout, expire
    ' p" ]& S: v! E& ]9 s, P
  143. 设定一个key的活动时间(s)
    1 Q2 W, `( m9 H4 ?2 Q$ |
  144. $redis->setTimeout('x', 3);+ K. W! X* T0 _+ t8 P* Z8 A, N
  145. " f' q% |+ `0 s# O+ f1 [
  146. expireAt
      M8 ]+ F# A+ L/ b: ?
  147. key存活到一个unix时间戳时间  ^) t: R' d# _, o, t) c8 |, o# d
  148. $redis->expireAt('x', time() + 3);
    / q. k$ a  k) t7 Z1 r) @6 k: Q& V

  149. * ~4 L1 I6 }2 T  Q2 u: b: W
  150. keys, getKeys  ^' b; |- R& X  w
  151. 返回满足给定pattern的所有key
    + q0 m7 H( _) u% m% ^9 _% C/ R$ p1 n4 o
  152. $keyWithUserPrefix = $redis->keys('user*');
    , v  ^* \% B/ B5 ^: E
  153. 5 d6 y+ ]5 \: [4 V5 R0 |, _
  154. dbSize8 E6 X( G8 S4 u3 w" T9 M5 K. Y; K
  155. 查看现在数据库有多少key
    & n  R& Z1 l9 ^0 D
  156. $count = $redis->dbSize();8 F+ N( I  a. t% P' d
  157. 2 d& N# y1 X4 H8 ]: S$ o
  158. auth+ p7 q2 ?0 N! u+ S1 l8 W: E' C4 e
  159. 密码认证
    " \1 w* f7 G) F- t& l
  160. $redis->auth('foobared');
    ) V! {/ Y1 D5 u. G

  161. 0 l" q/ [. I3 p, X% ]/ H
  162. bgrewriteaof7 G1 Y  H7 K- Q( [5 y! R* y) p
  163. 使用aof来进行数据库持久化
    5 x: `+ `: Y, r
  164. $redis->bgrewriteaof();$ k& `# z& q: @, l& |% V3 x

  165. 8 w. R/ \. M; @0 {* O! k
  166. slaveof
    ; g4 k) [$ B$ s: e& @; |
  167. 选择从服务器
    6 ~0 A$ F! u! m3 L5 X
  168. $redis->slaveof('10.0.1.7', 6379);
    ' A' b& B; Y5 F) \% [$ @+ [
  169. 9 `4 D1 n2 W. `9 P
  170. save
    - V% [% F) e: k' q( p
  171. 将数据同步保存到磁盘3 c9 {) `& {0 G) \/ ^
  172. ) `9 j* D; n3 q
  173. bgsave; S3 X$ j! o* ?5 A( ?- m: g5 O* w
  174. 将数据异步保存到磁盘0 M3 c9 [7 v+ h3 |% ]5 v% \

  175. # d/ [. j$ E6 |- z* g, W
  176. lastSave9 s- f+ F  W; P: `9 f
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    : j; B" C" i1 d- _4 K* L
  178. . V' V3 \8 c& @$ x) S
  179. info8 X& a0 W! _8 N
  180. 返回redis的版本信息等详情
    0 \3 g( M5 h5 z0 f, ?

  181. " J* m7 n" v+ V  i, U8 l: F2 e
  182. Redis::__construct构造函数
    $ m' O  N  k. I, q7 ~: Q6 E+ s
  183. $redis = new Redis();) o4 {: Z8 w  \/ K

  184. / r2 K5 b6 j  r" \" R% }( ~
  185. connect, open 链接redis服务- e' _8 Z1 x: M' D/ S  ^
  186. 参数, [/ c( I4 D; H" k# \/ u
  187. host: string,服务地址
    , m+ `6 ?8 R7 s+ m! I2 I/ @
  188. port: int,端口号
    / W0 S2 o4 u: L2 }* f0 C: u
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间); o3 p3 M1 I- u, s$ a  c8 ^
  190. 注: 在redis.conf中也有时间,默认为300
    - Q+ }& e0 y0 K8 i3 w( u2 t
  191. , [% K5 C6 b+ s. [* h: l
  192. pconnect, popen 不会主动关闭的链接4 C, V5 ^6 U8 G- h& i
  193. 参考上面
    * C: l' h) L& ?6 G; j
  194. 2 n6 k( J$ \% {$ H; j- M/ v
  195. setOption 设置redis模式
    " A$ ?2 K0 w% @
  196. ! u2 [* y/ V2 f$ m! U3 p
  197. getOption 查看redis设置的模式
    * L: ]9 z- Z' d9 C2 B8 C+ k0 J1 d

  198. % {! _- ]: I; d8 A
  199. ping 查看连接状态
    " N- e/ o7 W% H$ Z+ g
  200. - L% m2 Z6 ]3 ?2 k. r% s4 |* O, @% r
  201. get 得到某个key的值(string值)$ X  Q, N- g$ {8 i$ A" a2 m. o
  202. 如果该key不存在,return false
    / D9 l$ J# q; T* b7 V) ^
  203. / q6 @8 D. @+ j& d( P% a! p
  204. set 写入key 和 value(string值)0 _0 a9 G3 B; V0 ~
  205. 如果写入成功,return ture
    * s9 b' q+ w1 I  i+ x5 l; Z2 a
  206.   o# s9 U; [, L& r& J& ]
  207. setex 带生存时间的写入值
    + h) v* b5 t' N# M
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL., x& h6 Z0 {6 |' t% k; c
  209. # U3 {' Q) C0 c* ~, E+ f
  210. setnx 判断是否重复的,写入值/ t  G! u" a4 V: s4 G8 A
  211. $redis->setnx('key', 'value');
    $ z8 e9 t  N) a( R2 M0 e
  212. $redis->setnx('key', 'value');
    # o9 x" u: m. @$ T

  213. ( ]: h" M2 D& i  {" t4 P9 C, G
  214. delete  删除指定key的值3 o0 t  Q5 v& y2 W
  215. 返回已经删除key的个数(长整数)" q9 S. _' h6 V8 F' q
  216. $redis->delete('key1', 'key2');  p6 U* ^+ u, v
  217. $redis->delete(array('key3', 'key4', 'key5'));: q2 H* ?8 d/ B- A! `; u

  218. 5 W. K6 E; w; u) o; j8 G" p
  219. ttl
    ; _( l1 z& K+ T/ O
  220. 得到一个key的生存时间- |, U% x# ~; u; w# K9 F  Q- ^

  221. 5 q: }* P9 _' @% g
  222. persist
    8 w) g* ]. E9 I
  223. 移除生存时间到期的key* @- @2 `+ h+ g2 U( ?
  224. 如果key到期 true 如果不到期 false
    * v6 h* }7 O' O5 X
  225.   W6 w; }3 d' j+ }. \7 o
  226. mset (redis版本1.1以上才可以用)
    2 a% v% x+ I& x& C
  227. 同时给多个key赋值
    # X" R) q+ L  ]. O, Z3 t& O
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    4 O2 ^+ D9 ~( {: p" f
  229. + a; v1 v. h% p/ K
  230. 1 p' ~. \/ Z2 G; X& k
  231. & G* F( I1 I- S  P, M$ x6 R  c3 L
  232. multi, exec, discard
    / `  f( w! t# f+ L( Y
  233. 进入或者退出事务模式
    5 S8 J+ L3 d: [% `5 t! V
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI: w& S5 ^3 q6 u
  235. Redis::MULTI:将多个操作当成一个事务执行7 Q/ p: v. p7 d
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证" z1 Q3 P- g+ }) T
  237. discard:删除一个事务
    , x# j: g& f( G. y
  238. 返回值
    ( U3 a1 y: _' Q$ }' h; Z
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    ' e" A- L( Z) n
  240. ' B2 J+ e- U% @) y+ x. ^
  241. watch, unwatch (代码测试后,不能达到所说的效果); d0 S4 D0 y' ?6 k  v& }# k
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    4 t8 V  B. K4 p
  243. unwatch  取消被这个程序监测的所有key5 P& o+ k6 N; j* s5 x8 Y1 P% R1 @
  244. 参数,一对key的列表  _: s2 |4 \3 E+ R! I( x1 `
  245. $redis->watch('x');. J- {$ x5 j" L$ E( \" W, O
  246. $ |  `# k9 r( `; u' [
  247. $ret = $redis->multi() ->incr('x') ->exec();
    ' G3 h8 W7 X; F2 l1 [- x
  248. " j2 ^8 l; ?( T$ c

  249.   {4 j& n) e. _! f
  250. subscribe *
    0 D0 m& c6 p: {( Y
  251. 方法回调。注意,该方法可能在未来里发生改变
    % C' D  F* r  X, `( L* s+ h

  252. ( D9 @8 J5 H+ g6 W8 j& H( `
  253. publish *
    8 r& w+ u2 @# |0 c& ~* M
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变' {7 P! n, C# Z6 @+ G3 F, D: O3 W

  255. $ Z2 M$ ^4 z6 w" L% {0 J$ H; E) k# M
  256. exists9 B% u" O5 A; L
  257. 判断key是否存在。存在 true 不在 false8 R( q+ t4 |8 c- h$ q( s8 _4 Z

  258. % c2 w. {2 ?$ V" M4 s' p) e0 B
  259. incr, incrBy  x- i; M% q" f, K# @, ?* E
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值1 E" w9 C9 u. m" [
  261. $redis->incr('key1');
    $ P2 r: X  Y& s+ I
  262. $redis->incrBy('key1', 10);9 M& R" D2 O* p% q4 m( h8 U
  263. : {$ B- I. k- q% m/ X
  264. decr, decrBy
    4 ^" a* V+ e$ U- R6 i! `5 E
  265. 做减法,使用方法同incr. K/ H4 f' s+ `8 d% n5 E' ]
  266. ( t9 s$ G9 S$ ], |1 s- v
  267. getMultiple
      b& y8 ^2 X/ L8 ~% w
  268. 传参# Z% ?' m" M: m5 Z0 f% R
  269. 由key组成的数组$ k# a8 a' l8 K6 D5 i+ X- v8 P2 `
  270. 返回参数
    6 C2 p, G; n8 K% }% {  I
  271. 如果key存在返回value,不存在返回false$ p9 J+ Q) a# y8 Q2 ~
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ( h; C5 p8 E! ^
  273. $redis->lRem('key1', 'A', 2);
    9 q' I; }' d& V( }
  274. $redis->lRange('key1', 0, -1);
    9 {# H+ I% n# j9 r. s. D
  275. , M' P8 \( H5 l  M
  276. list相关操作7 s; c' q$ H& n* g
  277. lPush
    - s0 L' r7 j( h/ S
  278. $redis->lPush(key, value);
    : ^. l* J& [( q+ a
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    6 v( J8 j3 W* q( R/ L5 y

  280. 6 m% M5 Z  K% \2 [
  281. rPush2 w* X6 |5 ]0 l9 O- y
  282. $redis->rPush(key, value);
    3 M" ^/ i# i( Z; |/ n3 c
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    ! f* w9 L7 g0 c
  284.   n. z7 l! M- f5 y) ~) `/ F7 L
  285. lPushx/rPushx/ C3 m4 _# ^* k# R6 M! \, I
  286. $redis->lPushx(key, value);
    ' }- ]7 `! U# c
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    9 B0 s" X! c1 L$ e! X5 g

  288. 8 i- G; U$ I" M
  289. lPop/rPop9 B1 l4 N6 S, ]6 Y5 q( d3 }
  290. $redis->lPop('key');
    2 p- [& ]" |! O& p% r. I' v
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素! ~/ z8 x  e- Z  f/ F1 C& z
  292. ) R( r2 ~# O! h# h: x. ?
  293. blPop/brPop1 }" }& w& g- }: e" q+ r
  294. $redis->blPop('key1', 'key2', 10);) }$ c2 m+ P6 F7 n- s7 C4 v& H
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    7 [. D) m! R6 I  \" |
  296. # {- W; o  J# r. K
  297. lSize* O9 J+ S" _* `9 i1 ]$ z
  298. $redis->lSize('key');7 @& P. D3 A* e1 y4 @% M
  299. 返回名称为key的list有多少个元素  v) \9 t* t% h! g; ^

  300. , s, o7 Z- F5 t8 V
  301. lIndex, lGet4 J5 _% [9 T% b3 R; T+ y
  302. $redis->lGet('key', 0);
    " C* _# b8 b, c
  303. 返回名称为key的list中index位置的元素
    : x" l- s0 w6 O2 e" L% C0 L

  304. , L! N& p2 N  X# I8 h5 W6 |
  305. lSet
    $ {" U7 y# j  ~2 A" |# Z
  306. $redis->lSet('key', 0, 'X');9 {2 L; O# S; y+ h) \
  307. 给名称为key的list中index位置的元素赋值为value
    . u$ L3 c5 F: O+ @2 s) w

  308. ' M$ C3 d7 j* i6 D1 Q  ]
  309. lRange, lGetRange
    7 V" w4 k. S6 I8 d  u/ q6 K- A* F
  310. $redis->lRange('key1', 0, -1);
    # v; l. Z. v3 g4 n8 @
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    $ W6 l0 Y9 D/ N4 c6 W: j
  312. $ @! |$ K  C* j9 C. }. K
  313. lTrim, listTrim: B. [. ]+ W( p! S
  314. $redis->lTrim('key', start, end);4 N, {! t+ B5 b( J# K" X. z5 L9 ~; w
  315. 截取名称为key的list,保留start至end之间的元素
    ) i( Q. ^7 R: x' Y: T

  316. " L. c# X) A$ B
  317. lRem, lRemove3 y0 k% U" n/ B" D2 b* \/ [. k
  318. $redis->lRem('key', 'A', 2);
    5 I7 B8 i: B+ x' \3 a1 C( [( Y5 ?9 `
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素5 d. p' z9 _) k0 a1 w# S
  320. $ f+ N9 z+ Z, c6 }; `. ^) H
  321. lInsert
    % p2 q5 e) j- K% }4 ]
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    + ~1 \' E+ \; `% c
  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');
    ! ~. |2 ~+ e  c1 r! k, Y, J+ r  d1 i
  324. $redis->lRange('key1', 0, -1);
      o0 p/ r6 Y4 G; r7 U
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');' v( {/ z) ]# C6 c0 A
  326. $redis->lRange('key1', 0, -1);3 Y. x' D; t: g, ]8 `
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    ' O! x, n8 S1 I% a
  328. ) M& r# q$ N1 u
  329. rpoplpush
    2 e6 |& S2 d$ _# i1 I/ A
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    ( v2 \  I. y$ a4 J+ B9 s5 X
  331. $redis->delete('x', 'y');* f1 `; ]: x' i$ b+ s1 k
  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'));9 H3 x# {' e& m
  333. var_dump($redis->lRange('x', 0, -1));7 k+ ^. t& J, L6 _2 a7 \2 E
  334. var_dump($redis->lRange('y', 0, -1)); 5 _6 o$ P& s; d: U# y8 m# |
  335. 0 q; G. z! b3 `$ d& J# m
  336. string(3) "abc" : y4 f( y6 A9 [
  337. array(1) { [0]=> string(3) "def" } ' j) U" @$ Z8 s2 U: N0 [
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }1 m6 E# p1 U! F, U0 S& b9 l
  339. 3 {. R3 ^) r. E
  340. SET操作相关2 P. J& D& @! z8 n0 e" r
  341. sAdd% Z* q& f+ Q- m4 d; Y8 }
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    # V$ H: e  L1 Q$ L8 G
  343. $redis->sAdd(key , value);
    / c$ D" R' @4 [! P1 [
  344. ; V* f2 R3 }( P2 S2 b
  345. sRem, sRemove
    - ^5 l6 f- k& h: W/ C# J
  346. 删除名称为key的set中的元素value
      q3 J! F& C. z6 X4 J% R. m7 S
  347. $redis->sAdd('key1' , 'set1');
    7 F, `2 w+ m8 ~
  348. $redis->sAdd('key1' , 'set2');5 X: j8 ]) N8 @- _' r2 W* ]. R
  349. $redis->sAdd('key1' , 'set3');3 H7 o+ S0 j# T* _, O* y
  350. $redis->sRem('key1', 'set2');
    & K' K- m5 G0 L3 M$ E- A- j

  351. ! _7 A+ ^. ]) R* s
  352. sMove
    % D) X/ x  V: Y# e* K  M/ B3 a
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    / g: A) w- S) w2 t6 E2 q
  354. $redis->sMove(seckey, dstkey, value);
      e' e) |$ P; @* V* g

  355. + K6 I7 ]- j% R2 g/ t5 k
  356. sIsMember, sContains. O4 A+ t/ x4 i( x) l
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    1 V0 T% j$ `4 R% ~7 W( M
  358. $redis->sIsMember(key, value);
    7 F( \6 o7 i8 D4 j6 y  H- a

  359. 4 m' n- x' e' _
  360. sCard, sSize
    ; e, T8 k; R+ _7 z! [& D+ _
  361. 返回名称为key的set的元素个数- H/ l, A1 Z: I' ^8 t
  362. ; D- t2 o1 @) [# ^
  363. sPop6 g  D# i  o5 J( A: d
  364. 随机返回并删除名称为key的set中一个元素$ s$ _. K& ^; G5 G+ n& A
  365. ) }5 c8 B2 W- p% H9 m9 ~
  366. sRandMember0 o) F8 k4 f1 n) B% U* Z, n
  367. 随机返回名称为key的set中一个元素,不删除! _/ L/ a) t* W$ [8 v2 H) k# M

  368. * ]6 w) a' z4 J# {
  369. sInter
    " x4 b+ v. n" y1 i! g# T
  370. 求交集
    3 D3 S& \5 S( c1 W  ~" o3 Z0 b* g

  371. 5 v, d. P& d# x- c; v
  372. sInterStore
    ; E; R; o  D/ `; E  Q2 b! }
  373. 求交集并将交集保存到output的集合
    1 M, y4 E7 F& h- ]
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')! G2 I' _' T  Q% a7 p. k) @

  375. ' O; v6 J/ S( ~: ?5 }9 K
  376. sUnion/ s+ z% f3 b; G' ?% ]3 S2 {. u
  377. 求并集
    - C) Q; x& [5 E( W
  378. $redis->sUnion('s0', 's1', 's2');
    0 i4 D% G( y. M! g) M
  379. s0,s1,s2 同时求并集+ _) i0 K0 {& r
  380. 3 f7 h- b2 b5 C
  381. sUnionStore* L5 B! a5 G. a0 E  g7 N5 t
  382. 求并集并将并集保存到output的集合' H( R8 K& Y- g2 M4 y1 D6 m: J
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');- J% R" o# [2 J5 C0 ^
  384. : J; v! T! v# H+ }0 K3 `9 k5 r3 x3 i
  385. sDiff
    0 f, O/ r  P$ H5 f- h! U
  386. 求差集
    + u0 P+ n) Q8 {# U7 k

  387. ' m, E8 A# B* n! k
  388. sDiffStore
    0 m" h* U  d9 l  Z3 N/ p
  389. 求差集并将差集保存到output的集合3 g' }0 @0 F* Q+ m% m

  390. 4 M7 C# b" b4 c1 k3 X7 o
  391. sMembers, sGetMembers* _5 v  q$ v7 {. L" t
  392. 返回名称为key的set的所有元素) G3 y# {% R% a" o9 ~+ _% F
  393. ) i6 W$ O; P0 X; m0 j
  394. sort. @* Z+ T7 L+ h8 V+ g' v
  395. 排序,分页等
    7 |+ @7 d. h) V, e9 o) `- O# I1 t! r
  396. 参数& Q3 }2 f% v6 }5 {  E* I. i) a
  397. 'by' => 'some_pattern_*',
    ) ~! f$ V: F, D6 T: l
  398. 'limit' => array(0, 1),
    % x6 |; M+ @! R* F: k: h8 H4 O0 d
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    2 |' i  ?! o3 k( \% K
  400. 'sort' => 'asc' or 'desc',3 o, }1 _2 L8 ~+ w# e' N7 g
  401. 'alpha' => TRUE,
    * d  t: W5 `7 L9 j3 {7 R- {/ s, T
  402. 'store' => 'external-key'0 Y$ y8 c8 k1 i& {' E
  403. 例子
    : |, z* ^2 M1 l5 \; ~
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    9 l2 o  d! _8 L0 h( g9 U- \7 V
  405. var_dump($redis->sort('s')); // 1,2,3,4,5! Q6 q' y, L. A7 r
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    * }* |: \2 r, u1 i9 L2 f6 T! D
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5: L2 G' v% K1 {+ H# O
  408. " S/ r% S* q# ]0 N
  409. string命令6 q8 N. y9 \5 `. r' r% n7 W
  410. getSet
    . K& ^9 n3 R; ^$ G1 _5 R
  411. 返回原来key中的值,并将value写入key5 a: i/ B0 c2 e' X3 d. i
  412. $redis->set('x', '42');5 F! K- F% \" j
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    6 M/ j1 G) f5 p  m% |
  414. $newValue = $redis->get('x')' // return 'lol'
      Z! K/ H8 X2 }
  415. 1 T, l% i5 u! U0 [7 s$ b
  416. append
    . G$ ]) l* o  ^# n4 [' ^6 e# h
  417. string,名称为key的string的值在后面加上value
    1 _5 u. B5 Y- ?
  418. $redis->set('key', 'value1');
    0 A6 z% ]+ t  P! B0 d+ Q3 i0 L8 t  h" G
  419. $redis->append('key', 'value2');
    ; J1 F' L& Z. ]# x$ x
  420. $redis->get('key');
    , s  x! J& z7 O- @% ~# M$ D4 w
  421. ' d' C! K, e! ]- x/ y
  422. getRange (方法不存在)
    6 R' h, l; y. Z1 `3 G
  423. 返回名称为key的string中start至end之间的字符. M6 V) @( i2 u+ X( y
  424. $redis->set('key', 'string value');
    $ Z5 Q5 `7 N5 t  S; S2 A
  425. $redis->getRange('key', 0, 5);9 ?3 l- q6 Y+ ~- X" y+ E- C3 h
  426. $redis->getRange('key', -5, -1);) h9 ^) y; X9 v* F% b

  427. + J3 h0 g+ k2 L8 e
  428. setRange (方法不存在)
    " x3 R" B1 y: p, R8 h& b
  429. 改变key的string中start至end之间的字符为value
    ( x0 |3 _: [; d# I
  430. $redis->set('key', 'Hello world');
    & y5 x4 m$ A: ~. B4 |- l/ g
  431. $redis->setRange('key', 6, "redis");) _6 T8 l1 d3 ~
  432. $redis->get('key');! [( C: H/ R4 I
  433. & d6 U9 B/ Z: y; O
  434. strlen# l% c/ V; O( J& N. }" P3 B
  435. 得到key的string的长度
    " \% h# }: v4 O& G# ]! ?5 L
  436. $redis->strlen('key');' M, F0 P( j( r1 p! B9 c( b

  437. 7 l; g! _# l; P% t: _
  438. getBit/setBit
      t+ N0 H. [( r1 n
  439. 返回2进制信息: I' A) j1 l  P3 V- v7 r9 E, E
  440. % H# w2 q( e" ~% P4 o
  441. zset(sorted set)操作相关
    - K6 d( E6 M9 _( A$ @5 g
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。/ C) u& x* }" h
  443. $redis->zAdd('key', 1, 'val1');; H1 m0 n) S) [8 K* l# Y5 f& Q
  444. $redis->zAdd('key', 0, 'val0');
    / y, T5 ?" }) J9 @  [
  445. $redis->zAdd('key', 5, 'val5');
    0 \' R) _; p0 m+ K* l1 S
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    ) f, L3 T! r; y8 p- }+ ]9 F3 d
  447. 5 c* Q' u" P* p
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素0 _0 I/ }# Q- t0 ^0 _, z
  449. $redis->zAdd('key1', 0, 'val0');
    ' r; k! R% n" g! q
  450. $redis->zAdd('key1', 2, 'val2');
    4 r$ D! H$ i8 N, w4 ^
  451. $redis->zAdd('key1', 10, 'val10');
    * S2 O/ ?( k$ P# Z
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);+ {0 E2 U6 b9 b. I5 A- l

  453. - z3 [8 }; n. O
  454. zDelete, zRem
    4 D& M7 N3 T! u
  455. zRem(key, member) :删除名称为key的zset中的元素member
    & f+ F; d) _7 X
  456. $redis->zAdd('key', 0, 'val0');
    ! y; T3 ~+ O' m8 s
  457. $redis->zAdd('key', 2, 'val2');3 M7 K1 K" t- H: Y% R1 S+ ?
  458. $redis->zAdd('key', 10, 'val10');- Z. s; O' u/ B
  459. $redis->zDelete('key', 'val2');7 |' m4 s* q6 H
  460. $redis->zRange('key', 0, -1); 9 n; _' r+ i$ R" e
  461. * B5 B3 h" i2 W; F. `
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出- t( A$ q3 o9 L" h, Z1 _6 d* `
  463. $redis->zAdd('key', 0, 'val0');# Q7 s" H$ s7 Q' x
  464. $redis->zAdd('key', 2, 'val2');9 L3 p. M& b5 r! c0 `
  465. $redis->zAdd('key', 10, 'val10');) O0 @7 `! E+ C$ h. |+ k0 S
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);* _) v. @" n  G2 @2 x+ c

  467. / x' A( s% R+ p# B
  468. zRangeByScore, zRevRangeByScore
    ! [9 c, U  e' Y  y4 e( H. p0 A. c
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    " j0 e7 y9 a: t
  470. 返回名称为key的zset中score >= star且score <= end的所有元素2 V# s' L) }! |) k4 t( J' s$ ^
  471. ! ?8 J* ]% ]5 u+ m( K4 \' R
  472. zCount5 D4 N) D. i2 q* c' ]
  473. $redis->zCount(key, star, end);
    1 j2 M4 [: w3 |7 |
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    9 m; ~  O; z) h/ j

  475. " I, w8 m4 N  r  k2 M* ~5 l
  476. zRemRangeByScore, zDeleteRangeByScore' X3 m, k* A# h  f9 f
  477. $redis->zRemRangeByScore('key', star, end);( F5 a8 |* }" u
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    : h" x& U# j, ~6 C, E7 u  v  l

  479. 4 n. p6 m) G" F3 p0 m: u
  480. zSize, zCard
    0 u6 t* K  f  V6 k
  481. 返回名称为key的zset的所有元素的个数1 u0 V' B5 j' @" z$ B/ ]. k1 W! Z

  482.   E% J1 N- j+ D: \( s0 i
  483. zScore
      ~) X$ d" X8 g' m% t8 R' i
  484. $redis->zScore(key, val2);
    2 a7 e- h) L2 L, k; _7 z& f$ D
  485. 返回名称为key的zset中元素val2的score  O" o9 }3 \4 E

  486. 7 z* w' h) ]3 \6 z' \
  487. zRank, zRevRank
    ! f: m2 L* G& |- w, j
  488. $redis->zRevRank(key, val);: g5 v+ {; ?/ `: \( g
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序7 M8 ~* M7 f6 I) _; U* Y
  490. / J1 M& |4 P4 \
  491. zIncrBy1 Y8 E( n  z$ L  {5 q3 g
  492. $redis->zIncrBy('key', increment, 'member');
    . {) @' |) x, Z, h7 K
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment& y& o# U; o) I$ k, U# ?/ A

  494. & m" C; Q9 W: t$ L/ N1 V
  495. zUnion/zInter3 E9 C/ U  f4 l  D5 ]
  496. 参数
    ! v6 y, W4 K4 t& n
  497. keyOutput9 d1 M. k( s. j1 u( x- G) {0 r! [
  498. arrayZSetKeys
    " X& |* c5 D/ j/ A: |
  499. arrayWeights
    ( r4 y" N' k6 S  @! w
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    , T/ t: h. U" p" O. m
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。3 F$ u7 f: n2 e6 L* m
复制代码
% H+ T0 K3 h1 G
3 F& q! k6 H$ j
: {6 p* h5 a1 x* T  ?/ z/ |! m! a
8 y9 r5 Q5 ~" N1 }* h. L5 C: B0 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    8 {, M3 I6 b: @$ X7 C8 w6 S
  2. //连接redis服务器
    % {, H0 N$ g+ c+ j& p! L# `
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 10:10 , Processed in 0.054073 second(s), 19 queries .

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