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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php8 H1 h. ]3 F+ C5 E
  2. $redis = new Redis();  
    ' I/ f/ d; W" b: b  e+ z
  3. $redis->connect('127.0.0.1', 6379);//serverip port, W0 U- z9 P' T- ^- e
  4. $redis->auth('mypassword');//my redis password
    ( q0 ?4 r; K# |6 e8 I* f
  5. $redis ->set( "test" , "Hello World");  ! q, Z- ]* g+ }" J5 s
  6. echo $redis ->get( "test");) M" f, W- U" ?8 F
复制代码
php操作redis函数封装
  1. /**; N7 o% a+ x$ H% h& A- g$ }
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ; V; k; o5 L) i; Q0 f  n3 V
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi( `( K2 V9 k# a/ p! C" I
  4. */
    2 P6 k# C9 q5 `3 O' y# ~, E
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    9 \8 |6 I/ [* ?
  6.     if(!$key||!$value) return false;+ _0 }8 |1 F8 C" ?! d. G/ f. F
  7.     $host = $host?$host:getenv('REDIS_HOST');
    / f( O- {; F; c: G. f. B
  8.     $port = $port?$port:getenv('REDIS_PORT');( P! o# n, C6 A4 F! u, `+ v
  9.     $redis = new Redis();
    ' C. h! q: x8 W6 {
  10.     $redis->connect($host, $port);
    ; c& ^$ s" @4 t! ]5 V
  11.     $value = is_array($value)?json_encode($value):$value;
    - d, ?/ l4 R! V. @+ q# W2 r/ A
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);3 H5 Y" V- x8 e4 d
  13. }
    : F; s8 `" o8 F2 V* G5 S
  14. /**' i! z2 F" H. I$ t4 z3 P. _
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    ' D9 w# y3 G0 ?& f1 ~- n% y
  16. */3 r" ~/ {" a* m: Z
  17. function RedisGet($key,$host='',$port=''){
    : x) a7 }) Q" u9 W3 \
  18.     $redis = new Redis();  q, E# r2 l7 S. a1 i% z3 t
  19.     $host = $host?$host:getenv('REDIS_HOST');
    " b2 E' X, X! ?0 W
  20.     $port = $port?$port:getenv('REDIS_PORT');
    4 d+ i. r# _0 U/ L+ {
  21.     $redis->connect($host, $port);2 ^# N7 Z" `2 j# I( c" o% w' @
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    ( ~9 s) P& [4 N% ^9 z# z( i
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);& F6 w  p. y' T
  24. }
    ( B/ c  h; Q' W
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
* N! N9 l: R: ?
  1. setex 带生存时间的写入值
    ! _) \$ a! `' g2 n/ I8 F
  2. $redis->setex('key', 3600, 'value');
    ( ]" d! i+ l! p% L& S7 J2 M
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1' E8 s$ d- s' K' X
  4. $redis->setnx('key', 'value');2 p& J5 u7 _3 I
  5. 返回已经删除key6 w3 J( U2 S6 @* V$ p
  6. $redis->delete('key1'); 成功返回1失败返回03 s1 H+ y) D2 b! h( d, K
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回09 o9 d7 I4 X( W  ~' k9 R$ |
  8. 查询生存时间
    0 G  K" c: g6 ]- W' Q* U  _9 v* k
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    + x' M- p# j0 i" g' ~) t$ f
  10. 同时给多个key赋值,同时设置key0和key1
    0 ]- X( E$ K5 L, J+ j
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));$ Y# t! `9 W" G( o9 b4 m
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值. z. _7 `, O4 ]7 C1 _; ?! G
  13. $redis->incr('key1');
    , L8 V  j  T8 ]
  14. $redis->incrBy('key1', 10);
      p5 |" |* B1 H1 u2 x" D( X: Z1 n( J
  15. 减法跟加法一样
    5 J0 m* t; E* d
  16. $redis->decr("key1"); 减少16 y+ w& l4 h: G
  17. $redis->decrBy("key1",5) 减少5+ N% O3 R/ K, c( Q6 D
  18. ) h4 |2 D. x; q% B) {
  19. list相关操作,连表操作$ t, T8 V8 E/ u$ d2 V
  20. lPush
    5 D% q' _5 b1 M2 @8 f. F
  21. $redis->lPush("list", "888");
    ) I! T; o9 s0 \5 W: k; p5 K
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    , t1 f2 G7 d+ P% f; {
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    7 ]1 R1 x. B" o) H! _
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素; `9 ~) q4 O$ n5 e$ \
  25. lPushx/rPushx
    + g; o, r' r7 m
  26. $redis->lPushx(key, value);
    5 B) R( d5 v8 c4 n( ~/ K6 C+ O4 m4 U
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加3 |' R+ Q% D7 }! U6 N( ]
  28. . M: @9 V1 Q. Z
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key* {/ _* k8 ~; ^3 A, m' ~1 Q
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key: G2 S1 Y$ ?. L; f4 Y
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1. P. d3 Q; U2 ~/ E2 B' d: ^
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    : n* E" Y3 v& }& h- @1 O5 |
  33. sadd s1 zhangsan
    $ _2 s% I/ {+ B6 D* H) R
  34. sadd s1 lisi
    % U& R( v* N6 d1 P' P" u
  35. sadd s1 wangwu
    ) Y: ^7 [; X) H1 X
  36. sadd t1 yangxingyi& R. Q) L( X" H2 Q
  37. sadd t1 lilei5 I* d+ o* n6 Y3 k3 k4 ?# s) W
  38. sadd t1 zhangsan4 ?7 g% B& _/ y4 K
  39. smembers s1 s1的所有集合内容
    & i2 O( ^+ ?- E/ n6 z% j
  40. sdiff s1 t1 s1有的,t1没有的,差集' k; p3 U, B! K, B  ~# A
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式: b# `3 A% ~: d4 Z# {6 h- H( x
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ; O4 S' [  a4 S. s
  43. spop抽奖场景,返回集合里面随机的数" k: U" _- V7 e' r9 G* x4 c
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了2 n5 m! W* t/ e) V2 o; t
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数: w- `: E. V: i7 L% f3 a7 g2 s
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的% m9 \9 u- s# f+ `2 P# R' K
  47. 随机返回集合里面的一个元素,但不删除,重复中奖9 u0 N* u3 `- w* e! P: G9 [
  48. $i = $redis->srandmember('s1');echo $i;
    3 d; ]5 B1 o: [3 Q( H( k* R
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    , A, v( m2 S% w9 a. P$ Z+ c4 J! x
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false) ?% d1 U3 ]/ Q! y" M

  51. ) Y# S5 V% q3 |1 p! }. t/ M5 U
  52. zadd key 2 value 有序集合  s: l, A/ V6 \& t
  53. zadd y1 1 zhangsan;8 v' L. e! x' G" h6 F
  54. zadd y1 3 lisi;% `0 t5 x% T2 [' V
  55. zadd y1 2 wangwu;, q, }% ]$ [3 a1 k
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi- E  f' M% z/ k( h/ C4 O5 E5 v
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);6 ~2 N3 j+ i0 a2 o9 L0 P( H- c2 [
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    + A' i5 G8 f& Y+ T) u$ Q& ]9 N8 r  A
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先0 |4 W: t7 v) b! Q  Q5 t0 x
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的5 N& c) S- }. J# t3 b) k* G/ k
  61. 无序就scard,有序就zcard,有z没有s( e1 @1 E0 ~) i, L) W9 C1 U$ f' P( i
  62. sInterStore
    0 n' M+ T! G' O1 l7 ?. A! t/ P" q/ e* T
  63. 求交集并将交集保存到output的集合
    2 h; ^/ K7 q2 t  I5 L7 `' H
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')# z' i% Y% g9 \2 X

  65. & t- @, @: ~3 C; _$ ~: u
  66. Hash操作5 j) I/ j8 z! Q: \  Z$ c% K
  67. hSet0 [  k8 [# U! ]( e4 {" g
  68. $redis->hSet('h', 'key1', 'hello');
    9 x! e0 H. A4 a/ D
  69. 向名称为h的hash中添加元素key1—>hello5 y# m: q) _; F5 T. F1 f
  70. ) t3 q% s- _: H3 m( `; ~( n
  71. hGet; l& {0 F6 |/ S. ^9 e
  72. $redis->hGet('h', 'key1');3 z. [3 i" P6 _) F
  73. 返回名称为h的hash中key1对应的value(hello)  @4 Z8 c/ S/ D2 p1 U/ L; x% `/ y

  74. ' u7 k' `  P# s9 @; ?6 p
  75. hLen: q# J9 _6 J  S& ^! W
  76. $redis->hLen('h');
    $ `2 O& P8 I) e4 k  [+ J" Z
  77. 返回名称为h的hash中元素个数" U4 }; g& U/ E' |, u7 `; o" J/ g+ x. j
  78. $ e' V! t9 P1 C
  79. hDel4 z4 j" ~! d! B: ]5 E. C( d
  80. $redis->hDel('h', 'key1');
    . C2 ?6 b$ R% L6 d" {
  81. 删除名称为h的hash中键为key1的域8 C( B6 E3 p/ P( j

  82. ( K& r. z$ m* p. W) q
  83. hKeys* a* K) Q- Z# U, w
  84. $redis->hKeys('h');
    7 k9 U* }+ }9 _9 Z( r0 S4 c3 s" A  S( D
  85. 返回名称为key的hash中所有键! Q4 ?/ _% s; d3 Y4 ?" D2 ?! S
  86. 4 J, f( n# U# h+ [0 O3 [' D* j: d
  87. hVals3 b7 l) Y* {$ _4 J; V
  88. $redis->hVals('h')
    0 }5 r# G+ q" y: y" K7 y# I/ B
  89. 返回名称为h的hash中所有键对应的value; B& _, `# B" A

  90. 6 P+ o! ?+ V4 H! ~% M6 `( }
  91. hGetAll. y2 p- Q( i' D) P* @* G7 J
  92. $redis->hGetAll('h');6 r/ d, F  a5 e( a+ F4 F
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    * Z5 S( o  }7 j. K! R3 ?
  94. ! J6 B6 A+ C' ~% i* P- p3 u
  95. hExists
    & q2 d3 @5 l: R
  96. $redis->hExists('h', 'a');  g2 }2 D5 I$ T3 J
  97. 名称为h的hash中是否存在键名字为a的域- s5 [' y: O* q) s6 r; S

  98. 2 n- I' Z/ e7 D2 G$ Q6 m9 `) k
  99. hIncrBy( G$ D5 r8 O$ Q  n% M
  100. $redis->hIncrBy('h', 'x', 2);
    ! G" g; S2 J/ u
  101. 将名称为h的hash中x的value增加2
    3 |# _, }4 r/ i& k2 u8 p9 G5 b1 h

  102. - W: z3 L$ t# p7 m$ v
  103. hMset
    & Q% N* M: H" H3 k! R1 R
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));- U- ~# y' F' N7 q4 I
  105. 向名称为key的hash中批量添加元素( X* z7 U) t7 ]$ y5 W, |
  106.   `0 x; a  X8 H
  107. hMGet, f7 y% o) _8 ^  w) D) L0 J% C
  108. $redis->hmGet('h', array('field1', 'field2'));
    4 }2 A; ?) l: y' w9 {. M
  109. 返回名称为h的hash中field1,field2对应的value
      U# C$ z3 c  d; v$ l9 m
  110. 3 g6 L' U. p0 `5 n5 H" H
  111. redis 操作相关
    " n$ p6 W8 _* o
  112. flushDB
    & y  _4 C+ c1 H$ e
  113. 清空当前数据库5 J8 T& d. s/ `, ]' c5 W) @9 \
  114. 8 r/ ?' p4 j0 y* M4 U
  115. flushAll
      \4 P0 n1 J. Q2 ?
  116. 清空所有数据库
    ! U' a3 |, s9 e' F! d

  117. 2 {, X, X; F4 {/ g3 O: b
  118. randomKey$ E9 `# Y9 `" I8 y/ t9 O
  119. 随机返回key空间的一个key/ r8 L* M4 i1 y/ V* v4 T; S' ^
  120. $key = $redis->randomKey();
    4 F! T7 [5 G' a% @( @, |5 h

  121. ! R4 t6 k5 O! p- w6 p4 v3 _
  122. select
    & d& i9 e+ h% X% P4 p; N& ?
  123. 选择一个数据库
    1 F. J1 v" H* P5 W' C+ d
  124. move/ s& W9 v0 K1 @
  125. 转移一个key到另外一个数据库
    1 K7 e' i( ?* g( l% q; L
  126. $redis->select(0); // switch to DB 0
    & G& B' [$ q8 z* ?% {
  127. $redis->set('x', '42'); // write 42 to x! x: r& `3 g  E+ e  D
  128. $redis->move('x', 1); // move to DB 1$ _' I* }6 S1 @5 B. Q6 F
  129. $redis->select(1); // switch to DB 1
    5 ~& u( t& h* _. n
  130. $redis->get('x'); // will return 42
    * T( i9 W' l7 F
  131. 3 G0 h" S- Q, z: \& r
  132. rename, renameKey- f5 t9 Q$ ?2 B* i: b  O
  133. 给key重命名. e! |. y- _! p$ }' u8 N# w
  134. $redis->set('x', '42');7 ?4 q( b$ [0 ~
  135. $redis->rename('x', 'y');/ Y# s" A$ _, s, A; }: b$ @
  136. $redis->get('y'); // → 42
    1 F3 _7 O5 I; G: y: q5 \
  137. $redis->get('x'); // → `FALSE`) p, k. r. l7 d( T

  138. $ P# b. j! g" C4 O
  139. renameNx
    6 j& [9 C1 |3 U, I( v  e5 U9 S
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功+ F3 a; j* s- n# b4 D! }% R
  141. / O9 W* B- [& g0 @4 @: A. S& L
  142. setTimeout, expire
    ) M7 N# u3 \. K/ T) v1 Z  b
  143. 设定一个key的活动时间(s)
    : _$ V: D" Y8 Q! n9 s+ d
  144. $redis->setTimeout('x', 3);: a: c8 w2 i# t# \* B" U

  145. 7 _4 I7 k1 n( a8 T' ~
  146. expireAt2 a: u  [5 s0 l9 r+ _+ {' B: M
  147. key存活到一个unix时间戳时间
    $ h( ~  W. r. |
  148. $redis->expireAt('x', time() + 3);
    & t6 `) H/ ?+ t

  149. % D, n3 G5 V8 @
  150. keys, getKeys
    " @. ], q& D8 Z5 q% `3 V* W8 R. [
  151. 返回满足给定pattern的所有key* E! B  a4 x+ @# S
  152. $keyWithUserPrefix = $redis->keys('user*');
    9 o5 @% D4 q& o8 M

  153.   ]7 B# V5 d+ S( o0 O$ b2 S$ ^) _% F
  154. dbSize
    , E- M3 v; u; H9 ]3 ~: o
  155. 查看现在数据库有多少key
    9 ^* i# _( a- q
  156. $count = $redis->dbSize();
    - W7 V& K  a# A* q' N" j* I+ p; i: Q

  157. " W! w" }  x- R% H- ]8 R
  158. auth- Z. r4 Y6 v7 H) L) Z4 \
  159. 密码认证
    & G/ c- l4 ~& V! w7 E) O$ A9 G
  160. $redis->auth('foobared');
      G' ~. l6 |+ K4 D" q0 P" e
  161. 4 h6 \% J3 ~; j# G7 a
  162. bgrewriteaof/ }" S9 R8 Z6 L* h
  163. 使用aof来进行数据库持久化
    % k8 N! N5 g' H+ H& o
  164. $redis->bgrewriteaof();* }" ?0 J/ o0 y, q
  165. # g6 ]) E' @5 }& ?8 r7 E* N
  166. slaveof
    8 I$ Y# O9 z+ D, Z: [  V3 e
  167. 选择从服务器
    , X% q1 a6 t  ]
  168. $redis->slaveof('10.0.1.7', 6379);
    - S+ s. e4 |# o: V2 k8 D: d
  169. " ?8 K! x' n4 E4 Q1 p
  170. save. Z( p& u0 A5 P1 {2 v
  171. 将数据同步保存到磁盘4 \: E9 y- k3 M3 A5 m: j
  172. ! t- @+ L0 f/ ?7 h& R8 c
  173. bgsave+ X. p( o$ P( c! v/ S# l: g4 o
  174. 将数据异步保存到磁盘
    ) D  i4 H$ G% n3 k# [

  175. 9 y$ u" O; F' L" D- d( ^. ^' J
  176. lastSave% e' c( d5 @+ O3 i1 ~
  177. 返回上次成功将数据保存到磁盘的Unix时戳; @9 E4 ^0 Z2 z) Q- `

  178. - I7 y3 L- d! {' t6 G! @* [6 r  m
  179. info4 p' g5 j1 O! ]3 g8 d$ @
  180. 返回redis的版本信息等详情
    & `( g* w0 g' A. c8 {' l4 D
  181. / ^3 r% K! P+ L. K1 @
  182. Redis::__construct构造函数
    . L3 p, |. Y9 u
  183. $redis = new Redis();( \" c- [9 L4 _$ i8 F+ k

  184. * A# l8 j/ X/ a' }9 q
  185. connect, open 链接redis服务8 ~* Q1 N' b/ h, o( ~
  186. 参数- c/ X2 [$ P8 ]- z
  187. host: string,服务地址
    5 H4 a" c* [( Z  [- u
  188. port: int,端口号
    # W* l, \0 F0 i7 e$ }) N7 ~$ F
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    / L0 \; d) H3 P0 W! d1 f
  190. 注: 在redis.conf中也有时间,默认为300! H& a6 u( C9 Z, ~

  191. " {. v: y2 f; v( G8 Z$ N
  192. pconnect, popen 不会主动关闭的链接: b# p. j$ ]3 C& z" a
  193. 参考上面
    & D% Q* \' z6 p1 Q2 S3 V( [) y8 _4 [
  194. # r2 F) X5 {* A! ?1 N2 S" M
  195. setOption 设置redis模式' F4 O5 n5 u% l5 q; Z4 m
  196. ; g" j0 o; Q" X+ ^9 [. V8 z! L
  197. getOption 查看redis设置的模式$ k% j3 N' z5 M( F- Z! s
  198. 9 w% {# C# v+ l2 L
  199. ping 查看连接状态5 o1 D3 v$ T* m6 q7 _( j/ ~+ x

  200. , k+ A$ Z' X9 O6 Y, P$ h
  201. get 得到某个key的值(string值)' ^- S: w/ C' A# C* f' i& z
  202. 如果该key不存在,return false& V  D1 M/ R: \' R8 ~
  203. , F3 w. B$ A1 ^
  204. set 写入key 和 value(string值)
    " F" ?; P5 t* P6 O3 s2 r
  205. 如果写入成功,return ture9 y# q  B* m, l4 ]/ ^. g) m# @, x

  206. 8 j( u; |4 j8 N
  207. setex 带生存时间的写入值, E8 ~2 D& H; X- f' I% C0 q
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    : I4 X9 e9 K1 T, l4 V% Y! A

  209. 6 g+ V" x& w8 P6 G5 a- e0 C
  210. setnx 判断是否重复的,写入值
    ( Y  J8 M" F+ ]- T8 A
  211. $redis->setnx('key', 'value');
    ) T! U% n& {1 Y5 n* Q% `) P; M; n  t( `
  212. $redis->setnx('key', 'value');2 c4 {, k$ j9 f: ?
  213. $ R* g3 N6 M% o: C$ H0 W, S
  214. delete  删除指定key的值
    0 J5 O/ L: E6 x& G$ V0 P5 p; C7 o
  215. 返回已经删除key的个数(长整数)2 i1 d7 [. B4 D/ V
  216. $redis->delete('key1', 'key2');' ^2 M+ O, h- x. L
  217. $redis->delete(array('key3', 'key4', 'key5'));+ o+ j& F2 @0 T/ A, N$ g" r
  218. 2 Y7 J' \- j+ o/ Y6 ~
  219. ttl) z+ h9 y+ ?$ w* P) O- a
  220. 得到一个key的生存时间
    . G; J% o6 Y: d1 Y' ]
  221. 8 ?  a7 r- d- y9 b" W
  222. persist! _$ x$ x, `3 x" W  I3 A
  223. 移除生存时间到期的key
    " }% \" m% u8 \. d
  224. 如果key到期 true 如果不到期 false
    % P1 y# @. B$ R( u- t! X

  225. # E: t3 A' v0 C8 d  \4 @
  226. mset (redis版本1.1以上才可以用)2 D& v/ U2 k" {) n/ w
  227. 同时给多个key赋值
    & S) N- K0 N3 O3 E$ S% ]
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ; N7 g' Z" H- _8 {# G7 T/ T

  229. 3 n; y5 O0 @  e" l- }' i; j/ o
  230. $ Q% r9 R/ H8 _4 G, q

  231. # J3 y5 i' X: N7 X7 ]7 b% C
  232. multi, exec, discard2 U. [0 N7 v& U9 U
  233. 进入或者退出事务模式
    / F) Q& H3 M" a( m1 P# }/ O
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI5 j& O  G: J0 |/ w% R9 ?, Q4 _
  235. Redis::MULTI:将多个操作当成一个事务执行
    8 Q" ~* ?% d1 Z/ b1 ^$ }4 S8 L
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证8 |4 E$ p, z* E+ d+ ^! W& Y- [' t
  237. discard:删除一个事务
    2 {' `4 V/ h# ^! s% _9 O
  238. 返回值
    , g* N4 s! }/ `
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。0 s( E6 z$ `# P, J

  240. * h5 ~) V- m0 p5 H" L
  241. watch, unwatch (代码测试后,不能达到所说的效果)8 ]0 K1 q' B2 h7 d
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)0 Q- I/ I" U* q5 Q
  243. unwatch  取消被这个程序监测的所有key
    ' e  E# w+ Y" ~
  244. 参数,一对key的列表9 S% N! ~1 ~$ X4 }; Z, S
  245. $redis->watch('x');6 J. X6 `% p6 V) O% c- h

  246. 7 ?5 n4 o1 g* J3 q; y% H+ R1 ~. h
  247. $ret = $redis->multi() ->incr('x') ->exec();9 t+ C; d" U! v+ _% x* z

  248. 7 r+ V  o( n$ O4 B

  249. ' ]: z$ p7 w! F1 ?. Z' g( {
  250. subscribe *0 i# f( G: z  w& l8 G; s2 `
  251. 方法回调。注意,该方法可能在未来里发生改变
    ' I1 g2 F2 S% v; i8 f4 o: K
  252. % ?/ \1 @" O4 X! j) l! W) J
  253. publish *
    4 L  s! u* G9 E2 v
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    2 p# H! O( U  J5 i6 ~
  255. + V1 U2 h0 @1 ]4 N, x, L1 ^! Q
  256. exists
    ' d) x: C# i$ S3 T
  257. 判断key是否存在。存在 true 不在 false! i" E, j# v0 B
  258. 8 q. T- @, D0 |- k
  259. incr, incrBy
    7 Q" }9 F# {8 f2 x( f# `
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值% A1 X8 A1 j& i; q" g& U; s
  261. $redis->incr('key1');
    $ c- g8 l# F+ m! V: s
  262. $redis->incrBy('key1', 10);9 a: ?0 r) b" P0 M, T
  263. ! z6 }! r7 C. q! S# N- S
  264. decr, decrBy
    0 F# c/ g) w& [6 J1 ?' e6 [% a
  265. 做减法,使用方法同incr9 U1 d+ y! s  w; k! \# |3 E

  266. 6 B2 a$ o3 W7 m$ T) |, p5 ~; J
  267. getMultiple: @4 M5 q* U+ `8 d: z6 o5 I
  268. 传参
    / L+ t2 y6 W) I1 `
  269. 由key组成的数组& |5 I6 s3 ?& _: e2 F0 M
  270. 返回参数
    6 i0 h: Q6 A$ U
  271. 如果key存在返回value,不存在返回false) Y- S$ `: W8 v: G) f
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));$ v9 S8 A9 z* Z  `' X
  273. $redis->lRem('key1', 'A', 2);  K( T0 Z0 X2 ^: G
  274. $redis->lRange('key1', 0, -1);0 u4 R- L6 \7 Y

  275. 4 ^, O7 m& v" i, a' j
  276. list相关操作: ~6 }/ u) |" p0 L6 N
  277. lPush
    ' |5 ]! V+ X1 b$ v* O0 h
  278. $redis->lPush(key, value);
    ( [# o! h2 _2 x8 A7 f# y
  279. 在名称为key的list左边(头)添加一个值为value的 元素+ R2 G* _7 q1 j9 [$ x( y$ M0 a
  280. 5 g8 s9 b7 p. v7 h% L/ m2 y
  281. rPush
    $ }0 I% L8 [3 u
  282. $redis->rPush(key, value);
    : j% o( y+ B; k4 Y: D0 B
  283. 在名称为key的list右边(尾)添加一个值为value的 元素6 O3 V& G, ~; M/ k
  284. 9 G# p) v- r$ t- l: ?6 [
  285. lPushx/rPushx2 }% ~. F* g; ~
  286. $redis->lPushx(key, value);( m! V* s9 {% C- K; t8 c
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加7 n* u  [3 u& w* y+ s) W8 S3 P

  288. 9 s- R# K3 y$ {0 f2 L: b
  289. lPop/rPop
    % s4 B2 y0 z8 I) [7 P! ]! H
  290. $redis->lPop('key');+ J! Z+ t" [+ Q3 ^
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素1 R3 i! Y/ ?2 f1 `9 ^: J4 \: \

  292. / @+ _! U# |0 ~. ?4 c
  293. blPop/brPop( I+ O+ ~- _5 q
  294. $redis->blPop('key1', 'key2', 10);
    & m0 b; X" w- v" T' D8 X
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作6 D0 p+ d' ~* Q6 Y9 P

  296. : S5 ^. z  ^( |: g' [+ i
  297. lSize
    + W8 P! q+ o" _% i* b2 c" ?2 n
  298. $redis->lSize('key');
    / B9 S# F/ ]- `# [2 t+ d% K% Q$ V5 k
  299. 返回名称为key的list有多少个元素5 h! u6 |9 ^5 J. A- e) Q) b0 w

  300. / B  i, O4 \# y% G$ v2 T4 y  m, Y) X
  301. lIndex, lGet! }* J% _7 L+ D% G* Q/ L& r
  302. $redis->lGet('key', 0);
    * n, @1 u( r  d) ^# J3 ^
  303. 返回名称为key的list中index位置的元素
    ) N! S: b0 J- V. Z- b) v2 F4 ^' r

  304. ! a! ^/ d! D' G
  305. lSet' p5 }4 ?$ \$ [  L4 V$ O
  306. $redis->lSet('key', 0, 'X');( p' s  L7 t: u/ d$ ^! @
  307. 给名称为key的list中index位置的元素赋值为value
    # x' ?5 J& |" Q  z- M7 h/ h

  308. & P: y/ ~3 k' a3 f4 f
  309. lRange, lGetRange
    ) T) ?& o; ^' ]+ D) ]
  310. $redis->lRange('key1', 0, -1);
    : N/ l$ b6 X$ l6 B7 k
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)  J  }( ~, x9 w! @- v. r2 m1 E

  312. * i( Y. T& `5 d+ y2 ?
  313. lTrim, listTrim, i3 K1 w9 |+ r+ O" c1 V4 s& K
  314. $redis->lTrim('key', start, end);' V  ]: k' d: s8 S9 S
  315. 截取名称为key的list,保留start至end之间的元素
    ) H( ~) N( x$ F4 A1 `: `' M7 m$ f

  316. : Y5 B2 z4 r4 {
  317. lRem, lRemove
    # l. F6 W/ {2 Y9 d  o
  318. $redis->lRem('key', 'A', 2);3 j. m( o+ Y# a; [7 _
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    8 \1 r: d5 ^: ^

  320. $ t( D; T$ E# m: l9 s% y% [2 e7 h
  321. lInsert
    8 B7 R7 g6 [- ~$ z- a0 ~
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1% e. S  Y8 I0 i- E2 ]9 E
  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');( b5 D$ {. [' x9 R* r9 U; L% c3 X, k7 x
  324. $redis->lRange('key1', 0, -1);
    ! X' A# z3 S. k+ W
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    ( G5 m7 x* g5 H8 G2 I7 u8 `6 U
  326. $redis->lRange('key1', 0, -1);+ l0 M& N5 d% P7 E$ }7 y; t
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    3 l& [3 [$ n  j; k, j: `* \
  328. " R5 p' b, A& ~4 P) i
  329. rpoplpush
    6 x! F- y1 B" Z5 L
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部- @8 a' {: e) q0 ?, L: J1 Z$ B. b
  331. $redis->delete('x', 'y');
    - w7 g* S" s7 G2 |/ ^
  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'));
    , }$ H6 {+ _. z. u4 H4 v3 t
  333. var_dump($redis->lRange('x', 0, -1));
    ' N) r3 Z7 m& Y4 I4 [
  334. var_dump($redis->lRange('y', 0, -1)); 2 D( K' N1 ]. C. Y
  335. / y$ l( D6 o; |7 M( F
  336. string(3) "abc"
    ' z, ]) J& \9 c4 M8 ~% M
  337. array(1) { [0]=> string(3) "def" } 9 M6 o/ L  }3 J# B8 e+ ^! z6 q4 D$ C
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }4 e' H& V# [7 J+ F- F; Y
  339. ; P, _) u( b$ O0 x5 _% \3 c
  340. SET操作相关
      t! o4 c$ ^, l6 ~
  341. sAdd8 n2 ]8 E& i9 P2 l. ^! S
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    ! q; {  d' `8 Q4 M! ?
  343. $redis->sAdd(key , value);- f' ?& X% c* w9 T+ v3 s
  344. 5 m0 T7 T! {" b3 Y1 l# d, w
  345. sRem, sRemove
    ; U) n7 {: K  M
  346. 删除名称为key的set中的元素value. R7 L# e1 q* P* A- [
  347. $redis->sAdd('key1' , 'set1');+ p! y$ \* ?0 W6 u3 h
  348. $redis->sAdd('key1' , 'set2');
    0 e# q" b% a# u9 ^) z  h+ B, X* z
  349. $redis->sAdd('key1' , 'set3');* N. E- x5 H% Q9 r. C4 T; O
  350. $redis->sRem('key1', 'set2');6 x0 n/ }( M. n( B$ P/ _

  351. 8 N- B& p& m" s! }
  352. sMove2 a% O4 W1 q, i" g
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合2 q! I1 T8 `7 o9 C, m
  354. $redis->sMove(seckey, dstkey, value);0 o" T. _3 ^' B0 {7 O
  355. # x6 v0 W. J6 E4 B
  356. sIsMember, sContains& X$ O# Q3 g8 T
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    . n! x- _0 ~  d9 A/ E7 J2 ~$ v# f
  358. $redis->sIsMember(key, value);1 Z( W% B5 S% H2 f+ z: q& G0 U$ s2 k
  359. 8 |0 J$ [5 ~- d9 w- i
  360. sCard, sSize
    5 v/ t3 y3 e% x$ }' c# Q
  361. 返回名称为key的set的元素个数. `% S- w1 ~2 i

  362. ; I6 m% c) y4 F+ C; z( ^
  363. sPop
    / L$ `- D& k, U% F
  364. 随机返回并删除名称为key的set中一个元素6 j( R- y7 b# u) _2 v+ s

  365. 6 \! {# Y' j- A3 M# S- |
  366. sRandMember
    # I+ e' D1 D. p2 X2 q
  367. 随机返回名称为key的set中一个元素,不删除
    " e" j/ B& a. \" E0 \: r
  368. 6 f& i) {2 t" h+ @( W# z, V
  369. sInter5 w7 z3 n( u* \2 w8 B/ S
  370. 求交集
    & E, b: y/ k- f3 r, X/ ]

  371. 7 I# l. j4 ^2 {5 n- t! B6 P! I
  372. sInterStore
    4 V5 W9 i# V" `& l$ @: E
  373. 求交集并将交集保存到output的集合  k: Z! F5 p; X
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    / O: w* Q& m& N+ i% I% P

  375. 2 O/ J2 V8 B% @$ |* U
  376. sUnion
    # W5 P7 ^0 M3 |9 \$ C! }* z1 k  m
  377. 求并集& F* i/ ^4 w. b2 M% e* Y
  378. $redis->sUnion('s0', 's1', 's2');
    4 }7 U: \* P& Z0 }  v
  379. s0,s1,s2 同时求并集
    - y  r4 M" t) x

  380. 5 l" G. K# z+ _' U
  381. sUnionStore1 w6 e1 y8 T2 x5 `
  382. 求并集并将并集保存到output的集合
    & s6 i% q( f) A
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    " w+ `# E- v8 C5 f

  384. 0 i& Y$ j9 Y) D5 r
  385. sDiff
    # ?5 b6 ^: k3 s( ~) M, n& \
  386. 求差集
    , x: V; E" d' K
  387. 1 j& t  s; i( h
  388. sDiffStore
    0 m- }4 O$ Y! o, a/ O
  389. 求差集并将差集保存到output的集合6 A5 {+ a- Q' T* _: M8 `  g
  390. 9 p6 o5 O: [7 i) N5 [
  391. sMembers, sGetMembers
    ) ~: Y9 g- k' T
  392. 返回名称为key的set的所有元素, V) Q6 q/ g' X" T$ V0 v7 c3 }8 J
  393. 0 d$ Q( e8 {$ C) E7 J8 A7 f; Y
  394. sort
    4 Y" v; z$ O  o
  395. 排序,分页等
    ! b  J- S! u; x& ]" Y/ a6 [+ P
  396. 参数
    / j) u4 R. j& E% z
  397. 'by' => 'some_pattern_*',
    ; F' [# m7 L8 d% J
  398. 'limit' => array(0, 1),3 j$ K4 t6 k1 _& L$ O4 s
  399. 'get' => 'some_other_pattern_*' or an array of patterns,* ]4 w. |0 ^8 [; o7 @0 ]0 x
  400. 'sort' => 'asc' or 'desc',( ^) Q) Z! i6 o  ]
  401. 'alpha' => TRUE,8 _+ \. n$ m5 P& f0 O# x
  402. 'store' => 'external-key'- e0 M4 A& E! T# D- C2 g* m/ l
  403. 例子
    - Z2 z" t9 f8 S- o; a  Y) ^
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    " n1 ~- y0 |% w: b
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    3 C7 j$ k$ I: [
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    % ^* m6 Q& g" P$ T! }) J
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)53 B+ O- a2 h' h7 d4 Q6 F" l
  408. 5 ]  p: ~$ X8 q- r; }1 `9 @
  409. string命令" a6 E( ~: \: k% C) o8 d
  410. getSet
    * g5 n: r7 u( b! p
  411. 返回原来key中的值,并将value写入key
    ! Y* _8 V$ i0 I" @! v
  412. $redis->set('x', '42');
    3 M9 Z( w. ~* Z+ q
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    ' v9 P1 f2 m$ g$ y) k2 D+ R
  414. $newValue = $redis->get('x')' // return 'lol'( R6 v" h# \1 z
  415. , k9 u4 V2 x' p4 l# w3 Y# V3 P
  416. append
    0 a- r- G) a8 f2 I7 |, }7 t
  417. string,名称为key的string的值在后面加上value
    # Y/ _5 \' J- h" Z& a
  418. $redis->set('key', 'value1');
    " Q# {4 S& Q* V( L0 r; h# N
  419. $redis->append('key', 'value2');4 g; W4 I) {% H0 ?
  420. $redis->get('key');% f1 T2 F) \# s4 a
  421. # J+ a$ O& R+ l9 Y8 u3 G
  422. getRange (方法不存在)" x3 x+ d% l! D
  423. 返回名称为key的string中start至end之间的字符# r: ~- x$ q) d
  424. $redis->set('key', 'string value');
    / M+ B9 J7 d% ]% x" E4 l/ a7 F
  425. $redis->getRange('key', 0, 5);
    , r* `/ D8 b  m. w
  426. $redis->getRange('key', -5, -1);# K8 l$ s, t% j! q' f; A1 X
  427.   h4 j% v" w5 X2 R# i
  428. setRange (方法不存在)) u' V9 f( K4 W! _+ }
  429. 改变key的string中start至end之间的字符为value# D( T" d! v' K
  430. $redis->set('key', 'Hello world');
    0 F: O. `7 Y  z- n
  431. $redis->setRange('key', 6, "redis");6 H, B! y! E; A/ @9 q; h7 k2 A3 t
  432. $redis->get('key');
    8 {; c0 R$ z) L7 e
  433. # T6 v, X+ p( ?- X
  434. strlen7 R: Y* R; S' R4 N+ o* H* J* [
  435. 得到key的string的长度6 p$ n) W' b( a0 D& e, F
  436. $redis->strlen('key');, o& g! V: I" J- y) k: x

  437. $ K  q/ S7 U4 _/ u
  438. getBit/setBit' k/ I6 F2 |7 X- v3 o) q
  439. 返回2进制信息
    7 f( B  K! e" r- D! h5 a! L

  440. 5 C  B; P4 D4 }+ c2 ]2 b3 P
  441. zset(sorted set)操作相关/ Y, g3 F: I- ~" E4 w& T
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    # R) {/ M' q. _+ e. Z& j1 v
  443. $redis->zAdd('key', 1, 'val1');& Q& S0 q' e& E
  444. $redis->zAdd('key', 0, 'val0');* c# i/ _( x7 W- |7 Q/ |6 C1 A0 H7 X
  445. $redis->zAdd('key', 5, 'val5');4 p! K% T5 a& P9 q
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)$ Y- _4 `  d* v

  447. ! I2 o8 U2 E# }2 u' z( P0 j
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素3 l7 C1 q. N( p) ?. V
  449. $redis->zAdd('key1', 0, 'val0');
    1 b( O. U/ x" B4 M; |+ I( ?
  450. $redis->zAdd('key1', 2, 'val2');  @& c7 `! v3 z* k
  451. $redis->zAdd('key1', 10, 'val10');9 C: G8 k: k0 l' k
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);$ b2 N! s) @/ b  }+ B
  453. 8 J+ Y1 U9 q- s! N
  454. zDelete, zRem, u0 {3 _  @( U9 [2 T( O
  455. zRem(key, member) :删除名称为key的zset中的元素member. ?/ ~1 t/ }$ t: v! C1 l1 B+ Y& I
  456. $redis->zAdd('key', 0, 'val0');
    # x# u+ Z/ E2 }
  457. $redis->zAdd('key', 2, 'val2');
    , v  G) }" _1 f' P/ v
  458. $redis->zAdd('key', 10, 'val10');
      K* n1 q; E+ `' ^- f
  459. $redis->zDelete('key', 'val2');
    ) _* O/ J' @; y# ]* v
  460. $redis->zRange('key', 0, -1); 8 T9 x, Q  B" C- o

  461. 6 ^. x; a; d; a9 {) n# w9 I7 u1 [
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出3 V8 O1 I, T8 l8 b
  463. $redis->zAdd('key', 0, 'val0');
    - Z, K$ T1 F4 K# S( c. ?& w8 j4 |
  464. $redis->zAdd('key', 2, 'val2');
    " R8 p8 t4 e& z" W2 p: ?* ]4 F& Z/ v
  465. $redis->zAdd('key', 10, 'val10');1 m( C; R8 R8 @1 o+ m/ y
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);4 }" ]$ {1 \% Y$ |( ]* q1 W

  467. & w% I3 W; K# O- I* A6 T& E; s+ f
  468. zRangeByScore, zRevRangeByScore( p' r3 E) d# w' c
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    & j# h; b% ~  q1 ?; T
  470. 返回名称为key的zset中score >= star且score <= end的所有元素6 }; l' ]0 v' U9 O, U
  471. % W7 g2 `' P4 j) t/ _
  472. zCount
    - w8 w. `) s5 k7 L3 j1 {# x
  473. $redis->zCount(key, star, end);: ^. K/ k: B9 F, ~- x- ~
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    5 N, x- R6 m5 S. v* k8 R
  475. ) h! ~. K! {: x7 p1 f/ |8 \
  476. zRemRangeByScore, zDeleteRangeByScore% q$ d" n2 X6 i* S. J6 U
  477. $redis->zRemRangeByScore('key', star, end);1 w" J8 n0 G! L7 @
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    " B- R6 k6 }! l
  479. 6 M( B4 l4 h2 P# p& V% J$ S& q
  480. zSize, zCard
    $ ^# h8 `" d( j2 ?, w
  481. 返回名称为key的zset的所有元素的个数
    / J! D5 X2 X1 |' n5 g& o

  482. 1 e! V# T+ q% N9 O9 a  b1 V
  483. zScore( a6 K/ y+ g! V7 `% N
  484. $redis->zScore(key, val2);
    8 o/ h+ Y/ h* V/ ]3 t
  485. 返回名称为key的zset中元素val2的score/ J5 M& P4 _+ r4 ]7 a+ _

  486. 1 l; q2 o8 v# o! b! G  b
  487. zRank, zRevRank
    5 C6 B* h* }/ `, H- d4 D$ `
  488. $redis->zRevRank(key, val);
    ) ~8 l4 N- ]' a# ~
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    % M$ G2 d! z" V* `7 E! `( G

  490. + U9 f6 T% A9 {( `+ x1 b
  491. zIncrBy
    7 \$ |  k; Z  k. Q
  492. $redis->zIncrBy('key', increment, 'member');0 z0 a  \: I$ Q, t
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment) h5 q- X0 b2 M6 ^# O! \
  494. + [8 O# V' m8 x3 p- l; C" }$ s, F9 m
  495. zUnion/zInter
    " R. ^. Y2 K# R+ L
  496. 参数4 ?7 V; {" T# m$ I2 F( N6 F
  497. keyOutput! @5 s4 C# Y; i. m' D5 S
  498. arrayZSetKeys
    - N% W& J) A9 w0 s
  499. arrayWeights# X9 V) S& M( X  B2 u
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    " n2 w: x& o# ]& E/ f* o
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    ) b$ c9 d. c$ j+ ~( M3 e, [% t4 D
复制代码

. R2 `: A4 X& C! D4 v
: A! t  t+ T5 C) E% `2 F4 _' K/ k8 D0 R( [

9 o, Y/ |4 H( J! v. y' A3 l4 C0 K- G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    ( _7 K( {) |% E. O; D3 T
  2. //连接redis服务器 * S9 X5 W& |- x. H
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-9 16:00 , Processed in 0.142949 second(s), 18 queries .

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