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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php( b5 l  p. b" s! |; F! ]
  2. $redis = new Redis();  
    . m9 ~' X8 D, ]* q
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    & v6 a/ n" H7 c+ X: V0 V1 ^4 j- [! y9 }
  4. $redis->auth('mypassword');//my redis password
    0 W/ L3 V" w' J% r) n
  5. $redis ->set( "test" , "Hello World");  
    " [0 m. b- G3 t" r7 z$ Y
  6. echo $redis ->get( "test");4 F$ r6 R+ \9 n- p
复制代码
php操作redis函数封装
  1. /**2 p& Y+ [9 c- V8 u6 f
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    / d0 T0 d! }& l  {1 l
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    - _- U" a! ]) M$ @2 _3 S9 L
  4. */2 H  o' r' {; z5 R; |
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){& j' A; T  M9 J6 ~) a5 j6 ?
  6.     if(!$key||!$value) return false;
    9 S# n9 N$ s; J& e! M
  7.     $host = $host?$host:getenv('REDIS_HOST');/ k% E% D* T  B+ l2 k) b
  8.     $port = $port?$port:getenv('REDIS_PORT');
    , d& \9 U/ f8 p0 B2 B
  9.     $redis = new Redis();
    . z% o5 z- R$ |8 A! s
  10.     $redis->connect($host, $port);
    8 Y# `5 w2 G& {/ l/ j2 ?1 X
  11.     $value = is_array($value)?json_encode($value):$value;
    6 E1 a, U! G$ ~0 [# z6 c
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    # z& J0 t1 E% t+ }2 U
  13. }) s7 z- \6 G! ^0 a* N5 N
  14. /**! Q+ ~" a( o/ J( Q! H; W
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    3 L  f+ ^7 h% _* \6 k7 `2 S; J& l
  16. */7 R, o" N8 S5 [: s# d
  17. function RedisGet($key,$host='',$port=''){" p1 z, J$ e  r: I. B
  18.     $redis = new Redis();" }$ |9 N. {3 p3 u" y# a
  19.     $host = $host?$host:getenv('REDIS_HOST');
    - Y  K3 f/ Z: E8 B8 ]
  20.     $port = $port?$port:getenv('REDIS_PORT');
    0 w+ |; l8 W1 t6 g* H9 o! a
  21.     $redis->connect($host, $port);* S7 U* W$ S- h4 ^0 |3 s
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    3 g! _0 E9 ^+ R$ k" ^8 W  V
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);# {7 |" p( S0 j, N
  24. }- `$ K! D8 q+ |6 L1 V" b# N( J
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
) e4 B2 B( O( T  {) g6 e
  1. setex 带生存时间的写入值1 @4 d: M1 ^+ [1 n4 r8 b& C
  2. $redis->setex('key', 3600, 'value'); 7 ^$ b& W+ F. `, {1 I" Q5 ^
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    / L3 Q0 ~8 D( K
  4. $redis->setnx('key', 'value');
    " E' B, B, u- @/ k
  5. 返回已经删除key6 |) W1 S0 z3 T2 z7 X7 u* W
  6. $redis->delete('key1'); 成功返回1失败返回0
    ; f1 u! @3 _* p. {- g4 D4 A
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0$ B+ B1 }5 A% O- ]* T  T
  8. 查询生存时间2 u8 K2 E8 m% }# {5 u4 E
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    7 c; B" l" y6 I) {
  10. 同时给多个key赋值,同时设置key0和key1
    " f" n/ [4 Y8 w& k' N
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));/ N6 X/ E; U) ^# }" Q3 o
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值( {& a2 L# J( r: E# P. S
  13. $redis->incr('key1');
    ) s8 t9 u" z% _% U
  14. $redis->incrBy('key1', 10);
    : r% e8 I7 T$ ?0 @- h
  15. 减法跟加法一样! k% c  T" U" e+ B# F  T
  16. $redis->decr("key1"); 减少1
    & m' \  T! `& l+ ?+ Q' a
  17. $redis->decrBy("key1",5) 减少5
    % _7 H. h: g% S( \# v; m# Y

  18.   m( k0 L0 g; ?
  19. list相关操作,连表操作, a( y, b/ t% A
  20. lPush) `  H! p7 s. Z) B6 h2 |) q7 ^& n
  21. $redis->lPush("list", "888");2 l0 C3 V$ i# A$ Z
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数# ]6 p3 g: _# J
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式. {) ]/ q5 f' O! m! u" b& {
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    : N- ^9 }, ?: A( R% x
  25. lPushx/rPushx/ b3 q- D# M/ N$ A
  26. $redis->lPushx(key, value);0 I9 `5 Y! v2 |
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ; a" x& B6 @7 T2 Z
  28. 7 b- Z: [4 ~0 q
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    ' d' \1 }# U6 H: C$ h! D
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key. S% |$ Y6 Q6 u$ y
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    2 }  |. {" R% {! {
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序6 i1 ~* j( b+ A- Z4 ?! b, O! e8 m
  33. sadd s1 zhangsan" v. n2 S- h3 U: ]3 e" \* R' m" y
  34. sadd s1 lisi. L8 Q, I0 D% ~; s) \3 f
  35. sadd s1 wangwu( |2 j% }# t2 b; l: D7 [  |
  36. sadd t1 yangxingyi- }' ?  Y+ T+ S1 y9 }1 {# X
  37. sadd t1 lilei
    0 X7 x6 R" W) R% P( v/ M' r2 x
  38. sadd t1 zhangsan
    * m3 z( x7 K7 d) l+ O5 W
  39. smembers s1 s1的所有集合内容' f8 S9 z3 C5 }3 Y* H1 W; q9 l
  40. sdiff s1 t1 s1有的,t1没有的,差集
    $ D2 J- _/ H+ q' f4 |# ]2 \0 m
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    " x# H  c3 ~1 G
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的# p/ l  ?, v, V) h, O1 W' t: d/ @: `
  43. spop抽奖场景,返回集合里面随机的数
    / P" E$ w; o6 N' }
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    3 e  n0 v3 j2 ~- s8 ~! k, |  S) s- @# F( g
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    1 L% M. B" e; \4 R4 f2 f: n
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    , O" S2 @( w3 y
  47. 随机返回集合里面的一个元素,但不删除,重复中奖# H5 P% t+ ]1 x% L) U- S
  48. $i = $redis->srandmember('s1');echo $i;
    4 Y9 ^$ r# |+ Z  N* E5 m( `
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    , d8 D$ P0 F# J* t
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    " G# I5 G+ U/ M. ?) E
  51. ' E+ {" q& Z$ ^! [" \" D
  52. zadd key 2 value 有序集合% _) }9 f$ o- v  l4 B
  53. zadd y1 1 zhangsan;: ^/ t& P6 @# {2 [, o: B
  54. zadd y1 3 lisi;- `6 l) _7 c; P
  55. zadd y1 2 wangwu;
    0 @! D4 J1 o$ D# j  y  ?
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
      l7 \4 q" {) W) o) U! \9 v. L
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);* b. y& [& Y7 E8 N- ]& X
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键% C. o# ]5 Z2 f4 e6 p0 ]
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
      M8 C3 e) V$ g. W
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    5 f, e  P6 R# Y- F" q/ w
  61. 无序就scard,有序就zcard,有z没有s5 o- N3 Q; i2 w. q8 ?
  62. sInterStore1 u- ]* s. P9 r5 t6 ]- y3 \
  63. 求交集并将交集保存到output的集合3 |# @4 D' i  x0 d+ r
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')6 K: r+ e1 C7 M6 j4 ^2 Q8 |. A
  65. + K, r% b/ F+ X4 L5 z* C' |
  66. Hash操作
    : s% K$ G8 n* q, Z1 n' i2 a
  67. hSet0 g+ F8 ~# n% g- y9 F9 M
  68. $redis->hSet('h', 'key1', 'hello');3 y7 W7 G+ i, t; i8 p2 k& P; q
  69. 向名称为h的hash中添加元素key1—>hello+ p# r2 ~: T0 {) H; l4 r

  70. & L- f5 K' r: @, i% ~) w
  71. hGet
    - X7 u% N+ x! Z( z! a4 Z3 [
  72. $redis->hGet('h', 'key1');
    5 p0 m8 G" O7 q- r% c+ b
  73. 返回名称为h的hash中key1对应的value(hello)* O8 u+ ^9 n4 y' i& b

  74. # O+ L7 q- r& }- j: V0 o
  75. hLen
      B8 y5 u" C' L
  76. $redis->hLen('h');
    . J$ C; I7 x4 \2 J& _4 J5 H
  77. 返回名称为h的hash中元素个数
    + M1 x+ _1 t/ `- Z. ?

  78. : I6 g% ~7 l) A
  79. hDel
    9 p" q+ j; v; i1 U% K+ z, a2 @
  80. $redis->hDel('h', 'key1');* ?9 F. X; E% F7 X
  81. 删除名称为h的hash中键为key1的域% Q, x, w8 G; o
  82. # |8 ^0 v* r# Z! Q& k+ M+ p
  83. hKeys+ \+ C2 z; `# g2 w( K6 F
  84. $redis->hKeys('h');; f) m# i( @! }! e- c- @1 r* K* t/ P
  85. 返回名称为key的hash中所有键8 a6 A' J0 J- `+ T; f
  86. 6 v1 C( ^" E4 p; A
  87. hVals
    7 s* G: g" t& _- g- g
  88. $redis->hVals('h')7 T& [+ R  A/ E8 V- V3 P3 x
  89. 返回名称为h的hash中所有键对应的value
    ; i' X% P8 ?, v8 ^, A! |
  90. 6 R% [! [: D" d; R- N, C
  91. hGetAll
    1 v. \/ y* ^6 [+ e) z9 q
  92. $redis->hGetAll('h');
    + ]+ ~* R/ y# V, L, |3 i3 b! T
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    0 X  a+ e  [0 L* n) ?' P

  94. 6 C" s$ t" F# |: b) X( K
  95. hExists* }4 \/ r. a: Q6 q9 D! L8 g
  96. $redis->hExists('h', 'a');
    . a6 b# c+ T+ s# u- E) R1 i
  97. 名称为h的hash中是否存在键名字为a的域$ m- }6 h: L! o  g$ u& o

  98. 2 f! Q, N& u6 L* f' `8 h) ^
  99. hIncrBy
    9 |. f( x& h* A! ?" h
  100. $redis->hIncrBy('h', 'x', 2);5 g2 \+ ~1 O' ]& F* P3 D) C
  101. 将名称为h的hash中x的value增加2
    * t+ o; P8 D) |9 V) g5 p8 N: T

  102. , \- D1 E( E  i" K: X
  103. hMset* D3 n& N1 g& F0 v7 J$ Y, t% Q) H
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));, t& N9 Y: V$ {: D" U  V9 d
  105. 向名称为key的hash中批量添加元素
    : _7 C! g: u7 Q  B# z8 q9 p+ Q
  106. ) w- F! h9 B. z, J) X; R* c
  107. hMGet
    . I  T  s$ ^6 `$ p$ Q2 @
  108. $redis->hmGet('h', array('field1', 'field2'));% ~/ }  V" ]4 l1 `6 A/ g
  109. 返回名称为h的hash中field1,field2对应的value
    / ~8 ^! E' @( \4 _4 c4 S

  110. - Z1 m# b6 {3 T# c: Q) _
  111. redis 操作相关& c( i7 X3 I% a) i6 b* R, |
  112. flushDB
    7 s2 E: L% Z9 X% s/ n/ `5 g6 s  s
  113. 清空当前数据库
      i6 @: d3 p' U

  114.   J1 x- t# ]) o1 N- O. G! k
  115. flushAll
    8 X/ i4 Y) w0 d/ e9 h: _6 w
  116. 清空所有数据库
    ( i" j7 q2 F  H9 X" f# l

  117. & T" e8 |) Y! K; U9 F/ X# Y
  118. randomKey. i( T1 C' l0 t2 c
  119. 随机返回key空间的一个key2 f2 W; ]+ P" o9 l  V
  120. $key = $redis->randomKey();
    6 u5 T7 g# u2 ?5 z  ?

  121. & F' o/ i' B5 N( G1 m  R3 L
  122. select) n& {5 @7 T6 L
  123. 选择一个数据库
    1 W4 B# A) ]% T; t5 V
  124. move$ m1 }1 _5 j) q0 Z' p. I% L
  125. 转移一个key到另外一个数据库% \$ w0 x6 ~+ W) O9 p
  126. $redis->select(0); // switch to DB 0
    6 T- q# E/ |& z' s
  127. $redis->set('x', '42'); // write 42 to x
    & V5 X- j+ O4 S. }9 c
  128. $redis->move('x', 1); // move to DB 17 x# Z* W& H  B7 g: d
  129. $redis->select(1); // switch to DB 1
    1 U7 e( r; S3 X& Y, |3 U
  130. $redis->get('x'); // will return 42& k, e: R* b2 d7 X4 e

  131. 0 q4 b: K/ h2 T8 A
  132. rename, renameKey
    4 [9 Y* {- d3 u* N! P6 n% e5 n
  133. 给key重命名
    1 Y' N& |6 y- p4 a& D$ G
  134. $redis->set('x', '42');
    4 q% o4 P4 Q5 U& g" n
  135. $redis->rename('x', 'y');
    0 W: O: {9 Y& L$ [. f
  136. $redis->get('y'); // → 422 q4 O' Q* D9 g0 n4 I. e9 w
  137. $redis->get('x'); // → `FALSE`) X" L5 n5 i6 h5 l1 F7 N2 F

  138. ! n3 V& w1 `+ A% Y! l, ]5 m
  139. renameNx
    ( H/ j7 W+ b7 F! v+ T
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功, I1 J& X8 R# S9 b! x7 i

  141. 6 ?! C3 P. w0 \# O
  142. setTimeout, expire& G- X( f8 y: |" |* r
  143. 设定一个key的活动时间(s)
    3 R8 ^% t$ Z' ]4 M' v* |
  144. $redis->setTimeout('x', 3);2 V9 r0 r& [! z. |( D/ Y$ G
  145. 5 K) j0 A7 G' h' H
  146. expireAt
    0 ^% W3 s" b4 k
  147. key存活到一个unix时间戳时间8 ~4 E8 Q- H6 k' b# l3 d6 e
  148. $redis->expireAt('x', time() + 3);  d. o! h" d8 {* v; |5 j5 z
  149. 5 D2 C# S. h3 i% U  B* Q
  150. keys, getKeys, q) ]- O( g/ @. D5 p. F% `
  151. 返回满足给定pattern的所有key) B3 U, U; Z3 k  f5 P7 a& @
  152. $keyWithUserPrefix = $redis->keys('user*');) q, d& l% W& ~. c& \

  153. 6 d6 J& Z  F9 e! t$ T
  154. dbSize4 C: Y& @. i: V9 T4 _
  155. 查看现在数据库有多少key
    9 L3 j/ u* `' E* z
  156. $count = $redis->dbSize();% K( U4 n' @. }, H; a5 U

  157. ) ?. H. \( t+ n, a( V: J1 J
  158. auth( g" W/ w' A. x: I. a' T
  159. 密码认证/ |! r- o; x2 c/ U
  160. $redis->auth('foobared');0 S; q2 g  F( J
  161. $ t7 K/ b6 q5 V5 O
  162. bgrewriteaof  h/ G: \! ~2 h/ \% W1 V
  163. 使用aof来进行数据库持久化
    " Z9 U% E. W$ i; s8 Q6 H
  164. $redis->bgrewriteaof();
    * Z" G- R4 h3 M: ]3 K/ _- Y9 G& [

  165.   s% B* g2 Q; E. u
  166. slaveof
    5 U4 F6 c7 r/ z" Z
  167. 选择从服务器
    , b/ Y7 ]# v$ a" m+ G
  168. $redis->slaveof('10.0.1.7', 6379);
    ! [7 ]6 I6 Y8 L6 q, |+ i

  169. 5 ?2 d$ r- d, \) x0 `9 f
  170. save
    ( d* p# v+ B. f! R: t% s  X5 @: j
  171. 将数据同步保存到磁盘7 `* ]) v/ J" Q& b: a8 @1 }: y
  172. 6 F; E% N; S2 @( U0 t: ~
  173. bgsave3 h& O) x! U( f/ R7 c4 ?, t
  174. 将数据异步保存到磁盘6 K. P& L0 C2 F  J. Z0 {8 W

  175. / h, S1 y. M8 H1 V5 T: f& n
  176. lastSave# w- f$ \$ O) W0 W
  177. 返回上次成功将数据保存到磁盘的Unix时戳  s" h& v! f8 ^# L, q( v5 O# u- |

  178. / V1 o& g/ y8 e! i& u5 T! ]0 w9 }! b) I
  179. info  t: q0 j/ B) {9 ^3 N' @9 K7 n6 }
  180. 返回redis的版本信息等详情( M8 i! B! K9 \$ h& g

  181. 4 m1 L9 L1 [- [. T# H: g' ^
  182. Redis::__construct构造函数  L; O7 y" P; g1 l
  183. $redis = new Redis();7 K- ?* k  ~+ w- l* J

  184. 3 e; q$ l+ G5 Q; W$ K
  185. connect, open 链接redis服务
    # [! f1 Q5 I/ ]/ s$ \
  186. 参数3 Z% i. T# @! M' h" o
  187. host: string,服务地址
    ; T0 I7 F, z" ~+ `( X% u8 u
  188. port: int,端口号  t( P* H- Q- p  ]
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    # M) T$ c* Y2 W7 |
  190. 注: 在redis.conf中也有时间,默认为300
    , e# ?, W2 }- i
  191. " d/ C1 S6 B6 V& p* U
  192. pconnect, popen 不会主动关闭的链接
    % ^( ~/ r+ k) D) K; m0 f
  193. 参考上面, a) z/ p; T' O! K
  194. + @2 G" b' y% ?8 l
  195. setOption 设置redis模式7 w/ p- |% c& n; K' p" q7 D

  196. : `1 d# m1 z; S) R5 \
  197. getOption 查看redis设置的模式" j7 q0 o- O& ?: z, K; u

  198. " X$ w/ o6 o9 |; y9 l; k
  199. ping 查看连接状态& r) y/ l5 c% Y- j* K) U

  200. 4 X" o2 E, g. w- s3 X* h9 L
  201. get 得到某个key的值(string值)
    $ y  J" `2 o' [% `7 s+ L% B
  202. 如果该key不存在,return false
      {9 C; l" [7 Y; L

  203. - V0 X& J# d7 n& W& l+ q
  204. set 写入key 和 value(string值)- Q- S  d, @9 m& `9 D; r) a
  205. 如果写入成功,return ture
    * s3 W9 p. L) R; @

  206. # A+ Q: j2 y2 E; @8 W
  207. setex 带生存时间的写入值
    ' S4 P1 b0 X; b! \- {. ?. y
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    . W1 w1 Z, M3 ?, \+ M' T

  209. 5 w, a( N, v9 z5 n: f5 ~
  210. setnx 判断是否重复的,写入值2 y. \% |  m8 s& a3 m, l
  211. $redis->setnx('key', 'value');) |# C7 b5 ?- \' y- X8 _8 |
  212. $redis->setnx('key', 'value');7 J# @  F7 x9 g5 N% o
  213. * b/ E, ]3 X1 X) c+ k" _
  214. delete  删除指定key的值
    5 _0 t( ~; A  `1 r# m
  215. 返回已经删除key的个数(长整数)
    / w! `6 l! X( v, Q  H! n% B
  216. $redis->delete('key1', 'key2');
    * }! h* q, n$ X' ]; v  k+ A- H% {
  217. $redis->delete(array('key3', 'key4', 'key5'));
    9 s7 e8 |% v8 W, I: B, \

  218. ' |, N8 O1 m+ |& m
  219. ttl5 m8 w) v, w8 L% n" j7 Q, E4 s
  220. 得到一个key的生存时间
    : P( }1 K/ L( s) l% g0 T

  221. 1 S( N& [( F7 m( B! S
  222. persist
    1 G& H* R: F, T4 c$ @
  223. 移除生存时间到期的key- d! n6 R6 H( l5 \
  224. 如果key到期 true 如果不到期 false" w% v3 Y+ V8 J: m% Z. m

  225.   _% m3 S3 Q; ^" u
  226. mset (redis版本1.1以上才可以用)
    . ]9 L+ ?5 U( H
  227. 同时给多个key赋值+ N( F$ q' h; [! E1 E! _; P
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    8 O3 _5 Y' f2 {  L% {$ L
  229. ! }# h. u7 M: g0 C1 e& i" K+ H/ e
  230. ( j. K9 y4 o, J4 w2 L) x- B$ x

  231. ; E! _1 Y2 I: I+ W* a" R8 s
  232. multi, exec, discard; P" y* z/ @5 U# b" W3 J5 {
  233. 进入或者退出事务模式3 M; _9 n% `: H3 J+ @+ ~( l1 M
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI" `7 y  V9 j; O' B, q7 r. a/ [
  235. Redis::MULTI:将多个操作当成一个事务执行
    1 Y# n1 \0 \; z+ R' \* ]7 R
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    - E# o3 e- P8 Y! ^
  237. discard:删除一个事务
    ; F% t, d1 K/ `9 S
  238. 返回值  s, ], I% {5 D' @  {+ v
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。# t: |) {/ U1 s# w1 n5 q$ \- ]
  240. , x  {! Q: L& k- S* S
  241. watch, unwatch (代码测试后,不能达到所说的效果)) a5 f" M/ d* i- k. n
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    & o8 o; B/ R% o1 ?* t& F
  243. unwatch  取消被这个程序监测的所有key
    6 _* }# n0 }1 c: C6 V) H
  244. 参数,一对key的列表
    7 g8 v! W! j0 l* w
  245. $redis->watch('x');, R5 s5 B3 N2 n& N

  246. 1 o* r. `/ n" [! W
  247. $ret = $redis->multi() ->incr('x') ->exec();6 K; y1 q7 s9 w% o: T

  248. / u$ I8 ~- v  k+ a

  249. % y" K3 F; y4 q) j5 M" H
  250. subscribe *+ B, t# `; G/ J- w) e6 e
  251. 方法回调。注意,该方法可能在未来里发生改变; h1 ^, J+ X- H" q
  252. 7 K$ L8 S& D3 K0 n1 v& x" Q
  253. publish *: U  F- l$ N3 ?; X9 k
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    ( C/ H% }/ u! {8 U) M0 u, A% P

  255. , a( H6 ~0 ~$ g$ t- C
  256. exists$ K$ }2 d3 @* B1 H& p7 [4 j
  257. 判断key是否存在。存在 true 不在 false, w* ~) J0 a* z0 l% c' _/ [) k
  258. * I3 I" ^9 X) U) l! A
  259. incr, incrBy
    ) B! \$ R" s3 c& G" G  L
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    & I6 ^8 V: @4 ~0 A6 j) ~
  261. $redis->incr('key1');3 V  Q6 k2 `; L: u6 H
  262. $redis->incrBy('key1', 10);
    * q( D) p9 r/ K! d7 X) E& {
  263. 0 K; H2 I+ X$ q. h
  264. decr, decrBy  h3 U; r# j& u0 \7 k3 _0 n5 V4 f9 p
  265. 做减法,使用方法同incr
    9 G% s+ g  w. d- Y9 J7 z$ l8 G

  266. / u+ ^* M' J- f5 T
  267. getMultiple/ ~. `& t7 P' M( K$ C$ `
  268. 传参4 l2 P" v6 `" R  a3 @& v$ U9 }& o
  269. 由key组成的数组8 F: c0 M) s- X
  270. 返回参数
    0 n4 ]  i& \) n( J8 i6 b
  271. 如果key存在返回value,不存在返回false, v6 G% e6 b/ a
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));# ?& w2 D/ ^0 W+ A
  273. $redis->lRem('key1', 'A', 2);
    3 L& e7 ^) C; Z+ E' H6 x
  274. $redis->lRange('key1', 0, -1);
    ' p2 m8 R9 E3 }

  275. 4 S9 ~3 D) H( ]5 C5 q5 o: I. I
  276. list相关操作
    * O( S& G" Q8 m1 ]5 t4 j# S' R% I
  277. lPush9 K' f2 H: x' m
  278. $redis->lPush(key, value);
    ! _* y0 V" Q. ]- Q, v1 o
  279. 在名称为key的list左边(头)添加一个值为value的 元素$ Y  w0 {. J! d! W0 n% K

  280.   h. o2 K. B! R/ K( A
  281. rPush& i% I; C" B+ U( s3 {
  282. $redis->rPush(key, value);- [: r; B- V2 a" D
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    6 D1 u: U/ ~' I4 ]4 p' h. C* w7 s

  284. + i2 n% B0 Q! q1 D8 j1 F2 W- O
  285. lPushx/rPushx
    2 R: U& U4 Z: g. w
  286. $redis->lPushx(key, value);
    ' }+ q1 s5 O/ V& w3 H: O8 a  d
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    , G, P. S7 _- g% \; R. f+ c5 G

  288. ! |# A! H0 w2 }- n/ {
  289. lPop/rPop
    4 s  |6 Q, t6 l! ~
  290. $redis->lPop('key');0 T5 z6 F' p' s0 N4 H! d
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素: y9 l, m0 U" k; ~. p

  292. 2 Q1 j8 a; X1 w5 |" y
  293. blPop/brPop
    , N% P3 _7 I: b3 Z/ P
  294. $redis->blPop('key1', 'key2', 10);
    0 g7 Y- P7 h) F8 K
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    7 V$ i% m5 T2 Z' G7 Y) @& _
  296. + _5 i; E* u0 [3 h0 I/ M& |
  297. lSize* f5 Y: |+ ]9 q& ?: h' N
  298. $redis->lSize('key');( p1 E" F" Q8 Y
  299. 返回名称为key的list有多少个元素
    8 I, W# N; c- {+ S  v5 ?0 ]

  300. 2 U7 u8 N+ p+ x, f( V
  301. lIndex, lGet
    5 Y8 k* K% G) H
  302. $redis->lGet('key', 0);
    # i* e7 a7 ^( H& {. o: z: }
  303. 返回名称为key的list中index位置的元素8 v) i/ F6 {; |% W6 ^. ^2 D: K

  304. " P$ F5 Q! ]9 C+ N
  305. lSet
    ! S2 A( W, A& K, l) V
  306. $redis->lSet('key', 0, 'X');' s9 V/ H" P, P- O# W- R- z
  307. 给名称为key的list中index位置的元素赋值为value
      u2 M. E6 }* W8 l% q! I

  308. 4 r) V3 |4 T" B+ t4 p
  309. lRange, lGetRange
    ( _: P, c! U  `/ G1 P- S
  310. $redis->lRange('key1', 0, -1);
    6 L" `- A  n) Y, ?$ F. t8 V: E
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    2 K( ~# h+ ~) D) r+ B

  312. , M9 q, f/ }! M' V! ?1 O
  313. lTrim, listTrim
    0 |7 b) }7 A) z6 v  ?* I5 ]2 E
  314. $redis->lTrim('key', start, end);
    $ C7 y1 W; V5 o" l5 c  v. G7 T- F
  315. 截取名称为key的list,保留start至end之间的元素
    / C$ O9 U' q, C' m5 F  Z2 a
  316. 1 M' t9 X" Y+ e3 E0 r- l
  317. lRem, lRemove  W& M- {0 H" D. d+ N" T6 g) X
  318. $redis->lRem('key', 'A', 2);" @. ]3 W# t. W+ B' q. X
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    , {1 u9 K; K; z1 A; q4 f  a

  320. 4 d5 c0 J( Q4 l
  321. lInsert- M7 f6 W( G7 s  `# f
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -18 m& W- @: @  j% f
  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 P& d( G5 N& p) q, g/ B+ t$ e% }$ |
  324. $redis->lRange('key1', 0, -1);
    . M: A' _  i  o$ n2 M# n
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    4 e$ [4 Z: {' E9 O0 `
  326. $redis->lRange('key1', 0, -1);/ d; i0 l7 {, R4 R0 ?
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');7 j% _" D' V/ c4 V: m" Y  A( f

  328. 6 S5 h$ m1 c5 E& W4 t: }
  329. rpoplpush/ |0 D  W  k  V
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部' k" _0 e- s5 }6 {+ y0 ]9 y
  331. $redis->delete('x', 'y');
    6 m0 A4 `6 r! T
  332. $redis->lPush('x', 'abc'); $redis->lPush('x', 'def'); $redis->lPush('y', '123'); $redis->lPush('y', '456'); // move the last of x to the front of y. var_dump($redis->rpoplpush('x', 'y'));
    2 n" }* t( }3 U! f6 }$ V6 i
  333. var_dump($redis->lRange('x', 0, -1));+ l* |8 q9 a" b6 `( Y+ q+ L9 P
  334. var_dump($redis->lRange('y', 0, -1));
    + l1 a" _* P1 ^: Y
  335. ' q; k( M/ ^, l
  336. string(3) "abc" $ {3 M3 b3 e2 P& r2 A( n) I0 ?6 a
  337. array(1) { [0]=> string(3) "def" }
    , `; n; s6 o/ Z  u' ~% @- }
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    * J# q9 z3 p( j  ]1 }

  339.   Q0 q$ g2 l" {! v) r( Q) p
  340. SET操作相关* c8 p8 p# i* D" {
  341. sAdd6 \0 h: p1 v2 X5 z
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false1 G' l1 e9 c8 m9 f9 b0 Z9 g
  343. $redis->sAdd(key , value);
    , W# d* v6 }7 p
  344. * M4 M  H5 d4 p# f. C8 k3 h5 v
  345. sRem, sRemove
    ! s$ J; @; A' \1 r$ ?  ^
  346. 删除名称为key的set中的元素value
    6 J8 m* @6 B- d
  347. $redis->sAdd('key1' , 'set1');6 P/ O1 D# ]0 n+ f. Q7 y
  348. $redis->sAdd('key1' , 'set2');
    8 I! r5 N# O+ S. m! R5 R
  349. $redis->sAdd('key1' , 'set3');& B: B# V5 j, d
  350. $redis->sRem('key1', 'set2');4 ~/ x+ _8 {* a* U( }4 {0 [* J# l
  351. 5 E+ ^, v+ A, d9 D4 |3 x
  352. sMove6 v& M& j# q3 @* s" _
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    ! ?+ j% {: L" ]) o0 C& \
  354. $redis->sMove(seckey, dstkey, value);$ G& E4 @- |- G4 L& @
  355. , t, Q+ ]; t# T4 K
  356. sIsMember, sContains
    : m" i9 K: N3 L5 |6 y
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    . P, e% a- U2 U* U5 J1 E& L
  358. $redis->sIsMember(key, value);
    - q; E2 n( J" q7 q, \

  359. & h) b2 J1 l2 w, D/ M
  360. sCard, sSize9 l# `1 x* A! f: ^( A
  361. 返回名称为key的set的元素个数0 a! Z) s. b: c1 U8 y
  362. 2 ]5 V! l. j/ z% r1 V2 P$ N
  363. sPop
    4 A( ?2 X/ z( ~" @' V4 P
  364. 随机返回并删除名称为key的set中一个元素
    9 P  @; Z. V. w& P0 G( {+ ?
  365. 8 m% }* H  I/ d* A5 F* o
  366. sRandMember" T+ P5 G* |0 v& Y/ G
  367. 随机返回名称为key的set中一个元素,不删除' H* ], |' W8 I4 q3 J

  368. + v4 R& E8 i' }  ~
  369. sInter* B, N, ^8 e' {0 F6 D; r
  370. 求交集
    + K% e- \% M3 C
  371. - y4 |0 u8 X; e! j8 [
  372. sInterStore) V6 I* o& h" |0 V
  373. 求交集并将交集保存到output的集合
    $ x* n' ]+ |/ b, F6 s; {& H
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    , k/ P( s7 Y( G( J2 V
  375. * b* j/ q; m! l+ ^5 V1 e% ^
  376. sUnion, W& O- T" o4 b/ ?/ {. W
  377. 求并集
    * z# q$ i1 P6 X$ V# ?  e2 @( X
  378. $redis->sUnion('s0', 's1', 's2');! z& ^+ S1 W, t0 S4 d1 x
  379. s0,s1,s2 同时求并集! \1 |3 y) D& w" |$ i
  380. 2 z' x3 \+ u6 X- K8 U+ f) S, t& s
  381. sUnionStore& `* W% _4 Q) p. g
  382. 求并集并将并集保存到output的集合" y2 Y( r5 _' R0 s8 Y
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');3 x+ b; d( Q! \6 X5 `

  384. " @* u1 D6 H% l" r
  385. sDiff
    " Y) n5 m! u' J' P5 l
  386. 求差集
      Z3 q+ O5 M4 W6 q' c6 a) t

  387. * c* o: _, w5 D
  388. sDiffStore% b8 N) d2 y3 N# Q
  389. 求差集并将差集保存到output的集合
    : [& {& S$ p: n$ p8 h
  390. # H( g, o. A# i3 G$ a
  391. sMembers, sGetMembers# }7 U1 T) i2 m- T) U  s9 \: v
  392. 返回名称为key的set的所有元素: y5 }# T7 j* t# z4 E3 U. A! Z
  393. 4 n: b7 l% u/ z2 V( H
  394. sort  S8 T- E) T9 ]+ ?) J
  395. 排序,分页等
      j9 u# H3 {& k* z; }9 c
  396. 参数+ k% h' h3 j3 M
  397. 'by' => 'some_pattern_*',
    0 @, ~1 ^, K0 n, ?1 l6 \6 p
  398. 'limit' => array(0, 1),
    2 `/ S; X7 y/ o; U% K2 L
  399. 'get' => 'some_other_pattern_*' or an array of patterns,( |2 k, `6 q! V  \, D, x5 G" l9 l
  400. 'sort' => 'asc' or 'desc',
    ; f* g- k4 r1 G% }; [- `; v
  401. 'alpha' => TRUE,  B  B; L% n; h1 B( c% [) K- \
  402. 'store' => 'external-key'
    6 X! ?1 Q- F1 A+ n  o7 h4 K' f
  403. 例子
    " w  M) V$ u* M& M. S% Q! c
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    4 j/ w6 q# q" K* h( `
  405. var_dump($redis->sort('s')); // 1,2,3,4,5/ W+ ?% F+ s' x6 u+ O4 v
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1( G: {6 ]' k! O  K: Q+ s7 i/ L* E
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5, J3 M0 J, f7 E

  408. , A1 Z( R+ b9 v# g8 d) {# j
  409. string命令
    # r/ B' p" ?6 @( V  C0 u
  410. getSet9 q5 {5 @! h: e& P" _
  411. 返回原来key中的值,并将value写入key) J  i* w0 n7 i1 X' Q& e3 Y
  412. $redis->set('x', '42');/ `3 e: G- t( \
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'5 {, {7 o& {6 w  b" P% i
  414. $newValue = $redis->get('x')' // return 'lol'
    : ~$ M; k% N; S+ {

  415. , }0 E6 f& j+ c* \
  416. append
    6 S' l9 G# [% o5 y
  417. string,名称为key的string的值在后面加上value; W5 F$ g7 Q  u: R
  418. $redis->set('key', 'value1');
    & Q% X2 `. u5 n8 D# Z1 K
  419. $redis->append('key', 'value2');! y: w+ c8 c  J, a
  420. $redis->get('key');1 a% U! }8 j( j& R

  421. $ t& P7 {) h- U2 T9 z
  422. getRange (方法不存在)
    ) l, V3 b/ {8 y$ G# E
  423. 返回名称为key的string中start至end之间的字符) r+ ~8 T. o5 p+ j" W0 d
  424. $redis->set('key', 'string value');' G; f- M# X9 ?' |0 S
  425. $redis->getRange('key', 0, 5);, @6 q9 `. g* j) _9 w1 b7 m9 l
  426. $redis->getRange('key', -5, -1);
    9 Y3 L+ ]2 a- P1 z1 {1 e, f
  427. # k1 h3 i# f5 E& L
  428. setRange (方法不存在)' ]9 J3 ~, m6 ?+ T
  429. 改变key的string中start至end之间的字符为value
    5 Y. H9 Y- }7 a* `. Y# H
  430. $redis->set('key', 'Hello world');) O+ ~6 l/ x: T& ^: O# X1 _
  431. $redis->setRange('key', 6, "redis");; n' h" v9 m2 K8 W
  432. $redis->get('key');# p3 i3 I8 e! \& g: B

  433. % O0 T# \+ f3 T
  434. strlen( d, I9 Z- L5 F1 e+ x
  435. 得到key的string的长度$ W- c5 T; G2 o4 n6 }
  436. $redis->strlen('key');- ^% m: J; z* s2 X4 Y* J. l/ l

  437. . D2 x. k; x4 d% p( c
  438. getBit/setBit" y3 j# W/ t7 b+ ]! j& C
  439. 返回2进制信息0 E) r8 N6 d8 P2 a+ z* s; z. \

  440. ) Q) u/ D/ g& _  q' X  ^: |
  441. zset(sorted set)操作相关& i+ }7 V4 d6 [6 t/ a, x  V2 M
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    0 \4 B8 s& q/ @2 Z
  443. $redis->zAdd('key', 1, 'val1');3 G! `9 S, {& U# \; ?& r! o
  444. $redis->zAdd('key', 0, 'val0');
    8 R! r* v% X; u1 c* o; j
  445. $redis->zAdd('key', 5, 'val5');
    ; Y# U7 m) ?, Y
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    8 P* m# G! {5 |) X$ X
  447. ( X6 c/ s+ r) [$ n  ~" ~, }5 g8 |  W
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素1 ^" R: z( y% G" s& @
  449. $redis->zAdd('key1', 0, 'val0');
    , a8 `4 P- W9 _7 E% H" k2 ^
  450. $redis->zAdd('key1', 2, 'val2');  m* c: B9 |1 u& `# O3 V
  451. $redis->zAdd('key1', 10, 'val10');
    ( c- j, i7 \# w- ~1 s: u8 C
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ; A$ ^& j" @2 y9 |
  453. % \' @- w4 c- H! Q, _) W* I
  454. zDelete, zRem
    1 y) M4 q" C4 v# R7 z: j& C$ F
  455. zRem(key, member) :删除名称为key的zset中的元素member/ f  i4 F" C5 S6 R% Q3 W: o; C
  456. $redis->zAdd('key', 0, 'val0');
    & S! h4 L2 C5 M0 H8 Y
  457. $redis->zAdd('key', 2, 'val2');
    , E7 r* }5 r6 C
  458. $redis->zAdd('key', 10, 'val10');
    + N0 `4 C2 T1 O6 y0 z! Y0 p( F
  459. $redis->zDelete('key', 'val2');
    , ~+ M" _( G' i; i+ K/ g! f
  460. $redis->zRange('key', 0, -1); ( \1 l' B/ ~+ i2 E2 q2 k* Q. e, u# C5 o

  461. ' l$ _0 p4 P2 W4 {* y; N5 m# I
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出7 I5 _9 i6 p7 a5 ~8 Z$ P& L+ b
  463. $redis->zAdd('key', 0, 'val0');3 \( l" W) E3 j9 t
  464. $redis->zAdd('key', 2, 'val2');
    - i1 X6 k0 R+ Z9 c/ \
  465. $redis->zAdd('key', 10, 'val10');
    / d7 n; S6 r  l) Q4 x
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);; r; ~1 q, s5 p0 D/ T' r# E
  467. # w& e/ y9 P) n! m" J3 Y, Z* K
  468. zRangeByScore, zRevRangeByScore
    7 u) \" i) ?9 t, k# {
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));  N! d3 I9 R) _' j7 y: e+ }: H
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    : v6 s& h/ E1 o* U) Y

  471. $ B' b7 \) x; s: h% t
  472. zCount
    . S2 U; M" o" {5 Z  a
  473. $redis->zCount(key, star, end);! n. h2 e  D; A2 P5 j2 T  h! d
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    7 x# X* E; K9 H3 z' ~

  475. # |) G5 r. ]8 _, i) f. ]$ H- E
  476. zRemRangeByScore, zDeleteRangeByScore' g9 X) ^( r5 h/ r5 ^
  477. $redis->zRemRangeByScore('key', star, end);  c1 G( d- @/ \: {
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    4 @# {  z' p& _( n5 M
  479. 5 E/ i% g5 g. x
  480. zSize, zCard
    ) k$ k7 a2 V/ z1 K' `
  481. 返回名称为key的zset的所有元素的个数; }4 @+ z. e) g% F
  482. 7 F; e- Q, R; ~" i; b
  483. zScore
    % ?) s, @6 v/ v$ w5 P
  484. $redis->zScore(key, val2);3 F" r# b. }- ~
  485. 返回名称为key的zset中元素val2的score1 b: p3 B, l/ `

  486. 6 u9 }: |3 M/ A/ \6 V- }( N6 R
  487. zRank, zRevRank
    ' p5 G6 [5 V! Z( D2 f! C# w
  488. $redis->zRevRank(key, val);
    - z" \# Z/ H5 N
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    : C8 E  [. Z" A; N& x

  490. 9 {8 N8 t2 \( L! d8 }0 C4 W
  491. zIncrBy/ G2 O% F5 |% I# U* C
  492. $redis->zIncrBy('key', increment, 'member');2 T+ l% L+ m! d9 |% o' P
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    % ~1 F1 L( j2 m8 `9 h3 k) |& G

  494. 4 t8 B% A& x7 C, N* g
  495. zUnion/zInter
    * }3 ]- _4 y( K( C' M" d
  496. 参数/ C8 T, f" s, l6 E9 y
  497. keyOutput) R4 ?0 |+ {1 p
  498. arrayZSetKeys
    - T% `9 `0 T; H! T% n5 g
  499. arrayWeights
    " e. U, p9 F% A$ o4 c
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.) @% Q: x5 o' d+ N. R9 y6 z
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    % e: E; ]- Q+ e* w
复制代码
$ G3 H9 N0 }: h4 v, x

7 H9 d3 a! X$ y/ Y: w4 R0 x; W) J1 t2 z

. r, X; C: P; q0 a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 0 W6 C+ E4 n6 C+ j, {3 |- V3 E
  2. //连接redis服务器
    % u, `  k% A; ^# F
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 20:21 , Processed in 0.125649 second(s), 19 queries .

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