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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    ! E& }/ W! }- ~$ x9 M
  2. $redis = new Redis();  2 \$ \- C2 E8 @  m- K4 [8 G; y2 C
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    - A: D5 w' U0 N( [: d9 e8 X2 h3 }
  4. $redis->auth('mypassword');//my redis password ! J# j3 z/ W5 `) v* C
  5. $redis ->set( "test" , "Hello World");  
    / S' Q/ m9 p1 `7 S# E6 S# }" l
  6. echo $redis ->get( "test");
    9 H8 r" ?$ k0 V* H) ]
复制代码
php操作redis函数封装
  1. /**. L3 D: \+ s! J2 q
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ( X1 ~# F0 u- G' |4 s6 [9 r; k& S+ x2 ~
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi2 B1 t* g3 P5 i9 c+ n5 h  a9 u
  4. */' a9 K1 `& b+ ^, ]0 O3 X- x
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    . C. G  z$ V6 P
  6.     if(!$key||!$value) return false;
    6 W0 m4 V6 c9 q# t  l, V
  7.     $host = $host?$host:getenv('REDIS_HOST');
    - c/ Z+ \6 r8 u6 c# y
  8.     $port = $port?$port:getenv('REDIS_PORT');: T& B$ z5 s8 _/ J
  9.     $redis = new Redis();
    6 M+ R$ k) b+ f. P! F; `
  10.     $redis->connect($host, $port);* i; M! M7 R( c( H' F: o7 c6 E
  11.     $value = is_array($value)?json_encode($value):$value;
    ) k. Z9 h% R( Y( z$ s: c
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);1 l  W  P5 ~" C/ }( j4 U
  13. }; ^/ W* `& A+ o1 u6 S
  14. /**) R7 t0 g" o' e9 H' h( p* V
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    ) x3 i1 k+ i$ o' c2 K9 m) Z
  16. */. q: U$ z0 I* }/ X8 l6 [
  17. function RedisGet($key,$host='',$port=''){
    ! E' M7 w6 y; G( k8 a
  18.     $redis = new Redis();
    % \' d7 q: }9 o8 U
  19.     $host = $host?$host:getenv('REDIS_HOST');- R* e, `* ?; L1 Q
  20.     $port = $port?$port:getenv('REDIS_PORT');) v9 o# m# }- x5 N; b' T) O
  21.     $redis->connect($host, $port);
    9 b  s7 o" }, [. c# q
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);+ L3 O# S& i, R' U5 t. S% S* X
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);  c! h; p8 Y" v0 ^
  24. }
    ) Q  n8 i' b+ U: t% n" |3 s9 g8 d
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了9 s$ O! m) |" T' L* [8 ^
  1. setex 带生存时间的写入值5 x( z; w4 p- ]2 t
  2. $redis->setex('key', 3600, 'value');
    4 U2 P( c/ K1 R% S: B+ z7 N
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1& ]6 q) g2 b% _. {" H3 o
  4. $redis->setnx('key', 'value');
    ; k3 [( T2 v% [/ c' L
  5. 返回已经删除key
    - j8 b& `: e, _
  6. $redis->delete('key1'); 成功返回1失败返回0# x6 [. ^, j9 [7 Y  ^/ I# M
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0' j6 `% p  X  h  c  k0 _( I- v
  8. 查询生存时间
    7 _( }% s4 L$ `# _
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    $ j) _6 S* U9 v/ N# s, H7 D  z5 h
  10. 同时给多个key赋值,同时设置key0和key1
    % W9 y8 P, _9 L6 {% C
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));9 H$ A4 `  l( I- }
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值% b6 z+ ?4 o% M" h$ w- F* M0 R
  13. $redis->incr('key1');
    / p6 S' x& k* G+ T+ W% a/ x
  14. $redis->incrBy('key1', 10);1 X8 K" k  ?2 }# M2 b6 X6 J
  15. 减法跟加法一样# k! [# x; `* f# Z$ K# v! x
  16. $redis->decr("key1"); 减少1" z4 U) `& e6 v
  17. $redis->decrBy("key1",5) 减少57 q% b, q" n5 G3 w
  18. : R) h6 S. @( t7 C0 b4 d
  19. list相关操作,连表操作
    : Y' Q( u' f7 p2 K4 {- a
  20. lPush1 U2 y! F9 j5 {" [3 W+ }
  21. $redis->lPush("list", "888");7 X0 X7 a/ g) C  E/ j( Q
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    + ]: U  y& \- i0 t
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    # o- x5 _/ I% s
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    1 m5 ~- e, S, _2 r9 F
  25. lPushx/rPushx& J9 v7 Q% y3 X
  26. $redis->lPushx(key, value);$ u) t. T- K  {
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加7 M$ A- w7 V+ T$ c

  28. " ]+ }3 ^9 ?8 M( Q- _4 f& ]0 C
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    : _! K+ }  `4 U; ~! }9 ?  l
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key: [% X! J1 Y+ p4 ^; k
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1' R* a8 x2 i2 u6 k+ Z8 F& N% P
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序% `" _4 R6 R& [  s5 w
  33. sadd s1 zhangsan
    & a9 n% p' t! _
  34. sadd s1 lisi$ u2 E* O0 ^: t( p0 ^$ z
  35. sadd s1 wangwu
    2 p" T+ W) _) `2 B7 K
  36. sadd t1 yangxingyi/ F% X8 X9 R( d. ^
  37. sadd t1 lilei5 h3 O4 f9 t0 W; l/ k/ I
  38. sadd t1 zhangsan
    8 R  E2 O% l  k) r0 `
  39. smembers s1 s1的所有集合内容3 X$ w6 H; [/ Y" O- O
  40. sdiff s1 t1 s1有的,t1没有的,差集6 A$ v, m$ }5 l. F
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    $ q/ i# A# w8 r$ W* V' c0 H
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的! T7 a1 ^* G: V1 x  t
  43. spop抽奖场景,返回集合里面随机的数1 I7 y; Y& m. P  t
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    # T6 {+ S% H- `# G: C0 `
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    . R" H% ?) o$ }7 o" P9 |% N
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    / ]; u2 Q- K9 L5 `- J- |
  47. 随机返回集合里面的一个元素,但不删除,重复中奖, z* B% b8 x% n' x
  48. $i = $redis->srandmember('s1');echo $i;: {: ~: Z% H2 o
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    $ z# n% A; S' [; g: P+ s
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    ! e7 v( m" L$ l/ Y- p# c

  51. 1 `% V0 S8 y4 A  b7 q
  52. zadd key 2 value 有序集合2 F' m; g# Q1 Q  J  h# l2 D5 C
  53. zadd y1 1 zhangsan;
    $ m9 x* l' K* a7 W" a) A0 X
  54. zadd y1 3 lisi;
    # _& n' V4 C! g( ^3 T' v
  55. zadd y1 2 wangwu;
    * o+ w( E. d' r0 q% Q
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    * W5 N0 p2 {9 J. J* x! q
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);) _7 \7 V$ i. J4 @+ P7 J( R9 k
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    3 j; r8 P% R  i- O2 F. ?4 ?- x
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先: J$ ?$ w$ `) D. x% I9 z
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    % U/ Z* `. X5 z5 U' W8 \" a
  61. 无序就scard,有序就zcard,有z没有s
    9 b% m2 O" O( j0 w- I+ U5 i
  62. sInterStore* ]% X  [0 G+ z( @% P
  63. 求交集并将交集保存到output的集合
    5 E5 C2 a. C' C
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
      _  y' y( ^2 |; L/ `6 ]0 a: ?' A

  65. / @1 d8 j, _4 z
  66. Hash操作
    4 I; P. V8 |! c) w. V# z) u7 Z
  67. hSet
    / `* A. y, Y, K/ ~5 g& W
  68. $redis->hSet('h', 'key1', 'hello');$ O( E' t5 e- N  \8 W0 f5 o
  69. 向名称为h的hash中添加元素key1—>hello
    8 r$ W8 R: V9 N$ v" L

  70. . u6 `5 {7 ]7 G4 |  h1 Y# {7 J
  71. hGet
    9 l) r& G8 L" W
  72. $redis->hGet('h', 'key1');4 W1 U5 @, L3 ~! k# t6 v/ B
  73. 返回名称为h的hash中key1对应的value(hello)! {( ~3 p2 z  I7 ^7 v1 }# L$ a: b
  74. 0 t1 F( g7 L. W$ [% y
  75. hLen; {9 ?" w- P6 E5 }
  76. $redis->hLen('h');
    * M% ^. j0 ^* {4 t: e. D
  77. 返回名称为h的hash中元素个数( d! m% D) k: z2 X' |
  78. ' Q" `; M% N1 i9 c) ~! e
  79. hDel
    # g' H2 ^0 K0 c+ \: R# q: o, y% T/ c
  80. $redis->hDel('h', 'key1');4 _/ U+ T4 v- O
  81. 删除名称为h的hash中键为key1的域
    9 c- V+ T  j& B5 ?4 h8 S  a4 B: N
  82. / D, V1 l- W3 D
  83. hKeys# `8 Y, [! h2 i5 p3 B  B
  84. $redis->hKeys('h');
    9 J, o( ?4 v% Z2 Z7 F/ N9 O9 p4 u$ Y( g
  85. 返回名称为key的hash中所有键3 M/ j% Z6 r5 o  E7 _
  86. ( M0 m1 ^4 ?# W  o6 C
  87. hVals- [. d3 P3 h  b7 m) k) k' @
  88. $redis->hVals('h')# S; ]' L) `, Y/ F8 [
  89. 返回名称为h的hash中所有键对应的value: r3 M$ }+ e' u! C

  90. ; Y! K& D2 t  I
  91. hGetAll. v9 P5 t. e  e6 O
  92. $redis->hGetAll('h');
    . F" H9 P  }/ F4 c
  93. 返回名称为h的hash中所有的键(field)及其对应的value$ `0 C( L( t& D' A
  94. . y  h/ A' [- Q( ]+ B
  95. hExists0 V) T( v7 y; }. R9 H9 U+ t
  96. $redis->hExists('h', 'a');
    + O0 |$ S/ U6 _+ b! F1 X
  97. 名称为h的hash中是否存在键名字为a的域
    2 h% }8 \* [  `/ i. e* h6 q6 Z
  98. 0 [( Q  ^) n0 H3 }
  99. hIncrBy
    * Y% o% D% l) t7 T3 R# }( t/ h
  100. $redis->hIncrBy('h', 'x', 2);$ ]# X, n/ _& x, V' M
  101. 将名称为h的hash中x的value增加2
    - D* L) r( c& s1 |9 I2 v5 \  U

  102. * h8 x4 E% B! R) e
  103. hMset
    % V: P5 u2 a# g" P% o% `! X
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));: ~5 j$ o4 u4 m$ B' [8 H- `
  105. 向名称为key的hash中批量添加元素5 D$ N# o6 Y5 z$ K6 U
  106. + i2 G. v& G# G
  107. hMGet8 s9 [0 g( m- d5 m* M
  108. $redis->hmGet('h', array('field1', 'field2'));5 ~8 U: W: {! }5 x% C
  109. 返回名称为h的hash中field1,field2对应的value/ z2 k: ^3 U8 o
  110. ( r/ C* M. z9 C3 K) ~) y) H& w
  111. redis 操作相关
    " i" z. m" v6 j) U- l5 p5 {
  112. flushDB" ~* L+ o' H* ^
  113. 清空当前数据库% |) C. W3 |2 q0 A+ V8 x$ l
  114. : E; A3 J- h, n0 z
  115. flushAll& r8 Z7 S4 n& K5 {
  116. 清空所有数据库
    ; K! z  X+ ~2 Z" b6 e+ n

  117. 1 I: l: t5 A6 O7 F+ W+ G
  118. randomKey: [; r3 C7 V4 r# a. A2 R
  119. 随机返回key空间的一个key
    ! X4 e/ g" i( P, d1 ?, ~, l
  120. $key = $redis->randomKey();3 f7 x3 q8 v# h2 |! M( a
  121. ( x! t. A/ m" s! u8 b
  122. select
    - Q- ~0 ]- ~) i* _6 G3 x
  123. 选择一个数据库
    ! k. {4 ~. }1 k( S8 f, c% n
  124. move
    8 s+ ?5 h+ h1 A; s5 N& x
  125. 转移一个key到另外一个数据库
    ! q: }  p% J% f: E$ K2 D1 ?0 ?
  126. $redis->select(0); // switch to DB 0
    + z% }: J# L9 {( G( v
  127. $redis->set('x', '42'); // write 42 to x
    % R- B( C5 b& g: w
  128. $redis->move('x', 1); // move to DB 1
    % Y* ~) y; }2 ]  `" |9 m% k
  129. $redis->select(1); // switch to DB 11 B/ |6 F) K+ F
  130. $redis->get('x'); // will return 42- f! X& m1 E( W" q

  131. % }  ]# U/ G' H" G9 Y% H
  132. rename, renameKey
    6 u7 ~" J+ O+ u( ~) _
  133. 给key重命名
    1 e$ @; W" D. B. x8 t) B
  134. $redis->set('x', '42');
    & J$ H. H5 k' O( h" m/ P1 ]
  135. $redis->rename('x', 'y');5 R4 O- s0 x7 h9 d( x2 K
  136. $redis->get('y'); // → 423 E8 ]8 r4 [  M  I8 f4 f  C2 c
  137. $redis->get('x'); // → `FALSE`/ X1 f& Z) N- o& Y( ^

  138. 6 k4 p' c4 F4 C' n0 l
  139. renameNx1 h* z& X* T  o8 g
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    / k/ p: m" R' f6 M

  141. - U* k4 x; a& o
  142. setTimeout, expire2 @2 e6 F  g# s/ P
  143. 设定一个key的活动时间(s)) `2 }2 ~( b: T& ]& t  Q, n5 y
  144. $redis->setTimeout('x', 3);
    $ e- R' E% V6 T8 N3 x& J

  145. $ Q5 [) t/ {5 P2 w3 q$ f
  146. expireAt0 ^; Q6 Z9 S8 s7 M
  147. key存活到一个unix时间戳时间# q1 f3 {. ^  g7 t4 G# z
  148. $redis->expireAt('x', time() + 3);
    : a/ k; X( T6 w+ \- M
  149. 7 ?8 T+ c" p# H& `- W- A) t5 x
  150. keys, getKeys
      x& x# T! J! X! h  q' C
  151. 返回满足给定pattern的所有key
    , C! f' q4 T6 P& h
  152. $keyWithUserPrefix = $redis->keys('user*');# R* f) p5 j' r% k+ v3 A

  153. 2 }+ L8 g& t. E4 q
  154. dbSize
    ( j$ n" P/ t# O8 \% }  }
  155. 查看现在数据库有多少key
    ! K% @4 W# k/ g* a4 S
  156. $count = $redis->dbSize();
    4 l  [+ y7 f$ M% \
  157. 9 K1 O2 Z/ e3 }: {- r. h  e
  158. auth1 P& J6 [2 {) c
  159. 密码认证
    ! v1 N/ F! ^8 ~  S' K/ i5 j
  160. $redis->auth('foobared');
    ) d; x: j* a' R4 I3 Q
  161. + L( l& G) B' U: K% Z
  162. bgrewriteaof$ ]% A2 i+ a* z6 ?
  163. 使用aof来进行数据库持久化
    ' w' N% H+ h. t5 N5 Q
  164. $redis->bgrewriteaof();/ }( R; A- g" p- b5 x& z3 D
  165. ) s) y4 [1 q- h4 n
  166. slaveof
    & t7 D0 ^6 @8 K2 t
  167. 选择从服务器
    # h! z5 g) d( p- r
  168. $redis->slaveof('10.0.1.7', 6379);
    0 t% e, L) R: U; f  N

  169. * X$ \8 U4 s+ ?7 X, T! Q( j& }
  170. save
    ) w3 p* C; e4 `# c; q) V: f
  171. 将数据同步保存到磁盘4 `! u  V1 r+ v% k) E

  172. * L- |8 k8 }: \4 I
  173. bgsave4 d2 H! Z" c/ |9 D
  174. 将数据异步保存到磁盘4 W, P7 ?+ Q( x' d0 B# O

  175. . W' z, U; ^" m' V. D; H1 E
  176. lastSave
    ; f2 |6 c( T5 {1 c' q+ t  |: A
  177. 返回上次成功将数据保存到磁盘的Unix时戳7 Z3 Y* v: B( f# N* d4 q9 V
  178. ( d& U! i% F1 {( h+ S( W3 r$ N
  179. info$ O( y/ A) z; P/ s/ J9 L+ w
  180. 返回redis的版本信息等详情
    . p# L6 a6 S5 y, ?3 l- ~. M" @

  181. , w5 m$ a2 E  B( }! I
  182. Redis::__construct构造函数
    . T5 n2 J# w1 B7 B: h9 e
  183. $redis = new Redis();" Z) X3 I" ?# A( |3 }0 y7 _7 E

  184. ) K* n9 @+ c; d$ r7 `* |- A
  185. connect, open 链接redis服务1 T( S7 u- D+ ?  j% L* S3 N& _
  186. 参数  a7 l5 f, V) _# W
  187. host: string,服务地址6 v4 y8 K. d5 s6 x1 s7 b  r
  188. port: int,端口号) c. b4 ~: x% b% X) M: ?
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    & P# T5 @& ?- l) a3 j
  190. 注: 在redis.conf中也有时间,默认为3009 W1 Z. B/ l, D6 ^7 d6 ~) q

  191. 4 Q' D' t8 k9 Y5 z2 `; y2 e, b; N
  192. pconnect, popen 不会主动关闭的链接
    9 `- T) K9 v6 l" C5 T% h
  193. 参考上面
    8 g# b; ]; u& N
  194. ( d( A4 g' E$ t9 ], o2 o" o, p
  195. setOption 设置redis模式3 o' H% ~5 q3 F, T* S  u

  196. - |5 `9 P, m! F, A7 P
  197. getOption 查看redis设置的模式- I0 }1 Q8 p$ Q1 \2 j

  198. 2 j1 q# N3 |6 r0 v" z
  199. ping 查看连接状态7 w- z! X; ~5 w
  200. 3 N$ q. \. N3 ~! s8 |- ~
  201. get 得到某个key的值(string值)" [& u5 B- ~' Q7 z* X& y* X9 i  A
  202. 如果该key不存在,return false% Q* ~8 Y  `9 c0 y( S$ e
  203. 2 ?* p9 z2 H+ N
  204. set 写入key 和 value(string值)
    ! I1 x; u' J- N" i, `3 Y' [" m5 n
  205. 如果写入成功,return ture/ g7 w0 ^% e# @, |4 B- C+ N. t
  206. : s6 o3 O$ _& y2 J4 B* B5 F
  207. setex 带生存时间的写入值
    - z! p3 o) X4 C% m
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.4 _: R& Z! ~4 [- G
  209. 8 V$ `* _6 i0 l: @0 z# K6 O
  210. setnx 判断是否重复的,写入值
    # G4 u0 H  F% e
  211. $redis->setnx('key', 'value');. ^& y1 y+ T* g9 m/ w
  212. $redis->setnx('key', 'value');
    % Q) x7 t6 Z) `) E3 W7 p' u% z
  213. / a1 }5 T! h" U% ]$ }" N: N
  214. delete  删除指定key的值
    0 q: C" q/ e/ ^- T0 K  T: ?- N3 B
  215. 返回已经删除key的个数(长整数)
    * G/ f( g1 R5 ^
  216. $redis->delete('key1', 'key2');# x2 [$ N8 I5 q, Y" i# N
  217. $redis->delete(array('key3', 'key4', 'key5'));* {% m2 P" S7 m7 `& O
  218. 0 A' A& y/ \# o8 h
  219. ttl" x' t+ ~5 T" p
  220. 得到一个key的生存时间$ S3 K4 t3 q- Z- h
  221. 7 }8 w) v4 T5 ?& o( }
  222. persist0 b3 m! k% ?& c: E1 R
  223. 移除生存时间到期的key
    & }& t5 ^9 v" ?& K! d
  224. 如果key到期 true 如果不到期 false+ `" P% f1 n7 f- n: S
  225. 4 t) P/ l$ P- m" H
  226. mset (redis版本1.1以上才可以用)! ?' i% o4 K/ X* v. \- j
  227. 同时给多个key赋值
    6 ~, q$ [, d, Y$ k, r
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));9 `8 D; |/ \1 z" ]1 b* ^' u# j/ @: m
  229. 5 I1 F6 f, ~& z1 S& T9 a* `

  230. ! @7 {8 v6 D* {( c. Q2 q* T. K4 z2 d' ]

  231. & b8 m9 _, j4 P8 N6 h8 ~
  232. multi, exec, discard
    % F  K" {" j/ X! i8 A
  233. 进入或者退出事务模式
    2 p9 c2 Y" a# |& }" A) J+ t
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI5 ~* k0 k1 L' G3 n+ x" h
  235. Redis::MULTI:将多个操作当成一个事务执行7 B7 s) a2 _. f: f# W) o, l
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证) I) E/ W2 o4 l( ^
  237. discard:删除一个事务
    - R6 P3 y/ }; O" l
  238. 返回值" V4 M4 z7 q, L
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。) G- s- ^8 I. y: [8 ]8 y5 w- H/ P

  240. , f# P, A" [- Y+ k& p
  241. watch, unwatch (代码测试后,不能达到所说的效果)5 }$ Y1 M: o2 B6 y! V
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    ' u! P% s! y9 @7 U2 l
  243. unwatch  取消被这个程序监测的所有key
    , @: D2 R( Z' s7 [6 J9 T, P( o
  244. 参数,一对key的列表
    * V8 b; Y: g( c  n1 ?! N' \0 W* y% x
  245. $redis->watch('x');
      C3 I/ o+ ?* `7 @  V

  246. + R& u; d3 o+ A
  247. $ret = $redis->multi() ->incr('x') ->exec();
      z5 I6 c! A7 V8 e* I- _5 W; {
  248. " |/ E2 u7 a2 L! Z! l
  249. : }, R+ G; e- m* I9 d& k
  250. subscribe *7 e( r2 ?0 O8 v# r+ d' L
  251. 方法回调。注意,该方法可能在未来里发生改变2 ^6 D! M+ o, H8 _+ h
  252. 4 a0 B0 S# J. V, Y! F% W  [/ e$ ~
  253. publish *! W7 b' r9 ^& w' i& \4 Z0 X2 L
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    1 Y0 ]( z9 C0 ~! l4 \/ T# U$ D
  255. 1 c. `0 T( u0 _. D
  256. exists
    - D6 ~7 P( S" [, g
  257. 判断key是否存在。存在 true 不在 false
    / R0 n8 G* q- i( l9 _$ j
  258. 6 H% ]% a4 Q8 r% j
  259. incr, incrBy; T2 B4 ~: b- R5 C7 I  {* ]5 ?
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值! n! r8 C# x( B7 o, x
  261. $redis->incr('key1');
    + |% S; c# C9 y( w1 h8 V2 S
  262. $redis->incrBy('key1', 10);" b$ ?8 D0 [; X: `  |5 m
  263. * Q3 w: r% x, c
  264. decr, decrBy6 c8 q3 N3 _( J
  265. 做减法,使用方法同incr# p" p  a# J! D$ y

  266. " y# |3 l! o- r1 Z" W
  267. getMultiple) S7 O. M" _6 W8 w
  268. 传参/ h7 ~7 O- y2 f8 }) ~
  269. 由key组成的数组$ Q9 l9 g4 \7 P, b# ~
  270. 返回参数# y$ \/ ?, }2 `0 h. x
  271. 如果key存在返回value,不存在返回false) P% y: M3 }" _  Q, `/ D5 o# l. y
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));) b9 I8 a* v+ q( _
  273. $redis->lRem('key1', 'A', 2);8 v+ x: s4 u: P! s+ E7 a! v
  274. $redis->lRange('key1', 0, -1);
      t6 A/ x) I) p' j

  275. + r. |& ~5 p; _3 T1 h) m3 o2 c
  276. list相关操作
    3 u8 l) H+ U5 S3 {
  277. lPush
    " W5 ?" c; d6 k+ l- _# _6 b% p5 s
  278. $redis->lPush(key, value);
    : v& r9 h0 Q# {/ t& c6 \' y; d
  279. 在名称为key的list左边(头)添加一个值为value的 元素! n, d- r; L) a8 I+ n
  280. 2 _- c3 a9 g$ U3 R* @' _7 t2 u. K
  281. rPush
    6 F# ]$ t, @) S/ [$ r/ G
  282. $redis->rPush(key, value);' K) S6 v% v+ v" F
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    2 y8 W* X0 v6 ]4 r: ?4 t7 W9 O' G7 o

  284. % q  Z- w; \2 F. t& ^0 j! d
  285. lPushx/rPushx
    ) I) R5 ]  k# _9 B- @% [
  286. $redis->lPushx(key, value);  K6 ]; ~1 P7 N, G7 {
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加7 R2 }# X, N- f* K) h3 l

  288. & |% M' M& a# d! U
  289. lPop/rPop4 M- M7 q5 z5 C% W8 r% y
  290. $redis->lPop('key');
    5 `0 V  d, u3 H+ T* e1 c8 D
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素8 s$ ~9 ~8 U$ u/ d
  292. . `+ T2 c# u* h
  293. blPop/brPop4 x( v- F( J" \& s) x. J
  294. $redis->blPop('key1', 'key2', 10);
    # }/ N3 [8 O3 Q8 _0 o3 A( E# t: B
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作$ X) j- Q! a/ O) ^' m/ _. A

  296. ; p/ o7 Z0 q4 l( v' C* q! y, e# {
  297. lSize
    5 j5 s$ t: x( @* o& R  D) l
  298. $redis->lSize('key');5 ]! d4 h6 j" l6 Q6 b
  299. 返回名称为key的list有多少个元素  N9 e) [  _, N

  300. # ]* w- T' i8 D0 @0 |+ G6 q. f
  301. lIndex, lGet
    " x, D8 i4 i9 p4 p: S
  302. $redis->lGet('key', 0);7 z) Y, t+ L( A% _) w/ t
  303. 返回名称为key的list中index位置的元素+ P. ~5 f3 R2 x0 Y9 ~4 F) D
  304. 0 M3 @$ h  @4 f3 b8 V, W& Q
  305. lSet: R8 K  P# _' K1 L  V8 G3 U& O
  306. $redis->lSet('key', 0, 'X');* i0 Q2 h* J: m- G% C2 ^
  307. 给名称为key的list中index位置的元素赋值为value, |0 O; q, r  \8 x3 [
  308. : k" ~. |' |! }$ }
  309. lRange, lGetRange
    - x3 V+ y7 A1 ~
  310. $redis->lRange('key1', 0, -1);8 T4 }6 R% [, D4 L) w0 G* o5 y
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有): Q6 j, n+ z1 I8 ]3 g

  312. 0 {9 n- w. t) O
  313. lTrim, listTrim% y$ Y1 E3 i7 D% U* b2 R& k
  314. $redis->lTrim('key', start, end);
    0 _8 T* `3 O0 ^; v4 b+ ~8 Q8 A! v
  315. 截取名称为key的list,保留start至end之间的元素
    ! X5 v) o2 h& E, G, r& R! l, n
  316. % s- b! b0 ]. B- J
  317. lRem, lRemove
    ! u: ^% t$ e) J* e& T2 ?
  318. $redis->lRem('key', 'A', 2);
    * n7 f+ p( m' \! \# G
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ( x0 Y0 e4 V  ~

  320. ' m0 @) q' M0 O* h5 ^. w. n3 Y
  321. lInsert( u) N) r* h: A5 d) l
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    , G- _' r6 ?1 N1 |; R
  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');9 A* q0 ]3 e- t* C  f4 p" \0 w' g
  324. $redis->lRange('key1', 0, -1);4 A7 j* i' w- q/ _& y5 ~
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    ' Q8 ]7 M$ i6 A1 D8 ]; U
  326. $redis->lRange('key1', 0, -1);
      R3 i' n; t% s2 Q# C8 w
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    , G( G* e4 G. o2 g+ |# M$ Y

  328. - v! m0 N9 o0 W9 u; F2 R1 g
  329. rpoplpush
    & s) Z5 e" r6 v
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    . R+ h& Z! w4 @6 g: i
  331. $redis->delete('x', 'y');6 S% i. C( d, ]& ~5 Y+ p+ Q
  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 d# o) r/ I2 p1 J# Q
  333. var_dump($redis->lRange('x', 0, -1));
      t: Z: m8 U; Y, J4 b5 V! F% c
  334. var_dump($redis->lRange('y', 0, -1));
    / Q) s. X8 ?/ ~* V1 @

  335. 8 s+ C. M& I+ k" I5 q
  336. string(3) "abc"
    7 f/ k( V/ W8 l( k4 M
  337. array(1) { [0]=> string(3) "def" }
    : s( K: _; X8 n5 c# ]
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }3 t9 [- ?4 }8 @% F8 P0 D& [* c& c

  339. " V: e+ i' M7 y3 |6 M; ?" b, l
  340. SET操作相关0 n' ~5 W& M% p0 \' a) \
  341. sAdd! o/ F1 {1 r$ Q: w4 b
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    8 T6 x+ k; u- I. o" Q
  343. $redis->sAdd(key , value);6 M$ Q: N. v! w' X! z: I" E
  344. 7 V2 G( ]+ w4 g# [; ^( G7 F
  345. sRem, sRemove3 J4 m& F+ T$ q. n1 C" j4 x
  346. 删除名称为key的set中的元素value
    ' H: d9 ^) Y4 V2 `) t, K# W+ r' S+ ^
  347. $redis->sAdd('key1' , 'set1');; y/ _* k/ G9 J- p9 N; ^! s
  348. $redis->sAdd('key1' , 'set2');! h  n, ^& T5 U' m
  349. $redis->sAdd('key1' , 'set3');
    , o( Y" _- P6 I7 Q
  350. $redis->sRem('key1', 'set2');
    2 E7 J- }5 r0 a- ~+ t) y
  351. $ Z/ K2 p6 [, R8 `6 a
  352. sMove1 |) D9 a0 A& L
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    . O/ m+ C; }8 u" O, |! W
  354. $redis->sMove(seckey, dstkey, value);' K9 b% l: C# q  K/ u

  355. * e# Y, o' |& X. X  ]/ d+ p
  356. sIsMember, sContains7 A9 E- h8 b, ^, g) {
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    ) H/ ?0 \9 F: d" U8 z' P
  358. $redis->sIsMember(key, value);$ M7 o& a+ H. V/ x% ?' H

  359. , @3 t; T; N7 E
  360. sCard, sSize
    2 F; o* W; R/ G4 I) v+ ?$ k
  361. 返回名称为key的set的元素个数
    : m. j0 ?( a1 q- ~0 T. S! i8 n

  362. / V2 M/ o6 T, E+ i5 C
  363. sPop
    ! Z* h- b" F9 _2 U  ?
  364. 随机返回并删除名称为key的set中一个元素  ?3 l; z! o# s9 w1 w- Q" @
  365. ' O1 d" {! B& ?; M
  366. sRandMember; N3 s- H2 e& e& a
  367. 随机返回名称为key的set中一个元素,不删除
    9 t3 t* R: s" b

  368. 4 s* U( a# L: L9 _
  369. sInter
    $ f" |2 A) ?& I8 u8 W5 p
  370. 求交集5 Y) g8 P' M0 B! U) O! t

  371. . J9 f8 {9 q* Z1 Q
  372. sInterStore" @9 Q9 _8 c6 o6 ^! ~& P1 C7 M
  373. 求交集并将交集保存到output的集合
    ) C1 W, I) w5 R. S
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')/ f! |* S% J" A7 T/ x9 j- K% I

  375. , o, x! ?+ h/ h- u" d$ E
  376. sUnion
    9 K. M2 m  o  l
  377. 求并集
    ) o; \% V; V  p
  378. $redis->sUnion('s0', 's1', 's2');0 a5 R  @3 I9 P# p
  379. s0,s1,s2 同时求并集
      ?2 Y% b  m# B6 d8 ~, U
  380. : p" L  B& L2 c; Z9 Y
  381. sUnionStore( q( O; h4 o: t% Q" |$ p% ]
  382. 求并集并将并集保存到output的集合4 j6 w3 B- u! n
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');5 \# p) X% q7 C, x1 H; p* H8 c& x

  384. # X: w6 ?5 |% x. r* x' Q; P
  385. sDiff- a  b! l, f, ~7 b2 h5 `
  386. 求差集
    8 ]. A# ?+ t' p+ r: E; _
  387. 2 W7 Y& t+ j$ _/ D: {! {* i
  388. sDiffStore
    ; k. y& [- I7 m& v4 [5 ~3 d/ H
  389. 求差集并将差集保存到output的集合
    * Z& P# M, b/ r( T' r  b. {
  390. $ S  c% g7 T  S" r8 t/ h) U
  391. sMembers, sGetMembers
    * I' ^/ C6 z2 F! H! C7 K/ \, B
  392. 返回名称为key的set的所有元素0 J9 k. y$ m5 T& \, I- Y8 i! j

  393. ) a! c% B3 p) b5 L( T# i* k
  394. sort
    ( t8 f; V$ U- O* j
  395. 排序,分页等
    , y8 d; t& |1 c" d
  396. 参数" z  B# H! V0 i2 H# |! ~1 L, _& m
  397. 'by' => 'some_pattern_*',% i. x8 D. j8 V' J8 X- p6 f1 X. K
  398. 'limit' => array(0, 1),  `$ q. {6 c' L$ p
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    ( h4 G0 @5 f# S
  400. 'sort' => 'asc' or 'desc',
    ' ^5 Y2 h$ I9 `+ N" y
  401. 'alpha' => TRUE,6 U( Y8 O% d- U4 {! P
  402. 'store' => 'external-key'0 r0 m8 Q/ F; u8 R1 H% b
  403. 例子  i+ x& c* r) b3 e
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);/ r' T: A! d/ W: f( o0 z
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    ! t! |) _. j6 y& f
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    9 c( t9 a0 R7 B5 l6 r# a8 J
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    3 A! b6 F8 g. l5 M1 C& W
  408. 2 g$ w/ v* M& s# d' c7 l6 a
  409. string命令
    + ?7 L9 V* L* n$ s
  410. getSet% y  b( Y9 h* M; |
  411. 返回原来key中的值,并将value写入key
    / I6 r0 A' @  @# r
  412. $redis->set('x', '42');" Z/ }( G- S, V$ G0 X
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'+ J3 z& x1 l7 I1 u- {' H
  414. $newValue = $redis->get('x')' // return 'lol'4 O5 L. r! T9 v! G- `' l1 f

  415. 9 r6 V0 N' @$ M4 k, T' V
  416. append
    ' |" [% T0 d+ U% h; a' e
  417. string,名称为key的string的值在后面加上value5 A/ f, a, _  ]( L% H
  418. $redis->set('key', 'value1');4 ?# v- `& w, }: O: O' w! i, w
  419. $redis->append('key', 'value2');" ?1 Q' P8 b" A4 H* N: D
  420. $redis->get('key');+ Q% o: Q/ e! A7 a$ p
  421. 8 S9 z( h) [" s% k' ?
  422. getRange (方法不存在)3 _. U) r1 f9 {0 u* I
  423. 返回名称为key的string中start至end之间的字符
    1 F, M, d7 r5 O/ \/ s1 O
  424. $redis->set('key', 'string value');# ?) R2 o- Z) X2 D# L5 N7 o6 ]: n  }
  425. $redis->getRange('key', 0, 5);
    2 H. g* v+ e/ h3 ~& ^8 s# {+ D
  426. $redis->getRange('key', -5, -1);
    9 B+ T7 q' H: k# d( _- T
  427. # P7 y5 e+ L% f* }/ ]
  428. setRange (方法不存在)
    : V8 \6 r1 s1 \0 p# m4 K
  429. 改变key的string中start至end之间的字符为value
    $ R1 Q0 v4 [. e
  430. $redis->set('key', 'Hello world');$ Z* u5 A6 e( r4 \' j
  431. $redis->setRange('key', 6, "redis");
    5 C, w3 Z8 N0 Q9 W3 Z! V" |
  432. $redis->get('key');
    6 \7 X1 t( r" V! s& A) S: ?% `- {

  433. ( @/ N2 }6 X6 d$ ]3 ~
  434. strlen
    ) u1 Q' I/ d1 Y
  435. 得到key的string的长度+ M. y2 Y2 h  v4 U, j3 a
  436. $redis->strlen('key');+ R' ?! H" p: o1 p) [  i

  437. " g, g! w$ _3 N6 N
  438. getBit/setBit! L+ _, o5 V+ D' e) t
  439. 返回2进制信息6 `; x, G0 z% _
  440. / v! K8 i/ D) F0 A9 |
  441. zset(sorted set)操作相关
    9 O5 z1 j, R- C
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。8 d1 v- ?6 z) ^9 M& [% a
  443. $redis->zAdd('key', 1, 'val1');
    ; E. \1 j3 r% V7 C
  444. $redis->zAdd('key', 0, 'val0');
    ) E5 d& B, W: ^0 m' r8 {
  445. $redis->zAdd('key', 5, 'val5');
    / V9 c$ t: H1 U" ]6 d
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    % @- ?. u. l2 L! _8 Q$ z
  447. # @" x: U/ s( S6 {" r: X' D: e
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    # {8 P) G5 D3 W) ?+ e5 d
  449. $redis->zAdd('key1', 0, 'val0');
    $ j: `! s0 D7 d, l* C
  450. $redis->zAdd('key1', 2, 'val2');; z; e; w, _9 b2 O1 {% E5 z
  451. $redis->zAdd('key1', 10, 'val10');$ @! u1 m4 Y& y  _8 t0 G- p2 [& s
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);3 z2 i2 Q1 O7 v' ?6 ~) `

  453. 6 W8 _  |* X1 I/ s$ f
  454. zDelete, zRem
    - r/ c. \( p# y2 @5 M
  455. zRem(key, member) :删除名称为key的zset中的元素member
    : ?6 G0 R: g+ B, K- V/ Y+ M. w
  456. $redis->zAdd('key', 0, 'val0');# ^- e4 O7 U: P: {. B1 P
  457. $redis->zAdd('key', 2, 'val2');  y" G+ f; d9 I9 P1 s; }: e( g- w
  458. $redis->zAdd('key', 10, 'val10');; V- E4 N- [6 f
  459. $redis->zDelete('key', 'val2');
    ! a) c% _3 b6 C
  460. $redis->zRange('key', 0, -1);
    , s% B$ \8 r. |0 c
  461. . I# F* Q* m# |" z! k# Y( o
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    ( B' Y8 G3 H5 Y
  463. $redis->zAdd('key', 0, 'val0');) M' q' {. U4 `: C- R2 {3 C: e
  464. $redis->zAdd('key', 2, 'val2');6 l" C% q3 s/ L0 X0 H
  465. $redis->zAdd('key', 10, 'val10');# v# f5 k6 H7 z# K) h
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    3 L# i! d, V& ^4 z

  467. ! C0 n3 \5 h1 k  J8 y8 k( k' T
  468. zRangeByScore, zRevRangeByScore
    # K, p9 o" N! [3 R
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    2 ?( ~& F' x' O( P
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    4 N2 U2 |# Q+ D3 |

  471. 6 J( d' X: w8 _4 j7 e6 q; V
  472. zCount
    " A+ c7 q' r+ O; [* f5 J
  473. $redis->zCount(key, star, end);
    0 c$ }, C! d4 W& G, E8 ~& s
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数; S/ C/ |; r0 ?5 ?4 ^  j. W

  475. ! D6 s3 ~! e# q. q- G
  476. zRemRangeByScore, zDeleteRangeByScore6 a* j' W4 K8 y3 R7 ?& e0 ?! k
  477. $redis->zRemRangeByScore('key', star, end);
    / O  B6 \' a% S
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    ! Q" g- r+ O0 d3 d: O; ?* ^

  479. 4 D& r: }$ L: V) r! s& u
  480. zSize, zCard
    / y( k$ n0 `, S2 o
  481. 返回名称为key的zset的所有元素的个数
    $ D) k( y" y. x* k7 f
  482. 0 U& C$ F& U0 D) u& j. I
  483. zScore" R0 d- Z/ d, X% f# i8 @% o
  484. $redis->zScore(key, val2);
    5 \$ s7 k' r) B- \/ ^$ z. i
  485. 返回名称为key的zset中元素val2的score
    ; N/ y/ N: }. A4 x, M2 ^) }
  486. ) @2 \; l3 F6 g6 t+ p, ]
  487. zRank, zRevRank/ a7 J! C* V3 T  U5 f2 t2 f
  488. $redis->zRevRank(key, val);; e7 ]9 J$ B, x. `! U% e2 ?
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序' X% T, |+ U( D% m+ O' b5 `( v
  490. ) U7 ]$ L0 z" L+ N4 z
  491. zIncrBy1 `! H3 U( s1 q0 H
  492. $redis->zIncrBy('key', increment, 'member');
    7 O+ ]( D6 M9 J& a1 Q6 D! A2 m; w1 {1 f
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    4 p6 @4 {. d4 b8 w! W. M
  494. 3 X1 P5 z* ^6 `8 _2 S! `/ T& ^' t
  495. zUnion/zInter
    / D; p5 q( S: G9 @4 s7 N& E: ]
  496. 参数
    8 h% R$ Q/ }  I8 ]( W9 D
  497. keyOutput
    1 a2 ~) {8 n0 c. ]
  498. arrayZSetKeys
    . W, d, X! k5 s# M: K  Y
  499. arrayWeights
    ( b( h* ?" [% j) {" c: z1 b* v
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.* U) `# @  C% e: D
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    ( f- {0 B$ }, ?9 {/ z& W4 A
复制代码
8 D) y: c( b/ a2 {& K

1 S9 N2 a% [2 Z3 V$ P
* L+ d9 T. y0 w$ Y9 l
) G/ ~4 V  d  D6 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    ! ?6 ^; W- ?6 K; F2 ~# N
  2. //连接redis服务器 - r5 E5 }: G) p1 W2 q
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 18:44 , Processed in 0.069029 second(s), 19 queries .

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