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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    * v6 c' X7 s$ y7 u
  2. $redis = new Redis();  
    , y) O! I' C7 u/ ?1 x: e8 v* g5 D( `5 f
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    & H- K, ^+ m+ V
  4. $redis->auth('mypassword');//my redis password ( z8 `. [# p. w+ _
  5. $redis ->set( "test" , "Hello World");  
    / y, l# {9 M+ U7 t/ D! X  Z, Z% w7 O" T
  6. echo $redis ->get( "test");
    3 m8 s" C  H" a* M+ X) i
复制代码
php操作redis函数封装
  1. /**# }, m4 |( v3 O/ C  z* h/ Z
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数- k" s6 s, L/ W, l* o" K) I; m8 a
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    # I# N( g! ?& G# V$ O8 R: ~" }
  4. */* p2 n3 U/ T( E
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    ! Z, O; f7 j- J7 l
  6.     if(!$key||!$value) return false;
    : D& K1 f( k$ o/ J
  7.     $host = $host?$host:getenv('REDIS_HOST');) M# `& A5 f7 t. S! E* |
  8.     $port = $port?$port:getenv('REDIS_PORT');
    ) A! U6 `/ A/ O
  9.     $redis = new Redis();( |+ i+ t" \- V  ?3 u" E
  10.     $redis->connect($host, $port);
    ; [! U% |9 [2 |# @; G
  11.     $value = is_array($value)?json_encode($value):$value;7 z! c( q# I( N" X1 S% m( a
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    6 l: [' \5 o; d! }5 v$ ]( t/ z7 v
  13. }1 f8 S4 \3 g# B$ @
  14. /**- A8 v$ J; E3 v6 w( f- S
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    & C: }$ q+ n  ?6 j* |* S
  16. */$ k! u7 ]  z2 f3 _! E
  17. function RedisGet($key,$host='',$port=''){# L6 ^, \/ U8 W( C& ~, d
  18.     $redis = new Redis();) {9 H+ g/ Q& F
  19.     $host = $host?$host:getenv('REDIS_HOST');
    ' F  \; ?- J: L) g1 i' `( ]% M
  20.     $port = $port?$port:getenv('REDIS_PORT');$ b) v: {4 I, O) b1 P* Z( {
  21.     $redis->connect($host, $port);2 h# A9 ?+ _% }% N# ]
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);* s. a( h% `0 K% N7 F
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    - P# l/ y0 x! C2 ]2 @
  24. }
    $ u' z% i( y: `! j
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了5 F8 Y- R5 y9 `$ t% c3 m
  1. setex 带生存时间的写入值
    ! S! x' X) v" K! d. z* k8 z  z# W
  2. $redis->setex('key', 3600, 'value'); 8 E+ q: S0 _0 U# C* ~1 m
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1' i1 C* |; N! x
  4. $redis->setnx('key', 'value');
    4 [  X# o! X% l/ ^: J; X1 Z8 X
  5. 返回已经删除key
    ( M9 r3 y: Q; B( D0 f" B) w
  6. $redis->delete('key1'); 成功返回1失败返回0
    4 J) B# d, P, K0 U
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回02 \' h- g9 s. S. Z
  8. 查询生存时间
    ) {6 f& b, x( [/ W
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    2 G) f  `$ I' C$ d( Y7 \
  10. 同时给多个key赋值,同时设置key0和key19 ?! j, @( k* U& w' l0 z2 ], G
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));) x) e1 }! b$ p, s
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    3 D6 e: q) B& c* Q1 m7 \
  13. $redis->incr('key1');& q# w' i" o+ [
  14. $redis->incrBy('key1', 10);
      K" K* A- q$ P" T  \5 i# L
  15. 减法跟加法一样
    7 q4 w- v  k. W/ [( e# v% K4 a
  16. $redis->decr("key1"); 减少1. q' c( G& t# C. s
  17. $redis->decrBy("key1",5) 减少5
    : X; \# u0 I% c2 a1 y' |

  18.   x- i7 r2 l# A; {( \7 J# ^* b
  19. list相关操作,连表操作/ ~  G4 j3 ^0 N8 U2 D$ p
  20. lPush1 y7 Y8 w! e; E1 F5 d2 @
  21. $redis->lPush("list", "888");
    # J, w/ Q# O' a+ [
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    ) f6 v. J7 ]: v* v. [
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    " e# h* k7 |2 r9 B
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    & y/ M) k; k: A# g9 g% m
  25. lPushx/rPushx
    ) U, f& @- o- W8 _' P* K* q
  26. $redis->lPushx(key, value);& ^" h& ^3 I( M, z
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
      }! q3 Z) t& Q8 T3 h

  28. + r8 z# j; N' O/ |6 |3 t0 @  C+ {
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    ( z+ {$ o7 c! Y- d% i( `5 I+ e- a, `* t
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    3 X5 L9 B8 G" x
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    $ t( T& T0 {3 ^
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    . A' K5 ~6 R! H3 J
  33. sadd s1 zhangsan& ?% x* B3 S; b. s
  34. sadd s1 lisi& W0 P; N$ b: h# }' D+ Y
  35. sadd s1 wangwu
    : u/ r, A; F5 W5 d, L2 {
  36. sadd t1 yangxingyi
    4 [; N8 Z2 U5 `" q4 e. a  D
  37. sadd t1 lilei7 e' ~, u0 ?6 G5 {
  38. sadd t1 zhangsan
    ) o# w- Z2 L1 T" x1 a# _
  39. smembers s1 s1的所有集合内容
    1 w# ?  K# v- X# H1 i
  40. sdiff s1 t1 s1有的,t1没有的,差集
      Y) H: w, G; V: T) i3 k
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    8 |/ w! |: ~6 p9 i6 |" G! X$ n
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    7 `; @1 i3 C* ?: ^# z2 c
  43. spop抽奖场景,返回集合里面随机的数" b6 f8 r/ `+ a! ^* ]" w
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    5 t/ F" K9 s* K; U. ^
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    : L& v) Q5 P9 p) _
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的7 R: v# w. I. a- I; x8 \; S* A$ J
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    " W, r8 j( M) c; u) z( P
  48. $i = $redis->srandmember('s1');echo $i;
    8 ?: e* q" q7 h# v8 F5 ~/ m( z( r
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false3 u1 g9 {' ^! a6 n. e  C+ Q4 Q
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    . Z) j7 x' F8 J8 H$ g7 V; H: p
  51. ; ]7 ~' j9 _) E! y! K; p1 j
  52. zadd key 2 value 有序集合5 P6 H3 S+ S' s& x' a0 }8 n; }3 \/ E- ^
  53. zadd y1 1 zhangsan;, A, y9 Z" d8 s  x! _1 z+ X! _
  54. zadd y1 3 lisi;
    9 o8 Y- ?% _2 H' r, u2 a$ `" s
  55. zadd y1 2 wangwu;
    . y& X, Z4 @# W5 v
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi( @0 C1 O9 j$ a. N' t: _0 J5 A# }% ~; f
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    4 ]& M8 J' M9 y* D
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    ( N6 B9 F2 H$ g1 x
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先8 U9 q: j# Z2 \" ]8 Q
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ' r, y( ^6 l! u1 U
  61. 无序就scard,有序就zcard,有z没有s& l3 A. U9 t  Q: A' \! P" w
  62. sInterStore; n8 b4 B2 |- v' o; n1 B
  63. 求交集并将交集保存到output的集合/ c5 y" u1 O& g5 m5 H
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3'). r9 Z/ U) Y6 m7 T$ {
  65. ' x# Q* Y; U+ D3 d' g+ T7 _
  66. Hash操作+ n8 A1 f9 Q* L% \
  67. hSet  n  x# }$ ?5 g4 {2 L
  68. $redis->hSet('h', 'key1', 'hello');' P2 Y# |( \# ]# c4 s
  69. 向名称为h的hash中添加元素key1—>hello# {+ l' U9 c( j5 O

  70. 1 H" w- M/ {: Y( v
  71. hGet
      J5 R4 W7 T2 n+ K
  72. $redis->hGet('h', 'key1');, M; J9 y: p0 I. F7 H6 ]( a; T, {
  73. 返回名称为h的hash中key1对应的value(hello)
    2 p$ n1 B& Q3 u& S4 U

  74. & W) j' ?8 I( D' t6 }* J$ ]
  75. hLen
    ; s5 ?! X2 _4 H- o
  76. $redis->hLen('h');) B0 e& K. u' z- w/ r
  77. 返回名称为h的hash中元素个数! g% t; ?6 I  G- J+ I
  78. 4 m8 A4 R1 A& N2 j3 }
  79. hDel2 Z( o( g# W' T) D9 D
  80. $redis->hDel('h', 'key1');
    3 e5 Q% a1 I  r8 S7 o
  81. 删除名称为h的hash中键为key1的域$ U7 @: m7 w/ d3 X

  82. # m/ J! @8 b8 V- r5 o5 I' @
  83. hKeys( t( `) w& {& h" M8 d4 p
  84. $redis->hKeys('h');
    # d' Z2 |% i8 @% q6 f' r& f0 ~/ E& w% R0 ?
  85. 返回名称为key的hash中所有键& W  a1 r* g3 b2 [# A

  86. 8 s) S/ F  {1 Z. ~; b1 e: F) _
  87. hVals
    9 `2 f! F# V( G& }  J/ i" d
  88. $redis->hVals('h')
    ! Q2 Z4 N* W# T( f  l) L4 L9 K
  89. 返回名称为h的hash中所有键对应的value3 G: u, n9 f4 n) ?8 x/ ~* X$ y

  90. % f% ^1 V/ x& F0 C
  91. hGetAll# W) ~6 a" X# ]0 r. M
  92. $redis->hGetAll('h');: O7 H; ~  U# h5 J" w2 j3 c
  93. 返回名称为h的hash中所有的键(field)及其对应的value/ G  u& W& K. q

  94. . f' B( c3 w; D- |: b
  95. hExists
    4 ~) L- p/ A9 V4 V! ^! C
  96. $redis->hExists('h', 'a');
    / w9 y" e( C2 |8 K% R* J+ h" `
  97. 名称为h的hash中是否存在键名字为a的域
    ; j  Z/ b: ]' O8 T4 A  d1 S% _4 }0 |  t
  98. 6 P2 U' P' o6 ?& }7 u
  99. hIncrBy
    0 J1 I; W8 r- Y
  100. $redis->hIncrBy('h', 'x', 2);& p7 z/ a6 `3 O: z% h
  101. 将名称为h的hash中x的value增加2
    ! F1 T) N* p& g
  102. ; i9 `  Q' ]1 ?2 g; J1 E
  103. hMset
    5 U) O. j/ _; U. [5 p
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    / G3 M7 S0 X- `# g
  105. 向名称为key的hash中批量添加元素& M/ T2 f2 S8 k
  106. 6 j3 ]+ t8 u, n" A! K
  107. hMGet
    4 s& e. a" p0 |1 k
  108. $redis->hmGet('h', array('field1', 'field2'));! a* x2 P7 G5 K1 a0 }
  109. 返回名称为h的hash中field1,field2对应的value
    " U* t7 p. {$ y+ {# ^+ z
  110. / k' S% @$ q/ w6 u  O1 S
  111. redis 操作相关0 I* K6 y; u" m9 A
  112. flushDB
    5 l0 R6 @1 {& w  m1 Z9 y
  113. 清空当前数据库
    - q# j8 t  R" t6 `8 Q- g) d! l5 @, J

  114. 3 f  K1 s# L' N9 m# m
  115. flushAll
    / ?- U$ N: R3 U0 q
  116. 清空所有数据库4 d" K; R4 \; F

  117. " }6 k3 p6 d1 u* J, t" }3 \; P( n
  118. randomKey
    6 x2 D1 V; l" {* U9 P+ r" ~) m
  119. 随机返回key空间的一个key% o/ y! d0 y. ~4 p( a4 F" D4 ^
  120. $key = $redis->randomKey();
    # n9 E- @9 t( N  h" y$ u( V

  121. : E* a0 [  v5 P2 l$ c5 w# q7 W, i
  122. select4 R1 N5 Z4 t7 _! F3 Q" R; @
  123. 选择一个数据库4 I& c* {3 [( s- M9 B( M9 e; R
  124. move( z" X! Z' Q7 _: Y3 ^
  125. 转移一个key到另外一个数据库0 A' E: ]: z/ o7 t  y
  126. $redis->select(0); // switch to DB 0
    3 i4 u& Q. c. ]3 n/ e. _) g! v
  127. $redis->set('x', '42'); // write 42 to x
    2 D  r8 }6 h' F. n8 |1 y# a
  128. $redis->move('x', 1); // move to DB 1
    2 S; z) a8 S/ E* e
  129. $redis->select(1); // switch to DB 1
    & Y# K3 Y$ e$ ~; M. T
  130. $redis->get('x'); // will return 42; s( F, |, y& N. s, r( w

  131. * @' k; v: c2 O# `# |' H3 Y& [. y
  132. rename, renameKey
    : A7 f7 a$ v  U) _
  133. 给key重命名6 s# n: c* |1 D3 u
  134. $redis->set('x', '42');- Q! j/ v$ E, i% b
  135. $redis->rename('x', 'y');
    4 n! i! H9 y& V: q/ z
  136. $redis->get('y'); // → 42( O" ?* x4 j% N8 t+ K- _! |* E
  137. $redis->get('x'); // → `FALSE`
    1 U- v, z' F( }" o

  138. 0 ]1 H4 [0 ^: H2 ^, a
  139. renameNx
    * C  H8 L6 x( Q, h7 C
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功1 g7 O. p9 @3 ]. Z* |
  141. 9 X/ T: \: k! m, F% J
  142. setTimeout, expire
    ( |$ O  m. X, ^! I
  143. 设定一个key的活动时间(s)
    ( P; c1 M1 y( }8 ?
  144. $redis->setTimeout('x', 3);
    / S4 M. `. ~1 W% u  }' m3 ^

  145. ) g% f  W. e7 Q9 T& T
  146. expireAt
    ! J7 S4 B- W' C+ m. f( d
  147. key存活到一个unix时间戳时间
      Y7 u- c  \6 p( ^9 f/ B
  148. $redis->expireAt('x', time() + 3);
    # i7 V8 `: U7 h  G/ d

  149. ) l' A0 |- p3 ]' C$ y
  150. keys, getKeys  S! H+ ~2 E2 l! Y
  151. 返回满足给定pattern的所有key; @* l- p# X  T7 T
  152. $keyWithUserPrefix = $redis->keys('user*');- i8 l; L/ X8 l, v2 c8 W
  153. 3 j5 u- n8 o6 f% S
  154. dbSize
    2 C+ \) M8 Q# G/ f" Z0 ^4 f
  155. 查看现在数据库有多少key
    8 w; u; r" C5 U& ]: I8 m, l/ A+ @
  156. $count = $redis->dbSize();7 R1 w4 h) C, L7 O+ w
  157. 8 D# @% ], ], y3 H& v( H2 i* N
  158. auth
      G) _0 a6 J2 l) T9 r& Y1 V
  159. 密码认证
    ( T: L! m: A  R, s% i
  160. $redis->auth('foobared');
    7 M6 m6 q) F0 Y! E) e

  161. - X9 v$ \; p# g
  162. bgrewriteaof
    ( M5 e9 Q6 K$ ?0 m
  163. 使用aof来进行数据库持久化
    4 `/ P5 _9 Q0 }  G) }1 s$ a
  164. $redis->bgrewriteaof();6 m2 x; M  d( Y' j! c

  165. ! J3 D% Y9 o1 w5 j4 _" m
  166. slaveof
    * u! ^# m' Q9 X" {' r+ A8 }
  167. 选择从服务器& Y1 m8 d, }' k+ l
  168. $redis->slaveof('10.0.1.7', 6379);
    + A1 [' j) m( L1 |$ O
  169. ' _" l4 z% A+ t3 x
  170. save6 r  b- u: Y% Z( S% g- ]. L: Y2 W
  171. 将数据同步保存到磁盘
    % B; F  v3 O3 Y0 d$ i% h

  172. & k, ?2 o0 X. T6 k# h
  173. bgsave
    4 d* B* w" F4 f* J7 _* ~
  174. 将数据异步保存到磁盘
    ( P+ {5 u% f8 A# B. ]9 O9 q

  175. " k& ~$ l- U1 m, `# }
  176. lastSave# [; Y' q4 I2 w2 a% J: Z
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    - s! ^7 M8 x3 z

  178. $ t6 i9 M  A3 R" ~5 P" s2 O9 Q
  179. info* d) A9 B" ^# Q7 G% `4 A
  180. 返回redis的版本信息等详情
    # H6 s$ [, N  J$ r1 c8 b
  181. - T% l2 D/ C* I
  182. Redis::__construct构造函数0 ~  R1 z0 y6 k: ~. G
  183. $redis = new Redis();2 C6 F; ?( m  @. }  g8 w

  184. 3 ]9 [, `" I* T0 ~0 u+ c/ V
  185. connect, open 链接redis服务  S0 E# N# @) \
  186. 参数
    3 Y' w! K' `* J) }+ X) q9 [* s
  187. host: string,服务地址; J7 h. {! A1 m$ e  ]6 [
  188. port: int,端口号3 m; {" j" [9 a
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    1 u. |9 _5 P9 T! P/ b5 Q  j
  190. 注: 在redis.conf中也有时间,默认为3008 [1 t) D2 O0 J& Y

  191. ) i0 O" t  h9 k$ t
  192. pconnect, popen 不会主动关闭的链接! b$ J! a+ y0 Y
  193. 参考上面  B! ~+ _- f1 i

  194. 3 b8 h- \+ C2 q" _$ ]# c  N
  195. setOption 设置redis模式
    ' b& V, U8 a: s, g0 p* F% l

  196. , g+ J3 K. G1 _0 d4 Q) q4 v
  197. getOption 查看redis设置的模式& O; c) [3 E3 u3 n1 e2 Z" ]

  198. * m5 M9 `! v. I+ `2 m% r3 c
  199. ping 查看连接状态
    ; N. v) U; R; k* v3 b8 X3 o* }5 ?

  200. * d* z) F: Y- I0 @
  201. get 得到某个key的值(string值): M2 T6 g. j) X. B2 x# m  D
  202. 如果该key不存在,return false
    3 g* J/ d" V9 Q: V; o, ^

  203. 9 v) F+ R8 R) ~# H! v
  204. set 写入key 和 value(string值)
    2 S& ]9 Z6 h$ _
  205. 如果写入成功,return ture5 N. H: M: o; g" c( N$ X* F7 @" H4 ~
  206. 2 ^4 D) d6 f- @; O- M: H
  207. setex 带生存时间的写入值% O& p$ j- `2 L# u
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL./ Z, c+ c: w& I1 I* N9 \
  209. 0 f2 `* t, O* P$ G, B0 d  ^7 [/ X
  210. setnx 判断是否重复的,写入值
    / N$ l/ E- Y) M
  211. $redis->setnx('key', 'value');/ m+ {* F. B3 u9 ^6 d
  212. $redis->setnx('key', 'value');; i" }! G' t0 {' x* K  E
  213. * ?, B/ r9 G! \" W! r2 t1 c* n6 ~
  214. delete  删除指定key的值9 K5 {3 f4 r" i# E
  215. 返回已经删除key的个数(长整数)
    7 Q, e: o8 z( r) i* w1 ]# c
  216. $redis->delete('key1', 'key2');
    $ y( F! o# U2 |% ]5 T
  217. $redis->delete(array('key3', 'key4', 'key5'));
    + v9 }; |- s1 M* g5 }* [" M' y

  218. 0 Q0 J8 @) x! H  V% w* T3 f
  219. ttl; E+ _" L0 Y) _. V  z9 [0 N' e
  220. 得到一个key的生存时间
    6 _8 Y# o, y# _) C
  221.   z0 s( |& S6 E1 O' U
  222. persist* K1 Q( t6 w. v9 u2 i
  223. 移除生存时间到期的key
    3 n! z* }+ L3 [/ _. I' [
  224. 如果key到期 true 如果不到期 false
    7 \, M1 i/ T- _* I8 C7 J( L) }% k

  225. - U" P7 {' v( j# R' Z- @& S
  226. mset (redis版本1.1以上才可以用)( Y- j/ u& s5 ]  c  G
  227. 同时给多个key赋值$ Q$ z. Z7 M3 y5 f( y% [1 m: h4 d0 l
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));5 C! W- o0 x* G- o' o

  229. 5 r( c) j* V9 ]
  230. % w  N% q. T: z/ }( h" ~

  231. 6 b: n5 G# v) W5 C+ t; o4 B0 y
  232. multi, exec, discard
    7 ]+ h* |% f) u: B9 r$ v/ g
  233. 进入或者退出事务模式7 W) v+ e$ u  w" T( }& Y
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    6 F; r6 m: t% W, H) C. S; }$ T
  235. Redis::MULTI:将多个操作当成一个事务执行" g- v/ [" j0 d) {" l& f- C, {
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    + B, M+ s7 |1 n' T6 i* m! P
  237. discard:删除一个事务4 T- d& M+ X& G5 u$ c; C2 A& |" Q
  238. 返回值
    . n" C6 o; L* w# [0 N  k  R
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。3 ]0 E2 P/ I1 B6 j9 F* u: o

  240. # @# b' H1 h# ]* [/ F* |. J$ I
  241. watch, unwatch (代码测试后,不能达到所说的效果)1 D* u: ?1 s+ J2 H; [& E& F' `+ ~
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    6 d4 v0 O. j; i% s+ _
  243. unwatch  取消被这个程序监测的所有key* |: g% [# o6 t9 ]7 _1 K
  244. 参数,一对key的列表1 k/ \" A3 L, m/ k- ?& o7 Q
  245. $redis->watch('x');
    3 U  x9 z- P% c' l- P5 j4 F
  246.   w9 o6 F2 K7 \8 h
  247. $ret = $redis->multi() ->incr('x') ->exec();3 B" Q" b- n( f" d

  248. * |9 i0 v9 |' g# y! l% ]( D  A! \

  249. 4 F! s: v5 w* f# \; O# G! T, z
  250. subscribe *! U) N6 I, }/ R( b) j" m9 O
  251. 方法回调。注意,该方法可能在未来里发生改变8 d$ K" G% E/ D& B# S8 n8 r  ]- d
  252. ; m* ^. O" f6 Z2 X/ @0 ~' d
  253. publish *
    , l! J; k: S5 U0 }1 |  G( b
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    " K  W& i, A" w+ r

  255. 2 z) I( u2 l+ v
  256. exists
    + e/ Z8 d* q) m% P! F0 @2 z) }
  257. 判断key是否存在。存在 true 不在 false
    ) h: a1 u' F$ ~5 }; i; i. y
  258. 9 J- L4 m8 o" i$ E
  259. incr, incrBy
    9 J7 e. x$ s* w% J0 u+ M
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    8 r2 x: V- g7 x& R/ v( P$ H* U
  261. $redis->incr('key1');
    & j  m! \9 Y9 r' ?
  262. $redis->incrBy('key1', 10);
    % f2 J& g4 G8 Y3 N+ O, e
  263. 0 `, j# _: t2 K0 O- X. H0 h( o( H
  264. decr, decrBy
    : J+ G8 O& X, S3 C* b3 @; r
  265. 做减法,使用方法同incr
    5 a) m0 E; [4 B( p$ u* G

  266. ; R5 @- P3 r! m  w9 c' S
  267. getMultiple( J3 [: r9 Y# O0 y8 u2 {, W
  268. 传参
    - b4 F( n1 z4 S
  269. 由key组成的数组" c7 O+ S+ k9 `6 G
  270. 返回参数
    : W7 r, k; Q2 A7 x
  271. 如果key存在返回value,不存在返回false
    * m8 i. k  v7 i5 S, U
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));+ Y& @7 ]' v+ K* q5 V) r
  273. $redis->lRem('key1', 'A', 2);- P8 K- `2 Y% D
  274. $redis->lRange('key1', 0, -1);4 ?2 V* H* i1 p

  275. / L" `; A, H7 i* T/ q! c
  276. list相关操作
    * U% x  |8 M" P1 K% c. g
  277. lPush
    ! y: E9 e& z! }
  278. $redis->lPush(key, value);
    - D0 t2 f" z$ z* p* E$ q
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    . C& t7 y4 L9 E
  280. & v: Z# a1 J3 X
  281. rPush
    + H& e% y2 P# j4 L
  282. $redis->rPush(key, value);$ q8 W' ^# y3 R$ O7 ~8 P% B
  283. 在名称为key的list右边(尾)添加一个值为value的 元素1 ~7 h. q1 R% Z5 u3 z4 ?
  284. 0 t1 F1 v8 ?: q1 M
  285. lPushx/rPushx% d( Q; z+ s- r8 v$ H# C4 [1 R: Q! S' \
  286. $redis->lPushx(key, value);
    ( c# r4 P# f! m* Q
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    $ i+ [  h# T" P$ G
  288. 6 ]. k, R+ A8 V% i; O
  289. lPop/rPop; A7 o. i# ]$ A& Q
  290. $redis->lPop('key');
    , {: e2 }4 v4 Q+ W; C9 w! K  i
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素% o. |3 B5 g4 H3 D0 V( }- R

  292. . H" c7 B! ]+ Y( J6 L8 Q/ }& w/ B/ R
  293. blPop/brPop
    ! K' ?. T$ [0 e# m
  294. $redis->blPop('key1', 'key2', 10);2 w1 a: }4 t# H1 m7 W4 h! Z
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作  S# l- C. d4 p) L6 a. z2 o
  296. 0 J, H+ I# q2 b5 D7 p/ m
  297. lSize% o( W! |9 U* s/ f
  298. $redis->lSize('key');
    ) l4 O0 x; _- F2 w* l& {- C
  299. 返回名称为key的list有多少个元素
    8 X) S+ K  d3 t& ?8 M; W

  300.   _2 _, q+ }: T
  301. lIndex, lGet: Y* w4 |& o- k* S
  302. $redis->lGet('key', 0);7 R) Q& @% [6 K9 c0 |, K- [  a
  303. 返回名称为key的list中index位置的元素# Z  O/ P) y; ~+ w( N7 G
  304. 2 x* W$ {3 ^% q
  305. lSet' j; D6 K, x2 Z2 A. o  s
  306. $redis->lSet('key', 0, 'X');. R% V& X: @6 I4 P! `( a2 V8 P
  307. 给名称为key的list中index位置的元素赋值为value
    $ r7 k5 x) y  J* m+ e+ f; U; |
  308. + ?) A! V8 T- N3 f: c
  309. lRange, lGetRange
    " r* e, l  o, c* A1 l; a, I; ^
  310. $redis->lRange('key1', 0, -1);
      a4 ~1 D# a" T
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    % u! f. S! H* M
  312. 2 ~( a( Y+ w  ^& i3 p, x' K/ q$ |
  313. lTrim, listTrim! V, E: Q* M$ _1 M
  314. $redis->lTrim('key', start, end);- W/ Y& [5 e8 K3 y# t
  315. 截取名称为key的list,保留start至end之间的元素* w; H/ W3 O$ {. k1 \

  316. ; n2 i; \2 b. m9 h0 }# G
  317. lRem, lRemove
    - v' n0 O# }% R6 J& x
  318. $redis->lRem('key', 'A', 2);; o+ m! P" I/ `) q) D, m
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素8 t0 b4 h* e' |, T3 B# Y

  320. * C5 L- w& J! [& {2 V% m% m
  321. lInsert
    5 O, r+ s0 F! N2 z/ D# Q- N  v* v/ h
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1. V3 d. h) d8 ~  q# \6 o8 {% X, 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');
    $ S2 h/ G/ p# D6 _; h
  324. $redis->lRange('key1', 0, -1);0 q3 L" L2 U7 j8 {! m
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    & G, u+ k. j  |) E5 r
  326. $redis->lRange('key1', 0, -1);
    . Q( K  a! G: x6 M! Q; |$ Y
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');3 J, L- z! p  K' u- }

  328. 3 Y7 g' m; _" q7 n4 L
  329. rpoplpush' F2 Y1 S; }4 W$ H
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部# x7 {* h/ @1 Z% p
  331. $redis->delete('x', 'y');5 P8 z3 z: S$ J  }% u
  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'));' F! t! b! k( _9 B- @/ T6 j
  333. var_dump($redis->lRange('x', 0, -1));+ t1 |! o" e6 M5 Q* `
  334. var_dump($redis->lRange('y', 0, -1));
    % ~  Y4 W' x' u/ i5 u  p: v6 t0 @

  335. # b7 _9 R5 G6 w+ n. ?
  336. string(3) "abc"
    7 e: S- S" u, ^6 @: [6 c1 d
  337. array(1) { [0]=> string(3) "def" }
    ) ]5 M& D1 c1 M: h2 k8 V, I2 L4 }
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }9 R6 f* e' j4 j  h" z

  339. 4 T9 N5 e$ V$ U& T
  340. SET操作相关
    : i4 K" d9 o* I- x. M# ?
  341. sAdd
    6 r) ?" R- R' ~& m; B. j, U
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false4 }' }6 X9 z0 _4 t" o" `* f- ]
  343. $redis->sAdd(key , value);0 D; d6 }# d$ G* N  @
  344. 2 x, a- s! h" O3 y
  345. sRem, sRemove
    " J5 O9 u3 M) x  y+ u* e
  346. 删除名称为key的set中的元素value
    * _! t; P" v% @3 O* a: q! ]! u
  347. $redis->sAdd('key1' , 'set1');( J3 \! {5 e! H* w
  348. $redis->sAdd('key1' , 'set2');. e8 ~5 ]: B: S1 S) o
  349. $redis->sAdd('key1' , 'set3');
    ) M' c( H  S4 Y2 u% d! y& [
  350. $redis->sRem('key1', 'set2');
    " k% Y% q. P5 ]  s0 {5 L4 ~6 ?: b
  351. - I" ]5 q' n! q& ?! K
  352. sMove) V7 G! h: z  v. ^
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合! n  C# R  t+ \  m
  354. $redis->sMove(seckey, dstkey, value);, M8 \2 b% \7 p! {  D4 c0 ^5 T$ x

  355. 7 u9 T1 K6 ^8 |+ ]9 j% M
  356. sIsMember, sContains: o7 W! X  \0 t* i3 ^7 @3 z! O
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    1 F0 m4 P' P# a7 c9 o6 ^8 V! R
  358. $redis->sIsMember(key, value);- S* e5 ^) [# i

  359. / n2 K/ h. L% z" r6 o( x+ N
  360. sCard, sSize
    ( n7 f, E( z/ G4 B. q: {
  361. 返回名称为key的set的元素个数
    ! y' l' U% U6 f4 d4 `& a

  362. 0 I8 s; O# V6 V7 U/ U* y) t
  363. sPop
    ! L9 p5 ?3 D2 g( q
  364. 随机返回并删除名称为key的set中一个元素( |4 u# z6 y2 }' q

  365. & y+ S$ @7 t' `
  366. sRandMember
    ) B7 N- K1 m$ _& n* o
  367. 随机返回名称为key的set中一个元素,不删除; J& r. M0 t# w: J& e0 |7 C

  368. 0 C* P0 k0 \$ w+ ~3 ~
  369. sInter
    / g+ q9 l% e6 O. O0 l: c
  370. 求交集: P( u, E" [8 R) P- M; [
  371. & ?" y8 Q& K. q1 `
  372. sInterStore
    4 V8 N% {: U5 @* `1 a) k
  373. 求交集并将交集保存到output的集合4 w  `) d7 ~) ]7 d
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')/ f* d7 y. r7 r* s6 p, ^4 R/ j

  375. 2 W$ Z" R  h7 `7 Q/ j& i3 S
  376. sUnion2 [% r' w% A# R
  377. 求并集3 J% X7 p# R2 J  T4 ~+ z
  378. $redis->sUnion('s0', 's1', 's2');! D' {* `( V3 t
  379. s0,s1,s2 同时求并集/ U; ?. ]/ B3 E. x+ t& P

  380.   C# u/ c) e; g
  381. sUnionStore2 V4 B& G7 E7 J7 C7 v
  382. 求并集并将并集保存到output的集合
    + J5 K" M$ P' A, I& m. Q
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');/ ?  t5 c0 V1 B% [, z1 e  N

  384. # H) m/ Z" f, N  E/ u
  385. sDiff
    " h: S- X# R0 a0 k- j) p3 u% M
  386. 求差集) K0 X+ H9 d7 _5 ~- ^8 J, `6 b! V

  387. . a9 ^& r' F- f6 b9 R' h. ~
  388. sDiffStore" A& x( f# y* a  j' X
  389. 求差集并将差集保存到output的集合( x5 t- I, j- |
  390. % J8 D5 y8 d: o, s& y) A/ s# ?
  391. sMembers, sGetMembers
    " v# K* {1 L- Y5 K* j
  392. 返回名称为key的set的所有元素% _. k2 [# m3 ~# j' t! G# E8 @

  393. 0 {5 h. H! r; q- U' J, u
  394. sort* L+ y/ p4 m5 i" g& h3 L
  395. 排序,分页等
      w$ |2 H- ?2 t6 S
  396. 参数" r8 s4 q, i0 B  M
  397. 'by' => 'some_pattern_*',) W- _0 M0 k- A) r* Z8 J- W
  398. 'limit' => array(0, 1),( ]) s% s3 b: J. X/ K8 i, I+ y0 e
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    ! A5 u/ a* }% ]# O4 e1 H8 ~
  400. 'sort' => 'asc' or 'desc',2 J) a- D. }2 c
  401. 'alpha' => TRUE,6 L" }' ]( C8 }
  402. 'store' => 'external-key'
    . |( r! c6 |8 B% [: \1 N. R! P
  403. 例子
    + f4 o6 q1 w& o2 P
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    ! \" N$ O% f& o0 T4 l0 I
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    8 t# w1 o9 l: U
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    4 y) {7 b- V5 _2 |0 Z! b: f4 v
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5" y; n  X( H( r* P, t; B/ P
  408. . m6 y( }! s  V$ V; o. r0 \8 b: F
  409. string命令
    ' s9 h; I$ n& x- R* q; R
  410. getSet: y  {8 V5 _: }' {- I/ F% l
  411. 返回原来key中的值,并将value写入key
    % ~4 {' B! D+ `2 t
  412. $redis->set('x', '42');# x% x! V& `- H7 R5 j* A
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    1 L  ?; t1 G/ ]: j4 V; _
  414. $newValue = $redis->get('x')' // return 'lol'
    , i, K1 U- I, v7 D, h% P/ ^. M0 Y; y! y- b

  415. ( h1 t* Q% D% |) T( ]: p# J
  416. append: v$ |- z0 D& v$ z
  417. string,名称为key的string的值在后面加上value
    5 q4 \% T4 a3 ]
  418. $redis->set('key', 'value1');. [- F3 v; {) b' e2 M4 ~7 R
  419. $redis->append('key', 'value2');0 K1 Z7 t8 U  Y" z' T# \% Z
  420. $redis->get('key');
    - e2 B+ ^9 D' {) U: l# B

  421. & I4 k) ^3 B2 k/ D- t; Y+ U" E
  422. getRange (方法不存在)
    / z: D4 R6 Y- ^3 O, `2 ^/ s
  423. 返回名称为key的string中start至end之间的字符
    - t" c2 S( U9 z: O/ Y
  424. $redis->set('key', 'string value');
      \! a- t) Z+ K. n1 a4 u" V" [
  425. $redis->getRange('key', 0, 5);
    ! D! H8 ~6 d" r( A0 O- _
  426. $redis->getRange('key', -5, -1);0 @) r1 j% v+ u# u6 Z/ I3 }
  427. % {9 J0 _8 X2 V: h0 A- C- e
  428. setRange (方法不存在)3 W) Z4 \: x$ i# x3 O! [( ]$ {
  429. 改变key的string中start至end之间的字符为value
    ; l  p. d- e: A8 O
  430. $redis->set('key', 'Hello world');
    ; S6 j1 i* O# J3 J: @- f
  431. $redis->setRange('key', 6, "redis");7 `, e* p& m# F& E( W8 e" U1 M
  432. $redis->get('key');5 O/ W' P, d+ B
  433. , R. t, e  q" c4 y
  434. strlen7 e# H' p" a; X" o5 G5 p
  435. 得到key的string的长度
    6 b+ r4 ^0 M  J7 d/ o8 `" B& L
  436. $redis->strlen('key');
    1 M6 {7 R0 k' h& t  k  P& Y
  437. ! L$ w9 C) o1 v8 n0 q2 p; g* K
  438. getBit/setBit
    + J5 O' n1 ^; C* N# g# J  O' h
  439. 返回2进制信息
    ! ?9 c& k# V5 B5 W/ G
  440. 1 A$ X9 _5 Y7 Q9 Z! ?3 M/ F
  441. zset(sorted set)操作相关# M) i- H1 G3 \+ i: z
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    & r# P& J& l8 w- d" ^- A# ^
  443. $redis->zAdd('key', 1, 'val1');/ c7 S  i2 d$ g1 h7 p5 T
  444. $redis->zAdd('key', 0, 'val0');
    ) `1 n( M+ D8 C/ M' _8 H" @
  445. $redis->zAdd('key', 5, 'val5');% t  \; _  w+ s
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)/ w1 P  M2 Z9 l' D

  447. 9 y4 [$ T9 k, j2 C; B
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素$ N# b& E. s' K, T) z$ G- a% ^
  449. $redis->zAdd('key1', 0, 'val0');& V7 _/ ~9 n6 J+ b3 G1 b
  450. $redis->zAdd('key1', 2, 'val2');) |# b7 W# }, R
  451. $redis->zAdd('key1', 10, 'val10');) u5 p5 f. q1 i# k+ W
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);# ], |$ O# O2 v& U

  453. 6 V' p( o7 S( A1 [/ D4 k
  454. zDelete, zRem
    0 A$ T, u0 T* |% e: @
  455. zRem(key, member) :删除名称为key的zset中的元素member( B# ]9 N9 G* D/ Z
  456. $redis->zAdd('key', 0, 'val0');
    1 e" R4 P* i1 A& D2 {& Q
  457. $redis->zAdd('key', 2, 'val2');
    $ r- X; H$ K7 }4 N8 Q9 s+ w, a
  458. $redis->zAdd('key', 10, 'val10');
    7 p" G. J& c3 d
  459. $redis->zDelete('key', 'val2');) x5 I, s& w% m8 P  g
  460. $redis->zRange('key', 0, -1);
    " q2 {  u  k( @

  461. 1 Q% H  E6 x- o& _
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    4 r* F4 {- T* j$ W2 r+ m/ |9 ~& M
  463. $redis->zAdd('key', 0, 'val0');
    % `/ e4 y& \. l% f* }# R0 G" K
  464. $redis->zAdd('key', 2, 'val2');
    0 F3 r# l$ e- `) J  z/ u. z
  465. $redis->zAdd('key', 10, 'val10');
    9 d. S  v' U( L- U
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    7 {) u, [* |( U8 K; _
  467. $ X2 a2 m, `7 \( {8 t
  468. zRangeByScore, zRevRangeByScore1 d; c+ O9 ]- d7 x
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    & O6 D+ G+ c* ]% |
  470. 返回名称为key的zset中score >= star且score <= end的所有元素& ?# Y4 t$ ]( F4 ^
  471. 9 r2 A5 I# W! H, d# v
  472. zCount
    % w" W6 F4 ]( ?6 v3 _, T( z0 m
  473. $redis->zCount(key, star, end);  y! g% m8 B; j) _) o& ]
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    6 d1 t& S. o& L3 _

  475. ! r* u. D* X: g; i
  476. zRemRangeByScore, zDeleteRangeByScore
    % ?; \) s1 i$ `
  477. $redis->zRemRangeByScore('key', star, end);! |% G. s3 Z' C) I3 E
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    # \9 Q4 V6 ~6 h% u5 z2 m) l

  479. ) l3 L: G/ _& d! o1 C$ O
  480. zSize, zCard
    0 u4 w) {5 F7 X( P* A
  481. 返回名称为key的zset的所有元素的个数
    ; F* p/ N, S- Y% c7 G/ x

  482. 3 W: ]. X) ^+ j
  483. zScore
    * J: c  x% Y* f5 @/ F
  484. $redis->zScore(key, val2);4 Z/ i4 @& K: I7 n
  485. 返回名称为key的zset中元素val2的score
    ; f5 Z% b" t* D4 L' v
  486.   a2 V" g: O9 y8 h$ a6 q  S
  487. zRank, zRevRank
    & p; T- E! k* M6 q+ W$ R
  488. $redis->zRevRank(key, val);
    $ P$ E: q3 F( l: i; E. j8 \
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序( ^4 J/ x( R8 V! e. Q# R1 P4 \
  490. ! G6 s9 D& g: ], z* r! d) q
  491. zIncrBy- z0 [. `( P# ^
  492. $redis->zIncrBy('key', increment, 'member');2 N0 V4 `/ o( c; a, ^
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment0 m! G) M# x% ?9 Z9 @; o" s- U

  494. 4 C8 I. t9 Z" t1 e' k$ K( Z
  495. zUnion/zInter# R: d" V, I1 H1 x: \
  496. 参数2 N- c% Z& u* z0 r3 g& k
  497. keyOutput
    + e' ]+ y4 k! @
  498. arrayZSetKeys
    ' ?3 r$ A9 {/ K! }
  499. arrayWeights1 Z+ L8 @" j. ~/ u/ |) |+ d
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    3 Z& s' _7 J2 G0 |6 L, y
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。( L, o; }5 O4 O" O6 g7 F, C
复制代码
1 X9 ^1 Y4 R! i6 k# |4 D
# B4 G7 \1 \2 }3 E" Z, [
2 b# O! [: T/ f: |  A
* O. |) a3 x3 S; {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 4 X. k) a& R% j* V1 a& M/ l2 l
  2. //连接redis服务器 ; A% J/ ^/ `0 x' {9 D; v6 U/ v" `  z
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 19:04 , Processed in 0.093199 second(s), 19 queries .

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