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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    9 _! D0 q$ D* {  T/ ~6 v# T9 @8 u
  2. $redis = new Redis();  
    ( u( r9 h' u( ^( o7 X
  3. $redis->connect('127.0.0.1', 6379);//serverip port9 e! y2 e! ?7 G1 |5 v4 g
  4. $redis->auth('mypassword');//my redis password , g9 ?  U" O. @7 n# q8 h2 t
  5. $redis ->set( "test" , "Hello World");  & n9 u- j) B" T  w$ q/ m" f4 C
  6. echo $redis ->get( "test");, r0 V8 D" U: W
复制代码
php操作redis函数封装
  1. /**# }4 \5 }- l* s& f$ _, L5 c
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数; b; u- ?: F" X1 ^) [( O' }
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi3 ~* C0 q) i0 Q8 C
  4. */4 o5 ^1 l, L. b. M
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    0 D% {# i, w3 z. z# j& d) ^% e
  6.     if(!$key||!$value) return false;, x1 Y; |# s! d  z: Y) f+ |$ V
  7.     $host = $host?$host:getenv('REDIS_HOST');* {5 X( |4 ]: p% f1 p5 M
  8.     $port = $port?$port:getenv('REDIS_PORT');
    4 x/ Y- N! o0 H( g' U! ~+ C
  9.     $redis = new Redis();' T/ J- h6 e: T! F. J
  10.     $redis->connect($host, $port);% F  u# t+ s( M, _2 O
  11.     $value = is_array($value)?json_encode($value):$value;
    4 f9 v* ]5 {4 F) ?
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    5 E8 O' A/ |5 h" E3 m
  13. }( \+ O) N$ x1 `8 h" G- Q0 r1 u
  14. /**
    3 n0 u8 L3 i8 @8 L  F4 b" y4 k9 c
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    ( ~- }( |5 g/ L# M/ V8 Q) w
  16. */  V6 b4 J. J7 a( p; B/ p
  17. function RedisGet($key,$host='',$port=''){
    . \. w: L; N% [! }% r
  18.     $redis = new Redis();4 D# A8 n+ D5 }& K( o
  19.     $host = $host?$host:getenv('REDIS_HOST');
    ' {  N2 G0 f; e2 n6 A% z
  20.     $port = $port?$port:getenv('REDIS_PORT');
    ( j  f+ g& M, ?* u4 R/ f3 Z
  21.     $redis->connect($host, $port);! I& S: c+ V* R/ x/ @8 L
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);( R9 W- {* Y/ I3 g7 e# s
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);2 F  j7 O# P6 e2 n/ L! @3 e. r8 ?' P
  24. }
    " P- C: j$ f: G6 g% j+ g+ f4 W, H  m
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
$ }, h# o# s! _+ n8 _( n
  1. setex 带生存时间的写入值
    9 c/ _/ m! a3 G. |8 u! N- @7 r! u1 `
  2. $redis->setex('key', 3600, 'value'); 3 {* F/ r* e' }1 [3 N. J0 g  G
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1- V( p0 G: p) j' `9 v
  4. $redis->setnx('key', 'value');
    2 c' X1 C9 _8 [, M5 r. U
  5. 返回已经删除key
    " @( @' O9 ^! d- Z6 c: L
  6. $redis->delete('key1'); 成功返回1失败返回0' l% ~9 U: @: O* c( r3 l  }8 W" ^
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0# A, K  {4 R7 x) B. O
  8. 查询生存时间# n# I- B. S! Q' B* Q/ `1 V
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)& S& E0 ?+ E+ D  Y- i& P
  10. 同时给多个key赋值,同时设置key0和key1
    $ m: e3 l% x, j
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    1 {& R& M0 {, u) e: ?* o9 d
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    & M0 P6 C6 a2 B2 Y9 p; u) N
  13. $redis->incr('key1');
    4 {* {9 c7 y7 D! J; X9 {6 M
  14. $redis->incrBy('key1', 10);
    . V7 K8 E9 G0 G! _! l& q& J
  15. 减法跟加法一样7 [4 _$ Z: c# R3 g- J  b
  16. $redis->decr("key1"); 减少14 S* R& S$ M. V
  17. $redis->decrBy("key1",5) 减少5
    9 s5 X# n; f+ ^6 J- l9 v) s1 U

  18. , D  e) B7 ~* s2 ]" x
  19. list相关操作,连表操作
    3 ?. N' _4 u- M$ f/ g' [  R
  20. lPush% o4 O: t9 w5 j) E0 c/ H
  21. $redis->lPush("list", "888");9 q1 R% j! r1 T
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    2 _$ \( V: V- A' _
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式3 \& U9 ?' e6 |) A
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    + U' x2 C  R# v9 a8 U. u" o' R
  25. lPushx/rPushx1 H6 e1 g' c0 C8 E
  26. $redis->lPushx(key, value);
    , e! L, R+ U8 \6 g- e
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    : M+ n- z. e6 t) K1 }

  28. 6 K6 ]5 S  ^) S( D+ B7 U5 {
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    4 u/ R8 N! b0 r- `5 E! ^% H7 J
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    9 H; w, x  b& n5 {
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    ( p8 [4 t; X, L' u
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序% z, C4 C" ~9 W% O  n
  33. sadd s1 zhangsan
    - R; \7 N2 D0 t! y; b4 L
  34. sadd s1 lisi0 i; C. X7 |: ]/ @+ n5 @# G! Q& X
  35. sadd s1 wangwu
    6 U& s# X7 _1 [5 d
  36. sadd t1 yangxingyi3 ^9 I* }. S7 {: c3 S6 X) y% P
  37. sadd t1 lilei/ j$ e. T( t+ p
  38. sadd t1 zhangsan' O0 b+ k. n! O! e
  39. smembers s1 s1的所有集合内容2 @( r& f+ @) Z# i+ K
  40. sdiff s1 t1 s1有的,t1没有的,差集
    * z5 c, F: z; v
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
      m5 N+ ~4 i7 r" o8 j( ~7 v! D
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的* v3 A, t9 ~! |2 Q6 P
  43. spop抽奖场景,返回集合里面随机的数5 m$ m# R  \& I/ ]0 h- f, x, z
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    + E# R: S2 |% V' s: L
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    # Q- ~* T, _% A5 A$ u& M& m/ T  v0 x6 i
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的4 g0 x) t- A! Y1 A
  47. 随机返回集合里面的一个元素,但不删除,重复中奖2 [$ y/ U1 b1 p7 X. f
  48. $i = $redis->srandmember('s1');echo $i;9 x4 {3 d6 o  W0 q" U
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    ) z( X4 W- ?# P" x1 y
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false& W9 O- j# j& @3 ^: O
  51. ; J( c% ~9 l6 S1 t2 U+ Q
  52. zadd key 2 value 有序集合
    + ~; b0 o: ~! @' T
  53. zadd y1 1 zhangsan;5 R+ q$ J( @7 a- C! a8 T$ ?5 u
  54. zadd y1 3 lisi;( j9 u; g" o8 d, ?5 J. e
  55. zadd y1 2 wangwu;* J: d6 N- j0 E  F$ ~* Z
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
      o" e' @% K- v5 n; [+ z6 K
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    7 Q3 \* G  ]$ t- m1 S' Q
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键+ o2 m6 X" G4 z" Q! ]
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先8 E. C. e0 Z" e9 Z
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的' n/ \6 w5 K0 R
  61. 无序就scard,有序就zcard,有z没有s
    & j5 `$ R! S6 F
  62. sInterStore0 X% c2 A) K: d" D& w: ^  [2 j
  63. 求交集并将交集保存到output的集合
    ! ^1 L) V4 `) U$ a$ l* F5 a
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')0 I/ U, |3 w6 t3 z% e: p
  65. $ x. G3 O0 s# C0 t: G
  66. Hash操作
    8 t% d& d4 u, _/ [
  67. hSet
    ( ?% q& D4 v3 E& c% H- d" z
  68. $redis->hSet('h', 'key1', 'hello');2 D( P. |0 T- o5 D
  69. 向名称为h的hash中添加元素key1—>hello
    ( X  N; i3 L8 i' ^# l& U/ }

  70. ( ?/ A% y- i8 S0 T
  71. hGet
    8 [, n5 n" @& w) J; l* e" i$ N4 ^
  72. $redis->hGet('h', 'key1');
    9 H0 M( z6 g( {- t3 F2 y2 s
  73. 返回名称为h的hash中key1对应的value(hello)! d4 _- Q7 e" a5 ^7 J% w

  74. 4 L% y4 m; ^' ^: I% r* ~
  75. hLen
    0 C' ]2 |1 p" F! O2 `
  76. $redis->hLen('h');
    ; ], f5 {- P7 t  }0 R. N  r: j
  77. 返回名称为h的hash中元素个数9 |  P& t4 R8 z  K+ X9 o0 x
  78. - @% d9 `# X3 Q9 ]3 n
  79. hDel4 E, T# c0 M5 t
  80. $redis->hDel('h', 'key1');
    ; `, {! R" J+ y' V+ D+ v3 ]! U+ P
  81. 删除名称为h的hash中键为key1的域/ |  _" e9 w3 U
  82. - m- O- s! l& w( t2 O/ T1 {
  83. hKeys
    " D; e7 D* I2 s7 r0 b. |
  84. $redis->hKeys('h');& S* g( \7 b9 Y% ]$ ^! _  p
  85. 返回名称为key的hash中所有键
    8 J4 [1 z6 f. Y8 S/ [/ l
  86. 4 Q7 v1 N0 U( D7 L/ _: i) \
  87. hVals
    ; W! g) f0 B/ t, U2 i0 f( j) L
  88. $redis->hVals('h')
    4 H9 K$ w; }! j3 B& H, |
  89. 返回名称为h的hash中所有键对应的value; H! p$ K1 m- n1 i; _0 Z# r
  90. 7 E, [; U' P& d
  91. hGetAll0 |0 z) `3 R) m
  92. $redis->hGetAll('h');! h0 H- L# O- [, b7 `
  93. 返回名称为h的hash中所有的键(field)及其对应的value) @* |/ O0 ~$ C- Z8 Y3 y* K
  94. 0 O$ f4 P+ |8 K( y* }. X
  95. hExists( ~# \6 z/ s5 o$ n$ S  i
  96. $redis->hExists('h', 'a');
    ! D  p4 |3 g2 n2 C0 v! v* I& R' l
  97. 名称为h的hash中是否存在键名字为a的域
    0 f' K, z# r4 t) ~
  98. , J! o( `. w% p& @
  99. hIncrBy0 J) @( A7 T6 r! b
  100. $redis->hIncrBy('h', 'x', 2);/ g  [, ?. _" O! G5 h
  101. 将名称为h的hash中x的value增加2
    1 `8 Q/ d2 ^" \+ H' T  e

  102. ! T4 g9 `' ~. l2 m$ T9 @
  103. hMset
    2 B* _3 z: q" V# C
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));4 y' C6 J% G$ O* Q# z: ]+ z' Z) y
  105. 向名称为key的hash中批量添加元素' E  e" Y3 n; M
  106. 0 f4 o8 \7 r' ~0 g( Q+ @
  107. hMGet
    & @' z3 [9 ?" H8 y
  108. $redis->hmGet('h', array('field1', 'field2'));
    2 @+ P3 d; i' w8 m+ t  j3 Z1 A
  109. 返回名称为h的hash中field1,field2对应的value
    0 I3 H9 |: A0 s4 X+ b

  110. 7 E5 V' j8 b( X) s1 v. X0 Y# |
  111. redis 操作相关
    4 n" k, O$ }- B% w& f2 i
  112. flushDB
    ( N) ]0 ^  I) m1 t- s
  113. 清空当前数据库( U0 S- T  t9 Z0 T4 e+ \0 J) m
  114. $ k: b0 `' k; y7 G/ }' X
  115. flushAll" [4 G4 L8 Q, p- [- |* B
  116. 清空所有数据库
    : F" N* {  s" `* u

  117. . L7 Y! N% m6 Y  R6 k  K% H
  118. randomKey+ K; T7 @7 u. b/ r; y: g
  119. 随机返回key空间的一个key
    ' B/ W" d0 L* k2 J! g, Z
  120. $key = $redis->randomKey();
    % }* s  w, K$ N( o$ H

  121. 4 e; R( \4 N: e0 J, j+ C# m( w
  122. select+ {- J+ ^; B. Q6 k- k0 E# W
  123. 选择一个数据库2 f* J' \- y) \. G& @
  124. move
    8 `7 L. Q& ^5 v7 j( Y5 m
  125. 转移一个key到另外一个数据库9 G" L4 S5 O# O( q& ]. k0 i' n! c% J
  126. $redis->select(0); // switch to DB 0
    / w) w- v% ?0 r9 z/ g0 ]
  127. $redis->set('x', '42'); // write 42 to x
    8 G# o; S9 p& f5 i+ k
  128. $redis->move('x', 1); // move to DB 1! X5 V4 h9 D0 ?2 G$ o- L" X
  129. $redis->select(1); // switch to DB 1/ u* T' L# d- O
  130. $redis->get('x'); // will return 420 }( F; B9 G& `" q- i  o2 V

  131. 3 K1 Z: m1 V0 c# n% p0 e0 G
  132. rename, renameKey: G5 c$ d& c. J) j
  133. 给key重命名5 W! ~( s; c7 m# @% B% z
  134. $redis->set('x', '42');
    % Y/ h# U6 z" m/ n5 M
  135. $redis->rename('x', 'y');8 _) C2 x" o+ O' l3 E
  136. $redis->get('y'); // → 42" p3 c. J' T: |4 W! Z
  137. $redis->get('x'); // → `FALSE`
    & j7 C! d; T- v/ L4 `" W) y0 P

  138. ' K! g3 F! w& l
  139. renameNx7 V7 {! q$ n* c0 B! Z4 f7 S
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功" o6 ]; j% j5 {
  141. / h* g9 i6 n8 T7 r( l, x
  142. setTimeout, expire- b: A7 u) G0 _
  143. 设定一个key的活动时间(s). H4 N" G6 t! A- J: i8 z
  144. $redis->setTimeout('x', 3);
    4 d* [$ C7 c/ J' c, ?8 m

  145. # ~/ Q( `! M% E6 j$ p7 K+ }; @  Z
  146. expireAt- y7 `# y% E. Y; U) g4 I
  147. key存活到一个unix时间戳时间! A1 _8 P0 z0 h. I- h
  148. $redis->expireAt('x', time() + 3);" x5 ]0 O2 z7 c8 W1 E& D- B) W) b
  149. + m6 r" ~" T8 a  W6 g) }
  150. keys, getKeys
    & L% u3 b. Y; F' S+ X- `
  151. 返回满足给定pattern的所有key
    - \4 c1 ?" I1 `3 y
  152. $keyWithUserPrefix = $redis->keys('user*');
    5 e+ f! [/ ]3 B3 i& [0 L( n

  153. : i  B8 U9 s/ K7 c
  154. dbSize8 M! f6 N6 V1 ]- m" X% k9 P
  155. 查看现在数据库有多少key+ F, X8 X  t3 N9 R9 e5 Y* s6 L
  156. $count = $redis->dbSize();3 I: h* C$ s9 r! J

  157. + @# B# y4 ]( J. E8 O* X
  158. auth$ J' ]# i: X: b& }2 t- a% U" v
  159. 密码认证
    & k, l0 \5 ?# T* E
  160. $redis->auth('foobared');- Q( j- q* Y  u2 L% {
  161. " W" g) Z5 w. u; y6 c
  162. bgrewriteaof
    ! N3 R/ c. u7 J; z. v" c
  163. 使用aof来进行数据库持久化
    / v/ y, k& _6 c, M" h4 D
  164. $redis->bgrewriteaof();6 f3 l0 {5 `! u7 \5 Z0 @' C

  165. 6 _+ J1 d3 \+ T* J" x
  166. slaveof0 \) y+ G; w) ?# f) R' W7 O
  167. 选择从服务器0 S  H  J; |; @: e: e7 n
  168. $redis->slaveof('10.0.1.7', 6379);1 g) M5 H" h" v0 t" A" B1 M/ ?9 N

  169. ( e, a' W  M# v( B2 `, \$ Q
  170. save. m! p+ X6 G) s' v( e) d
  171. 将数据同步保存到磁盘% P9 a7 I0 v$ W
  172. . I# Y4 W9 V! w( G; W7 c
  173. bgsave
    : c: m1 M0 t5 E# {
  174. 将数据异步保存到磁盘; o  x* Y( [% U1 k+ }; b

  175. : l+ I0 e8 [- ~% C3 H; y: i8 Z
  176. lastSave. }. O, p4 v  V$ L0 d1 p) H) W3 E
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    6 o. U1 h6 ]5 n9 U* b; J  F9 U! ?

  178. ; q' E' p% A$ T4 H
  179. info
    " Q9 Q# F8 ~+ E2 K
  180. 返回redis的版本信息等详情( T9 \# U. r3 n
  181. + L1 s: o- d/ \6 R+ |& B
  182. Redis::__construct构造函数4 {. b. F+ h7 d* [* u# @) Z
  183. $redis = new Redis();: o% g% S- W$ D+ R, Y/ j0 G( x0 \- t6 r

  184. 7 L$ P* v8 X+ b/ A) e3 c
  185. connect, open 链接redis服务, R8 Z) q) X1 p+ U
  186. 参数1 `5 K& o6 `1 m, _( e! X
  187. host: string,服务地址) q4 r# N: W4 C% u
  188. port: int,端口号% n5 ^6 c$ s0 s$ m/ T
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ! `; K  w' r1 r$ v  u0 {
  190. 注: 在redis.conf中也有时间,默认为3006 g/ J' a7 t% v0 w: o: o4 G" |) P3 f0 c
  191. 5 I" b) @- W3 ]  V0 }7 V& }. A2 f+ O0 r
  192. pconnect, popen 不会主动关闭的链接; R# A3 i- @1 R& I3 h  P
  193. 参考上面
    : Z$ A- W4 N4 E/ {# @
  194. 0 `% \1 l* y$ n9 L1 Q: M/ f
  195. setOption 设置redis模式
    ' H( s& z8 P  U; p. L  f

  196. 5 B. T+ U7 {* O8 J4 r0 T/ z! P
  197. getOption 查看redis设置的模式  e! _' T+ n- p; z6 D7 P

  198.   l$ Z; j' j# m' n1 ^5 P" _$ T
  199. ping 查看连接状态5 {  I& [/ J% Y: b- p

  200. 4 i& K$ t$ f: O, ?" r) @% {
  201. get 得到某个key的值(string值)
    : f' H* U* i9 B" A, f
  202. 如果该key不存在,return false% j6 X# W- X! X
  203. + Y4 [2 Y7 A1 S1 l. L
  204. set 写入key 和 value(string值)
    3 i2 ^5 Y( J! W( D1 T0 W
  205. 如果写入成功,return ture8 x5 g+ V! J. N* z1 ~/ ~! _' d: X6 T
  206. ! ^0 }/ p7 U1 P: u& X% _
  207. setex 带生存时间的写入值
    . \  q$ w/ x5 G% ^. _
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    " J/ }3 _, _8 ~( {" G  M
  209. / z7 F: H  ]+ {% x7 [. b
  210. setnx 判断是否重复的,写入值
      y: i( ~5 U% t- ^, F, J& q" ^* y( D
  211. $redis->setnx('key', 'value');& j8 M; b  v2 U+ e& Z- ~! Q
  212. $redis->setnx('key', 'value');+ z, [" U) d" n

  213. % W( D3 ?7 a5 Y/ G3 x- y! ?
  214. delete  删除指定key的值# \) F+ q0 Z+ [/ V6 T" @
  215. 返回已经删除key的个数(长整数)/ _  V( }2 U' o0 b1 t% v* }+ J
  216. $redis->delete('key1', 'key2');! e( K4 `) `& N- S
  217. $redis->delete(array('key3', 'key4', 'key5'));
      u" T# F( _  A: Q: R$ t

  218.   ?1 U7 H8 b& _) M/ Y  L1 f
  219. ttl
    2 G" P- {" C  s, [3 e" i+ @
  220. 得到一个key的生存时间
    7 q5 a% P6 u! ]; _
  221. / V" c9 E) R* i7 V
  222. persist; Q7 H3 @: y5 l6 t- a% X$ `
  223. 移除生存时间到期的key6 s5 v! n1 F$ d6 Y
  224. 如果key到期 true 如果不到期 false0 [# \9 \2 L9 D& A$ C

  225. 5 _8 U* ]# ^" m
  226. mset (redis版本1.1以上才可以用)3 b* u1 U' V# C& a) J$ A
  227. 同时给多个key赋值$ f# R( y9 N* P8 d% ^0 V
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));8 ]7 c% U( |  [  z4 [2 `- P

  229. - n6 ^# I6 j& Z. M
  230. ' B+ R1 A% N2 f6 I6 a! L9 \
  231. / g: {/ d) }! P. [. X
  232. multi, exec, discard  N9 u3 {9 z! d3 S* ?, L# b
  233. 进入或者退出事务模式
    / ~9 t# m8 r, |7 a. J6 }
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI1 N; C- y3 I8 r
  235. Redis::MULTI:将多个操作当成一个事务执行
    * N- c) W& F" v5 B: o
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    " ?. t+ N3 v6 I/ B; u! i' N
  237. discard:删除一个事务. T  o% Y1 ?2 J3 H) Y8 p
  238. 返回值
    " {4 I/ s5 c/ }) b3 b+ S3 I
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。8 {/ S; t) Z: E2 P7 w9 o) H
  240. - Q* y5 E* ?* _  r, J/ t* r9 \
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    ( o+ w: `- }" ^- Q3 Y# m
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    " j# C- P! P7 @- g6 F
  243. unwatch  取消被这个程序监测的所有key4 C; S5 Z% a9 h- s
  244. 参数,一对key的列表
    1 R' w1 T3 q* y. b+ W- B' }% o
  245. $redis->watch('x');
    3 T+ ~/ J' h+ h( A+ Q4 L

  246. 1 O  a3 x5 K' _: _! u( w
  247. $ret = $redis->multi() ->incr('x') ->exec();2 L0 f9 X* M* n$ @! X- @

  248. 5 O' P1 a5 s9 }6 _" E

  249. ' `6 B" ?9 W( q; _
  250. subscribe *
    7 g( `( y  q8 R; C- A; Z$ D9 a
  251. 方法回调。注意,该方法可能在未来里发生改变
    6 T1 g$ I* k$ u

  252. $ [  s0 n/ F3 h2 z7 i
  253. publish *$ E& u! k% ]; N: \& i, N. J/ j) y; W2 t
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    % Z9 G- \1 i+ z* J6 W
  255. / P' A5 l4 X8 g* j& n* \# ]
  256. exists
    6 s+ h" G/ g, k4 C. P
  257. 判断key是否存在。存在 true 不在 false& e) w5 K0 s; j6 t6 K3 [

  258. 4 a0 J9 ?* c4 c
  259. incr, incrBy; x# Y  X' x5 @: B
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    4 A2 I3 ~" B2 O! s+ V
  261. $redis->incr('key1');
    ' @* \$ u# y4 {3 Z. `! s
  262. $redis->incrBy('key1', 10);* Y! X" J7 C- H$ I4 c

  263. ! W5 s& D3 W; f9 r% p
  264. decr, decrBy
    0 u9 E4 ~4 ^/ `5 I4 G/ `4 ]
  265. 做减法,使用方法同incr
    1 p! X& Z1 u# B

  266. , S, C% w" ]6 a* x# L# k; H; a
  267. getMultiple  [1 Z3 O" X$ S4 {6 V. C# F
  268. 传参
    2 [9 L6 [$ t* P: R+ y
  269. 由key组成的数组1 t! H$ S& a" v# C# F4 F
  270. 返回参数
    , v' ?. p# ?8 C+ L2 |6 k
  271. 如果key存在返回value,不存在返回false
    ! m) w& `7 L, ]# e1 `- v
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
      W6 V/ N9 `+ s/ j3 F( M1 c* N
  273. $redis->lRem('key1', 'A', 2);  O3 k* n# N+ I- a  u- O
  274. $redis->lRange('key1', 0, -1);
    1 G0 y, F$ w6 f8 \+ G% a  C

  275. " ?3 o% b! n8 _6 K
  276. list相关操作2 H# O, r, A5 A1 A
  277. lPush$ J( t8 B- B8 u' n! W; h; b- y) X8 \4 f
  278. $redis->lPush(key, value);; N$ Y' y7 |/ L6 e9 z
  279. 在名称为key的list左边(头)添加一个值为value的 元素2 W% [/ s( c" _  I

  280. , p" w. U$ y; o$ Q' J
  281. rPush4 y/ B$ [4 N/ P2 L; ~: p4 b
  282. $redis->rPush(key, value);
    * B( [( H) U$ H' N' a8 F9 Y
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    # q8 l& Z) y: k3 ?2 C9 e! h& d: E

  284. # c' J( x8 L* W1 r7 y: b
  285. lPushx/rPushx. b+ w& C1 b$ `; h+ H% h
  286. $redis->lPushx(key, value);
    , l5 {8 G4 M1 A
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    2 |* u  k% b) A/ y$ B* @7 J

  288. ( W- g# |$ `) b- v% B( Y
  289. lPop/rPop
    6 P; x8 Z' x6 Z7 j. r. L$ n
  290. $redis->lPop('key');
    ! d4 l4 ~! o1 S  @* c6 w4 I
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素% |) }5 u5 R! L% q( u4 I

  292. ( ~- b$ r# P- S
  293. blPop/brPop
    6 I' o% Y3 w  g5 U6 T
  294. $redis->blPop('key1', 'key2', 10);
    1 B1 H- P& U  z# i/ J
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作0 }( b; Z0 d, w, _; T/ ?2 D" z

  296. 3 ]7 [+ \( G3 G+ S' e/ I2 f' _
  297. lSize; d; |4 _+ g1 s- x. o$ y
  298. $redis->lSize('key');
    & Q. g: v% x) l' B$ n! q
  299. 返回名称为key的list有多少个元素$ n) q- s$ O# F1 m  U1 E3 N

  300. 5 _; @2 [/ _2 m" p$ T
  301. lIndex, lGet4 m7 P0 R0 k' D% K0 }1 f% ]
  302. $redis->lGet('key', 0);! ^" ]8 c0 h8 @6 h; I0 A
  303. 返回名称为key的list中index位置的元素
    8 \5 b9 ]2 H9 @2 w3 g' f- k
  304. 6 O5 ~. \! `( l% Z
  305. lSet+ }0 h# m& k& {* N3 j
  306. $redis->lSet('key', 0, 'X');( x6 k! _% y- k2 Z* y
  307. 给名称为key的list中index位置的元素赋值为value
    ) o* z8 H# X' z0 g4 r9 }, o

  308. 8 S  ~/ [8 J- r6 _. D5 F# e
  309. lRange, lGetRange" _! y: y# S8 b- l; R1 H3 i
  310. $redis->lRange('key1', 0, -1);
    $ h! T: l. h% ]9 A$ v1 N$ e
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    ! O! p0 g! ]& l7 b# I( v- B1 F
  312. ( ~0 I1 y& `& J/ s
  313. lTrim, listTrim& |, U0 j: r! Z& Q+ J' F. f5 J" f
  314. $redis->lTrim('key', start, end);
    5 X  \: Q' z* ~( \- g
  315. 截取名称为key的list,保留start至end之间的元素+ O) T. |+ n& Q$ B0 V& c4 z

  316. 6 B; N9 M, T' y! R
  317. lRem, lRemove
    % H5 V- i2 d: ]# j9 [
  318. $redis->lRem('key', 'A', 2);+ L( A% S3 \" [+ j3 [9 D
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    7 r: N# u! {/ V4 R% d2 Q

  320. 7 {: J: c6 D7 z1 X9 f
  321. lInsert: _9 ]4 r- C, {& i) z
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1& Y2 {7 ], E- u& b' X4 A( V
  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');
    8 \7 b9 M! P( S: E8 h0 m) o
  324. $redis->lRange('key1', 0, -1);1 U& W6 L" c  l$ l
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');  [3 Y4 C& q3 F9 m5 h% [# ~: H8 J, Q
  326. $redis->lRange('key1', 0, -1);
    # O! e" z+ ~+ r6 P4 ]9 h/ R
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');' d* B, s6 H1 N  H

  328. ; ~6 M. V& V1 x" u+ I1 @
  329. rpoplpush
    / W7 h6 I1 Y- o4 _: f- v, l# l- T
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    3 J" k! i- D, M/ u( w
  331. $redis->delete('x', 'y');+ e0 B' v" k. P9 \3 W/ _' ~
  332. $redis->lPush('x', 'abc'); $redis->lPush('x', 'def'); $redis->lPush('y', '123'); $redis->lPush('y', '456'); // move the last of x to the front of y. var_dump($redis->rpoplpush('x', 'y'));( F, Q) J* f# f$ I, J/ s& t
  333. var_dump($redis->lRange('x', 0, -1));
    % n4 I* S6 K4 Z% f
  334. var_dump($redis->lRange('y', 0, -1)); : C1 C5 @9 Q) A# D0 O( I9 @
  335. % h. c- H5 W/ E- t; ?
  336. string(3) "abc" " [6 d- m( X2 I& C' D1 J
  337. array(1) { [0]=> string(3) "def" } ; g+ g  y  G9 W7 I
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }* K. ?4 ~8 s' e/ p% l- g4 J

  339. : z! `' l" ]# }" H: p1 k4 c
  340. SET操作相关
    " ]1 k7 Y8 r& I. {  L4 e% Z
  341. sAdd1 o, M& F( o+ }# f( L* J  m& q
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false! W  l0 C# s* r5 ^: G' \
  343. $redis->sAdd(key , value);
    2 S& k& `+ V6 ]# {- p5 N; a$ `4 m  {
  344. " D7 K) W, m/ Z- W; A8 I
  345. sRem, sRemove
    " Z# b0 L( N3 k& l+ u) T7 }' e
  346. 删除名称为key的set中的元素value
    2 w  |0 P0 Q9 M4 Q
  347. $redis->sAdd('key1' , 'set1');
    : S* A  [, f& M7 T' m' e0 Y! G
  348. $redis->sAdd('key1' , 'set2');
    ' Q' E1 X2 _( X
  349. $redis->sAdd('key1' , 'set3');
    1 N; Y( J& O6 J+ X7 k
  350. $redis->sRem('key1', 'set2');
    / e2 l0 v) T- |8 S4 {
  351. 5 k4 q* p7 G+ L0 p) X( Q
  352. sMove4 W+ `1 t# K# W2 X2 l( J$ M
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    6 X  _; @0 Z7 f* m# t
  354. $redis->sMove(seckey, dstkey, value);8 u$ u6 B) e8 X- ]& Y6 Q

  355. : f# d! U( C" C$ n4 u
  356. sIsMember, sContains  z6 ^' E' q! }9 V0 O5 B
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    / Z3 b- {, q' X, C) T
  358. $redis->sIsMember(key, value);4 [! a8 @$ d) u

  359.   f: S$ \$ L. G; D2 O$ K
  360. sCard, sSize/ k5 T: T! ?; @0 E/ d4 K5 b0 r' g
  361. 返回名称为key的set的元素个数
    ! C% P+ c( @& B7 {6 b

  362. ( I3 K# @0 e: b4 W" n+ w: [
  363. sPop* \. n; _: |5 `3 i3 j% A, a
  364. 随机返回并删除名称为key的set中一个元素
    ! `2 d" T2 Z4 L6 K5 X
  365. 1 u, \; K/ \1 j8 x. N* ^
  366. sRandMember
    : {. t1 M+ Z8 p) z4 [3 i" d$ @8 J! N$ j/ G
  367. 随机返回名称为key的set中一个元素,不删除
    2 r; g# w/ G0 d0 y9 F7 w
  368. " y+ F5 P! ?" K3 ^
  369. sInter
    ; T- ]3 s3 r% G$ _6 h. }
  370. 求交集" p! u) g  m- r5 O8 a- Z/ J" r* O
  371. 6 M( m1 Q) L  g/ W- r# P
  372. sInterStore" A: @# i! p4 [
  373. 求交集并将交集保存到output的集合0 t% \7 s6 ~1 l
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')/ x  U! e1 D) N' p

  375. 7 P7 V/ J) y1 N3 c
  376. sUnion
    6 e( t* A3 U6 L# O1 h
  377. 求并集
    & `  B9 G* V7 K5 A
  378. $redis->sUnion('s0', 's1', 's2');/ y; I# B; e+ x
  379. s0,s1,s2 同时求并集
    * h1 F8 t" Y7 M: n' a! }

  380. 4 Z! R" @& x; Z% l
  381. sUnionStore( U( U3 _  X% T8 Q: ?* l
  382. 求并集并将并集保存到output的集合8 R/ @: t0 c& U! |% @6 I
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');5 O% {' c$ q/ I! L2 t0 H( M

  384. $ j9 z& I, M. u$ h; \
  385. sDiff/ ]0 O4 H! {+ P# W1 |  Z; |3 |2 u
  386. 求差集
    & X4 f/ G  r# Z6 F% m
  387. 7 L0 P2 x% x. _7 u
  388. sDiffStore
    5 R. j/ L8 B" j+ |' b8 ]
  389. 求差集并将差集保存到output的集合
    8 M, a0 o6 j, L% v! b1 E6 U8 i

  390.   g$ B: @  z5 V: Y
  391. sMembers, sGetMembers
    * w% N9 c* [: ]7 k7 }) O9 t& j
  392. 返回名称为key的set的所有元素2 s* b+ r. V6 v- h

  393.   E! W; T5 A/ X6 F$ H7 b% q
  394. sort1 B0 g' r" _' ?: t- D
  395. 排序,分页等
    ( T, m' \8 c) k# V4 f
  396. 参数4 c8 r+ n0 a. G0 q
  397. 'by' => 'some_pattern_*',) X5 Y; I% F/ ]9 Z) z, @+ h
  398. 'limit' => array(0, 1),
    ' O& o9 K! O6 q" u2 A  |. p% o
  399. 'get' => 'some_other_pattern_*' or an array of patterns,( s7 L$ N/ c% L& ?5 _6 _/ g/ O+ {9 b
  400. 'sort' => 'asc' or 'desc',* ~6 A* H6 K" H% f  j- M
  401. 'alpha' => TRUE,7 Q) ~. F0 @* |8 t& O7 R0 F* G
  402. 'store' => 'external-key'
    ' L/ H0 t8 z& `: X/ D
  403. 例子0 E" B+ ?5 L' O8 w
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    + }: X2 G0 ^4 o0 `) t
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    ; r3 G, r$ r. I7 d0 P2 H; c
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1& J7 G8 }5 E8 S  E- e% ~* E
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5+ \2 h& k0 G3 K
  408. , ~# F- j' ]% r  E3 P6 }: y
  409. string命令
    # A4 i$ Q! M0 \- w
  410. getSet
      p- Q6 s3 S' s" D' N2 S
  411. 返回原来key中的值,并将value写入key: Y/ z# Q. w  Z2 M' H7 z* r  t+ S
  412. $redis->set('x', '42');  A) I, l$ j: e( J* V" j3 O- _
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'  r6 o$ ^( Y& [
  414. $newValue = $redis->get('x')' // return 'lol'
    % l7 ?  |( y$ Q- p' N# I% R
  415. ! S( N% g3 r( o3 W
  416. append: y, E. E% {( |: g
  417. string,名称为key的string的值在后面加上value& z5 F- {- C' W4 B; @. k# C
  418. $redis->set('key', 'value1');+ t" E/ |4 I9 X/ {0 ~- [+ L" H
  419. $redis->append('key', 'value2');1 C3 x" }- [, q3 \
  420. $redis->get('key');0 M: w' O7 ^! V

  421. + z9 N. p. t# V: V- P! G6 R
  422. getRange (方法不存在)
    : \  t" A' q9 C9 m1 t0 H* F
  423. 返回名称为key的string中start至end之间的字符
    - H0 I, O( z; P6 c3 P
  424. $redis->set('key', 'string value');1 G$ v  E) v" ~
  425. $redis->getRange('key', 0, 5);
      n5 E0 I6 v, O/ J8 O
  426. $redis->getRange('key', -5, -1);6 D9 o& S- P' W, _
  427. & s$ C$ z7 f1 X5 {% y8 }4 ]
  428. setRange (方法不存在)9 {( ^, r: c1 C  |
  429. 改变key的string中start至end之间的字符为value
    ' G0 ]3 f( N. `, ^
  430. $redis->set('key', 'Hello world');
    / O5 C; Y6 a' h) s% _9 o+ \1 G" N' y9 H
  431. $redis->setRange('key', 6, "redis");" N* F' u2 M& {. e/ O, V4 b( i% b
  432. $redis->get('key');% {; ~7 E9 @6 l$ d2 |" P+ S  T- R5 I
  433. ( Y/ ?% r" I" A6 Y3 \5 ?3 u9 X! L
  434. strlen+ E8 M) J& g& x; w
  435. 得到key的string的长度: Z0 M* M* v6 ?+ I3 W- d% v
  436. $redis->strlen('key');2 [7 f2 Q* U* g; v0 p/ I& U
  437. / y; x/ I" s% g" d1 Q
  438. getBit/setBit2 U% ?7 m0 ?# s/ E
  439. 返回2进制信息
    6 f$ \+ C9 r9 S
  440. * w8 P4 s# [4 `6 d+ Q/ f
  441. zset(sorted set)操作相关
    4 A6 J' A* q* G9 K
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。9 d- d) O, \/ s' J
  443. $redis->zAdd('key', 1, 'val1');' |3 x7 \6 c! U) A
  444. $redis->zAdd('key', 0, 'val0');& ]8 o# d% I! H2 Z; p
  445. $redis->zAdd('key', 5, 'val5');$ S- w2 w1 f6 I7 e2 b- r7 o
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)/ d8 o; Y0 X7 m0 c+ }' q
  447. 9 i& j6 ?/ M3 A8 M
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素: c8 v! d# @+ G$ b  ~
  449. $redis->zAdd('key1', 0, 'val0');
    8 x/ v: f  k" b5 n1 o& u( @
  450. $redis->zAdd('key1', 2, 'val2');) G8 g; f3 m1 k
  451. $redis->zAdd('key1', 10, 'val10');
    + t, y9 E2 o8 x# J6 g7 _) N
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);& ~. {' m) j8 }0 q, f5 f% j

  453. % Z& n& u4 ~$ z0 U. u. j4 W. n
  454. zDelete, zRem" j: y4 |& J* v. p. o, a3 X
  455. zRem(key, member) :删除名称为key的zset中的元素member
    1 n" Y" S7 P, Z
  456. $redis->zAdd('key', 0, 'val0');5 w6 A6 `5 Z: ^& I4 Z- h
  457. $redis->zAdd('key', 2, 'val2');2 C+ `* y/ S7 D$ @
  458. $redis->zAdd('key', 10, 'val10');8 O$ s6 N" I& q/ S5 H2 {9 A
  459. $redis->zDelete('key', 'val2');$ z! _+ @# t' [% m' E4 w# y; U7 N' P
  460. $redis->zRange('key', 0, -1); " o6 O3 b- P* \
  461. 2 s& p, F# V- M/ J. |
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出: f# U: X7 M# K& d/ [& e* N0 f, D
  463. $redis->zAdd('key', 0, 'val0');5 `6 t$ T) s( `' w5 _0 X. _' x
  464. $redis->zAdd('key', 2, 'val2');2 h' t2 |; {& U  [  ^
  465. $redis->zAdd('key', 10, 'val10');
    ( K* @; j; O6 D  B# S) ^8 A
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    5 w' \5 @$ b- ~' @0 ~/ v) y

  467. 1 k- R' S# H) ~/ M0 a# _
  468. zRangeByScore, zRevRangeByScore
    & W1 M1 Q/ `/ |, m
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    : ]2 W4 g9 r$ L
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    ' \8 ^1 E! t4 g% a
  471. * ~+ c, q* ~; g* X- x. E3 l* r
  472. zCount
    ( h9 R7 R7 }7 v& E* l
  473. $redis->zCount(key, star, end);
    ( [! A( r1 b% I& L
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    1 v9 ]- t  z& c. k9 c
  475. ! @  O5 x( r, s9 N
  476. zRemRangeByScore, zDeleteRangeByScore
    8 y# s& `( d' n& x
  477. $redis->zRemRangeByScore('key', star, end);
    0 D3 q1 t3 b9 O  u* t' l3 k* p
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数  e4 d* }+ [4 v9 [" \% Q
  479. 9 ^4 Q+ i7 Q- J  u) @& f& G8 d0 W1 _
  480. zSize, zCard
    ( P0 [$ `+ [2 F6 Y2 X/ x5 k$ @) _3 c- N
  481. 返回名称为key的zset的所有元素的个数
    + }- F& B( `, M) d0 F6 d

  482. + w) n7 B) a* y  i; r
  483. zScore
    ! a' z: }. P3 K7 [* T- J" r
  484. $redis->zScore(key, val2);0 x/ e1 R1 a! o' a4 t  r% H
  485. 返回名称为key的zset中元素val2的score
    ; p5 o* Q1 x% x: {0 }

  486. ; O* }0 V# {1 s
  487. zRank, zRevRank
    ' h" J5 s+ C/ l$ X1 k
  488. $redis->zRevRank(key, val);
    0 `! d) l) P; s
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序9 ]' S' |* z0 J
  490. : X8 y/ J7 V' ~! g# |
  491. zIncrBy0 b% N3 K! W" |5 D6 o
  492. $redis->zIncrBy('key', increment, 'member');
    8 i: K$ r4 m# Q* p/ {8 \. m; L
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    7 v$ E, b' `% E) w' Y; b+ @
  494. / |8 t' w) S+ u( n5 E) }
  495. zUnion/zInter
    7 _, d% T+ \  b  t7 z: I8 E# h
  496. 参数
    , E, u2 P. y4 I% i  d9 q
  497. keyOutput
    7 y/ M8 E3 w1 Q% e
  498. arrayZSetKeys
    0 E4 t7 e  p4 X) V! O1 [
  499. arrayWeights7 {4 j. a- w8 d: U; A! L7 e2 L% D
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.8 q; ]" o6 [! Q+ c
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。3 D7 z( h7 U5 |
复制代码
( _8 b0 n9 E6 d2 V/ Y

* u$ h" p8 _( m0 P% U6 d/ P
; F5 F& i+ k/ C- S' F1 h1 S3 Q/ e2 q2 g7 m* ?! P+ X/ _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); / g/ S- }2 v8 `% v3 x+ p! ^
  2. //连接redis服务器
    ' n6 _. b' c% Q5 ?6 B
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-4-30 19:03 , Processed in 0.074330 second(s), 18 queries .

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