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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php& f2 e6 K- V+ ^8 x* X1 N0 P+ p
  2. $redis = new Redis();  : o2 T1 r1 ]% d( O
  3. $redis->connect('127.0.0.1', 6379);//serverip port; E- b. Y2 L% x
  4. $redis->auth('mypassword');//my redis password 2 u- E$ f; |" C. o$ ]
  5. $redis ->set( "test" , "Hello World");  
    , G8 [2 k/ w9 w0 B1 s
  6. echo $redis ->get( "test");
    / q- Q. Q* f) Q+ U7 m
复制代码
php操作redis函数封装
  1. /**7 V: o1 H# l! |  ]) `
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ) v4 k4 D2 _. w3 b$ ]+ M* C
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi9 U5 b0 p3 i4 L; j6 e1 K
  4. */
    7 w. Y( j. ~# l6 c" [6 T: D" o
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    ' {; o4 k, m* j$ [% M: ~" P
  6.     if(!$key||!$value) return false;
    2 z9 ~  _" W' p  d$ m2 ~5 [
  7.     $host = $host?$host:getenv('REDIS_HOST');
    1 u  h- W( `  b$ U5 B2 u! E0 X, }: _
  8.     $port = $port?$port:getenv('REDIS_PORT');
    % S, o9 G  T8 |8 T5 q: F
  9.     $redis = new Redis();- m& i: F' M6 u3 K- J
  10.     $redis->connect($host, $port);5 I( z+ g6 D6 ~$ M. `5 [
  11.     $value = is_array($value)?json_encode($value):$value;1 _- F2 F" q1 z# d% O
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);) C1 @( s2 {9 X4 ]5 F
  13. }: D$ Y6 e5 G" E( S8 M
  14. /**
    , t% `. g; i$ }7 G& h0 A
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    1 k: c0 [: }" D5 Y$ p
  16. */
    4 w  V& Z8 \( Y! n4 j
  17. function RedisGet($key,$host='',$port=''){
    / M. Q$ ~, E9 t5 \+ l
  18.     $redis = new Redis();
    ' ^* U1 E, T/ g1 m0 J8 S7 V1 z
  19.     $host = $host?$host:getenv('REDIS_HOST');
    $ k" ]3 o! F& c9 [3 y# C  \5 c9 j
  20.     $port = $port?$port:getenv('REDIS_PORT');
    ( D& f2 m' Q6 C6 p
  21.     $redis->connect($host, $port);
    0 L8 j6 D* A. }: }8 n6 b0 M* P
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    * s% V+ j3 u4 }9 ^8 ^2 [! U3 {
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);$ @3 ~" e0 q5 y+ ^0 R1 C
  24. }
    * s: X' ?0 n& f
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了- ?8 ^- C+ ?$ c6 n( w" e1 S: K$ y
  1. setex 带生存时间的写入值
    : J) R3 q+ d$ y
  2. $redis->setex('key', 3600, 'value');
    . V0 y5 U9 O, W7 ~
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    4 a' F0 N, l8 w( u- U
  4. $redis->setnx('key', 'value');5 \4 ?" W: U3 r4 {4 ]
  5. 返回已经删除key
    8 f! q* `( z  B; g) j( s/ J
  6. $redis->delete('key1'); 成功返回1失败返回0( ?1 m! g1 g/ f3 H$ s
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0; r& @; b  i6 M1 M. V
  8. 查询生存时间# c& q+ J. Z5 `$ E
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)4 `9 ~- k+ q9 ?( J3 U+ T- w
  10. 同时给多个key赋值,同时设置key0和key1
    / F- s. N( b+ _, U3 I( Q. r
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));* `4 h4 b$ Z. h
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    # q. V& G" N) |! F+ ~
  13. $redis->incr('key1');7 I  W) u! T1 w7 v6 w" k
  14. $redis->incrBy('key1', 10);
      d: M4 [) g/ P  I3 H: f8 t9 P2 Q
  15. 减法跟加法一样2 Y8 P6 _6 u" N( z2 ~
  16. $redis->decr("key1"); 减少1
    * c1 ]  v& u0 u5 h6 \: M! Q
  17. $redis->decrBy("key1",5) 减少5" p/ {& R1 J- U4 a" b
  18. 4 c  m, T/ R* V% b$ [5 u
  19. list相关操作,连表操作
    & f$ S/ O0 ?  ~
  20. lPush
    6 x/ @* o* \4 O- F: a* l
  21. $redis->lPush("list", "888");# {& ^' X9 B0 u1 o# ^: N
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数. L- i! _$ q3 T0 H
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式* }, u0 W; O* s$ O2 f6 ]8 o$ C
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    8 }( v4 R% }4 W8 m  r( J
  25. lPushx/rPushx
    ; K, k  g: M2 l) u& H* ?/ i
  26. $redis->lPushx(key, value);
    - N4 A$ E. I4 a# w+ M
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ! L0 K# `9 s3 P9 d* T

  28. 2 w1 i; \# g  E" d( ?
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    ( ]. W- Y" H- Z. c! N
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key9 c& B5 f% S' K0 g$ j* a& f
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    / ~, B, y+ G+ R3 o3 |4 d4 S) o% U
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序9 U2 ^& A2 N: d2 C* `) [% a
  33. sadd s1 zhangsan
    ; i% E: j% c. Q3 T9 O" t
  34. sadd s1 lisi) `5 H9 L( F: a+ J. h
  35. sadd s1 wangwu& P: X: m! h; s
  36. sadd t1 yangxingyi) z! G% n: N, z( w4 l/ A) N& S2 }
  37. sadd t1 lilei8 N0 ~% i- V1 n4 w0 u: A
  38. sadd t1 zhangsan
    5 _* X' h8 {- |1 j
  39. smembers s1 s1的所有集合内容
    # |7 G/ F% O8 @
  40. sdiff s1 t1 s1有的,t1没有的,差集
    8 d! R9 F; Q; h) [& o; T8 ]
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式5 z3 E; n) G  t) U
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    4 J8 R4 {' V8 U& M6 l# h5 W
  43. spop抽奖场景,返回集合里面随机的数2 }7 H7 }3 O0 h% x" F5 O: T1 k* u
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了: g- T( K% Y3 H2 w! U+ Z
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    5 g0 W" x1 }* `! A' G
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的. `4 C0 T9 e2 e
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    % Q) p2 U1 H. @7 L4 z! q4 Z9 d. B! O9 e
  48. $i = $redis->srandmember('s1');echo $i;
    $ d% h4 l# H/ B% Z) V1 @* S
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    # t  h6 p- n" i& C  t) ^
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false; n+ i& c1 b: I& l9 C8 C
  51. , a% O9 C' N8 V$ g
  52. zadd key 2 value 有序集合  @- J( b8 r( q- {6 x! E
  53. zadd y1 1 zhangsan;. i# {4 n  E4 d; m' N
  54. zadd y1 3 lisi;# e( K' p3 Y0 y: ^: G
  55. zadd y1 2 wangwu;
    9 L4 ~+ u* @. P8 `
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi& }/ u. L  P1 n; p& G# T
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);% N9 R6 V& a5 B! o. n
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键. V* F; @7 L. z" D0 @" y# y9 b
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    " A9 ?, r7 c8 C* Y" j6 P: ^- m& Z
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的# ^  n& m7 D" I+ m( a4 @
  61. 无序就scard,有序就zcard,有z没有s
    3 F- u' z$ W* `4 D- D  y% g
  62. sInterStore( e& D: q5 S8 Y+ h9 V4 w# s
  63. 求交集并将交集保存到output的集合
    * t# `! w2 F# S6 J
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    2 {3 J6 V6 h! n2 ]( l" {: t
  65. 9 L1 i5 K5 B' k% \
  66. Hash操作
    $ x5 n3 @0 m& }4 w3 e
  67. hSet2 ^6 U" _0 k5 o! M/ u2 ^
  68. $redis->hSet('h', 'key1', 'hello');1 z/ h5 L: y7 j4 V$ f2 O
  69. 向名称为h的hash中添加元素key1—>hello. y; }. p* W7 W; p& d' j8 g- ~

  70. ) e2 i- r7 W6 a/ g4 s! p
  71. hGet/ G0 ~- o) U- f7 e# v; s. E
  72. $redis->hGet('h', 'key1');& p, d5 }8 h# f. s- H
  73. 返回名称为h的hash中key1对应的value(hello)
    % P  R( Q0 z* k/ d8 k/ G8 d2 {
  74. , O' t( S( F1 ~  r6 X
  75. hLen
    $ f! t, d% c/ {1 A. r8 z6 a
  76. $redis->hLen('h');
    # h" J& Y/ H) l4 Z2 `! C. Q
  77. 返回名称为h的hash中元素个数
    4 Q/ m) f, s( \2 t* v' k8 H; g

  78. # Y  W0 i  i% E2 W# A% f8 I
  79. hDel
    7 Y7 ?% g6 s$ b7 Z3 o
  80. $redis->hDel('h', 'key1');
    - Z6 y0 r. R# e5 F/ D
  81. 删除名称为h的hash中键为key1的域
    ; ?: P( k- }! E  z8 G

  82. 7 d4 z" \. @7 Z! Y" B) F3 n/ O
  83. hKeys
    + P' }6 A  ~, k& c
  84. $redis->hKeys('h');" B: W  U( y, h( `& E3 T7 |# j3 o% C
  85. 返回名称为key的hash中所有键
    4 G7 p! ~; v1 [% x

  86. 6 \$ U" x) F) I- j& k; `+ r
  87. hVals- g5 |1 v: ]# b+ C! `3 l
  88. $redis->hVals('h')
    : y$ c6 n3 @# k# ~4 e
  89. 返回名称为h的hash中所有键对应的value
      m1 A  ^2 z1 V7 Q. P
  90. 3 F4 N5 Z0 u. O# N& l) `
  91. hGetAll
    ; @' L. ?# f- W- r/ _6 m
  92. $redis->hGetAll('h');
    2 i$ [; w9 r5 I3 s" z8 }
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    5 T2 w/ n5 `& C9 m: c' t! }  G
  94. : f" G  H# R. c9 ^9 l) q* |/ r
  95. hExists; I3 v% {4 O1 k, N0 D
  96. $redis->hExists('h', 'a');
    0 C$ u' K% c+ S, J6 {% a* s
  97. 名称为h的hash中是否存在键名字为a的域+ o8 l7 Z8 `- M
  98. ! G- p7 B/ l( G; w
  99. hIncrBy
    + u' \8 n2 z& Y" U2 L
  100. $redis->hIncrBy('h', 'x', 2);7 A' W1 r' V0 x0 F
  101. 将名称为h的hash中x的value增加2
    ; B" g, z6 w0 c  v
  102. 3 E  V  W2 s5 V& V0 @/ }
  103. hMset7 v4 s2 q% z  {2 q8 D. W9 a
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    + Y( m0 L$ X: L: F* ]( K% d' T
  105. 向名称为key的hash中批量添加元素; L+ W/ J* `3 h$ B( L( s
  106. ; ?0 F" f( d3 _- i! z/ K
  107. hMGet
    ; I# S8 P/ a4 G% c! n0 P; L0 ^. M
  108. $redis->hmGet('h', array('field1', 'field2'));
    3 x3 x1 a# T7 Z4 R2 c( G
  109. 返回名称为h的hash中field1,field2对应的value
    0 t& B$ j/ d- V" I# u

  110. 1 k" E/ h3 F) x0 m3 W
  111. redis 操作相关& C% b+ h& |; x  E( n7 R
  112. flushDB  m0 Q" i+ r  k0 g+ F% b, i
  113. 清空当前数据库5 `4 b) q* I5 C+ ~- K5 y
  114. * ?2 c% R" n0 q2 e- q
  115. flushAll
    + j/ E& d+ [5 Y; r1 m' B# w6 H
  116. 清空所有数据库
    1 A1 a, U2 G  b! W

  117. " K& k# H& f6 @$ g/ T. f
  118. randomKey3 k. G- A' Y4 X+ T9 x* p
  119. 随机返回key空间的一个key  _- \, t) i% U1 f' [: i# J
  120. $key = $redis->randomKey();
    6 C9 e* Z4 X) r" e- S9 N3 U- T- M4 |  ?

  121. 6 m: U! t5 M7 o. ^9 n! a, C
  122. select8 \' }8 X" D9 d2 L  ]$ p# `( A) v% S- e
  123. 选择一个数据库
    " h- N! r5 a" O3 A: n
  124. move, V8 I: G) r4 O" R
  125. 转移一个key到另外一个数据库  Q2 p8 h  w! d/ E+ w, v
  126. $redis->select(0); // switch to DB 0; |! G0 f4 F& C; \
  127. $redis->set('x', '42'); // write 42 to x6 e; S# x  W. o% g  v/ g2 v/ v
  128. $redis->move('x', 1); // move to DB 1& U  z: M6 J1 w
  129. $redis->select(1); // switch to DB 1! K: v  X9 Q& B2 v6 D+ g2 u
  130. $redis->get('x'); // will return 42/ X# Z  Q( V0 G- @4 P

  131. ( u: }: Y0 p4 z9 A7 N: o" f
  132. rename, renameKey0 h5 e* S+ V' E6 o
  133. 给key重命名$ v: D  [; a2 f  _
  134. $redis->set('x', '42');7 i8 b: K0 @7 q( h& x! o6 k: t
  135. $redis->rename('x', 'y');2 {  W3 H: V! S6 o7 k7 k9 r3 n' V
  136. $redis->get('y'); // → 42
    7 ?( v8 {7 [) M6 [
  137. $redis->get('x'); // → `FALSE`
    3 B8 @4 F$ ~5 w8 h" t+ g5 l
  138. ) ^- j5 @- A# F, I. |# L
  139. renameNx2 c6 P0 h: }; x- e* \; J5 A+ ?
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    2 {+ L( z+ N- k. y
  141. 1 h) S+ Z. H* J
  142. setTimeout, expire4 z# G( Q8 f9 o9 W/ A3 I# I
  143. 设定一个key的活动时间(s), X5 k$ {: y: d4 d
  144. $redis->setTimeout('x', 3);  l9 c0 ^2 q3 ], \$ s
  145. 2 ]0 o; M# z0 p5 M. [) I' H" l
  146. expireAt
    0 P& m/ G5 Y: g$ d& t' n# {
  147. key存活到一个unix时间戳时间0 \, t( \# {3 \
  148. $redis->expireAt('x', time() + 3);! C9 |+ B7 V: [9 A
  149. ) g  v4 n2 l4 Y8 r
  150. keys, getKeys/ u4 H' J$ p6 x& [4 v
  151. 返回满足给定pattern的所有key
    ( D/ h! j+ B. Y: h
  152. $keyWithUserPrefix = $redis->keys('user*');7 R! D. D. n3 R0 P
  153. : {" g0 r" z' h
  154. dbSize
    - ?$ {' R8 o' o# B  N
  155. 查看现在数据库有多少key. C0 R8 \* W. k0 D+ z
  156. $count = $redis->dbSize();4 B$ G0 J# J% Z- `! k
  157. . y4 r6 f5 ?: L; g, R* \* b( Z
  158. auth
    ( Y5 k9 K6 n/ ?0 Q9 N1 P8 \
  159. 密码认证
    + |& H6 d4 ?# M$ s
  160. $redis->auth('foobared');  ~' K" j2 L9 B/ Y

  161. 2 {# x; z5 S. ?# p0 {: \
  162. bgrewriteaof. d' A/ a$ h+ K) s: i1 _
  163. 使用aof来进行数据库持久化0 W  C; g5 R# B7 T- l, B" Q
  164. $redis->bgrewriteaof();  {. ]! ^( P& h  M. W5 M8 u6 N! S
  165. ' v! r3 Y) b7 ?! y7 {: f
  166. slaveof
    : S- p1 j, k7 h$ ~. B" R0 z
  167. 选择从服务器* d) b4 s0 O2 k" p7 ?
  168. $redis->slaveof('10.0.1.7', 6379);9 R& K. e. F8 Y6 c' ?& s) c

  169.   S1 g0 D: X, m. m8 K
  170. save  b9 f/ I; ?. F" h( e/ D
  171. 将数据同步保存到磁盘/ }6 H9 }1 I6 R$ M
  172. - l# D. S$ I' Z0 a8 o% C
  173. bgsave1 D( \7 |3 N+ i3 ~" X
  174. 将数据异步保存到磁盘1 ^9 G" i; b7 V7 S3 U- v

  175. 7 A% y# H  E8 ?9 |1 y) p% w
  176. lastSave
    " ^1 ^' P4 \7 h. l
  177. 返回上次成功将数据保存到磁盘的Unix时戳, d1 `3 _$ j. V0 M- j4 i
  178. 1 [% T' q$ N/ [) t8 M
  179. info
    ' _' K7 l, X1 x/ q; e: Q
  180. 返回redis的版本信息等详情) S  N' A' A& Y" v$ R& |, P: ~& E
  181. " ~' t+ D. @+ W  M7 o
  182. Redis::__construct构造函数
    , |  a2 _( @/ T& f$ S5 f# e
  183. $redis = new Redis();8 ^" P8 g' m! V

  184. % k, j# q2 ?5 b( k9 a# j
  185. connect, open 链接redis服务* Y' G5 n' a" ?, [% ]
  186. 参数
    1 q3 ?  a1 s9 Z$ L8 `: E
  187. host: string,服务地址1 P6 i# X, o& `5 i- Z: E- r
  188. port: int,端口号
    ) z6 W* q- O$ ^, x, O+ z1 W1 }
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间): x- r) B' d, }; u2 D6 [
  190. 注: 在redis.conf中也有时间,默认为300, U2 K1 U7 q) r: w0 W/ x
  191. : j- b: l+ \7 J: q4 N2 G
  192. pconnect, popen 不会主动关闭的链接. O, H/ |5 E0 d3 m/ H+ R% D, |
  193. 参考上面% F& C- E: s0 n: Z0 e  b) I

  194. 3 i! D- |+ f1 A6 v3 D/ v/ b
  195. setOption 设置redis模式) W! J2 A" c# N: M

  196. % N$ {8 W! d$ Y: ~5 ^
  197. getOption 查看redis设置的模式
    ; p. y( g, Z; k+ [6 E$ Z
  198. ! ^$ g; v! S# I% I+ \
  199. ping 查看连接状态
    * Z8 e8 i1 p6 g  b+ K
  200. 5 v: U2 l7 d6 m5 e4 n" H; u
  201. get 得到某个key的值(string值)4 ~  [" p2 C4 d; ]6 v: m
  202. 如果该key不存在,return false
    3 ?$ q8 {, J9 f9 l7 G  z: d4 s1 j/ V5 P

  203. ; l. Y9 f! {& U: M3 z
  204. set 写入key 和 value(string值)- i( P: e) w+ E, k0 L! v( O
  205. 如果写入成功,return ture
    ' q5 f( P) e' h, W
  206. 3 }6 c7 L/ `- L4 ?% r
  207. setex 带生存时间的写入值
    , Y, o9 R7 e5 ^
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    3 _( ^) b" z4 b; }
  209. 7 Q1 v# u! n' j6 A
  210. setnx 判断是否重复的,写入值9 A6 D; X+ A2 t% G
  211. $redis->setnx('key', 'value');
    , m/ n$ j+ q8 h& z0 p4 Z
  212. $redis->setnx('key', 'value');2 Y+ i6 v  w7 x% R4 r& c
  213. " _" ?2 ?2 {. Z
  214. delete  删除指定key的值
    ! b0 @, P) }0 S/ Z2 T$ m4 }. l" Z
  215. 返回已经删除key的个数(长整数)% n* Y2 J7 y1 M/ c/ F& p
  216. $redis->delete('key1', 'key2');
    ! Q$ T: y; @" X- O9 T6 ^% Y) @  s
  217. $redis->delete(array('key3', 'key4', 'key5'));3 l& C& `% `4 r$ T  l

  218.   B. J1 ^* W8 Z$ P* j
  219. ttl) I, [% d5 D) F! v& n8 n$ G
  220. 得到一个key的生存时间" Q9 U' ]# g) k# T( R

  221. ; d* c; i" U. |) N8 F8 Z. C/ E
  222. persist
    2 w/ ^% V- S' u4 m( ~
  223. 移除生存时间到期的key
    7 y4 |7 U7 E# q7 w& e% v* [
  224. 如果key到期 true 如果不到期 false% R1 ?8 M, l: g: r
  225. 2 o& d$ ]/ w  }( |% F
  226. mset (redis版本1.1以上才可以用)
    & ?/ A; B. }, m
  227. 同时给多个key赋值/ L- o- \+ ^. j$ i
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    4 {% r! [% D0 r( e

  229. ! ^$ M8 s# i) N& y0 n

  230. + H, D1 _0 @( |, B' F
  231. 2 F; \# R8 ?8 X% a6 J* D' [: f2 J" T
  232. multi, exec, discard
    ( D, L* F  {+ }( g% B
  233. 进入或者退出事务模式+ B3 D- ?1 b* R. _
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI. ^: P* o! G" W, E! V8 ?! o0 Q
  235. Redis::MULTI:将多个操作当成一个事务执行3 A* K, E. E6 s1 v
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证9 \) A( g* }1 m! y; y( p& R% _
  237. discard:删除一个事务
    % _( Z8 P: m5 s
  238. 返回值
    4 k  |6 E- A+ c* }" w( Q0 f
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。. |0 `0 K$ m2 i2 w/ t

  240. , D' _  T0 ?+ H( ]0 p
  241. watch, unwatch (代码测试后,不能达到所说的效果)8 g, w8 X  r+ b4 u
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
      }4 b0 n! p- g/ }
  243. unwatch  取消被这个程序监测的所有key1 U+ M2 o7 j4 k( o! M" K8 }
  244. 参数,一对key的列表
    & z! R) l- W, q& _9 W
  245. $redis->watch('x');6 J$ P( z; Z9 P' L
  246. , d0 z3 x+ G# P# d( O) E7 b6 B
  247. $ret = $redis->multi() ->incr('x') ->exec();
    6 r7 _  V" T# k& K# [

  248. 5 u8 ?; `& U, |7 S) S
  249. ' Q9 C% X4 \& P
  250. subscribe *
    $ X* f& m7 {1 A& O
  251. 方法回调。注意,该方法可能在未来里发生改变
    & S/ U3 A* ?. F6 t) z: Y* r! E) f

  252. - C# o# L5 P/ @6 T$ K
  253. publish *
    + z" ?  D; G9 I; p
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    6 b8 [/ s* Y! [4 ?
  255. # |. s4 Y9 j5 m
  256. exists/ u! e/ a5 w1 H: w, o
  257. 判断key是否存在。存在 true 不在 false
    + {6 @0 g+ |% P) ]

  258. ! k. z" r' ^4 G" F
  259. incr, incrBy% F& }* G3 ]% b: F7 s* _9 U" X5 c! _
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    6 A- \3 s! P; {, }
  261. $redis->incr('key1');* v7 k6 f1 v5 Z+ L1 Z) N- I) X& l" t% s
  262. $redis->incrBy('key1', 10);
    5 J9 J3 q2 y! }* @# J

  263. 6 E& o5 @3 a# {" U
  264. decr, decrBy* n4 _- l$ o4 H& {2 S, s
  265. 做减法,使用方法同incr2 _- H+ e, d  s
  266. : t( m! `3 Y2 w& C4 R0 G
  267. getMultiple6 a1 j% B% Y. X
  268. 传参
    8 K# O/ N5 n& |  j5 i
  269. 由key组成的数组
    4 y# ?, W1 T! \4 U
  270. 返回参数+ M* n$ ~: D- p6 y% [2 V
  271. 如果key存在返回value,不存在返回false
    8 N/ g3 X5 s+ E! m
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ; f- q+ `0 c4 K/ w( M8 Z5 v
  273. $redis->lRem('key1', 'A', 2);1 q! {; ]* Q7 Y& z4 h; g) G+ Z2 P
  274. $redis->lRange('key1', 0, -1);6 B, w8 ^) t' z

  275. ' y6 o9 z7 P4 [( X
  276. list相关操作" s3 e* w: s% [9 |: |" s
  277. lPush
    " q) Z  \5 v& @3 x4 t" ?/ x
  278. $redis->lPush(key, value);
      D9 M& O9 d% p$ t1 n# D
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    7 m- N; v* [1 v5 ?9 I4 ^
  280. $ [' e# [# u  P! v4 ?: Z
  281. rPush
    . n# v/ `8 G" H. L- ]
  282. $redis->rPush(key, value);
    7 h+ P$ ]1 _: q) n3 E
  283. 在名称为key的list右边(尾)添加一个值为value的 元素6 l, o! j8 t1 K' ?. }1 p7 E  F

  284.   G2 G5 o, z" E; ~
  285. lPushx/rPushx( ~* j- C( F1 `8 r+ ~  n
  286. $redis->lPushx(key, value);& S3 p, b/ G! N! X& g: J
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ) S- F+ L# _* e% J3 ]# B

  288. ! ~3 F: X7 a" t4 S9 i
  289. lPop/rPop; p' U0 f3 @, m( m
  290. $redis->lPop('key');
    : C, ?+ ^1 G# w2 [1 |' C; ^
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    ( K! R% r+ j9 K/ v6 _2 D! r
  292. * i$ U: R0 e2 G6 _& w
  293. blPop/brPop
    6 B+ f. I- F7 n7 l0 d$ l: \
  294. $redis->blPop('key1', 'key2', 10);
    2 @! H9 i. h/ @: N! V1 T
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    6 Z" d4 L9 I& f( P/ S/ O0 U( i( S$ q
  296. 5 _" m" S* U  @: E6 C$ `
  297. lSize- j2 R5 v. t: x: G- Y
  298. $redis->lSize('key');. J* X& l" d+ D7 {9 u( U4 D
  299. 返回名称为key的list有多少个元素/ G+ b9 P- x! \' f) C" {
  300. 2 S9 ~) _) Y5 p9 a0 k7 H9 ?& D
  301. lIndex, lGet
    . D- m2 S' z  h/ A3 P
  302. $redis->lGet('key', 0);0 c& X+ t  Q0 M, u1 ]9 t. _
  303. 返回名称为key的list中index位置的元素
    . {; R9 E; S% g) K1 b0 o

  304. 1 f( I" ~5 f2 T, r- r9 Q& y
  305. lSet7 r# V- j: j1 p
  306. $redis->lSet('key', 0, 'X');4 h. S* S; ^9 K) w! _
  307. 给名称为key的list中index位置的元素赋值为value' v. ~2 t  _* R  [2 s
  308. % c$ u$ `$ ]) K! l  p
  309. lRange, lGetRange8 @5 }/ K* I5 O6 ~: F  y
  310. $redis->lRange('key1', 0, -1);6 J+ T/ d7 N- p8 O8 o$ J% I
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    ! m8 C' ^0 V. R

  312. 4 x- m* B" ?/ m% {; ^/ o& v# j
  313. lTrim, listTrim
    . S# o7 O& X1 l! a) B+ q  J
  314. $redis->lTrim('key', start, end);+ g! L8 ^& E: s8 d
  315. 截取名称为key的list,保留start至end之间的元素: g, g( r) E0 |- U% [5 T

  316. 6 v* A8 I8 t) p9 \
  317. lRem, lRemove2 J  ~# T1 X4 }8 K: d& V9 [. J
  318. $redis->lRem('key', 'A', 2);$ [' u3 ^: A8 K# h2 q& Z: k- E
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素6 k, T; s/ k0 N+ T1 z

  320. $ d& M' f3 M" ?9 y* G1 L0 d, r$ [# e
  321. lInsert' Q6 [# @' ~. R5 D/ a7 N% k+ r
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    * N& R" L5 Z0 i' v8 c+ @* Q
  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');1 P% P# t) Z0 ~* @* \9 c; f
  324. $redis->lRange('key1', 0, -1);
    ! u  L( F" }5 u% j$ ?- `% Y0 T
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    4 f) L. ~! R! l$ j
  326. $redis->lRange('key1', 0, -1);
    + ?8 x7 [$ L% p8 H
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    3 b6 V; ~7 n' l( u1 g; S5 I

  328. + g6 M* A- d  z! i: Y; [; T
  329. rpoplpush1 m! `9 H; T, |
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部1 h: ~! y7 ?3 l7 F& e$ c
  331. $redis->delete('x', 'y');0 n% F& K4 t% l/ m. ~
  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'));+ ^- _! [5 \5 L; K  b3 ]' _
  333. var_dump($redis->lRange('x', 0, -1));/ G) m4 K( ~( {+ ^0 D8 M$ C9 g
  334. var_dump($redis->lRange('y', 0, -1));
    $ _# l$ @. J* ~5 t5 g5 P
  335. ; }6 R' |  q$ L5 {% A
  336. string(3) "abc" 0 L" I( W# ~6 X, X4 ~0 b5 }
  337. array(1) { [0]=> string(3) "def" }
    ( q/ Y# a) I; Z
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }7 d# v, U$ a7 p' B2 F' }) _

  339. ! ^2 n. e5 J3 a; E" q1 s& o, k/ f
  340. SET操作相关' R4 E" G% ]0 p; g+ G. W$ v
  341. sAdd6 g5 x9 c7 ^. V* Q9 s
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false) _. N2 `, ?6 v% U- g
  343. $redis->sAdd(key , value);, e. u- ?2 I! v1 L6 f, j  I6 E5 Y
  344. 4 L3 P5 V0 I1 T0 \3 a- K
  345. sRem, sRemove5 ^( M3 c9 T, A7 M
  346. 删除名称为key的set中的元素value$ C7 R: x" Z* J9 r
  347. $redis->sAdd('key1' , 'set1');( ]: \$ M: W& b
  348. $redis->sAdd('key1' , 'set2');. N& ], O5 w' k. ~5 x8 K+ |7 _/ A* r
  349. $redis->sAdd('key1' , 'set3');* J9 n9 b' m& m
  350. $redis->sRem('key1', 'set2');1 Q" R) R) v2 z  |( z
  351. & I3 k. }- C/ b
  352. sMove  E( i1 W! ~" Q% `
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    * l& |4 x  T  w4 l2 o
  354. $redis->sMove(seckey, dstkey, value);- a, t: a8 @9 S+ G6 W& y
  355. : k& ?, [" H+ D' C
  356. sIsMember, sContains
    0 B6 a1 V# N/ h6 c  l( H1 ~1 I; C
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false9 V8 P! d, x: j2 Y8 C* i
  358. $redis->sIsMember(key, value);
    & j9 L" S  D; B; w1 k  h, ?, b

  359. 2 K! B  j- S0 \: M2 k9 X
  360. sCard, sSize% f# V1 g; `9 M! i. a. g
  361. 返回名称为key的set的元素个数2 Y+ H% v; |% k' o7 S: Q
  362. ( A' \) f7 i  T- C
  363. sPop
    ! D7 v. w3 R4 b$ X' |' L
  364. 随机返回并删除名称为key的set中一个元素
    / L0 h  G% D- w3 k7 X. T3 F

  365. " O, T1 K3 T5 ?8 u
  366. sRandMember% T5 E' u  k9 G) E# L
  367. 随机返回名称为key的set中一个元素,不删除
    ) G7 y  h+ s* F8 O/ _
  368. ! B7 o& R8 T' D  Z. y6 f
  369. sInter* U) n' J" Z" M- g: Y7 q
  370. 求交集
    0 H  }, H0 ^/ d; z0 h

  371. - u8 H1 i8 ^# e
  372. sInterStore
    * _* s9 |2 s. _
  373. 求交集并将交集保存到output的集合: i# L% E' D0 c" `8 g  |  \$ O
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')* f$ g( U; F  D1 F
  375. # K* p& \1 \( U  h( K' {0 w- A
  376. sUnion6 ?, A6 ~) b4 T6 V* k, T
  377. 求并集
    * e8 P) ~+ ~( U: h
  378. $redis->sUnion('s0', 's1', 's2');
    , ]1 q5 c1 D5 N% f, ]
  379. s0,s1,s2 同时求并集% S) n& g5 a1 M

  380. 8 J% D2 V1 j  D+ T/ g' Y: v
  381. sUnionStore
    1 q9 u) Q" ]0 P% e
  382. 求并集并将并集保存到output的集合
    + U* p! Y# V' {
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');. o: h7 n5 V1 m  @7 M9 V0 ?/ T

  384. 5 i* ^8 ?% ]+ c1 g
  385. sDiff
    ! n0 W9 X& E3 W, _
  386. 求差集1 U( q  |  V$ ]1 t) F
  387. & e7 I8 s2 h( R! B9 M8 f& K
  388. sDiffStore3 V* a' X4 L$ S: m
  389. 求差集并将差集保存到output的集合
    ) S3 w* ~& }2 P8 ^/ }; r
  390. ' U8 D# |9 K; {5 |, D, H2 ?
  391. sMembers, sGetMembers
    - i$ D: L/ C9 }
  392. 返回名称为key的set的所有元素
    + w+ d. S. Z1 b3 u
  393. / X6 F! a8 c( W& i" b
  394. sort& ^' u* d) D1 |8 p; t$ G
  395. 排序,分页等
    ; s- \9 e# J* C! u6 o
  396. 参数
    & I$ u* Q, f, D+ P# P/ U9 \8 u
  397. 'by' => 'some_pattern_*',3 F3 q; z1 i# j. m6 ?) [8 w) P
  398. 'limit' => array(0, 1),
    / d+ m; K6 E1 D
  399. 'get' => 'some_other_pattern_*' or an array of patterns,/ u. ^- Z8 v3 K5 L3 j& X# ~4 U, Z" b
  400. 'sort' => 'asc' or 'desc',
    0 ]2 ~0 [! {" O
  401. 'alpha' => TRUE,
    ! A# Y& Q; ]# ~: p  K# C1 q& V0 Z
  402. 'store' => 'external-key'
    % ]$ a, A$ x) L4 Q  A8 ^7 P/ J3 g( e
  403. 例子
    ) s- y$ D8 c. `' @
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);# ?4 e! }# k7 ^& N* O
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    7 `4 z/ W, P0 v9 C* k$ _# ^& J
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,19 V/ o8 j( T* R9 y" E- @) `1 O8 z7 b
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    - i1 o3 P" {4 q
  408. % u% @3 Q% Y. h1 D* A! e0 t/ ]
  409. string命令
    . {( u1 ?6 i9 ?+ Z, Z0 ]
  410. getSet( m: B7 ?( q" O! a4 B2 J' P7 H
  411. 返回原来key中的值,并将value写入key1 \; s/ C: c# X3 a+ G
  412. $redis->set('x', '42');
    " n/ B6 M1 h' K2 z9 c( q4 j
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'+ w% D% W. Q* C" X5 H& q
  414. $newValue = $redis->get('x')' // return 'lol') N$ Q8 |% W5 f8 S) ^. G

  415. 2 v. `0 W) d" L* `* C1 i
  416. append2 u- }$ L* ?# N+ ^# h3 ]/ t
  417. string,名称为key的string的值在后面加上value
    ; L' E6 ~/ B% d4 F1 N
  418. $redis->set('key', 'value1');' Y* E( H8 M" M! X. F$ P! y
  419. $redis->append('key', 'value2');. J/ _7 C$ W4 n+ G
  420. $redis->get('key');  D. T: y7 }& y$ |/ \1 P/ x( M
  421. 4 J2 a7 {$ ?8 a
  422. getRange (方法不存在)
    5 |7 f( o, e, w. `5 A. b
  423. 返回名称为key的string中start至end之间的字符
    7 E2 l* m% P+ A5 F: {1 L
  424. $redis->set('key', 'string value');6 M# Z; w4 n( ~& t
  425. $redis->getRange('key', 0, 5);, \; ~# i" w7 A" r- H$ p; ?
  426. $redis->getRange('key', -5, -1);  P+ E+ q' c; w9 Z

  427. & T$ _0 n$ C9 l
  428. setRange (方法不存在)3 |" w6 t6 M: {6 E' r
  429. 改变key的string中start至end之间的字符为value( o0 e$ n- P8 Q+ p0 R
  430. $redis->set('key', 'Hello world');
    & F" R. }! j; @) O
  431. $redis->setRange('key', 6, "redis");2 z- X. Q6 j: y1 e/ K2 }5 F! X
  432. $redis->get('key');% R! k. X+ U8 J6 y5 F
  433. + \9 W4 W* M! ~6 W: G
  434. strlen8 A' N6 {" _% h' v3 h) m1 z4 w9 k- [
  435. 得到key的string的长度8 N! t# A+ G% y3 y& ~3 L
  436. $redis->strlen('key');
    ! E- U, u3 I' \. Q- s

  437. * M+ O6 V5 J) r* A# Q7 Z
  438. getBit/setBit- j: V0 B9 m5 M1 ]4 B6 @
  439. 返回2进制信息* I4 ^- j. f$ L* S9 q) V# M  C

  440. 1 X5 G+ u: v. i9 S% `  E
  441. zset(sorted set)操作相关
    + u5 O0 E' G8 t1 b; [0 t
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    4 V8 D8 I; [! F# ]
  443. $redis->zAdd('key', 1, 'val1');
    # G- g" o$ A! G4 W* L
  444. $redis->zAdd('key', 0, 'val0');5 r' X6 h4 D7 |7 y8 i7 Z# ?3 B/ E7 ?
  445. $redis->zAdd('key', 5, 'val5');' a2 V. ]; u7 I1 i
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    , @+ g2 Y3 D: C  c7 S! Y
  447. ! p/ R* \  k" J6 t, U
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素3 g5 c# T3 i6 {( G9 G+ E
  449. $redis->zAdd('key1', 0, 'val0');+ |. [; M  e0 Y6 h
  450. $redis->zAdd('key1', 2, 'val2');
    % ^/ G) p7 T0 t$ V1 L
  451. $redis->zAdd('key1', 10, 'val10');* F1 s8 x1 s2 g: ~
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);" G9 X9 f4 x+ s: h2 @. h

  453. 6 `- x0 _- [2 g0 Q8 N* `) S3 T- g
  454. zDelete, zRem
    3 U9 K. j* w! `) C. W5 W
  455. zRem(key, member) :删除名称为key的zset中的元素member  X# J0 }, o# C( J/ Z4 x" U$ @3 d
  456. $redis->zAdd('key', 0, 'val0');8 v  g- {4 V1 r* f% G* n7 Y
  457. $redis->zAdd('key', 2, 'val2');/ z$ M) V$ ^7 g/ s9 P
  458. $redis->zAdd('key', 10, 'val10');
    7 t1 p6 ^4 y+ b4 d( \) `
  459. $redis->zDelete('key', 'val2');
    $ d+ @7 W4 ^) i& Z  i" i
  460. $redis->zRange('key', 0, -1);
    8 M! E4 t0 ]9 x3 J# R4 T
  461. & _7 Z: ~" \  C. G) z/ B
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    / L) ~) R; l3 H, Z
  463. $redis->zAdd('key', 0, 'val0');1 Z$ s& V) z* c4 ]
  464. $redis->zAdd('key', 2, 'val2');1 _' U( y" O' r6 {8 ~* t! W
  465. $redis->zAdd('key', 10, 'val10');9 n7 Q$ ~6 e% S$ [2 `3 ?
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);2 {) a8 N3 T% |* x8 t* Q

  467. ! D- @& l1 ~- p) h  Q
  468. zRangeByScore, zRevRangeByScore
    / `; h0 @' x* \
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));; R8 A1 ?; A5 n: C
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    + j% {! x& @  ~" u& \

  471. $ @3 g1 }  }" Z7 _6 j! J6 J
  472. zCount  y) K% y& r, W: A- X8 w
  473. $redis->zCount(key, star, end);, F' K0 n/ k6 X
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    & i0 ]4 }$ J- H  O8 _- G. Y
  475. 1 `+ Y3 {* F. d7 `
  476. zRemRangeByScore, zDeleteRangeByScore& l1 K$ T1 @* H& P& ?! N/ E
  477. $redis->zRemRangeByScore('key', star, end);8 v- I) u5 m7 d- Z( D
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    3 ]7 f! \2 {5 [& l# |/ b
  479. + {5 M2 `5 j1 d$ K! u5 {4 I% x
  480. zSize, zCard$ H- |: F8 M0 A$ D6 q
  481. 返回名称为key的zset的所有元素的个数1 g% k- U& w1 ~' n4 o  N

  482. & C/ F4 \+ `4 H! l1 l" D
  483. zScore
    6 m+ \7 |- T" \. F! i7 M3 z
  484. $redis->zScore(key, val2);2 l, q- |5 A% {* j- V5 x: ^& P
  485. 返回名称为key的zset中元素val2的score
    3 l5 A* n1 L& a" I: |0 j& w2 l" A: R
  486. 2 `: r( {: l6 I4 W
  487. zRank, zRevRank; o3 {) ~! C& j) ?$ [
  488. $redis->zRevRank(key, val);
    + Y. O7 N3 N" p1 m
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序% B0 j, F& [; m+ v: K
  490. 3 z# V: ?! E0 Y7 V
  491. zIncrBy; ?! m  V, r4 k; e, E8 R
  492. $redis->zIncrBy('key', increment, 'member');4 K; M  \' L& m- G7 [3 k
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment6 @5 `- r8 o2 U5 U6 x
  494.   D% D! k7 f0 _
  495. zUnion/zInter$ Y% W) z9 V: u" k2 O
  496. 参数: Y( b; e- V; `
  497. keyOutput
    $ z. {1 K/ X& W
  498. arrayZSetKeys
    ! {0 @) f. B+ V8 f. K
  499. arrayWeights: I7 U- [% m8 b  U  h9 G
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.9 M  L: H& S7 k
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。* \$ q# F. R8 P% V, o* P8 ~% f3 ]
复制代码
* R$ p& b) R) y! @/ Q1 w. _9 m

& Z/ h5 r" x( i! O2 a9 m9 [3 h* X# S3 o  R1 _% p
( T. J/ g9 X6 W, x1 ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); ) C* i* B" t$ }" g' o7 g& d: Y# z) M1 p
  2. //连接redis服务器
    % }- M/ C$ `* P8 e  E' K
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 20:37 , Processed in 0.153368 second(s), 19 queries .

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