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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php; ~" n: F/ r5 `* K- {: T- f8 [
  2. $redis = new Redis();  ! _5 A; z6 j  N6 @: m/ O
  3. $redis->connect('127.0.0.1', 6379);//serverip port! h+ C9 M% {/ u, t4 m* w7 g0 J$ m
  4. $redis->auth('mypassword');//my redis password 6 y8 ^+ d& O. y4 b  Z* P/ O/ H
  5. $redis ->set( "test" , "Hello World");  
    ( y% G8 z% X( F
  6. echo $redis ->get( "test");) R' T# _5 m) I1 u. h1 k
复制代码
php操作redis函数封装
  1. /**3 J+ F2 J: R" |3 k& o
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数6 J. O- h8 O2 W9 u- q8 Q# O5 b
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    9 G6 E1 m6 _( |. W9 f, f
  4. */
    ( n) a5 ~2 A) Q8 Q+ m
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){6 k: i# }; M+ A, V; [
  6.     if(!$key||!$value) return false;, X. x3 ]! p( v# a+ i
  7.     $host = $host?$host:getenv('REDIS_HOST');( d0 B' K+ v0 L8 Q- s  `: D
  8.     $port = $port?$port:getenv('REDIS_PORT');
    1 L5 i8 F2 k9 f
  9.     $redis = new Redis();; L( Q% D8 e; O5 }$ I) H8 W
  10.     $redis->connect($host, $port);% ?3 g' W/ Z6 R) f8 Z$ O; D" c7 L1 @
  11.     $value = is_array($value)?json_encode($value):$value;1 }, V) _7 o8 a5 u9 _- f: j
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    / B; K% T* ?( G& f1 D
  13. }9 k- f! R& o* u- W
  14. /**7 }$ S/ Q& ]* r
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    8 F/ C' D! |* ~5 I; o
  16. */" n! D; c4 y5 n9 z4 g
  17. function RedisGet($key,$host='',$port=''){  E3 j* Y8 u7 t3 q0 d' d8 ?- X
  18.     $redis = new Redis();
    3 @2 W% w& e6 f4 Y
  19.     $host = $host?$host:getenv('REDIS_HOST');5 L8 X. b: |+ X. ]. Y
  20.     $port = $port?$port:getenv('REDIS_PORT');
    , w1 ^8 ^- i; y" v2 K, v
  21.     $redis->connect($host, $port);* v5 u8 m- a# J  k/ e3 U. v& J
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    1 `) J0 H/ b/ k. f9 w! P: I. C5 x
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);# W1 |0 J* I! n& ~$ W' q
  24. }
    + w6 D! E( s( T; K
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了. I8 Q0 O8 g  v- ~3 C# Y$ |
  1. setex 带生存时间的写入值/ s2 W2 s# F7 j& s
  2. $redis->setex('key', 3600, 'value');
    7 F% N! A$ t+ O% O  ?1 y5 Q* m
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    3 N. A% }$ v9 D# u( L4 i) E$ b
  4. $redis->setnx('key', 'value');
    ! D" w+ W- q! y
  5. 返回已经删除key! R; ~) a1 w6 t% @: ^
  6. $redis->delete('key1'); 成功返回1失败返回08 E# W/ [; p1 O9 [4 O
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    ; o; s4 `5 t/ z* F6 [- l5 o
  8. 查询生存时间
    ( ~' T0 x2 k* K0 R) j0 X& o3 @: |* m/ ]
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)9 A; u0 T, i9 s" D# D& t/ Z
  10. 同时给多个key赋值,同时设置key0和key1
    7 |, ?) s& ?( O/ x
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ( X9 I+ g8 F4 u; S* y
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值1 d& p, O4 p1 ~" V" k: \# F" S
  13. $redis->incr('key1');( p: b! z3 R* F; U/ `
  14. $redis->incrBy('key1', 10);
    / r2 U' j; |# s1 g5 \7 @/ [7 f" @
  15. 减法跟加法一样: a6 o: S! ?% T/ U- A
  16. $redis->decr("key1"); 减少15 O" E* @2 G1 s' E
  17. $redis->decrBy("key1",5) 减少5
    : U9 r0 Q5 u5 N2 j; Z( O
  18. ' b8 f- W, c1 m
  19. list相关操作,连表操作! J6 W4 [# }; Z
  20. lPush: z8 W8 S' k) U% ]* V, ?8 [# f
  21. $redis->lPush("list", "888");
    / U3 A/ B# h' |
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    9 P- {" V% M9 V
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式# _$ a* N. O8 P: _
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素: h$ j; M, B4 l# H. G, y- q
  25. lPushx/rPushx6 d( e: E& J% |3 k( Y" y, ^
  26. $redis->lPushx(key, value);
    & a( j: J- J4 R& Q
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加2 O2 H+ e" u* M) k4 H" E
  28.   S9 r5 ~5 }# c+ |
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key9 j' Y" A  W2 E3 b" v. P( C9 w
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    5 D2 B# [2 {. N& i- E& \
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1- A0 [1 g7 |% |& F$ B5 b
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序* j: J( M7 {! Y) O
  33. sadd s1 zhangsan
    8 C& _7 ~. T- M7 f( r
  34. sadd s1 lisi
    ' g% h, N. e# D- Y. u7 P+ x
  35. sadd s1 wangwu' i1 A' k% q) f# B
  36. sadd t1 yangxingyi, W  q, n0 n! e( e% p6 E  p: I& N
  37. sadd t1 lilei
    . ]" @2 j8 p; F% X
  38. sadd t1 zhangsan
    7 x; _- ~# z5 v& l' [
  39. smembers s1 s1的所有集合内容
    : }+ d5 h! z( I. e5 [
  40. sdiff s1 t1 s1有的,t1没有的,差集
    + P7 A  t, K0 m6 y
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式6 I- i( K+ e& z, [0 I
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的$ G4 f3 _5 N% @+ O
  43. spop抽奖场景,返回集合里面随机的数1 p# _; ^8 |  z- x5 Y/ \
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    ! r" G9 `% u" ?- Z3 H+ `# \
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数+ z3 z' f8 d6 s  c/ O% `7 b
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    1 H+ G4 F6 Q$ s6 A- ?$ s
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    ) _" f' K- L, v& X( v' @) y- `
  48. $i = $redis->srandmember('s1');echo $i;
    . b5 p( z$ A5 `" p8 M
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false5 |( L; M# Z8 c  U, g
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    . t1 P2 h8 I% f: b& f

  51. 9 m) c; b1 T/ h
  52. zadd key 2 value 有序集合9 |. [  K1 i* \* H
  53. zadd y1 1 zhangsan;1 v, l4 B! ^2 O2 h* s. [
  54. zadd y1 3 lisi;# D  B5 b/ H* d" Z! O' Q+ o$ Y
  55. zadd y1 2 wangwu;8 d) W" I5 v# S- i+ o
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    ! u2 X8 ?* i# S1 C$ ^+ C
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);1 L, B* X2 [2 c3 u1 {! a; Q
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键+ c# @" P; n$ l* I7 u1 D
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先: z2 q" |+ a* P9 z$ Z* ]
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的2 N' x8 M' o/ G1 z; S) Q
  61. 无序就scard,有序就zcard,有z没有s
    # k" x+ E* r: @: v/ L) q
  62. sInterStore3 h* e  w: @  A* J% p( r0 z5 T
  63. 求交集并将交集保存到output的集合
    / Y) Y- G# }8 ?
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    5 T- a* X) m6 R/ w

  65. - O+ [; k( [9 I  @
  66. Hash操作, K8 l! l) a7 m& o/ h8 w
  67. hSet
    3 z# M" |1 ^$ R
  68. $redis->hSet('h', 'key1', 'hello');
    ! v6 Y- m# A  o4 P7 D$ @! _
  69. 向名称为h的hash中添加元素key1—>hello8 r4 }: v5 G4 E+ |
  70. / ^. W" O) g/ G; ~
  71. hGet, t$ o- S3 M' d% Z; `$ v+ H, D
  72. $redis->hGet('h', 'key1');* n' S8 Y4 w5 Q# {. ~8 T  v
  73. 返回名称为h的hash中key1对应的value(hello)
    8 d( e' _) }# J2 Q
  74. ( Q! O! W, A1 g3 t7 [
  75. hLen+ w# Q; M( t; Y; s/ D
  76. $redis->hLen('h');* l5 `; ^. Y' {4 ?/ @+ p
  77. 返回名称为h的hash中元素个数$ a$ J+ l: P- d- d( b) b6 I
  78. + |' U4 g6 b; S! }1 Y& j
  79. hDel
    5 ], a6 q6 U; m, u, ^& |
  80. $redis->hDel('h', 'key1');2 d0 M6 K" n- X  z" p
  81. 删除名称为h的hash中键为key1的域  l2 K2 s! b2 n# Z

  82. 6 v' w! v8 N- u  K* [7 P! Q
  83. hKeys
    * r; r% Z2 K$ `4 |8 R4 d+ a, }
  84. $redis->hKeys('h');
    - x4 i/ a& s3 K7 f- v/ q' M3 _
  85. 返回名称为key的hash中所有键
    $ Y1 l# Y  l) m! ?4 R
  86. 8 @) E3 m$ I4 L' U  u
  87. hVals% b% ?" Q' f+ u2 X; \/ H
  88. $redis->hVals('h')8 H0 c: n4 A) c& B9 w
  89. 返回名称为h的hash中所有键对应的value2 v8 H8 x$ A, a
  90. % T3 p% T/ }" i
  91. hGetAll
    ( I4 Z1 K. t1 N$ k
  92. $redis->hGetAll('h');
    ) i7 f1 Z, {4 z. c& {3 X2 F
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    3 K2 m8 ^5 v4 w; p% ]+ C1 |4 ]
  94. 5 g/ t7 t% C  U2 V$ `
  95. hExists% F+ c# p7 U" o4 e/ z0 p" Q$ u
  96. $redis->hExists('h', 'a');
    . P) J, \3 L/ k: ]7 M% u! ]
  97. 名称为h的hash中是否存在键名字为a的域
    ( O- p3 E- g& i. T0 K- A9 D

  98. 7 D; ?1 C3 }8 q5 d
  99. hIncrBy" A) M; t+ K% H6 P; l
  100. $redis->hIncrBy('h', 'x', 2);
    . v% Y- `( Y8 q) y2 _) Y: @
  101. 将名称为h的hash中x的value增加2
      N" }+ |+ x7 {1 z8 i
  102. : P& o- [2 @% X0 I; p8 H9 r
  103. hMset% ^& _! M0 l# O; k
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));, K4 Z5 w5 W) C- e0 v
  105. 向名称为key的hash中批量添加元素
      H: S5 t2 I% C' J. H  B6 p$ N

  106. 3 E& P. q5 L, r  G+ H( E0 z
  107. hMGet: S2 Y8 u* F" \
  108. $redis->hmGet('h', array('field1', 'field2'));" G# j/ }/ {' W) l2 h$ q5 W
  109. 返回名称为h的hash中field1,field2对应的value
    , ?, ?0 J/ z& E/ \9 @' {

  110. 4 r5 V$ k) G- |7 Z0 D' m$ h
  111. redis 操作相关7 |3 W+ V) ~6 \. c8 L" T% v1 F
  112. flushDB4 |4 v( i' L! _
  113. 清空当前数据库
    2 T6 @5 I9 z  ^; z+ B

  114. 8 L" b+ |$ o9 o
  115. flushAll
    $ ~" Q) z- W5 l& Q
  116. 清空所有数据库$ d9 v* D0 [0 F/ z- w& x! V
  117. 9 P2 h8 l; ~' y) y( F2 N/ C+ T
  118. randomKey% \+ b  y. J$ C% v7 O- M" R1 B6 e$ Y
  119. 随机返回key空间的一个key6 Y7 c0 E2 D& e+ b
  120. $key = $redis->randomKey();* I6 _: ?& @6 a: g$ I9 L
  121. & F; e! M0 d/ [' S
  122. select  i* ]1 W8 w. i9 w0 Y
  123. 选择一个数据库8 p5 k- Y& j; R: _7 v
  124. move
    & K3 ]- m, \6 U9 d
  125. 转移一个key到另外一个数据库
    ) }! v  a) Y$ F: _7 ]' o0 u6 [
  126. $redis->select(0); // switch to DB 0
    . r8 G5 d# f9 w  G0 M& c/ J
  127. $redis->set('x', '42'); // write 42 to x/ s3 U. O5 N3 B# M& Z) O  D
  128. $redis->move('x', 1); // move to DB 1
    , n- {6 O) ~8 v* P- x
  129. $redis->select(1); // switch to DB 1/ i) B( t4 {8 X9 G
  130. $redis->get('x'); // will return 42
    " P. Y) d0 q( b- o0 b( ?+ y

  131. 9 i. e5 b1 _+ @* `
  132. rename, renameKey0 N+ v- v( X: t  ?3 g
  133. 给key重命名3 t3 i: t& L% z) r
  134. $redis->set('x', '42');
    # Q, f. _* B/ G( w% v& |# r( i
  135. $redis->rename('x', 'y');
    9 v* w  i" T0 N4 k4 v- c
  136. $redis->get('y'); // → 42
    6 v% r% C0 N/ i) ?; `1 d
  137. $redis->get('x'); // → `FALSE`
    6 \" u$ X, d: m( k

  138. 7 B  l1 _5 F, W$ |; w! k1 ]( {) r/ o
  139. renameNx8 V( j" W: ]  f
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功9 y( D/ y' H  x/ E

  141. 7 e5 }+ M, l. w1 G
  142. setTimeout, expire. {; F: w# w1 G1 s( f) t1 |. A
  143. 设定一个key的活动时间(s)$ C# o! Q1 U- F* Y& Z
  144. $redis->setTimeout('x', 3);
    3 _3 O* q2 k3 e( g2 i0 `" L

  145. ' O( S, a6 Y: @& E/ t: G2 n6 r
  146. expireAt, u' G$ l7 p- q4 w
  147. key存活到一个unix时间戳时间
    + G( j" o" d' o0 ~3 d( f! R
  148. $redis->expireAt('x', time() + 3);
    + @+ ^. J3 c8 m  x, x
  149. 9 o5 ^5 R& C) Y9 y# K- f
  150. keys, getKeys
    , U  j9 z: O6 S/ P! q% Q9 ]" r
  151. 返回满足给定pattern的所有key
    . y6 `! k1 k( {. Q( ?/ c+ n
  152. $keyWithUserPrefix = $redis->keys('user*');+ M6 O' b( `: d7 Z% C  i
  153. " l4 C. G$ [2 A$ U) [9 s
  154. dbSize
    " t' u0 k& q0 L4 B
  155. 查看现在数据库有多少key
    7 j+ p) N/ C- |: A; G
  156. $count = $redis->dbSize();; I0 m0 f# ?" j; \
  157. $ a9 z" ]( P; ?
  158. auth7 K: G$ w/ A! {9 \6 p. n2 D- f
  159. 密码认证
    ' l( ^( b  v# X; L+ f' v: l
  160. $redis->auth('foobared');0 m- ~! `' z6 K# b$ j; `' g

  161. ( g$ l- G( K5 j  Z, s' f
  162. bgrewriteaof" O) w4 J# _# i; y) i3 G( `7 U( l
  163. 使用aof来进行数据库持久化) X6 H7 o* S4 z9 f4 b6 N( f* j! `7 l0 n
  164. $redis->bgrewriteaof();* x$ ], J5 n4 n
  165. 9 Q9 Q9 M6 F6 H5 l/ h+ ^& x
  166. slaveof, d- p: B: D. l; e. e
  167. 选择从服务器: m2 M6 ^7 j9 U: F
  168. $redis->slaveof('10.0.1.7', 6379);
    $ \% i# n- I! F+ [
  169. & h" v% ?# _: ?% f. ^0 c2 _
  170. save% H* k' Z2 T7 M6 r. d! Y
  171. 将数据同步保存到磁盘, {( l* ^* D; w, X

  172. 1 M8 f( Q- S1 [. S
  173. bgsave
    4 P+ Z; C5 j& B- f; F8 d
  174. 将数据异步保存到磁盘
    ; \% W" r' k3 F" Q8 {( ~
  175. ; E; _* R; d- K. D5 ?  G
  176. lastSave
    1 q; u( {  Y1 d2 i6 F$ M
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    ) M( q/ v6 W6 B0 T) i

  178. 9 Z% O; }5 d* p. _$ l* ]
  179. info
      e+ d& D1 w$ P( i& c3 k% R$ W
  180. 返回redis的版本信息等详情$ w2 a8 Q/ E4 E' N" M% o
  181. / D+ F+ I. V, Q! I( T# }
  182. Redis::__construct构造函数
    8 X7 J7 @( O+ ~( R7 f
  183. $redis = new Redis();1 O6 G  u3 G( U' j7 u
  184. 7 \* W% s; B& ~+ ^
  185. connect, open 链接redis服务( g9 \, R- F& A/ Y
  186. 参数
    ' y: h$ ?" B6 c* Q* V  m( Y% Z
  187. host: string,服务地址1 J9 @1 D' @! t4 M: x
  188. port: int,端口号
    5 F/ @8 X  W$ V( o
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ; G/ h% o! r* s& y( ~3 {
  190. 注: 在redis.conf中也有时间,默认为300( i( |; V% u7 L( w+ z( T

  191. . m' |5 i" Y3 s" h. c6 r* s$ h
  192. pconnect, popen 不会主动关闭的链接! l, o3 P: ]4 x, P
  193. 参考上面
    - {3 }; g+ a5 w+ [0 z8 J9 E
  194. / z# n; }4 L: R  O
  195. setOption 设置redis模式
    5 B  f3 w, x2 ]8 L( G

  196. ! I. g% H& z, s9 _
  197. getOption 查看redis设置的模式. O5 @: i, s/ V+ z0 y2 Z0 p3 V
  198. % e, _# \* x9 d' s' n5 H' y
  199. ping 查看连接状态
    + l. T7 F6 |- D2 w9 I. B# _) R) q
  200. 6 K8 ?) D5 N! w
  201. get 得到某个key的值(string值)& W2 G1 g0 W2 [% i5 z
  202. 如果该key不存在,return false
    2 F- o' o7 c' h4 O, V* {' P5 p0 M( w

  203. 1 L! H6 X- i) a+ D: M  B# {
  204. set 写入key 和 value(string值): u& }$ L9 t$ M8 L
  205. 如果写入成功,return ture, O* o8 e- P5 k% p; |+ g

  206. 6 e6 H: u' n2 x6 r2 S! x
  207. setex 带生存时间的写入值/ t) I; }! m4 ?; d
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    + n2 ]+ s+ n: j5 ~. ?
  209. 8 [1 \( p( H2 ~% C6 L
  210. setnx 判断是否重复的,写入值
    # r$ i+ J& b5 E8 q
  211. $redis->setnx('key', 'value');6 u( R! ]8 ]+ V/ u: D3 D" z
  212. $redis->setnx('key', 'value');, ^2 R" h  R8 D3 C& q

  213. 8 U* z% T6 o0 g, X/ A* z. n9 q
  214. delete  删除指定key的值( `# a4 K. K3 r& e
  215. 返回已经删除key的个数(长整数)
    5 h- f4 K$ w2 r- _
  216. $redis->delete('key1', 'key2');% H$ p2 V6 V' O! u
  217. $redis->delete(array('key3', 'key4', 'key5'));
    2 M& s/ j, C: ?+ x3 \: B
  218. : g: j& E0 o; {  X
  219. ttl( y, @5 \' t3 Z0 f! R8 r* ]# i
  220. 得到一个key的生存时间
    & j# G8 B/ e0 m
  221. 0 t8 v9 v8 S& v4 S, c9 U2 j
  222. persist
    ! h& N" A3 I/ l: @1 V$ ?
  223. 移除生存时间到期的key1 r1 ]& o2 N7 P& _5 U1 K" v
  224. 如果key到期 true 如果不到期 false
    " M/ z( Y( w' Z- r% ]( ~2 o
  225. 1 F% l/ a) |. u7 ~6 T5 e
  226. mset (redis版本1.1以上才可以用)
    7 g$ i% B, v' u! m6 L# o' t0 E7 g
  227. 同时给多个key赋值0 K+ }! M' ~4 ]* _
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));3 M  b4 U  v& D. L3 `
  229. * S! W. H0 F; b& L2 v& `) a
  230. 8 N+ A, e" p( r

  231. . ~: V8 u8 s& j/ I7 F
  232. multi, exec, discard. s9 m- q0 `  Z& v! J7 W- ^. o
  233. 进入或者退出事务模式- C7 j: d% R$ y3 D. Y" r" \1 u
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    9 w% H& F" q7 D
  235. Redis::MULTI:将多个操作当成一个事务执行! C3 Y2 ]! X& e
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证1 R* _+ ^3 o* d& n9 r  R4 h
  237. discard:删除一个事务' ]7 Y/ ~/ v$ w& [8 B
  238. 返回值7 }( O" G, u$ s! W' p/ q
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    9 s9 L; O1 F/ i5 K

  240. 9 F) T( X2 s% o: T
  241. watch, unwatch (代码测试后,不能达到所说的效果)7 p9 [1 |) b! ]! j, _; J: I/ \8 W& M
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    ! R2 z( I" S) s" v
  243. unwatch  取消被这个程序监测的所有key
    7 h5 ~8 u! z: ^9 E! J+ E
  244. 参数,一对key的列表( `  T( J: m1 w3 l
  245. $redis->watch('x');; P$ L! M1 A1 O% p
  246. 6 N% r' p: V! I: y* Z* O
  247. $ret = $redis->multi() ->incr('x') ->exec();  N. r$ ~' \; T; \- ^3 B

  248. $ A/ h- Q# a+ a, r( m* r! d
  249. 2 M6 Y, M: W* c' @+ t9 v  V# M# y4 C
  250. subscribe *
    / g, ]6 X) C( C* n0 |0 G( x: J
  251. 方法回调。注意,该方法可能在未来里发生改变
    0 L5 }# z' G5 f% T

  252. , E2 c5 B* N$ h! E$ V, K- ^1 J
  253. publish *0 t5 l0 B# J( h$ i. C: A
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变' w/ S* a( ^; P5 ^
  255. ) u+ y. F: C! p& h
  256. exists
    3 i, e6 U, I) Z4 j
  257. 判断key是否存在。存在 true 不在 false
    , q+ k8 Q6 T6 S  ]" B, ^0 ?

  258. . d$ `+ V3 J* [& a% i) q, F
  259. incr, incrBy
    9 G' g' _! N& H8 S# D1 z: L' @
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值  D' m3 n" B& ^  B5 |( ~
  261. $redis->incr('key1');/ J( G- y$ R8 n) T6 E0 c
  262. $redis->incrBy('key1', 10);1 ?% n# Y& g8 r3 }) L
  263. , M; U# J  W! E
  264. decr, decrBy' @- {6 j6 d5 k. r3 u
  265. 做减法,使用方法同incr% i# l4 C; B+ s) _* O7 C
  266. . Z8 T( s2 k* t# m: S
  267. getMultiple5 Z. L' ?( @0 ^7 v" p0 m3 s
  268. 传参. s9 t# V; `2 k) Y5 _2 S
  269. 由key组成的数组) h) X2 C" ]) @7 X: ^
  270. 返回参数
    & h4 X) Y9 ^4 J( u/ [% I
  271. 如果key存在返回value,不存在返回false
    7 }2 ?; K6 Q5 }
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));, e* H& m0 `6 X' k7 S. B
  273. $redis->lRem('key1', 'A', 2);
    ' Z! f! \! p5 q1 o3 a# {
  274. $redis->lRange('key1', 0, -1);2 ?$ J( Y( I! l* n/ P% `
  275. ) z  G7 c7 z- x- I6 g! O0 Z
  276. list相关操作7 v& y$ T9 c* @/ y* N2 i
  277. lPush
    - ]9 w6 \6 K: ^9 A3 W3 e0 Y
  278. $redis->lPush(key, value);9 h) j# \. K. S$ b; x+ W: J8 [0 q
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    % P$ [1 r8 S5 @( i$ L/ ?4 B7 F7 Q# r
  280. 0 V* \( i: i, c4 m; o
  281. rPush2 K+ A4 ?9 `3 U. _
  282. $redis->rPush(key, value);! G  ^0 b' {; C1 S  q; `! I+ \
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    ( ]! ~* z' V) I/ u) [' _

  284. % B2 H4 l: |3 f; B& h8 @! W: |  j4 U' ~
  285. lPushx/rPushx
    3 n/ F# u" S' T$ u* [3 Q+ S
  286. $redis->lPushx(key, value);
    ( O! ~; n8 K) V( w
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    , W9 y4 @% X: U% H2 x) _

  288. # s  ~9 w, @! r
  289. lPop/rPop+ B: ?+ |0 s0 {" O4 o2 u, ]  {
  290. $redis->lPop('key');
    8 |( U, M: [: M
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素/ Z0 N( @" N7 {' i6 f# k- c9 @, {
  292. $ `( I$ r/ X9 c* S- x
  293. blPop/brPop5 a8 s0 ~$ O( [0 i3 Q
  294. $redis->blPop('key1', 'key2', 10);
    / P3 w- i9 i& I. _& v
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作# K6 I8 |5 h+ W  V6 q4 O  t

  296. ( \( d$ U- V2 ~6 i. Q
  297. lSize
    / {6 q( i4 h/ {
  298. $redis->lSize('key');
    ' u7 L, B/ f, S5 ^2 M
  299. 返回名称为key的list有多少个元素  u$ W9 V% u+ T$ F* b
  300. 3 h. s6 h4 X6 D3 f
  301. lIndex, lGet
    5 Y$ h" K- t2 D. f
  302. $redis->lGet('key', 0);
    ; h# m8 `* N; U; v* r  w* p; y
  303. 返回名称为key的list中index位置的元素/ A  L9 J- U7 U( I9 T- n
  304. & b' j7 p  n+ v7 ?- d
  305. lSet' z% P7 \+ ~* p0 n" P1 y
  306. $redis->lSet('key', 0, 'X');9 b: p3 p+ P. \' F
  307. 给名称为key的list中index位置的元素赋值为value$ t2 D6 l2 Y4 r0 N& C
  308. 7 d; R) T1 A: k$ p3 E
  309. lRange, lGetRange0 b: }! @" K2 S; ?) H
  310. $redis->lRange('key1', 0, -1);
    ) n3 T9 s/ n6 t$ P- L
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)7 s' R3 H* b( w" |; y2 u

  312. 1 i( C0 f% \. C& @: t
  313. lTrim, listTrim7 R3 J5 t" }' t- y4 f4 W
  314. $redis->lTrim('key', start, end);/ Z9 J0 A6 B2 ]2 k- M
  315. 截取名称为key的list,保留start至end之间的元素! x; r7 ?9 \3 r
  316. 7 F5 ]- {2 N' i: N* L+ o6 p3 P
  317. lRem, lRemove: V8 ]  n- K) ~1 _* T
  318. $redis->lRem('key', 'A', 2);5 i% `( S1 G; x+ R) A
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    + [0 M2 P. x1 m3 [
  320. 2 b# E" g+ B% H7 G* f& Z7 r( g$ b
  321. lInsert4 J* w( i' L+ G! y1 o1 w
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ( y3 q' |0 M* L* \0 o: k4 N" A; ]
  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');
    & m1 D: U1 |2 E( K
  324. $redis->lRange('key1', 0, -1);6 K: d9 S. c) @/ ]6 c1 y4 ?
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    # n" X9 o( _' s/ p
  326. $redis->lRange('key1', 0, -1);' E( m5 t4 |( o) A7 p
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');+ G2 \/ q( k! O8 B# W( M

  328. $ u, ?+ ^/ a0 @: W- r
  329. rpoplpush
    . R$ x! h2 H( X" [' d. o1 |6 U
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    . J9 l2 V% ~" ~
  331. $redis->delete('x', 'y');$ Y! [( P4 r; i4 r2 C
  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'));; R+ _: V) o, A4 y
  333. var_dump($redis->lRange('x', 0, -1));# G, F( P& R3 J% M/ S! V/ F
  334. var_dump($redis->lRange('y', 0, -1));
    " l+ U  _$ F% w4 f
  335. # u4 Y) V- ]3 s! m. I& D, @5 L
  336. string(3) "abc"
    4 {- E0 w5 _( M
  337. array(1) { [0]=> string(3) "def" } & j1 |& m6 c/ c2 l8 {$ C8 q& ~& d
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    9 N+ i" H5 h! `! f4 W  j  }; m
  339. - s7 r4 G# e) T, c, z# }
  340. SET操作相关. R& H5 F8 |% f6 u
  341. sAdd( F. i" j. B% u3 x/ j
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    3 w+ ^. L: G3 p0 y/ M  O( E1 G
  343. $redis->sAdd(key , value);" ]: U$ G: U$ N* I9 ^6 d% P

  344. + q9 U! {6 ~1 x# l
  345. sRem, sRemove2 l1 u+ Y" z' l2 Q+ [4 A$ v! b
  346. 删除名称为key的set中的元素value' d8 ^" K! e$ y# g8 R, `
  347. $redis->sAdd('key1' , 'set1');
      N; s! t9 d0 S% F3 ^
  348. $redis->sAdd('key1' , 'set2');( d9 ]+ V" Y8 k
  349. $redis->sAdd('key1' , 'set3');: k& Q5 J1 v/ O% Z  e/ J
  350. $redis->sRem('key1', 'set2');
    7 L& Z0 D" o( Q- E2 h+ p

  351. - `  A0 A; ]5 G( W9 X
  352. sMove- m  r% Q1 [) S+ ?
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合3 o' W; p4 S- u; @' R$ W1 h
  354. $redis->sMove(seckey, dstkey, value);
    + I  s' ?# g- K  U5 _# [/ i

  355. 2 u+ W: z- J2 u. ?' a; O  B
  356. sIsMember, sContains
    * w) s3 d" ~$ [5 ~- @7 p
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false2 ?4 [% Q. T& b% ^
  358. $redis->sIsMember(key, value);, ~& b3 I  h" p
  359. . D6 l7 E; u3 ?& Y) u
  360. sCard, sSize
    ! e( e! S7 a/ ^2 M
  361. 返回名称为key的set的元素个数) H% _5 u. E8 P  z; I% A; d5 M
  362. $ t3 C' ]9 C  `% Z+ `
  363. sPop# c8 `2 e- h9 m# }% r$ O+ K* V
  364. 随机返回并删除名称为key的set中一个元素
    # v0 _! @3 A. c  C
  365. # T* k- Q) L+ Z  t; J- \
  366. sRandMember
    - F$ J$ T. j; K$ X0 M- m1 }. S
  367. 随机返回名称为key的set中一个元素,不删除
    : d3 l% }0 y/ t1 E5 Y) L# ^9 L
  368. 7 v! P+ e: k& z' M& w* {" \4 C. ?
  369. sInter  ]) ]6 W/ `  O+ f2 }
  370. 求交集
    4 |6 z1 R$ ~3 D& E" w+ t
  371. 7 U' F  s' ^( w
  372. sInterStore
    # z4 x; n' f$ O. ?
  373. 求交集并将交集保存到output的集合: }; r5 @; L0 s: s1 q5 c- F
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ' `5 v" A0 t" C+ Q; s
  375. 4 A8 x2 |5 g4 u4 ~; C# w$ T: }; ^
  376. sUnion, T4 s) g: ?/ @+ m3 Y
  377. 求并集
    ! A2 e8 c. J# X/ {6 {
  378. $redis->sUnion('s0', 's1', 's2');! x9 `6 S. M3 z8 R5 P* ~/ v2 i
  379. s0,s1,s2 同时求并集
    . j& Y( X3 S8 n1 I

  380. / N3 P1 S5 }, H' d, c
  381. sUnionStore
    9 d# e8 j8 k$ q% q# [5 e$ ^
  382. 求并集并将并集保存到output的集合
    5 Y+ ]5 }0 n' j3 I3 I/ s! h
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');) B" |2 E; z8 C' i) H
  384. 5 z, `' H) r* @+ R4 B+ M/ o# Q
  385. sDiff# T5 J0 w( ]3 Y5 i  U( a- h
  386. 求差集
    1 H5 X2 e  ?: d* i9 D
  387. & g$ c6 X- G* V& s8 s
  388. sDiffStore
    . Z4 w# b8 T+ G0 {$ v. c6 m% n
  389. 求差集并将差集保存到output的集合
    8 F7 Y+ e0 J  G6 s) b8 }

  390. 0 ^' H: n$ {- a" @8 a# R
  391. sMembers, sGetMembers7 N  k% G0 a, z
  392. 返回名称为key的set的所有元素
    5 d+ U5 o( i$ T. i
  393. ' u- Y' Y. ^6 ^8 ?
  394. sort
    , }+ p, j- @1 W: M
  395. 排序,分页等
    . ?3 C, l2 a! T9 S: J; A
  396. 参数
    * e; M* s2 X( C/ _
  397. 'by' => 'some_pattern_*',
    ) i# j4 S+ ~# s  d6 B4 }
  398. 'limit' => array(0, 1),
    0 m3 i( u* `6 e, @% o, F
  399. 'get' => 'some_other_pattern_*' or an array of patterns,4 C$ ^5 `! L# C+ C4 r$ s
  400. 'sort' => 'asc' or 'desc',
    5 V, a+ M0 S5 F  N0 {- _: S
  401. 'alpha' => TRUE,* l( @, v; q6 g
  402. 'store' => 'external-key'
    9 S. ?) j" q1 h/ B/ B* O
  403. 例子- ?& V, D6 k: M" ^6 B$ i
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);: I6 C1 C: o) Y6 D  q, F
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    - j$ B0 [" r7 J# q* `  w% ~9 z* {3 v
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    # b* N/ v5 i" ]" ~! q
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    9 k( Q8 h9 s  |% w

  408. 9 ~6 j5 S& e2 j' Z3 N2 ]! Q  g! C
  409. string命令
    6 V/ H! t6 O! z' x0 W
  410. getSet& ^9 Q& ]: T6 Z' z% a: {
  411. 返回原来key中的值,并将value写入key
    9 @" s/ U+ {' {% ?# S/ E8 }
  412. $redis->set('x', '42');
    ' ^( w: o# Z5 a8 L3 @
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    - V$ y+ G$ K. }' ]" W
  414. $newValue = $redis->get('x')' // return 'lol'
    " ]% r' ~, q! N, z4 Y" y
  415. ! f, Y0 A% Z) E5 R( u
  416. append- g, ^! I2 N0 ~" Q2 O1 Q$ ?
  417. string,名称为key的string的值在后面加上value
    / i& P! X) J+ V2 }8 \
  418. $redis->set('key', 'value1');
    0 g" ?2 U$ s/ `: y2 I8 b4 S; w
  419. $redis->append('key', 'value2');7 L' k% ?& N- W: E% s
  420. $redis->get('key');6 q$ y, O2 K; |/ g$ N3 u- n
  421. 4 L0 Y1 |3 k* H
  422. getRange (方法不存在): ]' _! K7 s5 V) C& Y
  423. 返回名称为key的string中start至end之间的字符7 q4 n. r+ [+ }4 N- Y+ }. E
  424. $redis->set('key', 'string value');: O. E( E; k7 c8 [9 n; L
  425. $redis->getRange('key', 0, 5);) S, M, s! S+ W: W4 t& s& h
  426. $redis->getRange('key', -5, -1);
    3 a! D4 l( D' \6 O: B; [4 c
  427.   g: b! ^' X0 q
  428. setRange (方法不存在)% M- D: O. [7 [- W
  429. 改变key的string中start至end之间的字符为value
    / r! P3 I2 J6 S0 J# K  r7 b
  430. $redis->set('key', 'Hello world');  l; W9 q7 W' n
  431. $redis->setRange('key', 6, "redis");- q9 o1 V; D; P5 [+ q, F3 g
  432. $redis->get('key');
    ) w1 d7 y  s* K! G( k; Q2 v' N4 {2 w

  433. * m" s- Z  P3 Q0 ]0 T4 W$ V) V2 p
  434. strlen" Y' C0 `% e8 J) y' J% }5 V
  435. 得到key的string的长度* M+ _( S5 T+ X) v4 X2 _2 F  d8 n# x
  436. $redis->strlen('key');
    6 A$ v3 s% g0 v5 t, ?0 |# G

  437. 1 N6 ?3 I4 p8 l3 ]$ K: A2 t
  438. getBit/setBit% R* d, A" ^4 q$ x5 Y
  439. 返回2进制信息
    9 ^% |0 E9 a* S, i3 [4 M& G! W& W
  440. . k) ^/ }  b: E9 l1 Z
  441. zset(sorted set)操作相关: ^! O. R) ^: l6 S0 d
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    4 Q+ j7 L, m) y, d. J  y
  443. $redis->zAdd('key', 1, 'val1');
      D( u- D' M7 }& ^7 X' D0 J
  444. $redis->zAdd('key', 0, 'val0');% G: q' `) X" |2 e! m! e" J- v
  445. $redis->zAdd('key', 5, 'val5');- w7 @) j1 C. ^5 x; E. D
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    ' b/ M) t. U( f+ u
  447.   x. r* M' G+ q0 Z, ~( g0 B" q& U
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    % T. ?9 a, D( k; F0 ^, f0 l% @
  449. $redis->zAdd('key1', 0, 'val0');# g& k) m! g$ Y. |; J! {7 @4 X3 g# A! V
  450. $redis->zAdd('key1', 2, 'val2');
    # e& Q4 c' ]/ o* X) I
  451. $redis->zAdd('key1', 10, 'val10');. c* P$ \( E& u
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);. {3 J. p, P- a  y0 t5 q& u# K
  453.   I5 m; y0 b8 }0 r6 p: q5 }9 Z
  454. zDelete, zRem$ w8 F5 L& m& x1 {9 i
  455. zRem(key, member) :删除名称为key的zset中的元素member: A& O% i2 Q7 m+ ]1 c
  456. $redis->zAdd('key', 0, 'val0');
      [! h2 @) j7 H/ t
  457. $redis->zAdd('key', 2, 'val2');
    1 o6 R  m$ C/ w6 H
  458. $redis->zAdd('key', 10, 'val10');
    9 F/ M" B3 ~. \' P# b6 [
  459. $redis->zDelete('key', 'val2');
    8 h/ j+ v% A& n* E
  460. $redis->zRange('key', 0, -1); $ p3 b5 E8 N' C: S  Z

  461. / x* {& _- E8 A1 n
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出# W; L9 _1 b) E3 k7 O
  463. $redis->zAdd('key', 0, 'val0');
    * ]) Y6 M1 \0 \8 X) \2 i
  464. $redis->zAdd('key', 2, 'val2');# P2 A5 d+ o0 G& f( r5 x3 j( `. }
  465. $redis->zAdd('key', 10, 'val10');& }& O7 J2 _. R/ G
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);& c4 E3 h: h: h

  467. + g. p  S; y' g$ m
  468. zRangeByScore, zRevRangeByScore+ K, C, n& ?% h. m3 c( N$ c0 J
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    . E3 F, s; S! ~% K5 {
  470. 返回名称为key的zset中score >= star且score <= end的所有元素' n9 e: Z0 ~) I" \) r/ C
  471. # m0 x1 d5 N( X- P6 k5 z, e) F
  472. zCount
      T# b; i! g3 n- x& X" x
  473. $redis->zCount(key, star, end);( A& _4 D8 H9 |& O
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数0 T7 V$ G: k( j" Q- `& E3 }, C* h

  475. ; d) i* p7 R# c& a. \) f
  476. zRemRangeByScore, zDeleteRangeByScore
    7 n" C  l- |: f, P6 p* m
  477. $redis->zRemRangeByScore('key', star, end);- W4 a. W2 e% ~, l$ T3 z  O, Z0 C
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    + O# f# i. i) A) C  k

  479. $ b$ E& K% ~3 R
  480. zSize, zCard
    / C; g, I$ v1 V+ d1 }
  481. 返回名称为key的zset的所有元素的个数
    5 b& Q" X* x0 c- i& U
  482. 5 P) v1 M* h) g3 l6 c# E2 N1 Z
  483. zScore
    6 c% _) O$ O# {* |" z3 Q1 q
  484. $redis->zScore(key, val2);* w+ J# v2 a7 V8 d- q
  485. 返回名称为key的zset中元素val2的score; r% d- ^/ ?+ X9 {) g" Y
  486. ; f% Y% G( X$ C* c' j
  487. zRank, zRevRank; }& [; K5 I/ |* G& P
  488. $redis->zRevRank(key, val);
    . E8 \7 o# v7 x! b8 \# @" J
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    8 h5 K. n; L7 ]3 K$ M

  490. : U6 t  c, T3 m, Q& m
  491. zIncrBy
    & ?2 s! m+ n# e6 g# r
  492. $redis->zIncrBy('key', increment, 'member');
    4 l* l2 s* v+ Q7 w7 C% [
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    ( }4 Q& @) a% N4 s: L# W

  494. # P9 g; H& q  a/ y: K: ]- d
  495. zUnion/zInter
    7 Y; u* o7 O+ g' j
  496. 参数
    " ^6 I7 p: ]- Q" R* H! n
  497. keyOutput
    9 g7 k- j' X8 ^8 C
  498. arrayZSetKeys" m7 T3 ?5 v3 p' g% [  A, A- o
  499. arrayWeights
    ; [" n! K. T5 N6 I' @
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    ; C  {" `9 G' S) z6 x' V2 E) R% @
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。  x/ }! {6 ^. b$ X- {
复制代码
6 Z% A+ P, E1 z3 L0 R3 j9 N
, i0 A& p0 M. ]  }5 U
$ Y/ _5 I) s3 r. z; b

4 j! D% q" y) x* j7 w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 8 h& `- B" y, X. `) \* R
  2. //连接redis服务器
    : h) |' Y/ |* G- p/ k
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-20 01:09 , Processed in 0.113618 second(s), 18 queries .

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