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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php" K# b7 F0 R: E! l  o- H
  2. $redis = new Redis();  
    , e+ h% d# l3 m
  3. $redis->connect('127.0.0.1', 6379);//serverip port4 ]* Q2 w4 l$ o: q0 ?) l+ b5 \% L; e
  4. $redis->auth('mypassword');//my redis password 6 U  b  C* }7 E! m: w
  5. $redis ->set( "test" , "Hello World");  
    1 C# v4 z# P+ Z0 M- I
  6. echo $redis ->get( "test");
    & Z) R5 e0 \6 R/ C3 j& X2 K) c- V3 ?
复制代码
php操作redis函数封装
  1. /**- [8 J  G# z7 }* g% @
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    6 t( r$ x6 I% P1 b  ^2 o
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi, e$ Z9 [* \5 K4 @1 `2 o
  4. */% P3 w+ `: C' |6 @" Z+ S4 j9 C
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    1 ~+ I- M! |1 u0 V  \9 l/ E
  6.     if(!$key||!$value) return false;
    + O; u/ F5 G6 \
  7.     $host = $host?$host:getenv('REDIS_HOST');
    ' X* f. N/ E: @, |: j
  8.     $port = $port?$port:getenv('REDIS_PORT');# P7 u% T: h8 b
  9.     $redis = new Redis();  m5 ~' T) r# @% e
  10.     $redis->connect($host, $port);
    % {4 Z2 B6 ?. c( _# c5 s
  11.     $value = is_array($value)?json_encode($value):$value;
    3 s9 V0 o: w' u3 O+ q
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    - E% M* f( g2 l/ \" `" S1 k
  13. }" h) Q0 A% g/ N9 V* j- B
  14. /**' S8 X8 w5 Z- {0 `! R- m) J) ]. R, p
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    / i1 x9 ^2 `: Z( P' y
  16. */
    " Q. |2 y* @0 f: R* Y& a' o  p
  17. function RedisGet($key,$host='',$port=''){) K  Q+ F5 k2 T+ H7 V' U
  18.     $redis = new Redis();8 _: y) \- ?- o
  19.     $host = $host?$host:getenv('REDIS_HOST');
    4 F# T( c: k- s5 h
  20.     $port = $port?$port:getenv('REDIS_PORT');
    6 }0 U5 S% d. T* e' T5 E. u
  21.     $redis->connect($host, $port);- S7 ~1 B6 }" F# G) w
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);* j" e  z# M$ _8 V/ W  n
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);9 z( }0 |# m" V% y* c* i( |0 z# L. K
  24. }$ F. F+ ?2 h" }; k* z# m
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
! E6 G+ r8 t; g* I7 @
  1. setex 带生存时间的写入值) K, `9 y6 X$ K- |
  2. $redis->setex('key', 3600, 'value'); 4 T2 Z  g# Q  U3 N+ Q# ^
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回15 ]# T; R) U) @, W
  4. $redis->setnx('key', 'value');
    ) z  t; `9 _, S% l: S4 p" t
  5. 返回已经删除key6 U0 W" E9 H- `$ }9 F7 ]0 b0 Y4 q5 U  i
  6. $redis->delete('key1'); 成功返回1失败返回0
    6 n/ V6 k1 P& S( q" Y. z
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    ( r1 S- Y7 `2 Z; T. r' t1 |
  8. 查询生存时间8 B. l  w4 H5 ]: a; E5 {  |
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)0 T- D1 k* n0 n. R2 \; R
  10. 同时给多个key赋值,同时设置key0和key1
    ) h  j" h% d8 K
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    6 g6 ]; _" V( B5 _% ]8 d6 A
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    1 b: o- Q1 H- a, |2 s
  13. $redis->incr('key1');
    ' |3 c! A9 ~/ A2 f! M3 I
  14. $redis->incrBy('key1', 10);
    7 a0 ~1 i) h: H4 Y
  15. 减法跟加法一样. l  r' P3 Z+ y1 e, n0 B  B
  16. $redis->decr("key1"); 减少1- y; R/ q$ B# r8 V  ~
  17. $redis->decrBy("key1",5) 减少5
    ! d- h" F$ t) t# O, s
  18. ' J: k& k- O6 j, X6 t
  19. list相关操作,连表操作0 O' z* }0 A% D* v5 Q9 T# a6 P* h
  20. lPush6 j- ], x2 F+ n! r/ \
  21. $redis->lPush("list", "888");
    9 P" \1 T/ P' x
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数! F! i9 B0 K+ ]# p
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    ) b6 m  J/ P# d7 A' ]1 ?
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素+ F$ D; f8 I! y; u2 Z
  25. lPushx/rPushx2 h0 B- J: e9 b& b! y
  26. $redis->lPushx(key, value);* w4 O% V( M5 q& N" P. v6 R
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    * R8 ]% U0 d; X  W# \! B1 E7 e
  28. ) c( |. E" v6 p% u( O8 W# g  ]
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key1 N! e* U$ A3 |  E
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key* x$ u" p9 S/ j4 p% f8 L
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    6 e8 F" U: M: d  x
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序3 ^- o0 Q; I" R) H5 }
  33. sadd s1 zhangsan
    1 P# p3 P6 B/ Z% [# v
  34. sadd s1 lisi' O: W7 a5 {* ^  k' F
  35. sadd s1 wangwu
    + D( E+ [9 G2 R# j9 v- H
  36. sadd t1 yangxingyi  z( M# w2 e# H% P* l" |
  37. sadd t1 lilei; Q  m8 m' v' \5 m. ?' j
  38. sadd t1 zhangsan+ V0 c: {( f( l7 C! ?/ [; |4 F. g
  39. smembers s1 s1的所有集合内容& m0 }8 I( {+ c+ W/ X  m9 K
  40. sdiff s1 t1 s1有的,t1没有的,差集  L3 P" J4 X; G# B
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式. O% j3 d( o+ K! R  U
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的) c8 S2 |% f" g6 _3 I* I3 v+ M
  43. spop抽奖场景,返回集合里面随机的数
    + Q9 ?4 t2 g" H2 a- K: G
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了0 n+ K( T& j  P
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    , Z1 j) y6 p6 k4 ]6 }
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的: U: L  W& W6 Q& k& S
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    ( S! S7 B! A4 y; z+ B8 k2 p
  48. $i = $redis->srandmember('s1');echo $i;
    . n. \+ k5 \* q: t* T( X7 f% `7 i
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    6 t; z- O, S: @9 O% t6 N
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    1 m& o" g  F; Q( o' G
  51. # c( I! L  Z0 t- k
  52. zadd key 2 value 有序集合8 H4 y% E% B9 d2 I
  53. zadd y1 1 zhangsan;8 A# N' M* l  ]. |" m' x* J
  54. zadd y1 3 lisi;: t4 b* t+ L6 B9 M7 S# P, L
  55. zadd y1 2 wangwu;
    " u( L9 ]3 E$ B  a
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    ' M) F' J! U! ^
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    4 @' a+ h7 s0 Y) ~! A
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键( y( u/ {* u- o
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    ' e+ Z: b; U# r& u$ k) Z! _6 Y
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的' z% Q" P# g+ ~
  61. 无序就scard,有序就zcard,有z没有s
    ) U7 ?. I7 B# _& {2 X
  62. sInterStore4 Q$ s$ g) n2 k. P9 P1 s2 g
  63. 求交集并将交集保存到output的集合* N/ a0 K( d" W5 a. u7 Y
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')  t* Y) i) c2 k" E  z+ t) {
  65. . M4 X7 M# P, m' ?
  66. Hash操作2 V4 C5 Z4 T2 n4 j( Q9 _
  67. hSet: b3 h9 Y8 z# B# `, d: D' \
  68. $redis->hSet('h', 'key1', 'hello');
    + H+ i0 N( f1 p6 T- {
  69. 向名称为h的hash中添加元素key1—>hello
    ' [7 L! ~0 J3 E  |" }6 @
  70. % T9 T. q( t" L- A8 ^& g6 B
  71. hGet; N: q& J% K6 \, A
  72. $redis->hGet('h', 'key1');% W1 X7 v* a$ v4 u
  73. 返回名称为h的hash中key1对应的value(hello)1 Y9 C0 Z: I6 b! U5 R
  74. , |. g: v5 P: w" y& F# M; r4 J, B
  75. hLen, v8 z2 N; \. J8 k+ g4 U
  76. $redis->hLen('h');) n6 j* _4 o5 k% t+ B8 v+ B# v  l
  77. 返回名称为h的hash中元素个数
    2 p4 Q% F, Y) v% w, b

  78. # H! f. v# G8 E
  79. hDel
    9 H, ?' s6 Z3 T$ y* i/ C$ ~, ]0 L
  80. $redis->hDel('h', 'key1');) k( P, c$ t8 t" Z' J7 u+ Z- |
  81. 删除名称为h的hash中键为key1的域5 B3 t5 C0 z( @% j
  82. % \5 x; y& M0 q3 {: m3 @
  83. hKeys
    ! x2 D. V- i4 p/ N# C% B$ S* z
  84. $redis->hKeys('h');
    " x1 f3 g/ f! R6 R! a
  85. 返回名称为key的hash中所有键' U7 T9 Z' C5 m3 v9 I

  86. + \$ }8 G* {; e/ Z  x
  87. hVals
    ! o. U; u$ @- g8 F* A$ ^& I* H
  88. $redis->hVals('h')* o( M5 U. r; g9 j) q2 @
  89. 返回名称为h的hash中所有键对应的value2 |5 a5 W. Z# z8 O+ o
  90. - v# v; e( f1 |
  91. hGetAll
    # p& z0 S$ d2 g7 v4 m; v2 \. h
  92. $redis->hGetAll('h');/ H/ A- p5 Y. x# Y8 j: R- I+ l
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    * u# c/ o# n, N+ f; H6 d. j# c2 S
  94. ) g/ p  y9 W1 e5 r
  95. hExists8 f  A+ e4 A) f0 d
  96. $redis->hExists('h', 'a');
    9 G2 v. }/ |* N3 J
  97. 名称为h的hash中是否存在键名字为a的域# `% I7 m2 H; O# g0 _  x
  98. 7 o" T* O& T& d7 a
  99. hIncrBy3 K& [0 @0 [% h/ |
  100. $redis->hIncrBy('h', 'x', 2);
    ( F+ z# r& |# \$ m- M
  101. 将名称为h的hash中x的value增加2
    1 w3 I) e6 D) O! d2 l8 A* t. D5 `
  102. - \* R/ b- l/ T# J$ e. s
  103. hMset& L6 ]+ E+ i2 ^% C
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ' p" v2 B  w9 p2 k9 Q- A4 q8 d
  105. 向名称为key的hash中批量添加元素
    + x; r' M  k: _2 p
  106. / n5 w' T1 x4 d" K  |( ?) c
  107. hMGet
    ( a. I9 g  G8 C  S) N' |1 V8 S9 I5 _
  108. $redis->hmGet('h', array('field1', 'field2'));
    ) g- X) i2 I* v! c5 H8 F
  109. 返回名称为h的hash中field1,field2对应的value
    * h! g+ m3 l7 n- x* G

  110. ( }! V' [0 b+ u# c% F" z) w
  111. redis 操作相关7 T/ _! k/ ]$ [( Z, A. T/ i
  112. flushDB0 d3 B; T" {) D* C+ v
  113. 清空当前数据库
    / f, e7 _. u3 E2 y! A0 p/ z
  114. ; n! F0 x8 {7 x; Y  ]9 m) N
  115. flushAll
    1 c& M+ T3 e% E+ e/ k& E/ C
  116. 清空所有数据库
    * g# t% M7 _# ~! S9 [6 q

  117. 4 u, M( h9 H9 n
  118. randomKey- D$ O5 `" P: M# w& U! w2 M
  119. 随机返回key空间的一个key' W; R2 q: e7 `
  120. $key = $redis->randomKey();$ }* A# x4 i' x# {3 ^

  121. ! F2 t" Q" y0 z& K3 p
  122. select
    . h! ^3 x% @! [6 u0 A5 |
  123. 选择一个数据库
    * C' s/ v  I8 p3 n/ k/ f
  124. move
    9 ?3 ?# M* b6 v4 [$ P$ Q
  125. 转移一个key到另外一个数据库
    * ~, m% ^, q' p! A* }# s
  126. $redis->select(0); // switch to DB 0( ^) `; {5 V7 V3 Z  k
  127. $redis->set('x', '42'); // write 42 to x
    ' \5 N  t8 a5 ~8 J
  128. $redis->move('x', 1); // move to DB 1
    3 p5 h; O2 z: X0 B# t$ O- Y" T
  129. $redis->select(1); // switch to DB 1
    9 v5 H6 d8 W4 a
  130. $redis->get('x'); // will return 42! V5 h+ p: G# o" K1 ~5 j/ r
  131. ( x3 N7 g' }2 h: Q; |$ _$ w) Y
  132. rename, renameKey+ m- `; F% a* N; K1 ?# D- ^8 h' r
  133. 给key重命名
    9 W* l1 {# M8 @: Q+ p6 a
  134. $redis->set('x', '42');
    - g7 X3 @. w4 s
  135. $redis->rename('x', 'y');
      p8 F/ l! j1 q+ d* E
  136. $redis->get('y'); // → 42* {( X/ d) B* W1 V6 V" Y7 d) p
  137. $redis->get('x'); // → `FALSE`" ?) ~# t3 f6 ]1 K

  138. 6 H7 I' H3 M; E7 u! r: ~
  139. renameNx
    # Q/ n2 x3 M8 u$ k$ |& S: X4 b
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功% C4 r: I0 V  [2 X% b9 n0 W9 I# R
  141.   `& M! o4 ^6 j& E, Y# |
  142. setTimeout, expire& G) d: q4 L# ^1 \/ E3 c$ c
  143. 设定一个key的活动时间(s)/ n+ Q1 l6 |6 c/ b2 ~0 J6 W
  144. $redis->setTimeout('x', 3);& r. s; b* H" G1 y, \9 y' H' T. X

  145. # z" D8 A) l6 A9 e9 u
  146. expireAt9 I  k: D# B0 w" a( m3 s
  147. key存活到一个unix时间戳时间1 ?' ?$ W3 J9 B7 E$ X+ R
  148. $redis->expireAt('x', time() + 3);
    2 n6 o& s" m- s/ M

  149. : B5 E. ^% _6 j$ h2 c, }
  150. keys, getKeys
    # v+ N/ T: \- r3 C9 k8 i0 t
  151. 返回满足给定pattern的所有key6 n$ Y6 `0 }9 |  M: t
  152. $keyWithUserPrefix = $redis->keys('user*');
    0 u; U$ b( d; p" s1 w2 e1 r

  153. 3 a% ^3 }9 M. l& E( Q% z
  154. dbSize! X1 D$ S6 {8 P. E$ u1 t8 N
  155. 查看现在数据库有多少key. n! p& m( p& f; G! w
  156. $count = $redis->dbSize();5 S) s/ m% ]1 o

  157. 7 X& L, F2 Y" W! K
  158. auth) Y7 N- a5 u; L6 w) I
  159. 密码认证
    ) E7 b* f9 l# k; P
  160. $redis->auth('foobared');
    0 g. t% z! i: O
  161. ' F0 P! h% Q/ e
  162. bgrewriteaof
    1 i! J7 h3 a& z* K) z
  163. 使用aof来进行数据库持久化
    + n1 R* c2 x* Y' z
  164. $redis->bgrewriteaof();
    + y  [5 c6 C" Z) h6 A) m
  165. 8 B- i. _5 U6 N' y0 N
  166. slaveof+ t$ u# C0 L4 A7 I. o3 A# w, Q
  167. 选择从服务器1 f$ u+ _6 ^2 ^: l' S9 Q. f  b
  168. $redis->slaveof('10.0.1.7', 6379);+ \5 R& _( d+ I

  169. # x8 J" ?9 _& ?& P; `( A
  170. save
    6 r1 t3 i, R+ G6 ]* i
  171. 将数据同步保存到磁盘+ v) q! E; p" X) v
  172. 2 ?0 N* Y/ k# K9 M4 n
  173. bgsave( E, ^/ z6 z1 g8 u$ I' d
  174. 将数据异步保存到磁盘6 S+ j- a- m( Z/ k% G1 o. n" o- t& h7 @

  175. 8 h% a. x" m( \. v, \- }# G9 w
  176. lastSave, o: m2 z6 |4 t  v
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    8 {1 Q4 A! S. ]8 U2 Q
  178. - P+ u1 z7 m+ P6 ~, {
  179. info
    : f; U8 c; d$ S" d: N
  180. 返回redis的版本信息等详情2 R1 ^- A8 j' b: n" X& Y, b4 [# {5 k
  181. " h* y" F8 |" G
  182. Redis::__construct构造函数  M8 |! r; O1 @) i9 ]
  183. $redis = new Redis();
    6 T# }" {7 R2 v  v9 y

  184. 0 O+ `- S( t, F& i- ?" z7 A# {
  185. connect, open 链接redis服务
    3 E2 e9 y; F- {2 T
  186. 参数
    - Y+ g5 m9 |$ [  X$ z
  187. host: string,服务地址
    3 ?* q% C& h7 x0 Y
  188. port: int,端口号- {* p, A7 v& T& u8 k: ~" `
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ! C6 C0 U5 b. C  ^* k1 k1 l
  190. 注: 在redis.conf中也有时间,默认为300* d0 q/ Y/ H$ I) ~+ H
  191. ! A9 j' O% z9 p! y
  192. pconnect, popen 不会主动关闭的链接) x  t+ ~7 m1 z4 P* j3 ]  V
  193. 参考上面
    8 Q; O9 a$ y1 G$ f8 S' y- s
  194. / Y1 P2 B, D3 F+ I* r
  195. setOption 设置redis模式
    $ Y2 k- U4 K0 o7 {0 C

  196. ! f6 ?7 Y# z  \
  197. getOption 查看redis设置的模式
    # @: V, a' M) F

  198. . f; b4 j. D! S) y% j
  199. ping 查看连接状态( D7 }' s( _' j: X. b& t
  200. 7 ~2 N% I3 M5 R/ B5 n+ H9 Y
  201. get 得到某个key的值(string值); r* P! W( j$ a8 X* Z" V
  202. 如果该key不存在,return false! E0 x! I" o) S1 t$ c4 w3 d! p

  203. + g- L) _1 M: G8 T: M7 g$ a
  204. set 写入key 和 value(string值)
    * }$ K3 U# ]' R9 ~" j: W- x6 z2 p+ }; \
  205. 如果写入成功,return ture
      n: f0 l, P' }

  206. . {% w5 X7 C' d! Z
  207. setex 带生存时间的写入值
    . ]7 R  k9 }- y9 |$ ~
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    ) c$ F2 o7 X5 y+ n
  209. 3 J7 L* p6 Q' s
  210. setnx 判断是否重复的,写入值
    : J; t- B1 Y- Z) T* E
  211. $redis->setnx('key', 'value');( t% i; H+ b3 k/ \& h& D: Y; M
  212. $redis->setnx('key', 'value');
    1 ~4 x+ {  }; O- a: f, S. T# ]
  213. $ s6 n2 W1 B$ L" r8 E" w* ?. F0 H
  214. delete  删除指定key的值
    " T# u+ o0 `# a8 x5 v  G. M
  215. 返回已经删除key的个数(长整数)
    ( w6 r' B# m9 k' h
  216. $redis->delete('key1', 'key2');& M) Q8 ~6 k# ^# _* F) _* D
  217. $redis->delete(array('key3', 'key4', 'key5'));
    1 }& ]& q* u$ {7 P7 M& F
  218. ( n2 f3 G% L0 s3 u
  219. ttl! Z4 x6 k- s1 M8 {7 ]
  220. 得到一个key的生存时间
    + F# F5 P# Q4 Q. H

  221. # b! T9 A5 \/ e0 \, [/ z3 \
  222. persist) w% ]1 t7 h  Q
  223. 移除生存时间到期的key/ t7 c, S; p1 {
  224. 如果key到期 true 如果不到期 false* C4 q$ }, S0 O

  225. " L9 M' R% w# ^5 a9 I, H* _+ t
  226. mset (redis版本1.1以上才可以用)0 ]  w# d, U+ o( q+ j; Q3 w5 c
  227. 同时给多个key赋值
    % i& d0 |. ^0 I: p
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
      z! e2 ]$ g. ]/ v$ t$ f4 S" @4 _
  229. + _/ B- j/ O9 z( \7 O! |
  230. : n0 ]8 r/ r, |- R- p
  231. ; |) ^* a1 o0 T$ x% l- ]
  232. multi, exec, discard7 V) H) z; H! ]& r
  233. 进入或者退出事务模式  b; l) y; E: P$ P3 X. |
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    ) @4 ~4 D! H) G, a: Z7 R+ @8 k( T
  235. Redis::MULTI:将多个操作当成一个事务执行" P, S) q8 h  N5 N: `/ m7 O3 f' {! p. V
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    : \# L6 g1 d2 ^
  237. discard:删除一个事务4 L1 K% {6 d6 z# |' m
  238. 返回值
    % o" T1 c: L3 D8 \1 z+ t
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    & `! c! c% C/ D& {) `* V

  240. $ p; ?; y, `( g0 n8 d- W
  241. watch, unwatch (代码测试后,不能达到所说的效果)! r0 f6 G4 Q9 `+ L# c/ y. [, U2 p" u  X
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)( u* D5 ^/ f4 s! O% ~
  243. unwatch  取消被这个程序监测的所有key. P( h, i0 U& K* j' X0 q) G$ m2 V) f
  244. 参数,一对key的列表% x7 F6 n( m8 A/ X. W
  245. $redis->watch('x');4 o" F  ?8 Z- r0 Z& D
  246.   o: o1 s! N, L
  247. $ret = $redis->multi() ->incr('x') ->exec();
    3 l) F) l7 q) ?2 L% M+ ?2 b

  248. 2 J& b4 L6 E1 O, Q

  249. " F0 a! P1 ?4 w5 ^# G, P6 `1 E
  250. subscribe *
    0 X6 I6 U  ^9 |) k; [9 R/ i7 t
  251. 方法回调。注意,该方法可能在未来里发生改变5 [  w8 \& L5 f" B8 C

  252. 3 h- P: p5 x  y$ g, ~
  253. publish *. {% x: W/ O; _9 _& ~  p
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变+ O+ f! B1 n0 W7 }

  255. , K3 J; w8 M& |- }( U% y
  256. exists
    * d  T. y+ p( I6 e& ?! P& q
  257. 判断key是否存在。存在 true 不在 false
    9 K+ `$ B5 [! O4 q2 v

  258. " c# x3 @, L1 s4 x- o; V
  259. incr, incrBy& _9 H" O. S. o7 q( P/ X" S$ E9 X
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    6 c) t( Q; O, o* K8 Y3 \/ c7 I
  261. $redis->incr('key1');: _5 }" D6 ]; N6 y* o# E
  262. $redis->incrBy('key1', 10);+ _9 d: k8 s# c7 y8 @1 c6 W' {
  263. - f' Y) u# b2 M! R' X. P+ j2 O
  264. decr, decrBy
    ( \- C1 R- Q% a) M: P
  265. 做减法,使用方法同incr7 A  R& L8 W7 D3 p; j1 M

  266. * p* _6 }7 [2 r' _3 F
  267. getMultiple# T/ I3 U+ n8 b, s  v
  268. 传参; t2 N/ t) `6 N, `3 w# e/ B/ d
  269. 由key组成的数组
    4 C* _' T% W& [. N& z
  270. 返回参数; x( z" s- Z$ `1 @7 t8 n
  271. 如果key存在返回value,不存在返回false
      h+ Z& P: U& T
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    5 `( F2 C4 U3 Y7 c: V
  273. $redis->lRem('key1', 'A', 2);+ Q9 v& q* @# f/ {' O
  274. $redis->lRange('key1', 0, -1);& H  }) I8 _! o. F0 `6 b

  275. 9 P8 O: e# c3 `3 ~' n& E
  276. list相关操作
    4 A9 P. s3 A& n, D4 I4 f
  277. lPush* E. j' B9 F( t; ]1 G
  278. $redis->lPush(key, value);3 {/ l2 L7 i& R& ~
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    9 r9 T$ `2 g0 D% ?5 M

  280. : N) H/ r, B3 \2 ?* y* n1 n5 r- M
  281. rPush
      n* h5 f- u9 j4 G; I: L
  282. $redis->rPush(key, value);" N4 e- r3 e3 n. ^5 {/ i2 A5 l
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    8 g$ x' a- z8 w7 O$ V
  284. $ u5 h+ U$ g+ v
  285. lPushx/rPushx
    7 G( x5 V0 F7 X' v' N
  286. $redis->lPushx(key, value);7 w# s4 Y! f0 M, w$ h
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ( ^! z" @- e5 a- q
  288. 3 ], t$ `4 ~. M& b
  289. lPop/rPop2 w5 E- J# ?6 e- f$ L4 `) v
  290. $redis->lPop('key');8 t& @5 I/ N# s" g
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素' d/ W* k) c1 G' ~

  292. + J) B) Z6 O% E- H, _$ A
  293. blPop/brPop- D$ M! N3 @* G4 H2 J( J$ Z
  294. $redis->blPop('key1', 'key2', 10);( P, Y' Q& x% M6 S1 D
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作- q8 E2 B- ?) v1 D

  296. / j, H5 b1 l9 }; c" v+ a
  297. lSize* W1 z# b# u) G: h
  298. $redis->lSize('key');
    " N5 Y. y. M9 U: x" M1 `  y+ V
  299. 返回名称为key的list有多少个元素" F$ @( ?2 U6 G5 p1 Q: A/ u
  300. ) N( Q0 P4 h% f' O  \
  301. lIndex, lGet
    / Y5 t- c. U4 m
  302. $redis->lGet('key', 0);+ s6 H' O" c+ ~4 b2 @  g
  303. 返回名称为key的list中index位置的元素4 e2 [. ]0 t' V
  304. + {* k+ w% a0 I% o
  305. lSet
    ! W! p1 A6 R+ r, y+ m0 [1 Q2 H* l
  306. $redis->lSet('key', 0, 'X');
    3 E7 g. Y7 M& U! Z  N' h
  307. 给名称为key的list中index位置的元素赋值为value/ ]: l$ a: r% {; Z9 p! @* A

  308. ) i, ?- I) Q) }3 l7 G, z
  309. lRange, lGetRange
    ' b1 Q' o! M* Z7 i( O: V3 }
  310. $redis->lRange('key1', 0, -1);
    ( u5 @9 q# j$ S9 A( O+ C1 n
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    % z4 \* ?4 H* G$ O  z0 K
  312. 0 @# @0 j2 |+ A; s$ b
  313. lTrim, listTrim8 Z- H! b8 h& s" `# f% X% ?
  314. $redis->lTrim('key', start, end);9 _+ F$ q5 |9 G( C5 f1 V6 @$ a, N) Y
  315. 截取名称为key的list,保留start至end之间的元素* ?( q# y: Z* [. t: A
  316. 4 b/ t* i' ~$ u- e& A9 X5 }- y
  317. lRem, lRemove6 z7 N! m- |" K: [/ g7 V6 c0 T
  318. $redis->lRem('key', 'A', 2);
    * W7 v1 D' H  B- h" G3 t! X+ p
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ( ]+ F  N+ A+ z) d- z; `

  320. # S) J  y: a& _! s
  321. lInsert
    * y* t1 }0 i; Q
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    & K1 k9 l) T+ A0 s' s
  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');, j  s' k$ `  r6 \5 u7 t
  324. $redis->lRange('key1', 0, -1);' n+ Y1 Q1 K  F
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');( D( q/ r: _! J: v( F3 J
  326. $redis->lRange('key1', 0, -1);
      \8 a" c2 S( r1 V; f
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');/ D. @9 i9 T, y& }

  328. & E! Z2 F3 e( B0 x2 D  e
  329. rpoplpush
      ]% U3 P. L, S) P0 J
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部5 {  ~/ Z8 x! s6 W9 ~0 r
  331. $redis->delete('x', 'y');& z9 E8 U" r- d& A* I( z
  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'));6 t' ^! d, {1 a+ A! o# y3 N1 L; Z+ U
  333. var_dump($redis->lRange('x', 0, -1));
    & M$ c3 `8 f5 K9 k
  334. var_dump($redis->lRange('y', 0, -1));
    7 s) q$ ^% I9 F) I

  335. ! \: s+ J  {" N+ Y! F& r
  336. string(3) "abc" * f* y. [* S0 u% ^  o
  337. array(1) { [0]=> string(3) "def" }
    & T7 v3 J3 F: s9 z% J2 ]
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    / b( n, O9 Q+ V7 ^5 ^& ?0 @, ?

  339. 2 X. q  D' d; e% Q1 [# K( O" _% T
  340. SET操作相关# I: Z6 O7 v4 Z4 n2 T* S
  341. sAdd% Q& c' l5 a$ m
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false4 U: D1 d- L% m* I$ y! g+ \
  343. $redis->sAdd(key , value);* N/ L" F1 |. R- M8 M1 f5 @! I

  344. ) r$ ^, ]' c# F, e# q
  345. sRem, sRemove7 Z0 A! B7 W& M/ M6 K
  346. 删除名称为key的set中的元素value
    6 j9 ~0 J  F. _- |: p
  347. $redis->sAdd('key1' , 'set1');9 e5 h4 q4 Z" }
  348. $redis->sAdd('key1' , 'set2');
      J# J2 M- h, Y( V6 e- W
  349. $redis->sAdd('key1' , 'set3');! ]) m7 c) R2 e" n, t
  350. $redis->sRem('key1', 'set2');# r+ \) q" m" e+ T  `1 U3 g' M8 T
  351. 3 I* G8 |% r3 p; T! k
  352. sMove. T- D% U& Z" G' d6 I) S: l
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合* \# e* [1 |" n# V
  354. $redis->sMove(seckey, dstkey, value);/ w; W$ h$ r1 C- S

  355. 1 t1 I/ R6 W( I+ ^
  356. sIsMember, sContains; Z( T1 G& c  B
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    - ?& W1 V8 t+ g4 @7 y4 c" y
  358. $redis->sIsMember(key, value);: a) C( D) d" Q+ L' ?( ?

  359. & i2 M" y4 Y; i9 o; ?* S3 J7 y4 m
  360. sCard, sSize
    , x$ F: `- C  S8 B$ b8 w
  361. 返回名称为key的set的元素个数
    " k# w' g# f8 Z8 r- t, o+ {4 i

  362. " D+ J4 Q; ?9 T
  363. sPop
    0 F+ |( U* \$ w3 [  g) q' X
  364. 随机返回并删除名称为key的set中一个元素
    ( `+ x/ W. N  m" _& q6 n: U4 G2 W0 b

  365. : X; Y5 H" V( U* A/ b' O! K; t( |1 v
  366. sRandMember' K$ d1 o8 j5 b( D" B
  367. 随机返回名称为key的set中一个元素,不删除
    9 ^3 S0 j$ X! s* z9 B" Q3 w

  368. , p; u& \4 }2 a9 [
  369. sInter
    . Y& Z, o; ]  a" d
  370. 求交集! G) Y% z' `7 R- U2 ?/ L3 C

  371. 8 t5 a4 y% k0 n+ s8 z
  372. sInterStore
    4 {" w5 L# Y2 j4 K' X) i1 B
  373. 求交集并将交集保存到output的集合3 c3 i* {+ c. s' C8 R& V. `6 g1 f
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    4 `: N" ^" Z; ?- p6 E9 h; ^- N

  375. / R2 S' j! e  M9 H4 P( l/ j
  376. sUnion/ J' G( e3 P2 x/ `+ u1 e" _
  377. 求并集
    . j/ ?$ _1 F0 l$ |3 d8 K1 r
  378. $redis->sUnion('s0', 's1', 's2');2 L! Z5 F- o0 I  G# O2 R# ~9 }
  379. s0,s1,s2 同时求并集
    . b% X& ^1 ^: ?8 W/ L8 Z

  380. / z5 ~. }: U8 y2 S* x, l) x
  381. sUnionStore
    * \4 B6 n! A  q" d1 I
  382. 求并集并将并集保存到output的集合
    0 X/ L/ c- |5 `4 S- b& Q
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');0 M4 \. _! y# a  x, t* d! g7 e
  384. 8 d; ~- h5 B7 t/ }+ d. K/ T
  385. sDiff
    ) T- `! Y; d9 [# I
  386. 求差集
    ! U* y9 j' D4 z/ F; }2 p, r5 G2 e. I
  387. ) x- m; d) N; W2 U0 f( @
  388. sDiffStore; ]# v0 B" y$ T
  389. 求差集并将差集保存到output的集合
    0 t. p4 D" K, f
  390.   I% Q" u& d' W1 t% ]7 Q3 I% _
  391. sMembers, sGetMembers5 O5 N0 V' L! V5 l' O
  392. 返回名称为key的set的所有元素
    : @: H7 m+ M8 m! {: j, e3 v
  393. $ m# {; G2 l& b' \) }
  394. sort7 E; G# K5 ]! s+ B# a: d! `* ^6 y" Z
  395. 排序,分页等
    - n1 T6 Z! b# x, A* h
  396. 参数
    & z8 O6 N8 e  n) \3 g0 x( U
  397. 'by' => 'some_pattern_*',2 w0 }8 U0 j3 G, H$ E( e
  398. 'limit' => array(0, 1),& T4 l3 s/ Z- L0 D$ X7 q
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
      Z; q: L  m& Y2 O0 w* T
  400. 'sort' => 'asc' or 'desc',
    9 C* r* l6 ^+ X
  401. 'alpha' => TRUE,7 g) {. V& S# L& d$ L& S2 K" @* b0 Q
  402. 'store' => 'external-key': |! q8 S. O5 D1 O6 ~9 p
  403. 例子
    ' ]4 \+ ]3 ^. `* N2 B; K/ e; J
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);+ Q' t( Z. X0 [% L$ ^/ w/ H
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    1 c* \: N, P, V4 S8 u$ h7 X
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    : o8 X0 P4 s# K% \2 e! w: m* x+ d
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    * r3 R6 [3 B' _0 G8 o
  408. * m% Z2 x9 A- T+ m
  409. string命令9 Q! R- L, f9 n! i5 R
  410. getSet
    * a% i* v) l4 _7 J! @1 r
  411. 返回原来key中的值,并将value写入key
    : W; M9 g  s  a  n
  412. $redis->set('x', '42');& s2 k8 P; H9 o8 s9 K6 R
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    ! H+ C& V9 v0 @, i6 W6 }0 N3 x
  414. $newValue = $redis->get('x')' // return 'lol'
    , A4 J2 O1 M1 y# S0 }, Q

  415. " v; ]7 e' }- v! ?  C/ p7 ?  w7 B
  416. append; _! Z+ N3 X3 n3 Z6 M
  417. string,名称为key的string的值在后面加上value
    # f- ]% |3 ?3 E4 e. W% S
  418. $redis->set('key', 'value1');0 {) N+ a5 a8 H9 m- N& I
  419. $redis->append('key', 'value2');
    $ f9 f7 [1 A1 Y
  420. $redis->get('key');
    2 y6 ]3 r3 }5 c5 I, _9 [  ?' c

  421. " P" \+ N  b- ?. y( N
  422. getRange (方法不存在)$ ^& i8 O! P. W1 Q* A
  423. 返回名称为key的string中start至end之间的字符
    ' k! X& ]7 e3 W7 K/ q# K, A
  424. $redis->set('key', 'string value');
      l. r  g2 _3 D7 q# R
  425. $redis->getRange('key', 0, 5);1 e, F" E" `" ~9 y$ a9 a
  426. $redis->getRange('key', -5, -1);
    9 p3 `5 S: j0 R" t
  427. # M+ V! x% E  {
  428. setRange (方法不存在)
    + G% q8 r9 q! e4 g4 O9 c, ?
  429. 改变key的string中start至end之间的字符为value
    ' V7 u5 ]! [# k" [
  430. $redis->set('key', 'Hello world');
    , Z  F6 D4 {. Z; R6 a3 k* P. A
  431. $redis->setRange('key', 6, "redis");
    ) D$ u9 N8 |% Z
  432. $redis->get('key');
    2 U& v% x% X; E

  433. % h- L3 c4 V" H' a
  434. strlen
    7 E4 k: d6 Q1 [& @* T! Z; b1 L! p
  435. 得到key的string的长度! Q' A$ {0 e1 _7 j' d5 p
  436. $redis->strlen('key');# r4 x; L3 w2 }9 c0 ~) t

  437. ' m, i  K9 p; T+ g' p# E7 |. Q
  438. getBit/setBit
    5 j) t( c% ^9 T  q+ A6 G5 G
  439. 返回2进制信息: o, T2 Q' G9 l. f2 _' Y

  440.   d' K' O: O( }- f
  441. zset(sorted set)操作相关" z0 ^& |. o) ~6 Q5 h
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    " W8 _- s; x$ x' ?4 N+ J
  443. $redis->zAdd('key', 1, 'val1');
    * Z5 @: C! M) B4 U9 n
  444. $redis->zAdd('key', 0, 'val0');$ L* N5 y+ q1 l
  445. $redis->zAdd('key', 5, 'val5');- h, v. E; ?3 M* }: S: K
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5); L/ E% k% h0 S9 X" H* F' i/ M/ o. \

  447. - A/ N$ h3 m" s, R) a
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    % T( @" u. V2 {* I% D
  449. $redis->zAdd('key1', 0, 'val0');
    , x& b6 F: @+ h7 g
  450. $redis->zAdd('key1', 2, 'val2');' u- i$ Q$ U4 K
  451. $redis->zAdd('key1', 10, 'val10');8 ^8 ?( H4 ~/ p" ?
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ! m# I5 G' ?% ?2 Z8 I% g& t1 x

  453. 7 k& P" o, t2 x" E8 n
  454. zDelete, zRem
    2 K$ p2 f+ N  p, V- U( Y$ C) u
  455. zRem(key, member) :删除名称为key的zset中的元素member
    6 K9 Z7 h: T/ z  ?
  456. $redis->zAdd('key', 0, 'val0');$ p+ g! g. ]: @+ g6 N6 n# c
  457. $redis->zAdd('key', 2, 'val2');
    / r- a5 t+ ]) |3 S8 f
  458. $redis->zAdd('key', 10, 'val10');
    / u# y! w& x0 I+ h6 m$ H
  459. $redis->zDelete('key', 'val2');4 Q- _; G5 {; b1 S% ^
  460. $redis->zRange('key', 0, -1);
    ! @% G- ~- W3 f4 g! k  U
  461. 1 ~& V: @, j3 s. G9 q
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出& l7 j$ R6 u8 H+ @
  463. $redis->zAdd('key', 0, 'val0');
    8 O8 ^4 K( d+ q) S0 t7 t
  464. $redis->zAdd('key', 2, 'val2');
    5 @) h9 f6 F# z5 p; I: A7 V% W% {
  465. $redis->zAdd('key', 10, 'val10');8 t( Y: h; }! M
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);. {  I$ c' ?( M
  467. : W# o1 ~) U1 E0 U; x7 R0 b
  468. zRangeByScore, zRevRangeByScore5 W% V* A& {& p* b0 T2 @
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    $ A0 E$ ]9 t+ |/ Z
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    5 m! Z7 Y/ N' m, S7 W

  471. % A, R" ~+ V5 \" `9 M  i
  472. zCount
    ! ^" a: E# o- h* m
  473. $redis->zCount(key, star, end);& a, R8 ~1 z8 ]! {1 D6 m# ^
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数  z- m' |3 A$ U0 f( `! [
  475. % ~3 C9 h6 n& w- v
  476. zRemRangeByScore, zDeleteRangeByScore# }0 i# |. s, q9 Q* [7 ?+ P
  477. $redis->zRemRangeByScore('key', star, end);4 h) D1 D$ c+ _, \2 A2 {1 ^. L
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    1 \' J2 X7 e; [1 I
  479. 8 O/ K: }( E6 e+ T6 G
  480. zSize, zCard  C' T% a7 x: R8 f1 r, y2 Q6 M9 v
  481. 返回名称为key的zset的所有元素的个数7 C7 O# T- a% i/ N

  482. 9 L" A; _" w5 F' N4 z8 a0 E
  483. zScore8 h" |( I3 ?1 i, Z- d
  484. $redis->zScore(key, val2);* d" W; f: v0 h# H
  485. 返回名称为key的zset中元素val2的score0 I; ^6 y* `1 A( W$ N
  486. 8 R! g. z" D; a9 {5 w0 k
  487. zRank, zRevRank1 G7 b% \8 ?9 b. L" f" u
  488. $redis->zRevRank(key, val);
    & g' Q3 l7 \9 q! N' k
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    : S1 Y  j2 ?  u
  490. 3 z& t: o6 K! m/ i
  491. zIncrBy
    ( T, Z4 A5 M9 g6 e  y; Z
  492. $redis->zIncrBy('key', increment, 'member');
    3 h) A+ c: |6 M- Q6 w
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment2 [; }5 l/ J7 W7 L1 T. G

  494. ; `4 e8 j' Z2 H) B- D- c% U
  495. zUnion/zInter
    % K( z3 ~* Y+ @* v  h2 u5 u
  496. 参数' J/ m" ?+ S/ U5 t7 f& ?
  497. keyOutput5 t1 G4 D! E, \7 v. i
  498. arrayZSetKeys3 m; X3 ?# d: T' ?* [6 y6 \$ n  [; S
  499. arrayWeights
    5 w' m* M0 V8 C$ \8 a8 p
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    * m+ c. _* s+ I9 d9 I# y/ |1 e) ]
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。" @! t8 c+ t; R' l# m
复制代码

& J$ x8 j5 F. L" s  W' {% L. o4 W* L
2 Q$ B- ^2 E  h2 _# l  ^! v$ r
! P" r- T7 [, T& n) K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); * [+ A- n  o$ {
  2. //连接redis服务器 8 z* \. b# [$ q6 S. c9 b3 g# s; o
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 05:42 , Processed in 0.073653 second(s), 21 queries .

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