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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    3 F. l+ }# C% [. {
  2. $redis = new Redis();  
    + a2 N& l' W5 Q
  3. $redis->connect('127.0.0.1', 6379);//serverip port0 `2 h7 ~( q* {, j/ f% X  |+ F
  4. $redis->auth('mypassword');//my redis password
    ( w6 b* Q+ ~3 l) y2 e3 q8 w: S6 ^
  5. $redis ->set( "test" , "Hello World");  / e% y( w" D+ d; x1 o# |# [
  6. echo $redis ->get( "test");
    & p- k& H' ?! M( s' P0 e' i
复制代码
php操作redis函数封装
  1. /**; |( r8 i$ r0 l" j; r# [, h
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    4 t& f1 q4 d9 l
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi$ C1 l1 W# o% |3 L
  4. */
    , M& a6 T5 W' v" U
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    4 s1 y" B2 }5 @$ Q/ W2 b% @1 C
  6.     if(!$key||!$value) return false;* r4 Q: C3 j7 }# S; Z1 ]
  7.     $host = $host?$host:getenv('REDIS_HOST');
    - S9 i# R; X- N0 |5 e# |
  8.     $port = $port?$port:getenv('REDIS_PORT');
    * t4 v$ x8 S1 |! o! \
  9.     $redis = new Redis();
    5 R7 \& K. X" I
  10.     $redis->connect($host, $port);
    . Q+ P9 H: U6 V" [! a5 w5 I
  11.     $value = is_array($value)?json_encode($value):$value;- M& R* M1 T" w, m5 k
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);9 Y/ X1 ]9 E( w! Z
  13. }5 ~3 U. m, B3 H# K/ n2 K; @  z
  14. /**
    1 m6 _1 i3 ~8 J7 r8 ?
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi: l; c7 R& _3 ]% q' m. o
  16. */
    8 q2 `+ Q! Z1 ?. d" r# @) Z
  17. function RedisGet($key,$host='',$port=''){3 w' m9 x! _: P6 s' a5 q
  18.     $redis = new Redis();
    ( @! }, R$ V) {4 D0 \6 Y  F( H
  19.     $host = $host?$host:getenv('REDIS_HOST');' j) E& T* Y( T- \
  20.     $port = $port?$port:getenv('REDIS_PORT');2 ]3 d0 J5 a9 ^7 i6 q" [
  21.     $redis->connect($host, $port);0 q( _' h3 {9 X
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);6 y4 |# h: u1 ?
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);' U4 H/ X- U& r- A& K/ T" \1 h  w
  24. }
    / L9 T  L  X& c5 f7 _, b
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
; N4 K; R2 H* Y
  1. setex 带生存时间的写入值# ?: U' T( e8 _9 ~+ r
  2. $redis->setex('key', 3600, 'value'); 8 N& J4 H6 U! z$ l5 l
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1* Z$ P2 @% b/ v9 z
  4. $redis->setnx('key', 'value');
    " ]* ~& ^8 ?/ n+ T: U
  5. 返回已经删除key
    " d% w) {% g$ ]) D, J/ j
  6. $redis->delete('key1'); 成功返回1失败返回0* }3 O, D4 h) ]2 P- }
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    ' u( ?- E8 S* R& g4 x) h) K+ E
  8. 查询生存时间2 g8 K! x- }8 i1 R  ~8 Y: i+ w2 [( c  Z0 S
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)* n; L0 U2 T. o- d# ?2 v% o
  10. 同时给多个key赋值,同时设置key0和key14 }! R$ ^2 ^: p$ b
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    * |# n7 [/ N* k# k
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值( v0 f. \) f8 j# R/ |7 P9 }7 C
  13. $redis->incr('key1');
    + N+ A0 m. N/ M. q' O+ w" Y
  14. $redis->incrBy('key1', 10);# \' J( ~8 h  I$ j
  15. 减法跟加法一样; |3 R( c2 T( E+ T7 I; ^. I2 U, P
  16. $redis->decr("key1"); 减少1
    8 ?& f- S" z1 v+ y4 ]
  17. $redis->decrBy("key1",5) 减少5
    2 f2 [( ]- W; D5 I  J+ N4 i
  18. : A# N3 m4 j" b5 \9 O3 D( h
  19. list相关操作,连表操作
    % I3 D' `0 E4 Q) N6 g
  20. lPush
    4 F: _, x7 T+ u  ]+ o  V" h
  21. $redis->lPush("list", "888");
    & u( p3 f# `7 p8 u( J
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数+ P" V8 Z2 W' G) R0 H4 H. c
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    4 w+ e  r4 q; e: |/ \  w
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
      A( N  [3 N( N# p0 ^0 Z9 t  Y
  25. lPushx/rPushx0 X, ]% n% A* w5 O/ N* ?
  26. $redis->lPushx(key, value);# h" |8 Y2 J  T- z5 U1 h1 @
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    8 X1 p$ U/ u; @& A$ b5 f3 l; L
  28. ) S8 }6 j1 v2 F/ k9 O" @
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key2 q: R% b2 {' Z# E* A# u
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    $ ^- b& o; p6 J& w! h/ s
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    5 X% V  Q$ r  ?4 h2 f# \
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    5 z( [& q% c+ d- K4 _% C
  33. sadd s1 zhangsan9 b" i, J" b/ d7 C4 w. s
  34. sadd s1 lisi
    7 n1 L9 W6 w) d" y5 ]
  35. sadd s1 wangwu
      ~' b8 X4 F1 W
  36. sadd t1 yangxingyi: M8 }. T: v' B
  37. sadd t1 lilei; X6 W' y, I/ [
  38. sadd t1 zhangsan
    8 c! Z0 o1 j! |5 \
  39. smembers s1 s1的所有集合内容1 I* F. ^) W/ }- @7 \2 z
  40. sdiff s1 t1 s1有的,t1没有的,差集
    , \$ Q! R& `0 e+ Z! r
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式! @" ?, c- H* Z7 c
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的, `5 g4 M! k4 m, C  N& C8 O
  43. spop抽奖场景,返回集合里面随机的数
    % y. C8 [  Z8 O1 U3 n) E
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了) W6 b( f2 h& z0 A' m( j8 i
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数, c' u, D* }8 G0 m: X* o  _- I
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    % ^6 d8 }2 f; U  ^; O  c- v6 L
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    " U- t, e$ ?  D$ ?& j
  48. $i = $redis->srandmember('s1');echo $i;
    1 \# P' A# S* s" w+ O* L. q: C
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    , u0 C; q  Q% [8 r8 w# u1 m9 U
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false, Y* |& w2 N" z) Z* Z+ z% Z/ `9 ^

  51. 8 x& L5 `2 ?8 k
  52. zadd key 2 value 有序集合
    + I$ F% f7 G" ]
  53. zadd y1 1 zhangsan;
    * z6 l' `1 m& s' C' [
  54. zadd y1 3 lisi;, _$ f' i  I; X. l' }
  55. zadd y1 2 wangwu;
    2 D& E: v4 @( l1 f( A; E  \. Y
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi2 G5 ]+ ~- r' w) M
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    : N' B' h6 e" Z+ N0 f: b
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    8 `# u8 M9 S7 x, F' {4 w
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先/ I% n0 q0 O# [# Y: L* f
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的# M0 `; A& g6 E# K  _7 |$ H& X, C
  61. 无序就scard,有序就zcard,有z没有s2 y* ]6 f. u. Q/ F+ p& r) Q
  62. sInterStore
    ( v1 k2 U1 J6 R4 `# V' S* Z% e
  63. 求交集并将交集保存到output的集合
    . i' G6 n! q# M$ ~3 c
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    & A: @( C& E$ ~! A- \7 G, v

  65. 4 D: e  g/ H7 u$ X2 [! Z- c$ V
  66. Hash操作
    4 F/ V  U* p& O; `- [0 B' i0 G7 S
  67. hSet0 x3 o! |) j2 H& R7 u8 T" Y
  68. $redis->hSet('h', 'key1', 'hello');
    % t# W6 X5 Q7 c: o* F9 ]* Q
  69. 向名称为h的hash中添加元素key1—>hello
    7 n! C) W' [* l. n0 }
  70. 9 V7 D+ i( F: o" D
  71. hGet
    " c: D" p. \* L! V
  72. $redis->hGet('h', 'key1');
    7 D8 K1 h$ \3 N, F3 c. O
  73. 返回名称为h的hash中key1对应的value(hello)$ m% [6 O  N0 }0 G9 m, I
  74. . L# D1 o2 ~* }  L
  75. hLen  ]4 T7 L" a3 s6 l2 E
  76. $redis->hLen('h');; L( x9 A) C# ~% _: B& l
  77. 返回名称为h的hash中元素个数
    , S9 Q! n9 h3 A0 G6 m' f8 x$ g

  78. 7 B8 [7 S5 T  N" ?
  79. hDel
    ) v9 I" Q3 V, i3 ?( U0 x; d' |
  80. $redis->hDel('h', 'key1');# M5 f. m8 \* E( t% d. _: m
  81. 删除名称为h的hash中键为key1的域. S/ ^( I) T+ M5 L% s" W
  82. 5 ?% N, w: i; d' L3 f4 M6 f7 g) E
  83. hKeys. g( N8 R* d4 x8 l/ H1 J
  84. $redis->hKeys('h');
    , |7 _2 M/ ]$ `" F6 Y3 a# \4 {8 j2 B
  85. 返回名称为key的hash中所有键0 Z- i5 L$ X5 @$ U
  86. / t. w( @' a/ p; a& M
  87. hVals
    & ~+ C# F" }, ~- \/ C
  88. $redis->hVals('h'): d: ^5 X- E; ?, _
  89. 返回名称为h的hash中所有键对应的value$ s( Z' t0 w, `$ q: Z3 [; f
  90. 1 b7 m; b/ J/ O/ U6 |5 \" U
  91. hGetAll5 V9 b5 o9 X* w4 @- |
  92. $redis->hGetAll('h');% `# F& |# O0 ]4 l( A/ d
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    7 @. m+ y4 |% k7 V: T

  94. : l! P) F6 Y" ]
  95. hExists2 m( p9 r) o0 `# b( }+ `
  96. $redis->hExists('h', 'a');% H" |) Q% S" d( r5 P! x
  97. 名称为h的hash中是否存在键名字为a的域+ J+ R1 T5 b# }+ Y+ c; O4 q- [

  98. * |: |+ D. H1 O
  99. hIncrBy
    ) J, f! n7 h( w! w9 m+ B# K. b5 U4 V
  100. $redis->hIncrBy('h', 'x', 2);$ ^0 V/ e( s1 I: F  D7 l1 [; w8 W
  101. 将名称为h的hash中x的value增加2: b7 t, |. ~; E+ K. ^
  102. 5 q7 c3 L$ I3 ?& O
  103. hMset
    2 e& k' ]: j, Q( _9 ]1 ^# O, f
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));; w3 L) `; e6 y6 j7 z4 Z0 c; m
  105. 向名称为key的hash中批量添加元素; m0 Z  l! n& N' v. K. r' w0 \

  106. % T+ s- G, h/ {* \+ k. v/ F
  107. hMGet
    & b: C) Y  n) S% A4 X
  108. $redis->hmGet('h', array('field1', 'field2'));
    & F; {" _4 O; H& i- }" V! E
  109. 返回名称为h的hash中field1,field2对应的value
    8 _* z3 B3 }4 K9 a( |
  110. ) T0 [' \" f" D7 S8 l- X
  111. redis 操作相关5 o& S7 q( Z9 b$ A5 u8 J
  112. flushDB5 V* K! s5 p; Y& y7 T& ?
  113. 清空当前数据库8 S; p! s. Y7 h  {! y

  114. * P. H, D! H  D! i' i, q; e8 U4 n
  115. flushAll
      H' N+ N. `+ w9 p1 ]' J8 a
  116. 清空所有数据库, V( b: [( G4 t( a

  117. ) j( G* v9 q9 b
  118. randomKey
    % O% y9 s+ O7 W  L' r
  119. 随机返回key空间的一个key
    & ]5 n( e1 t8 n6 F
  120. $key = $redis->randomKey();7 B3 `4 S, V& M

  121. # w) a& V8 M7 }; q3 I  v
  122. select
    % Z( H+ i% u# v" u
  123. 选择一个数据库" V! x. L1 ?: O. G! T# U4 C; `
  124. move9 o! _* k: W$ z
  125. 转移一个key到另外一个数据库
    $ e/ t8 S9 w5 ?
  126. $redis->select(0); // switch to DB 0
    5 l$ U7 g0 N1 o* ?: d. C
  127. $redis->set('x', '42'); // write 42 to x
    8 l- p# K* F3 Y) P
  128. $redis->move('x', 1); // move to DB 1
    2 b8 o5 p2 K: }7 e; I% y
  129. $redis->select(1); // switch to DB 1
    ' o. [0 s/ g, h* P7 V) q9 y" S
  130. $redis->get('x'); // will return 42
    ; _4 i2 W+ m0 Y8 o) }6 @: D
  131. ; d$ a2 c# `3 P( o7 q* n5 W- R
  132. rename, renameKey* o/ E; B& F/ _; f
  133. 给key重命名; m1 m) u0 D# \0 a$ [- M
  134. $redis->set('x', '42');  b* \, {, L% L  U4 j" h
  135. $redis->rename('x', 'y');: e. y4 X7 K, r, ]+ d  m+ o4 ]
  136. $redis->get('y'); // → 42; U! V9 u* d3 u/ p
  137. $redis->get('x'); // → `FALSE`
    1 _7 Q$ Q: W; l% o) |4 N1 `. D
  138. 2 e) p$ ^. E# l& _6 d5 n
  139. renameNx$ i" \2 C' ]# b# @- m
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    . Q! n1 v0 ^; z8 w+ U; R8 ?
  141. 4 J9 F. c. w9 f% ?
  142. setTimeout, expire+ s1 i' L4 A: {( H
  143. 设定一个key的活动时间(s)
    " }% t) H8 {8 S% L: B
  144. $redis->setTimeout('x', 3);
    / Z' o+ x( y5 j" r, ]7 b

  145. ; i1 A1 N1 @; z# }7 n7 j, R" ~
  146. expireAt
    ( _$ Q; Q8 U& Z& H9 I: q
  147. key存活到一个unix时间戳时间" L. W; O  u1 ]8 u$ G
  148. $redis->expireAt('x', time() + 3);2 n$ K  Y" {) T9 H
  149. ' B0 Y2 x; C8 N  y7 h: z
  150. keys, getKeys( j1 F3 Z; [: A* T3 R4 `
  151. 返回满足给定pattern的所有key7 ~/ x" @, e, I& I8 b
  152. $keyWithUserPrefix = $redis->keys('user*');
    ! d9 d; w8 \$ Q

  153. + G+ h% s4 i/ }- V
  154. dbSize2 x, T2 e; ]7 G" k! g
  155. 查看现在数据库有多少key
    : f7 ^0 l7 o* J+ |) c; K5 c; O
  156. $count = $redis->dbSize();7 u7 I, B" n  p+ [; w

  157. 4 W" H# B# w/ h2 _* t
  158. auth
    / ~4 m5 O" n* N
  159. 密码认证
    ; U0 |3 G! C; Z, V4 j
  160. $redis->auth('foobared');* f) t8 }& w# _. x, Z& @

  161. 7 G$ P( Q4 ~& C
  162. bgrewriteaof
    , `9 e4 |. w8 h2 G6 T9 G# C
  163. 使用aof来进行数据库持久化
    # y8 e+ J% Q( o
  164. $redis->bgrewriteaof();, a( _- T  T7 `) W

  165. ! i, M2 e  F; ?' g! w, r
  166. slaveof4 M- ]( G' q( ]5 M% \" o9 \
  167. 选择从服务器
    ; c5 N3 t, g7 Q5 a8 b5 p; M" ^
  168. $redis->slaveof('10.0.1.7', 6379);* {2 |2 G' s+ _. _& s2 s; |

  169. " k; x3 d# E# d8 B6 B2 T
  170. save0 G1 K9 L  d& B9 w0 q& \+ u
  171. 将数据同步保存到磁盘& @8 _3 h; ~5 h" N. U
  172. % Q, X  {4 W. e- t, J6 c/ L, `
  173. bgsave
    2 N0 F  L% S' s2 @/ D3 f
  174. 将数据异步保存到磁盘3 {. \( I3 r# P- g9 q
  175. : G7 l: r5 Z( y# D' d
  176. lastSave
    + U3 g" F% H6 J
  177. 返回上次成功将数据保存到磁盘的Unix时戳0 p; c7 C  E6 |# l/ F% K
  178.   h! S3 p# T8 z; g) Q' O7 i* e
  179. info
    + I% b8 U: k- C- J
  180. 返回redis的版本信息等详情( d- W4 y9 i2 D% [6 e
  181. ! K: H# n! h7 c4 O1 ^* j1 c9 `  i
  182. Redis::__construct构造函数2 d* ~5 K$ C/ x! e
  183. $redis = new Redis();
    8 b0 A; v  W. F) z9 b

  184. 3 o8 k3 ^% a* w8 W/ a
  185. connect, open 链接redis服务
    * i* P! P/ w" `6 v7 |( ]0 c
  186. 参数* Z/ H# e0 V0 x4 q
  187. host: string,服务地址
    ! w+ |+ p& J. ^8 J0 \
  188. port: int,端口号$ m$ c# ]1 `( E7 F6 _3 J
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)  |4 C; V, p3 M
  190. 注: 在redis.conf中也有时间,默认为3004 S$ }4 [/ |+ p

  191. $ g) a# D  d  a' t% v) p5 p* u4 [
  192. pconnect, popen 不会主动关闭的链接, E. R8 O: G! L! {2 y
  193. 参考上面
    9 d5 F' }/ |  O0 Q# X  N

  194. 3 ^. h2 a$ [1 ?- Q
  195. setOption 设置redis模式
    3 s% |5 N% B  g8 F3 E

  196. , Y. ]& g2 q! C7 W3 p8 S3 S+ `
  197. getOption 查看redis设置的模式# O) p5 k! ]/ {& B' Q  `4 e9 S
  198. / ], i8 M7 J/ k( o% O/ s3 K
  199. ping 查看连接状态& u0 b6 V: Q- `4 y: j2 C% {

  200. # y1 U; [: G* ?" Y" A0 J
  201. get 得到某个key的值(string值)
    , X/ q$ Q3 U: v
  202. 如果该key不存在,return false
    0 T/ V& h  O. u7 p% m2 [# Q

  203. * a7 g- E- l* N0 J
  204. set 写入key 和 value(string值)
    : H# y% C" S# S1 b* {
  205. 如果写入成功,return ture
    3 {. j/ p/ ], G* e: D+ I) ~/ _4 v
  206. 6 E6 f2 S& ~' W6 M9 u$ ~# M- x8 I
  207. setex 带生存时间的写入值3 W+ k- O5 e' h0 `: _2 Q
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
      s6 [0 p2 C( q# h& |
  209. * F: s. z# a* E1 o5 Q6 s: Q
  210. setnx 判断是否重复的,写入值
    2 S! l' Q& ^% m1 o5 p3 w4 B
  211. $redis->setnx('key', 'value');* |, y; S/ l- d. i
  212. $redis->setnx('key', 'value');1 S" x' K) O7 s6 H$ f
  213. . d: e% o. _5 n' ^( I/ \9 ^
  214. delete  删除指定key的值
      p- Z! f2 P% X" ~, O( a4 y
  215. 返回已经删除key的个数(长整数)+ Q7 V. c; Z* X8 C" z1 S5 ?4 d, ~
  216. $redis->delete('key1', 'key2');$ `' V, c" f# l* v) s1 h8 F
  217. $redis->delete(array('key3', 'key4', 'key5'));* u+ u- v  a2 B: T: D
  218. / w" L: J; J, S' l! p4 d* E  ]
  219. ttl
    $ g5 Z0 e7 Q4 o) o" t
  220. 得到一个key的生存时间8 |' K4 I2 O% E. N$ B/ @
  221. ! W# e5 ~" _; {# b3 c
  222. persist
    + J0 ]$ K3 i4 U. ^8 I4 k0 e9 P7 t
  223. 移除生存时间到期的key" Y. g& J/ ?" r; P
  224. 如果key到期 true 如果不到期 false6 Y3 d/ J$ S' ^. s+ l
  225. ; U) ]) c+ u# J" ]& H0 |) J/ o2 P
  226. mset (redis版本1.1以上才可以用)0 o& f6 w9 V) }* F& B/ I
  227. 同时给多个key赋值
      j7 \5 H5 [0 _$ s6 O) ]$ ~
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));; L7 V; g4 i) I" _2 Z
  229. 1 k$ S# K: `( u5 T$ |: `- }; w
  230. % B) L$ z( w* I4 V  ^" P" ~3 |

  231. + n& \: n& p1 [" U/ {+ ?
  232. multi, exec, discard9 X# z5 [+ ~5 |0 `
  233. 进入或者退出事务模式
    ; L" J: ~3 a! q: \' s1 g$ T. s
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    : ~6 B. J4 h/ F
  235. Redis::MULTI:将多个操作当成一个事务执行" P# h! q: `- E# j# a
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证) A  Y$ w3 J% k* m
  237. discard:删除一个事务) ~3 p$ l( q: |" V/ k
  238. 返回值# z" f9 h3 f( ?2 T0 Q
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    ; `, S. ^' q: t& C

  240. - C# e8 H+ m8 |- [- z, k
  241. watch, unwatch (代码测试后,不能达到所说的效果)" L2 ~6 d! i# `* t. I/ [9 O
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)2 G8 j% I4 F5 W7 b) q
  243. unwatch  取消被这个程序监测的所有key% T! H4 R) t: B3 y& Z9 b
  244. 参数,一对key的列表
    ' j/ U  Z! c0 \0 ^8 }9 U
  245. $redis->watch('x');
    + z" }4 A. W8 g9 A5 h  t9 m: ~
  246. # n  O$ T5 B! G8 ~( P8 H9 j& a
  247. $ret = $redis->multi() ->incr('x') ->exec();! P$ O( O" y* C; }# s: f
  248. 8 k8 U$ J* ]0 i# X, `) f5 ^4 I

  249. / h# A$ u, `' [5 F
  250. subscribe *
    0 o6 S' W/ X( S* j  h% e: r3 K! t% A
  251. 方法回调。注意,该方法可能在未来里发生改变
    8 [$ w( W3 ?- L

  252. 3 p( x- h: n6 {5 Z" F' e( K% O
  253. publish *
    1 y: Z1 U" o  M( H5 {
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    , u- P. p8 C5 O8 g# E9 D( p* T
  255. $ _6 C, M' Y9 z( i% j
  256. exists2 q' J  P1 e$ g
  257. 判断key是否存在。存在 true 不在 false
      K, M4 L4 i' s9 y2 w: S1 U

  258. , Q6 c; V8 m, C1 c0 ^( ]4 E% t
  259. incr, incrBy
    ' e/ `7 i* v  m( Q! l
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值6 m9 Y% \7 Y* ^
  261. $redis->incr('key1');. i( T! g/ P: j2 q. }4 W7 l, m
  262. $redis->incrBy('key1', 10);
    ! D; ~$ N5 _" ~% s
  263. : K, \& L0 l# l3 u
  264. decr, decrBy( r& h8 a8 s2 h
  265. 做减法,使用方法同incr
    9 l- Y- C& N+ x' c
  266. / A7 g3 x) h; L! k% y5 g
  267. getMultiple
    * L/ J$ C8 N4 d5 c  b
  268. 传参& k/ o8 J1 V3 k& O9 u, q
  269. 由key组成的数组
    # s3 r# Q4 ?" t6 y: X& f" C% {
  270. 返回参数
    $ g+ Q# I9 l, W) h
  271. 如果key存在返回value,不存在返回false
    7 c6 b! f* ]5 d
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    9 u5 q7 D" `0 [1 r5 S
  273. $redis->lRem('key1', 'A', 2);0 ~% B5 |, F) }& e+ u& E  e" m3 S
  274. $redis->lRange('key1', 0, -1);
    1 b5 h$ Q' `. k, m: W
  275. 3 c8 l$ l2 `: h% g& u0 c/ o
  276. list相关操作
    ; }! S5 M& R; F, k4 j+ d# C7 f* J
  277. lPush- m' b3 q7 G5 y! W0 w3 [
  278. $redis->lPush(key, value);
    8 Y: r. {  @- f2 @' f4 d. G
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    ; L6 _/ F" [/ Q3 h4 L6 o
  280. ; N3 q; ~/ b8 R) X% B9 t" n
  281. rPush
    , R! N- e, V. r7 p0 e3 V
  282. $redis->rPush(key, value);
    9 z) {* `9 S; }4 z+ s% y4 _
  283. 在名称为key的list右边(尾)添加一个值为value的 元素8 X0 T+ \0 x% [& @2 h5 t: T

  284. 9 f5 f/ A+ a; w: r
  285. lPushx/rPushx3 s1 z/ A6 _) k" I/ ~: ~4 B7 p- Y
  286. $redis->lPushx(key, value);
    5 F4 Z' {& L1 N5 X
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加  V+ V" i! b4 g

  288. 6 i& u, m5 x: ]6 b- z
  289. lPop/rPop: r5 f4 c# C/ `, X% H! m/ J4 H0 O7 `
  290. $redis->lPop('key');
      [2 U9 b; t  L5 C
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    ; F- v& q+ ]; ^- i' b

  292. 2 T5 e4 w# |) `8 |/ d( T; q, K
  293. blPop/brPop( `$ ~, F2 ?9 k' C7 n- Q
  294. $redis->blPop('key1', 'key2', 10);8 O* v7 h9 N0 e5 f. T  J
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    " P  I# s9 E& E& k% ?$ S8 U
  296. : v3 u2 F* ^6 U- ?9 @  T
  297. lSize
    , T8 r* {0 ]8 k5 z/ w
  298. $redis->lSize('key');. I  c! ]; Y! g! N3 D
  299. 返回名称为key的list有多少个元素: U3 N9 T4 B1 v3 ?
  300. 1 u5 [( C6 ?7 ], y
  301. lIndex, lGet/ j5 G7 u! E8 e; t
  302. $redis->lGet('key', 0);4 e6 @1 w/ E* E* }' u) h9 W
  303. 返回名称为key的list中index位置的元素1 o" e$ \& ~: m( M4 U
  304. + S: d' ?3 \& o2 z8 E6 _  o
  305. lSet# ~; G* k: |9 Q& _1 f% N
  306. $redis->lSet('key', 0, 'X');, T! Y) E4 @" X9 l. O
  307. 给名称为key的list中index位置的元素赋值为value6 H. k/ h# S+ z- U$ f6 v$ r7 f

  308. 3 z. Z) c. g% {9 V8 d) t# e
  309. lRange, lGetRange5 x& K3 M) v; M6 L" A  C3 Y
  310. $redis->lRange('key1', 0, -1);
    ( Q# C( ]% ~2 O! u; B, _
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)) ]) b% f3 N9 F

  312. 4 {4 ~: f; Z9 @) P. ~
  313. lTrim, listTrim% U# t) c: o8 o  M
  314. $redis->lTrim('key', start, end);  K% W2 K9 q  f: n* B6 k
  315. 截取名称为key的list,保留start至end之间的元素
    1 Y; K; f7 R4 \3 F) B

  316. 8 x- i8 w/ p1 }. ~. D
  317. lRem, lRemove
    % q7 I+ G, q* f/ }) s$ n
  318. $redis->lRem('key', 'A', 2);+ S. B7 d9 i! a( K$ z- \
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素4 O% C" t! ]/ r, j% D
  320. 6 q4 O+ _0 z: T8 e& f& L
  321. lInsert, N" e' u/ L, X8 y
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1) V& W8 Q- t) c0 ~
  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');
    . m+ |+ T$ W, Q2 |; E
  324. $redis->lRange('key1', 0, -1);
    / G. W/ b) N/ v) ^
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    9 s- Y- ^. V5 N- G0 C. }4 f% g
  326. $redis->lRange('key1', 0, -1);. e6 S( r7 S8 v- k8 s1 u
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    9 E2 C1 z4 v( U' {; S, u

  328. 0 S0 h2 N, v& g- u2 n
  329. rpoplpush
    & k( C' U' _/ F$ O; x
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    * B8 N; f4 M# _" ]  `8 J/ }# I
  331. $redis->delete('x', 'y');
    * R$ n: a8 t3 ]5 H
  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'));' e" n5 E5 d" h) p: T6 z9 v
  333. var_dump($redis->lRange('x', 0, -1));' }6 w& R( N5 o5 n4 A9 ]
  334. var_dump($redis->lRange('y', 0, -1)); 4 X0 g! p0 D2 z! @# R; p) A. R+ ?8 ]

  335. 6 `0 y' E  e* I
  336. string(3) "abc"
    ' O+ X9 [' t( x+ e' L5 _6 {" a2 S
  337. array(1) { [0]=> string(3) "def" } " r& {0 {. k; X% ?" F! V
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }' C. o& h( j) g3 c' m, w: X! F, ]

  339. 7 A# P5 c# I8 d' I  M
  340. SET操作相关- @2 Z; a3 @' |' ^
  341. sAdd
    % n' X# _" Q3 H) k' I) V7 O
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    0 [" J: J/ ~+ a; R4 X: u; @
  343. $redis->sAdd(key , value);
    $ [8 }# O+ z: o3 F6 K7 s4 a- r
  344. 2 D. I6 b! O- \5 G5 s) e. x! a1 {
  345. sRem, sRemove/ D% G7 C) E/ P8 G
  346. 删除名称为key的set中的元素value
    ' R. l( n  X$ S, H+ x" ~5 J+ K# {( v
  347. $redis->sAdd('key1' , 'set1');
    : G& i5 `! D5 E4 H: u( B# q: n
  348. $redis->sAdd('key1' , 'set2');$ Z6 {3 D- H2 C
  349. $redis->sAdd('key1' , 'set3');- {4 Q5 O6 X8 y; i
  350. $redis->sRem('key1', 'set2');* y0 s5 G4 G9 ?' h- ?

  351. + J* k# h  E+ p, l
  352. sMove' A( t4 `9 x$ J7 E$ h. Z* S; i5 ^
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    - C3 f# ^# y, a6 ?8 L' \' [5 D
  354. $redis->sMove(seckey, dstkey, value);
    3 U( _) @' s2 C" F: O& p- F" V

  355.   k7 @" w1 |+ G- l' {( t
  356. sIsMember, sContains9 \4 t1 ^; O4 B. y! }
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false1 U/ S( s$ n; V( p/ g2 K+ j
  358. $redis->sIsMember(key, value);
    6 l4 x! ~/ m+ I+ W  @
  359. 0 x2 Y6 m* J" ^: v8 B
  360. sCard, sSize
    9 Y' `% X! Y  F! o
  361. 返回名称为key的set的元素个数, B* n. b" l1 J: r5 m

  362. 9 `( I3 @! L7 F2 A
  363. sPop
    , ^' M; M! X0 _5 w7 h1 C
  364. 随机返回并删除名称为key的set中一个元素
    * S& i) E( }+ q: c* |

  365. / S5 E0 E7 b1 c( ~( X& [4 T
  366. sRandMember
    3 ]  @2 N/ d- G) K7 n, g3 L
  367. 随机返回名称为key的set中一个元素,不删除
    2 u" J, G2 W- E+ U1 m
  368. 8 t, ]% J2 E. ~; i, [" l
  369. sInter
    . W. n4 Y9 e& k; q" r7 \
  370. 求交集
    5 l; ]$ J5 [4 F) z) p

  371. 2 S! [0 b3 F* B! F/ i: N
  372. sInterStore# X1 `) [* f2 y0 _
  373. 求交集并将交集保存到output的集合
    0 X$ D; \6 b2 r  c
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')& `! N# N' E. W
  375. % F) v" d: y& J0 u8 c
  376. sUnion" }! i5 i% W- O6 o) \5 C" x: T
  377. 求并集
    $ D" [# c/ X6 e1 E" K
  378. $redis->sUnion('s0', 's1', 's2');
    , h1 b9 ?- A3 e- Y3 i5 R8 i; x
  379. s0,s1,s2 同时求并集8 G8 r  q! ^4 L2 g, c" h
  380. * Y, M5 x, G. i) C5 j/ E
  381. sUnionStore
    % E' ]4 e8 }  E$ {6 g1 E" A
  382. 求并集并将并集保存到output的集合
    / L  B, \8 [) X; ~8 d
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
      ^5 v6 m. m6 N
  384. & H' }. S; p' {9 ^
  385. sDiff9 |6 p# p% K* [9 i0 v8 ]
  386. 求差集$ @$ ^2 Z$ G, H- X

  387. - O- d. A! [* H) X& L/ W
  388. sDiffStore3 ?! }3 K+ \, B
  389. 求差集并将差集保存到output的集合
    ) z* H. E# z4 y. ~
  390. 5 _5 }5 K) t8 n' Y
  391. sMembers, sGetMembers
    7 E' u8 r3 m  r$ U1 v
  392. 返回名称为key的set的所有元素- {9 a+ B& A+ r* c# r

  393. 2 [- |, N( b1 [! D
  394. sort
    # S% Z; T! J% D* T
  395. 排序,分页等! g6 P2 ^3 Q8 n; |7 B) O5 F( V7 N9 s
  396. 参数" U5 n3 o9 @1 S7 M3 o
  397. 'by' => 'some_pattern_*',
    ) w  l0 \! z4 V2 x  ~4 B
  398. 'limit' => array(0, 1),
    , ^: m. U5 B+ S$ S
  399. 'get' => 'some_other_pattern_*' or an array of patterns,0 V2 s) Z7 V/ |
  400. 'sort' => 'asc' or 'desc',1 ?; I) z) w6 r
  401. 'alpha' => TRUE,
    / p9 M' r8 f" H) e
  402. 'store' => 'external-key'
    : I, m2 P+ b' U5 B. T0 A
  403. 例子
    4 v2 {' }6 C& l; T7 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);/ j" j5 M0 e# Z# d$ `
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    3 F" c( ]0 g, O6 W) @. L6 H
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1$ x3 f' r) z. t2 g; C
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)50 s  D7 H) [6 \& _% X

  408. ' f9 c; P: V/ A! i: T
  409. string命令  q5 ^' A5 m& t
  410. getSet
    0 Y9 n; V* N# X. J' Y7 U+ [8 i8 U$ m
  411. 返回原来key中的值,并将value写入key
    3 Z2 X) F/ \/ w7 Y
  412. $redis->set('x', '42');
    / P$ G" M1 }( I5 @" t1 c
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'$ k1 U, B( t  W0 u9 c
  414. $newValue = $redis->get('x')' // return 'lol'4 j: q5 s# V' \% z+ J
  415. ' \  f7 G! ]# V- S9 t$ D& D
  416. append
    . N) y) q  c3 x! h2 X5 I0 J
  417. string,名称为key的string的值在后面加上value8 z; A: K* f& n# V
  418. $redis->set('key', 'value1');
    ( d8 Y& [5 \; m6 P/ H5 d
  419. $redis->append('key', 'value2');8 S' _3 K2 ]. H' S1 N! V1 w3 w7 G
  420. $redis->get('key');7 r' U9 g6 x' N0 o( O( k
  421. / J2 H4 j% w/ _' k8 o9 r
  422. getRange (方法不存在)7 y9 T% o( Y, v0 O  W
  423. 返回名称为key的string中start至end之间的字符0 g- x/ y- S# c
  424. $redis->set('key', 'string value');0 s$ }( L9 a7 k* e
  425. $redis->getRange('key', 0, 5);
    ) }7 v1 x" j9 s) D2 O# Q. k( x
  426. $redis->getRange('key', -5, -1);: z8 d/ n  ?% @7 c8 P2 `$ Y
  427. ' o- i0 K4 I7 B7 ~* q6 U: _
  428. setRange (方法不存在)( d) `# W  ~8 H# y! V" @" C3 C" `
  429. 改变key的string中start至end之间的字符为value
    & Y5 ~- _0 _& S2 V& ^
  430. $redis->set('key', 'Hello world');( j5 F: D6 e# T! I% N1 o' M8 S
  431. $redis->setRange('key', 6, "redis");, ?& \" O; ]: ?7 |
  432. $redis->get('key');
    & P' m: S/ y. d$ R

  433. # M5 h, `, ]9 O
  434. strlen0 N. D4 u. k5 [; Y
  435. 得到key的string的长度1 J4 d- z( F& J5 e+ a
  436. $redis->strlen('key');
    7 t* L9 w+ Z) L- K

  437. 6 p; U7 g  J% r  N) e0 Z. {
  438. getBit/setBit
    3 z4 [/ \; H+ S) C
  439. 返回2进制信息5 ]9 Y  Q3 H6 @: J! b. h

  440. ) _# l4 x. d. [. b8 M! n" K5 G7 j+ A* f: s
  441. zset(sorted set)操作相关& j* p9 ~0 }8 L! K5 ^+ d0 a& ~% U
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    ' n6 U1 N4 g* E% j$ y' n
  443. $redis->zAdd('key', 1, 'val1');4 P2 X+ o" H. [5 g! f; m/ c  g3 I
  444. $redis->zAdd('key', 0, 'val0');
    $ F' J+ K( m$ ?% e9 E/ T1 S
  445. $redis->zAdd('key', 5, 'val5');
    # }$ O- B6 G- e& A8 c9 G- `
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    " r, @$ j6 ]/ m) @: _% i
  447. ' F' v% A+ Q! l# I- C& l
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    & S/ L6 L3 u: q- ~
  449. $redis->zAdd('key1', 0, 'val0');
    6 B9 e9 ?8 _2 \: Q
  450. $redis->zAdd('key1', 2, 'val2');
    " \# [: f# |  |3 ^; e
  451. $redis->zAdd('key1', 10, 'val10');: ]9 R" v" U9 R
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ) ?# Y# ], m( v9 m$ U3 H/ Y
  453.   m% ^5 n! c: U: x! I% |
  454. zDelete, zRem
    / ]5 }) S: E9 j: d& X: b
  455. zRem(key, member) :删除名称为key的zset中的元素member- z) ?" q, a5 [6 \4 _2 G  y
  456. $redis->zAdd('key', 0, 'val0');
    + f6 [3 _& u0 E2 C* e
  457. $redis->zAdd('key', 2, 'val2');/ O/ A6 H" ^; Z% }; @$ B
  458. $redis->zAdd('key', 10, 'val10');
      D, l8 v& b8 R
  459. $redis->zDelete('key', 'val2');
    : W- P: R- R5 L* x
  460. $redis->zRange('key', 0, -1);
    / ~4 ~- i' b  m8 j
  461. 1 n) t1 Z: ]4 l
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    - I& X' y+ m  h. V0 |
  463. $redis->zAdd('key', 0, 'val0');
    , \9 b9 g1 o3 O0 s+ U
  464. $redis->zAdd('key', 2, 'val2');/ H7 L7 ^- L$ o: T4 n
  465. $redis->zAdd('key', 10, 'val10');
    + \5 v# n* {& h) N3 Q
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    " {0 l% k& y; f0 H& V/ r- q* F9 N
  467. ' m# b" ~: X: F4 r% Y" Y
  468. zRangeByScore, zRevRangeByScore- Z" A$ O) y5 J8 I, i, N
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    $ ]* d. D4 v! c+ r( x
  470. 返回名称为key的zset中score >= star且score <= end的所有元素7 J1 E& J$ m& B
  471. 6 Z3 q+ t% O* E7 |6 M* h
  472. zCount
    / S" C  v9 ]' D- n) j; D- s; L  `
  473. $redis->zCount(key, star, end);
    4 K: w0 X3 }/ {
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数$ V& ^$ f# m9 W4 O0 N. w* _# H7 x
  475. 7 N2 `8 z6 \: {0 _! {# \/ V
  476. zRemRangeByScore, zDeleteRangeByScore7 r! z9 F2 ^2 Q9 A6 X6 @/ v) r$ @2 K
  477. $redis->zRemRangeByScore('key', star, end);% o6 q3 W2 w5 D% x1 c' }6 T
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数3 W' `  ~/ J! S8 z
  479. $ B! S( O( _% }! N8 R
  480. zSize, zCard
    # L: ]+ G- |5 @: ^5 I' B
  481. 返回名称为key的zset的所有元素的个数+ f) X2 m( X5 A% k/ i
  482. 5 o  e/ x: u6 R3 l9 g/ j: D
  483. zScore9 V5 X4 v$ N0 \
  484. $redis->zScore(key, val2);
    - }9 @. x) ^( H
  485. 返回名称为key的zset中元素val2的score
    5 c- L& U; W2 h) n1 _+ J8 P
  486. " G! X5 P& Z. y6 X4 B
  487. zRank, zRevRank; B; c, V( d# n! J
  488. $redis->zRevRank(key, val);
    ' A( m, n5 v4 L1 q! z# _9 x9 @
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
      B* S- V/ y. k. u; P" }% J) h9 @+ l
  490. 7 s$ V8 @" z& I/ X+ ]' i" }! T
  491. zIncrBy& `/ R1 o8 K8 ^6 ]+ e* G
  492. $redis->zIncrBy('key', increment, 'member');
      y' {. d- _# M
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    8 n: n, M1 ^  g/ ?

  494. + j6 O. Y0 \3 A- a- c- i
  495. zUnion/zInter
    ! }; x8 W) P# P1 R  B$ b. Z0 Q1 i
  496. 参数: F& O5 D3 Q/ U7 b" V$ x) e
  497. keyOutput
    # z3 ~3 Y6 O8 p4 j7 U4 |$ F/ ]
  498. arrayZSetKeys
    + `  c2 E* G! C5 k1 W
  499. arrayWeights
    9 j# |9 `' q5 c. E# Q0 ]
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
      K3 m# d/ Z# \3 G
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    " {6 t" k3 F0 P6 ~
复制代码

1 x/ s4 H4 F) `* u; [! f# c2 n: ]" K# V7 a' }  m
# Z0 p) e5 p" E% Z! ~+ x' d/ S9 n

2 k' t& a8 d# \, a# N4 l5 h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); % }; X, _5 H% @! ^
  2. //连接redis服务器
    + Q& \* ~* U1 s! Q9 N2 a3 f
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-20 03:09 , Processed in 0.075373 second(s), 19 queries .

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