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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    5 u( Z9 F; C0 p# ^
  2. $redis = new Redis();  # n/ t+ ]+ h5 U) [
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    - q3 V# ~* E' S' @' U
  4. $redis->auth('mypassword');//my redis password # P; T# k9 p2 U3 Z5 q% C
  5. $redis ->set( "test" , "Hello World");  
    1 L$ [3 p7 w( b6 P3 A) Z
  6. echo $redis ->get( "test");; H+ O7 r2 {+ L9 f3 D9 Y1 g
复制代码
php操作redis函数封装
  1. /**0 t0 y9 X/ T& _$ h5 ]- D( b/ v5 b
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数" O" Z) a- p  Q5 X% p, _) X2 t
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    % A) t! X9 J" @9 c2 B( a8 K
  4. */: D; W# k* F! V, E
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    % i/ X& P' N; n% C
  6.     if(!$key||!$value) return false;5 r/ w5 \3 n, M" J/ t
  7.     $host = $host?$host:getenv('REDIS_HOST');8 }  h# B2 d) I+ D6 j4 w# z, ^
  8.     $port = $port?$port:getenv('REDIS_PORT');; U  J, }, i9 @" h4 h6 O
  9.     $redis = new Redis();
    8 ^9 e. f" P8 a2 I
  10.     $redis->connect($host, $port);( s+ X' |/ p/ c: i. o0 s+ A2 d
  11.     $value = is_array($value)?json_encode($value):$value;
    2 ]8 ]% _9 j" r' M9 m- x! R, t$ T
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);2 z1 g) c7 a- ^
  13. }
    / `& Y" |" Q/ G& L
  14. /**, {1 F- E- A; ^: |
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi) r2 ]+ B( I7 ^. |
  16. */' R/ R2 }( y9 v" c
  17. function RedisGet($key,$host='',$port=''){5 u9 g$ w; e& i+ V5 ]
  18.     $redis = new Redis();% |5 w. {% b! _2 t$ S" x" ~
  19.     $host = $host?$host:getenv('REDIS_HOST');: o5 K; D# e0 x" p& m6 \6 p
  20.     $port = $port?$port:getenv('REDIS_PORT');
    $ k: [9 o" e6 }  u
  21.     $redis->connect($host, $port);
    ' t3 a, X9 c2 p9 h% }" @- B# c
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
      ?7 v: l- h- j  s: y
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    8 u+ A5 ]0 g7 ~
  24. }
    ! K5 e  F- x; O
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
0 |" p0 T) c$ X) S7 t: D
  1. setex 带生存时间的写入值
    : n9 w) b% O' A' ~! ~3 ~+ m' {
  2. $redis->setex('key', 3600, 'value'); 6 y0 k, l- W* N4 h% I) {, b
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    $ ?! m, \8 t4 e7 f+ a2 E2 x! C
  4. $redis->setnx('key', 'value');% n8 s2 M" @. e" R2 U+ W
  5. 返回已经删除key7 f2 Z8 N9 x# }+ U) O
  6. $redis->delete('key1'); 成功返回1失败返回03 J9 q) u7 a2 w+ M  A$ @+ w
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
      P) @" K1 c. r/ h: V6 w- E$ g
  8. 查询生存时间( V. M& t" W* m
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒). G- d# @8 n/ L1 w0 W! _6 p) o
  10. 同时给多个key赋值,同时设置key0和key12 Z0 D, T, `1 A- x4 ]2 D+ g
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    1 N( s, c; U! d
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ) g: m7 ^" }3 F
  13. $redis->incr('key1');
    1 g& I. D1 C; D7 G6 @
  14. $redis->incrBy('key1', 10);
    , ~* t5 K3 |' a2 E) w
  15. 减法跟加法一样
    * L& s' }- Q3 x% r2 i$ s
  16. $redis->decr("key1"); 减少1
    3 ?  ~7 y" r! t5 p4 V- g2 ^
  17. $redis->decrBy("key1",5) 减少5; E0 ~; v5 k/ I- E5 C/ r5 h
  18. ! z( w( y" D: m6 I; }& A  s8 |& T
  19. list相关操作,连表操作6 t9 `1 ?  w7 M. x/ n
  20. lPush: w. T2 A( w2 W' F" v. R% ^
  21. $redis->lPush("list", "888");3 I1 c, G" f; G
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数  J; n3 v' @- M* E3 h6 _  K+ _7 j
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    ! q: h6 }9 B3 H' H+ h# q
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    ! j) l' ^6 d: R
  25. lPushx/rPushx
    0 O& V- g6 _9 t1 q7 _! e
  26. $redis->lPushx(key, value);
    0 ?9 m2 y2 w( L1 Y& O- p6 e2 n
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加3 h8 y" Z3 M  \
  28. " K1 \  e+ J- q* d
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key- O# b3 e" j7 o9 p# f2 Z+ b, z) p0 l
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key# z3 I. y0 O8 v- U( S  [- f6 @
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回15 j" i: O, {7 a" K8 _5 N2 t
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    7 {7 T" _8 D- c: o- T) Y1 u: a
  33. sadd s1 zhangsan5 Z& }0 {7 E0 J2 {
  34. sadd s1 lisi6 G) X* n' p1 F
  35. sadd s1 wangwu
    7 i* T. w- _% @  ^: f- i. @
  36. sadd t1 yangxingyi
    7 B3 m& M5 _# V8 V
  37. sadd t1 lilei' U7 J' U7 A0 ^
  38. sadd t1 zhangsan, F9 B8 }" m8 h# P; i
  39. smembers s1 s1的所有集合内容
    ; [3 @& Y7 Q7 M- F0 n
  40. sdiff s1 t1 s1有的,t1没有的,差集% T; d; Y, N0 U3 y, N
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
      ?  e$ w' h: W: ?$ ~8 U
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的& ~1 U  c! K+ u8 n+ p# b$ ?3 u1 N' {
  43. spop抽奖场景,返回集合里面随机的数
    % S( q# n. E) f& `! X* W0 w
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    % t! u1 M- M0 p- q' h% }0 v
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数% ~$ ~; T& F+ T; f+ F7 A
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的: k) r4 E: L% C# m6 p7 ~, ]
  47. 随机返回集合里面的一个元素,但不删除,重复中奖9 e; J# [0 o/ l1 D
  48. $i = $redis->srandmember('s1');echo $i;
    ' U# ]3 T, s- l
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false% @6 n3 k2 \( v( B" r7 z+ B
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    5 A* R; ^3 K% i  l% H; C+ r& ^

  51. 1 o7 P4 t( G$ q4 {  c% @' T- @0 M
  52. zadd key 2 value 有序集合: F7 X( u6 T; [+ \3 W9 C& N
  53. zadd y1 1 zhangsan;0 n1 c3 o* Q2 Q% P  d
  54. zadd y1 3 lisi;" {; V, Z4 ^- O# G5 i8 H
  55. zadd y1 2 wangwu;! t* Q4 M5 [3 X* z# [
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi3 t. H7 \: s2 j) e& H% u
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);4 p9 P" a' `) U6 m$ T7 i& A
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    ! \2 ^3 u" g7 d) n# k# q6 ^
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    ' H3 P2 b4 R5 I4 {' F7 z
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的8 l) V/ _7 {7 r$ c8 U
  61. 无序就scard,有序就zcard,有z没有s
      X: e2 E3 B3 u; w( x2 s3 G
  62. sInterStore
    3 O5 f5 t! j4 \
  63. 求交集并将交集保存到output的集合- B$ o8 x+ r6 l& |1 t# D7 ^  _
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ) F5 v% t$ D; e9 j- R; }
  65. , l5 f$ z) |1 Q1 m& ^
  66. Hash操作
    / G  @9 I$ ^: ]& I, v4 _" l
  67. hSet
    $ t  X; @' J; b
  68. $redis->hSet('h', 'key1', 'hello');
    ! V5 K( Q: U) b; T6 q2 J% x6 e
  69. 向名称为h的hash中添加元素key1—>hello" ^2 ~- {1 V2 u: P

  70. 6 v' k! T2 x- j5 {& q
  71. hGet
    7 z# {: D/ \, l) v- j
  72. $redis->hGet('h', 'key1');
    ) p, J( s  X* K8 W7 p$ k
  73. 返回名称为h的hash中key1对应的value(hello)2 u& M+ W; @2 G$ l% y, O+ N( Z/ ]

  74. + g' n8 O) B0 ?) U! J5 j0 }
  75. hLen
    3 ^, }2 y$ V) U: y2 m
  76. $redis->hLen('h');
    . y' ^; m  s& p' Q
  77. 返回名称为h的hash中元素个数( s; h5 B5 v/ P4 d
  78. " h/ J( ?) @1 E4 t% U* C
  79. hDel
    3 `& p2 U6 k, m
  80. $redis->hDel('h', 'key1');' [( A( F2 A+ O! F+ `2 J7 h
  81. 删除名称为h的hash中键为key1的域9 V0 O5 ?4 J  t

  82. " K9 w0 t" ?4 I
  83. hKeys
    2 x! T6 p8 Y5 I0 T! U7 U
  84. $redis->hKeys('h');
    ( D, |" H- V, l- u+ E- d
  85. 返回名称为key的hash中所有键: i! M* p( k" O% L3 J

  86. 0 d( `% r4 H3 h. _
  87. hVals
    $ p! `  T- _* V# _' ~. g  V# U
  88. $redis->hVals('h')8 g# D/ q2 L& ~( O3 n4 M# H) X7 ^
  89. 返回名称为h的hash中所有键对应的value& s2 D( Z( `. ]( b
  90. # p& b. q- W- ^4 B3 B  V0 F
  91. hGetAll
    " _, R$ R6 U: y5 Y4 R
  92. $redis->hGetAll('h');5 F- A3 y# t  ]5 p
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    : s: j/ C( R" C4 U
  94. - H, Q" V! Y/ F+ I
  95. hExists9 G$ y, q# F$ [2 _
  96. $redis->hExists('h', 'a');
    % m( M2 u5 w+ _. q' J) N, b
  97. 名称为h的hash中是否存在键名字为a的域' h1 S: j! l- T9 c  S7 F
  98. + T- @& s. r6 W
  99. hIncrBy
    $ j; ?5 ^% Y4 n: U( H0 E! X3 r/ w: y
  100. $redis->hIncrBy('h', 'x', 2);
    0 e; ?/ ^% ~0 U, z' a2 \7 y8 m- p
  101. 将名称为h的hash中x的value增加2
    ' I2 ?: l  u1 O2 R

  102. 7 M5 Y+ F& W9 n4 e0 Z
  103. hMset9 B; g1 P2 A$ g( X, [/ \4 |  o' r
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    - ]/ A9 K# w) N. n2 u! m! H  l/ O/ j
  105. 向名称为key的hash中批量添加元素
    - g! v$ d8 m; a2 ?" K
  106. 4 k' b- k  J' v: t- @
  107. hMGet
    ! B: I0 u: g5 E6 w* _; Y
  108. $redis->hmGet('h', array('field1', 'field2'));  [- @+ r# k( M& b% x0 }' O" ~/ `
  109. 返回名称为h的hash中field1,field2对应的value
    , D. ~. r4 ^6 \2 Y

  110. % o+ j, z( e" B/ E* H% Z
  111. redis 操作相关
    8 \9 v# c8 t& t* i
  112. flushDB/ N4 e3 y) _. X$ i6 e0 N+ F
  113. 清空当前数据库. w+ w" W! I# \' W6 {
  114. % N9 \/ V% U, ~1 N
  115. flushAll' x$ P3 N5 B% p. a4 f4 a
  116. 清空所有数据库# b; c3 e/ H7 X0 H

  117. 0 y9 v4 H1 I3 W8 P& n7 V+ ^7 C$ f) W$ g
  118. randomKey- \* t" w8 O* `3 ^- d
  119. 随机返回key空间的一个key! n, N3 h3 i! u  @1 }/ y* T
  120. $key = $redis->randomKey();
    6 I, s* l+ }5 Z7 @8 c, L

  121. 6 i0 d" m1 W" X# l+ W( L
  122. select
    $ n/ P  ^$ h. q# F, O. T( U& Y
  123. 选择一个数据库
    & [  M* g8 M2 b- i6 K
  124. move2 M4 u3 q7 \! v0 b# S1 b
  125. 转移一个key到另外一个数据库8 _8 K' h; X3 P. D8 M
  126. $redis->select(0); // switch to DB 0
    * Y& q0 u7 E" ~4 Y  I
  127. $redis->set('x', '42'); // write 42 to x; R" f. {8 w8 @6 g- c) a
  128. $redis->move('x', 1); // move to DB 1! Q& q' y* k& A7 ]  G* t9 ]
  129. $redis->select(1); // switch to DB 1, e6 c5 O% x; P
  130. $redis->get('x'); // will return 42* c  x  N& u. i; T
  131. ! s" `5 B% H( G& s' Q
  132. rename, renameKey1 j& `$ H* j! r$ K& W3 s
  133. 给key重命名4 W1 U& f% K% G' ^: j: V: {* l! L
  134. $redis->set('x', '42');, z7 R2 r- w$ }( r
  135. $redis->rename('x', 'y');# A  K! ^& o: {5 J7 w. m  P1 d, a
  136. $redis->get('y'); // → 428 U+ e" r  k+ ?5 {6 h9 I
  137. $redis->get('x'); // → `FALSE`
    7 K1 O6 S/ y6 `+ z) u
  138. 4 X3 V1 {+ Q% A( @7 q- p" o
  139. renameNx+ m, o9 _6 c4 b+ Z* o) u
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功. a; Q% `8 i" q8 a1 f' ~

  141. % F& ]) L3 G3 J; G" X
  142. setTimeout, expire
    9 Z* `& \! V& }7 K( H& e; ?
  143. 设定一个key的活动时间(s)' q' E1 r. n2 c2 E
  144. $redis->setTimeout('x', 3);
    ) [6 J1 K% p  }

  145. 3 x& _7 L3 y' R/ P8 h
  146. expireAt+ u$ }  G* [) P
  147. key存活到一个unix时间戳时间2 v) q& w1 k* n5 Q% I5 g  y
  148. $redis->expireAt('x', time() + 3);+ l/ U7 k: z* B% V1 o- ~

  149. ! C5 s$ a* i- Q* \
  150. keys, getKeys
    7 n0 b+ m( B$ I. i
  151. 返回满足给定pattern的所有key
    9 B% c- m. X6 f: x% P5 p
  152. $keyWithUserPrefix = $redis->keys('user*');
    , N, C/ \  ^* q. y

  153. ' F2 z( n1 B' W8 Z( {
  154. dbSize
    1 s( O# l3 B2 y" i
  155. 查看现在数据库有多少key
      [. a; R/ x2 e* k3 w
  156. $count = $redis->dbSize();
    7 G7 G. Z9 Y% H1 ~
  157. 1 T3 E( U8 x! a7 p6 ~9 h" T  r
  158. auth
    7 ?. y* u# _, H
  159. 密码认证8 ~6 u* [; i) Y8 @5 H  f! D! p, k
  160. $redis->auth('foobared');- f0 @. ~+ t4 j" D7 j2 t) T- D

  161. 5 D2 |0 d. t) q/ ]+ B1 w* k
  162. bgrewriteaof$ b7 Y2 f/ [7 [1 Q3 e
  163. 使用aof来进行数据库持久化+ [' b( Y9 t5 x( Y0 Z
  164. $redis->bgrewriteaof();) j' I0 k: h0 M. F0 T, `, b
  165. 0 V0 }  {* W% \) m" i: O
  166. slaveof  E, B  X8 o$ M5 i  K3 ]
  167. 选择从服务器0 O3 A6 o, a: c/ y& p: @; H
  168. $redis->slaveof('10.0.1.7', 6379);% R2 Z7 k$ Z  h& B7 y( D

  169. # Z! u7 o2 t* \, n' n
  170. save
    : l0 p6 X0 J/ E$ D' B
  171. 将数据同步保存到磁盘/ t+ B: c0 A7 a& i; Q$ p# C
  172. ( l, n# M* {6 e
  173. bgsave
    - k! E& I* \8 K  J# a" J
  174. 将数据异步保存到磁盘
    8 b: _4 G( v3 K: \

  175. 2 [/ A, F) A+ X" L' C! J% ]
  176. lastSave
    6 z9 h5 [: W7 l* L' }7 f
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    ' C, D7 A/ j3 m0 q
  178. 4 h- d1 {; v: q& X+ L" E
  179. info
    * u$ B9 t! I1 ]' N/ e
  180. 返回redis的版本信息等详情$ c, \% v$ C: V( m5 S! t: M) h

  181.   p2 l- H1 a1 W( X2 w9 V' L
  182. Redis::__construct构造函数" L% \9 o9 \6 m  y
  183. $redis = new Redis();
    8 y9 l' x( M+ j3 k* c, S
  184. 0 B- z# X3 [5 f7 t" X9 ]8 F9 O
  185. connect, open 链接redis服务6 D( R* W7 w5 I, k6 _
  186. 参数- i7 }* Q7 |% O+ b# s% V6 D7 s
  187. host: string,服务地址& p/ l  s. C  R2 D# z7 o
  188. port: int,端口号
    9 X+ [# L, |- A
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    3 U! t" r% Y/ S+ I, F
  190. 注: 在redis.conf中也有时间,默认为3004 J% [" P* @. e3 `) c& ?, D
  191. 2 _2 W$ {) b- ?9 w; k0 U( I, X
  192. pconnect, popen 不会主动关闭的链接
    4 y7 r$ n+ H' H
  193. 参考上面% e2 e! G& \* v/ X: @

  194. 0 V4 |; v$ c% g
  195. setOption 设置redis模式( o. f2 R6 C# l2 F

  196.   C& y5 A  c8 P6 D. u8 R9 z
  197. getOption 查看redis设置的模式9 @) |, Q9 L2 X

  198. % ~) W$ O- G* y3 w7 L$ @
  199. ping 查看连接状态# `6 S' w. f  B' z4 Q
  200. # H' C6 q9 i0 d! \2 R& ~
  201. get 得到某个key的值(string值)7 t7 J7 l/ Q$ \7 G
  202. 如果该key不存在,return false
    , R# \5 B$ v9 j' x$ Y8 X" _  v
  203. $ b: P) a" t) F8 s$ O3 P
  204. set 写入key 和 value(string值)
    $ L* R1 W7 b' o: G; {* y% {0 u
  205. 如果写入成功,return ture
    ; K0 Q# P7 ]$ a# ^6 R5 v) D

  206. # \! S+ F( Z; M# b
  207. setex 带生存时间的写入值" U* s& D5 Y( {6 ^/ F- h) r
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.1 J& t4 F6 R6 k5 Q% y! x+ I

  209. ( p) O$ o; V( t/ A5 F8 ~/ d
  210. setnx 判断是否重复的,写入值. I8 b, s" |- g
  211. $redis->setnx('key', 'value');
    * @8 k! C9 v7 J4 `7 l1 v
  212. $redis->setnx('key', 'value');. o/ z2 H1 \3 W/ G! T1 V0 U( g

  213. ; m' S+ f" X; P; C
  214. delete  删除指定key的值
    * ]( ]6 g% W' r7 g
  215. 返回已经删除key的个数(长整数)
    ' v$ N4 M9 I: ?8 @3 H' d
  216. $redis->delete('key1', 'key2');
    % D- V8 o7 P. O. A- D, |
  217. $redis->delete(array('key3', 'key4', 'key5'));
    + N& T. G# o3 S6 M1 J) O
  218. . G* K$ G& r+ B' f& m* ^$ y- A1 h" t
  219. ttl
    ) _1 g* y. g, ]$ b7 G
  220. 得到一个key的生存时间+ a% I0 ~- X* m/ y; Q1 \  J

  221. 0 Q1 h3 [, _% T0 L/ _6 N" z% M
  222. persist
    / K9 P- @% q) q& @6 k: J' h
  223. 移除生存时间到期的key8 U) m' t$ D& B! A0 J
  224. 如果key到期 true 如果不到期 false, g: @4 |: R( v# H: D

  225. + V" A# H8 M" W% Z9 e* N* T
  226. mset (redis版本1.1以上才可以用)0 `& e8 V; N$ o, Z/ b9 {( V+ k
  227. 同时给多个key赋值4 O; @) W* f" m* b% [; N
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));$ h, q4 o+ K, l+ W# }

  229. , I$ A! f8 h4 Q: m9 S2 F
  230. 2 W  U: f0 x. m; b0 l$ Z
  231. ' v/ @) Z" O6 [. `! m# T
  232. multi, exec, discard
    5 |7 I# z/ T0 ?: W
  233. 进入或者退出事务模式
    1 ]& j$ {' \/ W; l+ @* |% c2 ^
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    % i. E, F( F- o0 _) d
  235. Redis::MULTI:将多个操作当成一个事务执行: N3 ^0 j' q5 p( W+ d) ^1 F7 }
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    - ?1 h( ]/ u- s' _/ ?& h( |
  237. discard:删除一个事务
    * i* T. ~. @& q: e( \' w5 j$ V
  238. 返回值( P) E' E" u( \0 y
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    9 ]6 ~1 [9 h# W+ d1 ^2 c" p

  240. ( {  o: F; ^, y
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    7 [& |3 c2 F" B2 z9 V
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    9 S8 O/ \( y, a3 x
  243. unwatch  取消被这个程序监测的所有key
    $ }3 A' w2 y5 _5 {" s4 ]) t
  244. 参数,一对key的列表
    ! ?8 H7 q* `& |- u  g$ _5 N
  245. $redis->watch('x');
    8 Y# F. J! N' b2 O0 P  [

  246. - D; V" X# Q+ r/ O
  247. $ret = $redis->multi() ->incr('x') ->exec();
    + H2 k+ }0 T+ D9 V) R/ G

  248. 8 i6 }% F6 Q, p0 W
  249. ; u9 p) v5 Q4 \3 b$ `6 R
  250. subscribe *, ~- M1 G0 ^9 U% o2 t( [" K* v
  251. 方法回调。注意,该方法可能在未来里发生改变4 U$ t1 X/ A, p' B' i- W8 K) R

  252. % t! ^7 ^7 q- l' T3 z' b0 W
  253. publish *
      j6 ?! n3 j+ K1 J! n5 L
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    9 ~$ c6 l. t! ]: _5 ]# C- B. b

  255. & s4 V8 J! V3 e
  256. exists
    , [2 V" K( g, Y6 {/ |8 w2 Z' \% v
  257. 判断key是否存在。存在 true 不在 false6 R$ [: ^  N9 l- ~% p3 [

  258. 0 q/ I# {- z8 k, C
  259. incr, incrBy+ ?& O/ U+ z( A
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值' W5 N' o+ h6 Y$ U* z, x
  261. $redis->incr('key1');- h: B7 O: Y! x
  262. $redis->incrBy('key1', 10);
    - Q3 h; _6 G: k# L$ d  F) I
  263. 5 ?+ p  L& X5 x% ~0 l9 d" P% C4 B
  264. decr, decrBy
    1 z' L8 w6 S4 Y% H6 H4 U
  265. 做减法,使用方法同incr
    4 D1 r8 m1 t9 `

  266. 9 E! K! ~! ~& p: V0 v7 f
  267. getMultiple
    + ?6 u7 L! X4 ^% q! ^& R
  268. 传参  R8 B; N) I! j3 e7 e: \* ]( D/ v
  269. 由key组成的数组. I, A9 X: Z  P
  270. 返回参数
    / m7 F8 n. ?* N  Z+ ~
  271. 如果key存在返回value,不存在返回false! x! F7 t2 V6 K& d
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    2 Z# ^8 _" D# @9 r" s2 D, N. ?
  273. $redis->lRem('key1', 'A', 2);" f& H) z/ ^2 M3 O# L
  274. $redis->lRange('key1', 0, -1);
    . Q/ Z' A) E7 L$ U) V' t0 H
  275. ( A9 O; m$ I+ ], ^; z
  276. list相关操作
    1 d. S' v- {) N7 Y* \' R, g
  277. lPush8 B& G) M4 w$ W. X
  278. $redis->lPush(key, value);% `- J# ]0 t  A6 {5 u- q
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    6 }: K) s/ ]; y- B
  280. + d# h: Q3 U5 n6 ^. y
  281. rPush
      d( s1 n$ \  j1 b8 w9 X
  282. $redis->rPush(key, value);
    4 X) w+ B6 f# j
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    3 \) Y( Q/ Y( _$ V. @8 W
  284. ; ^- {3 Y. M0 @# Y# {( e* n
  285. lPushx/rPushx
    - L8 }& ?/ ?4 E- S2 @. H
  286. $redis->lPushx(key, value);7 a( S. |  t  `" U: T/ Q: j
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    + d% z" U3 O% }6 ]

  288. / w! x/ u# v. K' T- j6 l
  289. lPop/rPop
    . S1 I& v% ^9 p- f
  290. $redis->lPop('key');
    - v( e. S# z# D1 e, b
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    . h+ f* |- C% S  Z6 `# U' g0 f
  292. - ?6 W1 K1 |2 Z' r
  293. blPop/brPop/ y, m/ G9 E0 l
  294. $redis->blPop('key1', 'key2', 10);. E+ b  x9 D  \& k2 \2 R
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作3 i9 \5 }: B# C- P9 M% t* I7 c
  296. 0 L1 _5 [( L1 f* Q" i8 J. r5 ?
  297. lSize1 V1 k5 e1 r$ o& m% F: ]  a( _
  298. $redis->lSize('key');
    2 }* d" L8 Y$ L/ o$ s
  299. 返回名称为key的list有多少个元素, Z3 J* x9 ?: S1 R3 m% V

  300. 5 S& Y, A- U" ]  W9 j
  301. lIndex, lGet1 k$ t' ]! F  ^- f$ P: o' L. \  l
  302. $redis->lGet('key', 0);$ x7 e" }8 ^! A
  303. 返回名称为key的list中index位置的元素8 S% v8 s4 Q) ?9 U4 x

  304. & t7 b7 p+ m+ f0 @0 T
  305. lSet+ a( t& y( f5 _4 {2 @0 a
  306. $redis->lSet('key', 0, 'X');& ]5 w0 S6 c* t$ V  L$ [1 N
  307. 给名称为key的list中index位置的元素赋值为value  z" {6 T8 a, i+ u

  308. * F9 |1 U( t/ G9 Y& Y. j
  309. lRange, lGetRange
    , c' I9 f% K5 K9 c7 j! o
  310. $redis->lRange('key1', 0, -1);
    % q- C9 p& m2 R2 f/ t% n
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    3 \' U/ y5 S3 s" w9 e, e, A& [

  312. 7 j7 z: T" J6 l0 n4 g( P
  313. lTrim, listTrim* ?8 A) l. z1 R5 X
  314. $redis->lTrim('key', start, end);1 y$ N5 I! G5 m' c
  315. 截取名称为key的list,保留start至end之间的元素
    0 p& b0 j* p0 b% v/ Y# Z( z* P1 C
  316. % l' W  A- Z+ x5 M6 c- w: P/ W" V
  317. lRem, lRemove1 T/ T. l9 e! P* R) w" w9 f
  318. $redis->lRem('key', 'A', 2);
    , B* m" p( F8 |) s
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    $ s/ ^3 {* d: k6 J7 `

  320. 4 z. Y4 m# f+ l  t% g
  321. lInsert* Z7 F& H  w* D$ `
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -12 R# v  f# C& I+ @
  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 N* K% J* T5 C7 }0 T. y5 |, \
  324. $redis->lRange('key1', 0, -1);
    : x8 t  ]; L( f6 `
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    : K* {2 Q& k/ q5 I) r
  326. $redis->lRange('key1', 0, -1);2 I5 D3 ]& z) c% ~( a& u
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    : W) _3 d( Y, Q8 p

  328. 6 w/ L, \  t; A9 t; {
  329. rpoplpush
    ) Q9 |& E8 d: _
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部$ P4 ~* g! V$ z. a  f8 r- t: f
  331. $redis->delete('x', 'y');
    ! u" H. ]% i! j7 f2 Z8 Z5 d
  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'));% l4 T; C$ p/ {0 R4 ^' f' ^
  333. var_dump($redis->lRange('x', 0, -1));
    0 k* t, p6 R! n; K& m/ i; Z
  334. var_dump($redis->lRange('y', 0, -1)); 3 n! V' z& |8 H/ m/ |

  335. : @0 M- {. t% b: [
  336. string(3) "abc"
    7 K" N6 c9 n+ m0 J8 `& k
  337. array(1) { [0]=> string(3) "def" }
    8 ^1 ^' B/ n6 R& B# I" J
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }4 ^% q! O% `4 E1 a
  339. . c$ G" w: C$ o9 `$ `3 F
  340. SET操作相关
    0 n6 e' m  |; A, k! v  x0 M+ x
  341. sAdd
    1 c. w# W5 h  N! Z4 B7 O
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false) O# ~7 {* o/ o6 H* [- z
  343. $redis->sAdd(key , value);& X4 k$ b* p3 H% M8 ?; g

  344. 0 j$ ^8 I1 o6 ]7 r5 i3 X
  345. sRem, sRemove# c8 w. S) @" i6 B# p3 m6 K' J' Q
  346. 删除名称为key的set中的元素value6 S. U# T3 z, y% u1 ?( k$ b8 [
  347. $redis->sAdd('key1' , 'set1');/ F7 ^6 h* q4 C0 @$ v
  348. $redis->sAdd('key1' , 'set2');/ D, ?  s3 g' _' j) I, x* G
  349. $redis->sAdd('key1' , 'set3');
    # H( O! e0 U8 j9 Z/ i" g, J' [
  350. $redis->sRem('key1', 'set2');) @5 O# K5 d* C9 ~* H
  351. ! {  ]9 R2 h$ h( [
  352. sMove
    * @) D/ b) z  x2 C8 N
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    - I: Y; i+ x* `" q$ o# m
  354. $redis->sMove(seckey, dstkey, value);
    , x! R+ |  R7 y3 }: J

  355. + l. {* G1 p( }, z- v4 [8 m
  356. sIsMember, sContains
    1 e2 E- f4 W" u6 c9 y! l4 _: d
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false7 X; z5 I) l4 k* L
  358. $redis->sIsMember(key, value);
    - ]) n+ ]( Z- W7 |
  359. # J  q) m: u; l' ^7 T1 v, ?) `
  360. sCard, sSize
    & P+ k4 n) x. j1 P$ q
  361. 返回名称为key的set的元素个数- T2 N; h! ]9 f2 ]: K
  362. $ `$ d3 k$ F$ a2 u6 T- j; w, j
  363. sPop/ G% v. w3 k4 ~& F% ?! @* h& \1 f; u
  364. 随机返回并删除名称为key的set中一个元素
    2 ?; c) X5 {0 E7 M; v
  365. 2 i/ _+ W; `, N- y* W6 h5 ?
  366. sRandMember
    : o; o1 C8 h6 k6 S2 Y% P
  367. 随机返回名称为key的set中一个元素,不删除
    8 Q" o: ^: E  B
  368. / F8 q1 n. {. s
  369. sInter
    " r/ }$ i) B) S4 b8 V$ d( K
  370. 求交集
    6 C9 _9 o" y7 V' t# _- E  E% _
  371. . `/ C9 R6 A2 U+ B; u* O7 Z8 h
  372. sInterStore7 Q' o' Q8 ^# O
  373. 求交集并将交集保存到output的集合
    0 f+ A  i2 ]8 k# A, }7 K; U" F  Q
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3'), c( K2 l2 l& O9 ^+ U8 p
  375. : n! j$ A8 j: g! R, C7 H
  376. sUnion, t# r8 q$ n' F7 J+ N
  377. 求并集( t1 M5 O$ n1 d2 k
  378. $redis->sUnion('s0', 's1', 's2');
    # ?) q1 u! P7 P$ _+ o" X
  379. s0,s1,s2 同时求并集1 L+ z6 x: w& o0 d# D! Q! L& Y

  380. " K- E8 }3 i5 O. X3 W% t6 [
  381. sUnionStore8 ]7 c. m. g9 f
  382. 求并集并将并集保存到output的集合
    7 l# K* u" C5 D+ u9 U
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');0 l" {) N" a7 m- k

  384. ' p5 r5 w/ J, T" ^8 }
  385. sDiff
    " @5 B0 G9 t8 ~/ ?
  386. 求差集
    $ u% o7 B- o% p" K. H0 {4 Q2 u

  387. 8 J7 @6 e* k# ~/ _( F! d% _
  388. sDiffStore; C, F% q, y- `4 a3 ?
  389. 求差集并将差集保存到output的集合
    4 G( d3 {; c! _0 A3 w' J% i: q" p

  390. : Z. s9 Q$ O! C+ }+ i8 k
  391. sMembers, sGetMembers
    % x9 j+ S& \; o" Q" o9 I
  392. 返回名称为key的set的所有元素
    7 i+ N' B! Y/ G' _6 q

  393. ' p' @! @1 N. d# G* q3 {7 {1 X7 g+ u
  394. sort
    7 H- R; |! C# B( N
  395. 排序,分页等
    % r& C: m5 N, t4 ]
  396. 参数
    0 n0 L: h0 C& K/ w  A* k& K- z- K
  397. 'by' => 'some_pattern_*',
    4 h$ b+ h) y. l, g. _% J! Y
  398. 'limit' => array(0, 1),5 b& U' A/ z! y/ G9 H
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    . [( ~' d6 m& g3 I  H1 I
  400. 'sort' => 'asc' or 'desc',
    8 G2 m4 E, O4 R/ y
  401. 'alpha' => TRUE,9 G) b0 X, G7 h9 i" ]2 `. N8 o
  402. 'store' => 'external-key'  J* v! _7 d* N$ J1 H
  403. 例子
    6 }, z1 s* l1 i  d! T! J" F
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);  H8 z# Y2 T- U
  405. var_dump($redis->sort('s')); // 1,2,3,4,5$ z' H* @  p# q2 k. A/ r# e
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    ; ?( V- y0 K0 M" ]
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)59 f1 ^( F4 ^) a: U5 p: G! G# X. g
  408. 6 O( h) |; r/ p1 D; H
  409. string命令: m" G% @) F0 `7 ?
  410. getSet* _; _* D4 u) d5 M
  411. 返回原来key中的值,并将value写入key% A& ?" i& k% ~
  412. $redis->set('x', '42');* D" m  J: B* {
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'% p& _: O) x+ ~6 w' {' \
  414. $newValue = $redis->get('x')' // return 'lol'. q) \9 D( r$ s7 V# Y' Q

  415.   K1 S0 l5 q" c6 N, U) m/ _8 S
  416. append# |; D: g" b: j) [- F0 S( {
  417. string,名称为key的string的值在后面加上value
    0 E4 U4 v' l6 }/ A
  418. $redis->set('key', 'value1');/ f" s) g: }/ t- i5 V& V+ Y
  419. $redis->append('key', 'value2');' ^; J8 `- o" E7 S! o. C" I4 h
  420. $redis->get('key');
    ' o; G  d- t3 B* ^& q
  421. 2 X) x: m8 |2 ^( v' F4 A+ d
  422. getRange (方法不存在)
    8 {4 v. @. E" |
  423. 返回名称为key的string中start至end之间的字符, x7 }$ i- Z! B* w5 s; V  ~
  424. $redis->set('key', 'string value');
    0 _6 d: ?/ ?- ^" T( [1 i' D
  425. $redis->getRange('key', 0, 5);0 P, u$ t+ g8 {( q3 ^& \
  426. $redis->getRange('key', -5, -1);. d; ]. r& ~# E
  427. 8 E' O6 b3 D% D$ t6 W# _7 d
  428. setRange (方法不存在)
    1 U) u( g1 A* {
  429. 改变key的string中start至end之间的字符为value
    ) O5 {2 \. X1 _9 S& A* f. ?
  430. $redis->set('key', 'Hello world');
    . i. o' K& |' a
  431. $redis->setRange('key', 6, "redis");- Z& j' y- d2 f& c
  432. $redis->get('key');
    : y  c$ b3 ~9 ?  @1 S$ k6 l# P7 j0 \
  433. ( Z1 ^5 v& v9 {
  434. strlen0 `- N8 d; M8 o$ y0 b, j
  435. 得到key的string的长度
    : m2 f' q$ K6 I& [( O" n
  436. $redis->strlen('key');
    - \4 s" n& A# v6 ]$ A  x
  437. + j. |3 a# ]; T0 P; t
  438. getBit/setBit
    ) c# X% j, x4 W- k
  439. 返回2进制信息
    . m) {# E' k" V) N/ M! K4 f0 x

  440. 9 T6 C/ e+ h. o" N  A4 n
  441. zset(sorted set)操作相关7 a/ N( I# c9 O9 l: u" o
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。# }: p( |! {  e; b# [
  443. $redis->zAdd('key', 1, 'val1');
    4 Y  u+ d( N# x7 P2 N$ E- [8 T
  444. $redis->zAdd('key', 0, 'val0');& z0 A/ s% q- N* x6 s% e
  445. $redis->zAdd('key', 5, 'val5');8 `4 O1 Y+ z# S" G( m7 ^
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    " o3 h: ^; E, g3 ?% R. v
  447. 3 \+ q% L, I0 F+ D5 k
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    6 a0 N! n# D" M, ]
  449. $redis->zAdd('key1', 0, 'val0');
    1 \8 t% J- V5 |: F5 p
  450. $redis->zAdd('key1', 2, 'val2');
    & A7 [2 ?" n* Q' ?$ {, t- F. y
  451. $redis->zAdd('key1', 10, 'val10');1 W( F7 N) S6 x7 z* c* L4 b
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    & @( ~" O2 z3 b4 ^
  453. . o+ D1 F  s& m6 Y7 J, Q2 `
  454. zDelete, zRem
    0 q( `0 I7 Y5 }2 ]0 D) s# K" o
  455. zRem(key, member) :删除名称为key的zset中的元素member
    2 w" c+ H) \0 l) J9 q- j
  456. $redis->zAdd('key', 0, 'val0');! l7 K( d" `6 }/ L
  457. $redis->zAdd('key', 2, 'val2');
    6 x" E& h/ G5 j4 V/ s0 N! t# L! m
  458. $redis->zAdd('key', 10, 'val10');
    " g7 h4 @, f% ?+ i* L- T: [- L, i
  459. $redis->zDelete('key', 'val2');6 t% M' }% a9 H( G; X$ ]( |7 T6 B
  460. $redis->zRange('key', 0, -1);
    & N$ C. f8 V. u9 p  w

  461. ) u4 R& h7 L, H& \7 ?
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    0 F8 U' E6 g4 d) b+ E7 [! O
  463. $redis->zAdd('key', 0, 'val0');
    & V$ X5 I' B2 M" l7 k& J
  464. $redis->zAdd('key', 2, 'val2');
    / ^3 X* g3 y4 h/ @5 N2 y' H0 j
  465. $redis->zAdd('key', 10, 'val10');
    , m- m6 R+ {" v- N; @5 B5 w' w
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    ( a8 l" n" o, Z- _4 L

  467. 5 V* E; a2 p$ B7 r$ W8 y$ r
  468. zRangeByScore, zRevRangeByScore6 q) e1 g. O5 Y0 ?# S2 o
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));5 ^) O' d$ h7 Q/ G
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
      E3 A$ {9 K5 e/ T
  471. # W/ V; l; R8 y' s
  472. zCount
    2 d' Q) T+ u0 u% ~5 ]4 D
  473. $redis->zCount(key, star, end);8 I% \7 i+ E1 i
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    & b" S' Y: A4 ^  e3 ]7 N

  475. 7 n- T1 L1 f. A! J* Z( w+ d
  476. zRemRangeByScore, zDeleteRangeByScore2 x( Z( N' r3 l0 R! G0 k* s& ^# d
  477. $redis->zRemRangeByScore('key', star, end);
    " v3 L6 X; l4 Y1 g3 F
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    4 G$ l9 B. g' Y7 b7 S# z+ w

  479. 1 y" Z9 J# ?* }7 u3 B
  480. zSize, zCard
    / x) y. F7 r; M# M- L1 X+ L
  481. 返回名称为key的zset的所有元素的个数
    7 Y! R7 P$ R# Z0 q$ m# D

  482. " {  ?& c8 I' O) |; s
  483. zScore% T$ d4 a; o+ E! O9 @: U0 g& X$ p0 {
  484. $redis->zScore(key, val2);! F9 F/ c/ q) z8 A
  485. 返回名称为key的zset中元素val2的score$ a$ k, c( u. Z
  486. $ q& ^# }) A% ]! n* z
  487. zRank, zRevRank) c& E6 k0 e' E6 F
  488. $redis->zRevRank(key, val);2 H! [' Q( M& L! J8 \  B4 b. \
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序& n3 d& N+ b% p; ?5 \9 E# E% f

  490. 9 N7 a4 Q3 O9 |4 ]3 @2 c
  491. zIncrBy
    1 ~, P% T& |3 F) I
  492. $redis->zIncrBy('key', increment, 'member');
    8 m. ]: B$ }' J  D$ I# _- k5 q! D# F, q
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment4 Z- L% ^4 r7 n1 _& z( C

  494. 2 `0 ]! L, L  m- n
  495. zUnion/zInter6 z# N, U1 Q1 Y. r- y4 _% W
  496. 参数& M, w$ B% ~2 X6 O2 Q, c
  497. keyOutput
    1 s4 E% _  t3 {' Q7 S* f
  498. arrayZSetKeys
    " `. D6 B" s/ ]2 V
  499. arrayWeights9 f& W  d6 Z3 F& U" s0 P9 P
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion., H* ^+ H& c3 d# d+ G
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    : o" m/ N& A8 t
复制代码
6 e2 K: s+ p' B7 w
1 e3 ]3 z; G9 _8 X7 K
: P9 ?9 |& t' @+ E
5 F: ]9 P. ^; x% R0 E+ M) @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();   }, q7 v1 ^# w1 L$ v) J
  2. //连接redis服务器 3 Y# \' r* d4 M9 U. k0 P+ w
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-9 08:38 , Processed in 0.141835 second(s), 20 queries .

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