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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php8 Z; M" L7 U9 f$ o" u, J) h
  2. $redis = new Redis();  ) {& A! M/ V+ l0 R2 V. t* s
  3. $redis->connect('127.0.0.1', 6379);//serverip port2 p: \( C  T! l; |& T4 l
  4. $redis->auth('mypassword');//my redis password 5 w8 |0 L2 c1 {; {/ t; J
  5. $redis ->set( "test" , "Hello World");  
    ! E* S' `) X2 c7 U/ ~9 G2 e
  6. echo $redis ->get( "test");
    " [* n( e0 s0 T8 ?. |4 ]# X6 z; ^
复制代码
php操作redis函数封装
  1. /**
    6 k/ p3 M3 V  P9 e" }. ]
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ! y6 @4 s4 H) e* r8 b+ n
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi5 i" }/ p" u0 M1 a
  4. */
    0 N. d2 w9 r! w4 ~( p' f
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    0 t! F$ l1 a" ~
  6.     if(!$key||!$value) return false;0 C! L6 L1 F6 d6 F9 G
  7.     $host = $host?$host:getenv('REDIS_HOST');* a4 h! S6 P8 r; B
  8.     $port = $port?$port:getenv('REDIS_PORT');
    4 d$ Y2 J0 G* M( W4 e
  9.     $redis = new Redis();
    3 q. d* C# {3 e/ z9 _5 o, u3 ?
  10.     $redis->connect($host, $port);# Z2 Y# v" a" z+ M7 H% e
  11.     $value = is_array($value)?json_encode($value):$value;: C& c; H$ b: g
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);2 B) M( V# G5 k$ T
  13. }
      {8 `% {0 [3 s- w& _
  14. /**$ D; U) X) Z' q% B5 q8 V% F& Q
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi* t- u+ E7 J# e* _* u! O) ]. D
  16. */
    / X# C* g: |  _
  17. function RedisGet($key,$host='',$port=''){2 f) }2 C# H$ P- j: m2 [3 L1 b
  18.     $redis = new Redis();$ D1 L' W* H0 v' Y
  19.     $host = $host?$host:getenv('REDIS_HOST');# {. N; k3 B0 Q, Q. j1 @4 ^
  20.     $port = $port?$port:getenv('REDIS_PORT');$ J6 t" J9 _, a2 [
  21.     $redis->connect($host, $port);! }" e9 {7 V7 P+ V; x
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    / P5 o  V) X4 M: d4 L7 J
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);5 G7 r8 M4 t9 P4 f
  24. }7 b- |: y  l  Z6 F
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了& i* }- [/ C* H% a$ x4 \( q8 v
  1. setex 带生存时间的写入值
    $ h, m" a) }# z( }2 Y, U
  2. $redis->setex('key', 3600, 'value'); 4 w) {% L* {! e) t% `
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回14 C* B0 {- b3 `
  4. $redis->setnx('key', 'value');
    7 M3 h6 v# C1 n* z+ i% A4 A
  5. 返回已经删除key
    3 c7 \# X1 |% V) A0 @
  6. $redis->delete('key1'); 成功返回1失败返回0& h+ E' F/ `0 P5 Z
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    # E8 s; ]6 C4 q2 {/ y
  8. 查询生存时间+ a1 @1 M) d! D
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)( U9 J) R! z8 G) D( t
  10. 同时给多个key赋值,同时设置key0和key1
    8 V, U  P2 s- O- \6 v! c
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    2 q' S" u# d6 Q, V" [
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    + Z- S. |5 z  `9 W$ i
  13. $redis->incr('key1');& \9 J/ F( ^, A* `" A
  14. $redis->incrBy('key1', 10);
    : O9 s$ D5 ~3 X+ \' s8 n# V
  15. 减法跟加法一样1 Y/ q" G6 ~5 o
  16. $redis->decr("key1"); 减少1, w* i4 b' I* M6 O
  17. $redis->decrBy("key1",5) 减少5
    $ S) X* _* r  `: {

  18. 4 A+ l" R+ D8 F# {( n9 x, \
  19. list相关操作,连表操作( h9 o+ W' m# `) R1 W2 }
  20. lPush* u% u! Z$ p- h0 ]
  21. $redis->lPush("list", "888");3 {. A# z( ]  {
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    5 r! r: j/ m2 p) b+ W. h' r% j6 g8 o
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式# d! h* R3 c: H2 N" [6 Z6 d
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    : N" o  R7 A4 g4 ?
  25. lPushx/rPushx/ x" Y# A) m+ e4 s2 s
  26. $redis->lPushx(key, value);1 n/ c2 M  u7 B0 Q0 y# c$ R
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加; Y' C* }/ e. H  e

  28. 8 W) Q) l/ a* ~: c  i
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    * u" A( @6 B5 ~( i5 k
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    8 d4 J- ~& I+ ^
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    & @/ N4 V& [1 ?
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序, @# Z- Q! ]/ U( I/ r
  33. sadd s1 zhangsan# V: n" p8 @* l9 ?+ J+ Z0 }
  34. sadd s1 lisi2 _* q  h" ^) P& t
  35. sadd s1 wangwu
    5 P$ ^- n% r. f4 s/ |& X$ o
  36. sadd t1 yangxingyi' ~7 y7 {) b6 s; ^+ b
  37. sadd t1 lilei
    ' L5 B% x& X5 \# {
  38. sadd t1 zhangsan- J0 ^* B7 J1 ~& s: T% \
  39. smembers s1 s1的所有集合内容+ Z; z1 P- M* n2 @" V8 ^$ C) X9 C
  40. sdiff s1 t1 s1有的,t1没有的,差集, \- P: f2 W  u1 p3 G6 O* h& A' T
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式# H4 F; M6 g- z4 y
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    , _1 }2 }5 q/ ]0 `/ }2 K3 A
  43. spop抽奖场景,返回集合里面随机的数
    ' L7 w- L7 Y) y5 y4 S
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了4 x) p# g9 ]% x, S( V5 {! q/ K
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数2 d' @, n. k7 L0 H& a9 X7 m9 v
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    5 D2 c8 p8 T" p: U; g' O$ z
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    4 w/ m8 c5 \) t6 N
  48. $i = $redis->srandmember('s1');echo $i;2 n0 ~( I( d. z: U
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    / [3 g  e5 @. Z
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false/ S+ D$ p8 G  s$ X9 Y6 U
  51. / s$ k' V. U  M8 I- u7 Y4 G+ @, r
  52. zadd key 2 value 有序集合9 P# t0 f6 Q" w, H, C
  53. zadd y1 1 zhangsan;+ }5 P( a* ~. @9 Q( @% B  g7 {. w
  54. zadd y1 3 lisi;8 J0 J* K* D  P  Q/ h, j
  55. zadd y1 2 wangwu;
    ) Z6 T. C, ]2 i/ q+ v
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    . {! S: G% _3 ?# N! K( I, D# h
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    $ }& ?: J7 x" [1 @1 l
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键! k6 _' u+ e$ v: X1 h* H- h
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先) k# ]1 y$ y' l# q. `! X, l
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的' V+ m, a6 _8 s& B
  61. 无序就scard,有序就zcard,有z没有s
    5 A$ d8 R& u1 U/ F) I
  62. sInterStore
    5 w$ ]9 e: `& @
  63. 求交集并将交集保存到output的集合
    $ E) G! X% ]. G, l+ J: {( |* Q" \$ B
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')% |0 q; x7 J4 p: N

  65. ) Z. E; ]; f5 g+ _
  66. Hash操作
    ( k  c. |6 `9 q
  67. hSet
    $ U1 r6 F8 q! r4 J( t: j5 F! k
  68. $redis->hSet('h', 'key1', 'hello');
    - g+ S, T  b2 a8 z* p
  69. 向名称为h的hash中添加元素key1—>hello+ R6 m* R9 h' e6 ]1 b3 r  v
  70. . t* W; e  R/ h
  71. hGet
    8 O) h& A# ~3 c+ x
  72. $redis->hGet('h', 'key1');
    : t: z) c2 b8 z, g4 k) D0 P
  73. 返回名称为h的hash中key1对应的value(hello)
    ! @7 f( f0 v* Z1 e- n% J8 O

  74. ( \( P7 u& L9 J* e' t/ L7 j
  75. hLen& T& _* S' _/ A. x5 m$ x5 o8 A7 }
  76. $redis->hLen('h');
    # t5 U  L3 @9 k1 Y9 `. d2 O
  77. 返回名称为h的hash中元素个数4 S- u7 n1 G  T+ w1 b  q! _7 @# @
  78. . X. d5 P& [) r3 ^. e" l/ N
  79. hDel
    6 l- G( k9 i& Z$ A, q$ T1 E. v& P
  80. $redis->hDel('h', 'key1');; h+ Q) x+ V9 }4 i1 y5 N0 [. U
  81. 删除名称为h的hash中键为key1的域; K6 d+ ?/ ?  g( [6 [) T$ |- ^

  82. 3 R7 D- u. K# v4 p/ k
  83. hKeys
    ' u0 ^! p8 ]+ O! i3 f+ Z
  84. $redis->hKeys('h');
    2 E" y1 E. Z' o3 p
  85. 返回名称为key的hash中所有键8 m2 I* V  L! e! u7 D

  86. % Z1 u; D8 e. A4 f" j6 `
  87. hVals
    / M& N- Q3 t  V+ @( I; B" Y- D+ W; n
  88. $redis->hVals('h')
    * G1 v4 j5 s+ a" j- O
  89. 返回名称为h的hash中所有键对应的value
    ' g. m. `  ?0 W4 ]  ]+ G! A& B" `

  90. 6 M# ~- {. y+ W& Q
  91. hGetAll4 \5 b6 P. Q! j7 c  d! e. A3 O" w
  92. $redis->hGetAll('h');
    . X/ M% v. `8 X" x, T# S3 T9 E- ^- P2 H
  93. 返回名称为h的hash中所有的键(field)及其对应的value+ J5 ~8 q* V9 n2 S
  94. / A5 n5 D" Q. ?4 v- E5 M5 F0 ~. n
  95. hExists
    ) T& e+ b* L& t- {" C
  96. $redis->hExists('h', 'a');% |6 {" X: v( @' A9 w) |2 y* _
  97. 名称为h的hash中是否存在键名字为a的域  p- z7 @/ Y) F* A

  98. # Q1 j, f8 ]* N& S- L
  99. hIncrBy3 K8 B5 ?$ f' ~$ V- O
  100. $redis->hIncrBy('h', 'x', 2);
    : W6 E9 x$ a  e2 v. S
  101. 将名称为h的hash中x的value增加29 W: A5 L+ c& J& I6 d4 f: q8 a* n

  102. + q# z& ~9 E0 b) |
  103. hMset6 |& ?- ^0 \3 b- v8 t8 t% i
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    , u) q8 H+ a4 v8 z) ~5 ]: s, V9 h& u4 R
  105. 向名称为key的hash中批量添加元素/ m' d( ]9 o( P% }2 r/ s

  106. 8 ]+ y. [0 h" L. A- r( T
  107. hMGet6 {8 N- D$ e: G* q0 S
  108. $redis->hmGet('h', array('field1', 'field2'));
    9 R9 R2 K  t/ I- m( `* m+ {
  109. 返回名称为h的hash中field1,field2对应的value
    3 y) w2 N7 ]4 U5 g2 e: q* T  t0 X. S
  110. % Z: e0 O# O0 [
  111. redis 操作相关8 N* j$ `" ?" S" q6 I
  112. flushDB0 _- i& _: J& l) A# ^
  113. 清空当前数据库
    ) g' I/ j! j" T$ @5 u

  114. : L3 X" K1 Q! ]2 J, \
  115. flushAll
    9 k' H$ F5 L0 e8 f0 g! A' V0 k
  116. 清空所有数据库1 T1 d, l, P) U, E  z5 ?- q
  117. " E9 v$ T3 Q4 N7 M
  118. randomKey7 M" p  g, J5 v) D
  119. 随机返回key空间的一个key4 ^7 S) L$ V# a! L8 f3 K  I
  120. $key = $redis->randomKey();
    7 v' M, D+ K  O$ g/ N

  121. 4 v* a% P' i3 w) @5 G* R
  122. select
    ( e8 B1 ]5 e* P* h
  123. 选择一个数据库, C# j+ B2 |) O$ j8 O. ^
  124. move
    ) T# @% ~1 F( H) x% X3 h
  125. 转移一个key到另外一个数据库% t  `( |0 e+ y. z( {2 L3 ]
  126. $redis->select(0); // switch to DB 0
    ) G) a  L+ ?8 ~) w. J2 }
  127. $redis->set('x', '42'); // write 42 to x% N; D. M9 W! M3 j, _
  128. $redis->move('x', 1); // move to DB 1) f$ r% T( X$ n6 d2 Q7 z9 N/ P; l. l
  129. $redis->select(1); // switch to DB 11 `  p) H9 X% ^0 j
  130. $redis->get('x'); // will return 42
    - V6 C+ ^: @6 p& v& C+ d: s

  131. - J2 k2 C- R2 R  C
  132. rename, renameKey
    2 S5 K. f5 K" K$ x" b6 i; u+ e
  133. 给key重命名; A: G, l/ E1 W% D$ |) C3 f& Y( G9 r
  134. $redis->set('x', '42');
    9 p  U; G5 z4 |( E1 W
  135. $redis->rename('x', 'y');' [+ L+ [, Z+ `
  136. $redis->get('y'); // → 42
    - z. d+ Y/ @# E0 s# ]6 s3 F
  137. $redis->get('x'); // → `FALSE`6 k. d/ h" z1 u( w+ _

  138. 4 E* A: ?8 I. ]
  139. renameNx" O: w7 d# C6 B8 `6 v
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    ) e% D( W4 z: `6 n6 ^8 I9 s
  141. , g: E3 C/ a# L5 x/ z: o
  142. setTimeout, expire
    5 v5 k3 b& i* @4 {0 j# l
  143. 设定一个key的活动时间(s)( q" L& X/ O* X4 Y% t- ~8 Y
  144. $redis->setTimeout('x', 3);
    - n3 x. _1 ^3 G' L! w1 p) ~4 J

  145. + D! L6 ]6 F4 q( q% W. u" [! l! X7 F
  146. expireAt+ B/ i  o; [  }7 v
  147. key存活到一个unix时间戳时间
    7 T6 D, @- S+ k* ]; d- K% b
  148. $redis->expireAt('x', time() + 3);! S# {8 B9 M* V4 V1 a9 @- b; C

  149. ( t' r$ n2 V' }4 j
  150. keys, getKeys) H. f$ |+ t$ O0 u: X5 K+ Z' _
  151. 返回满足给定pattern的所有key
    * D" O' x( B/ z! G1 t" Z- Y& U
  152. $keyWithUserPrefix = $redis->keys('user*');
    % J! ?4 U1 B2 W) c% P0 Q5 g# J# K
  153. . K3 K& d  d, Z5 @7 B. J. s
  154. dbSize& N2 x% h3 o3 {, d- i
  155. 查看现在数据库有多少key6 H& z; F: U( E9 h5 |) y
  156. $count = $redis->dbSize();
    8 z5 D! v- f* Y4 Z: Z
  157. ( E4 B9 @# s1 Y  L2 w( ~+ @: T
  158. auth7 B; |8 m7 ~  y5 n
  159. 密码认证& r5 A, Z! q- d$ e
  160. $redis->auth('foobared');. i7 A, _2 t- J# _' v8 {/ l
  161. 1 G8 t: D7 c" x* g8 O" v5 v
  162. bgrewriteaof
    5 i# P  R* u& i, P) c# t
  163. 使用aof来进行数据库持久化+ m# Y$ A0 f1 J4 H  ]/ s) z5 w
  164. $redis->bgrewriteaof();: Q, n/ m( B4 R8 n5 K  N

  165. & e3 l9 \: S2 H) c" e
  166. slaveof3 {/ g  q) K2 v+ R  a% _3 f7 ~
  167. 选择从服务器
    6 }1 z# D) m/ d* E
  168. $redis->slaveof('10.0.1.7', 6379);
      J/ E4 h3 J( H2 w& k, V

  169. . _. I& z/ `2 V* b
  170. save
    " g2 O7 m* T: _( ^1 b! A
  171. 将数据同步保存到磁盘9 M4 |! U9 z% V, v$ u

  172. 9 Z1 ~/ d/ e0 ]: H
  173. bgsave, Y! X; Z# E* I3 @3 r( H
  174. 将数据异步保存到磁盘
    . t  C  n6 f# V" n* B+ G7 u4 {5 X
  175. ' w) C+ v; b7 h
  176. lastSave
    2 c- M  C9 ?8 i) F8 c0 }8 s
  177. 返回上次成功将数据保存到磁盘的Unix时戳& y( H7 e% ]9 v9 C$ _: p9 L
  178. ! v; K( P' F+ ]. R/ }/ T& B! q" B
  179. info
    . R2 G6 K7 E) Q' f" y! \; V
  180. 返回redis的版本信息等详情2 m  W' g. x, n: e, V

  181. / c" h, K6 F) L( P
  182. Redis::__construct构造函数
    7 n! [$ `7 ]0 ?  y
  183. $redis = new Redis();3 S* E2 T& e3 D' L/ ~6 q

  184. % b# K# F8 ~* r6 ~
  185. connect, open 链接redis服务
    ' v8 r. N, g8 G% d- Q( t" @3 D
  186. 参数
    6 f6 l$ R- s& ]- w! k+ D  A$ o
  187. host: string,服务地址0 [4 J* v% m- _) s& `5 j
  188. port: int,端口号  m+ F* Q4 l0 m; f" {) I
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ! ]! v& ]8 q. ^! {" ]$ @
  190. 注: 在redis.conf中也有时间,默认为300. K  E" j0 u0 x4 n: L
  191. & s( t* X; `7 _
  192. pconnect, popen 不会主动关闭的链接' P. F8 a8 k% R" d
  193. 参考上面, A2 h9 `" [: a& ^& M
  194. * V2 ~4 y6 m$ N; o& M
  195. setOption 设置redis模式# _3 p3 Q4 U/ x) U

  196. ; H4 s0 S' E4 l" v  p' J
  197. getOption 查看redis设置的模式! U0 r$ N2 n+ Z# c5 b

  198. ; t. O/ Q( @! h# l4 X
  199. ping 查看连接状态
    ' Y7 Z( ^8 o* Z) `0 C- K8 a
  200. % V- n8 b7 y" ]! s) D; F. f
  201. get 得到某个key的值(string值)
    / U7 B3 w6 m+ J8 J- Z" u8 \3 X
  202. 如果该key不存在,return false; R3 B* Y9 O# y6 M( r- S

  203. ) _% |  C, F3 f  D8 _
  204. set 写入key 和 value(string值)
    / ?1 j5 ^* h$ _2 a& ^. @. j+ C
  205. 如果写入成功,return ture) f+ L$ l# M5 H; Q! B: c
  206. ; n  b1 r" m( N  Y0 T' e$ @
  207. setex 带生存时间的写入值
    9 a5 L: ?# q' n1 q7 J5 [
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    2 b6 |; d/ i' a! n: f( s. P
  209. * e: U8 D' {- T1 y7 p# n' I, B) N
  210. setnx 判断是否重复的,写入值
    & K! t) R/ `0 Y1 O: n
  211. $redis->setnx('key', 'value');" @# l" q/ }7 U/ _
  212. $redis->setnx('key', 'value');% Y/ Y& B. I8 C. N$ A" }8 ]

  213. 4 t( h* R; [, Z# w: J1 {$ V
  214. delete  删除指定key的值5 e9 r3 }8 k) s1 E* t
  215. 返回已经删除key的个数(长整数)& p; y1 ~; X: R4 l
  216. $redis->delete('key1', 'key2');# r: P. i/ u& L! y  N2 P
  217. $redis->delete(array('key3', 'key4', 'key5'));2 h3 g' ]; B" a

  218. $ \6 p% w; U( T- F1 w2 V4 H. ]
  219. ttl
    2 N1 |" e8 k0 L! S
  220. 得到一个key的生存时间1 d8 |; J3 E* O: t# n

  221. % c$ [- x4 g  y1 Q! F3 T) G2 d
  222. persist
    3 q- t9 J& R% M5 M/ R
  223. 移除生存时间到期的key
    . n( ^- h( ~; k4 k
  224. 如果key到期 true 如果不到期 false# {. t# I% L, {$ D8 C

  225. ( J! C; n0 X5 |  {. w& r
  226. mset (redis版本1.1以上才可以用)
    & `: k8 X( v" Z3 c
  227. 同时给多个key赋值
    ( ?$ r2 f- R& d$ u
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    . [2 e3 P9 W  W6 ~+ Q: b1 X) L

  229. 9 z1 V9 X8 s; F0 n

  230. 5 V  l+ r. k2 t

  231. . q' F: P2 l8 h* Q# {/ V! n
  232. multi, exec, discard! F: `* j! X; O( c7 h' y/ m
  233. 进入或者退出事务模式
    : ~- ?& ?2 d# G: J/ |5 G0 c
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    / Q/ U0 R% q7 w7 c, H
  235. Redis::MULTI:将多个操作当成一个事务执行
    4 [8 U0 [( v( e- x' a! }0 X4 B. n
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    % Z) R  K) y* q" d+ _% b$ k
  237. discard:删除一个事务
    8 E: G) B. V2 u* C, R; [
  238. 返回值
    0 L. H2 _. U# I, m0 R/ D3 b' l! E+ R/ x
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。7 w- x( y  N; O! J- q: n; ~( L+ K

  240. : c0 h8 I6 m: ~4 p0 j$ z/ s
  241. watch, unwatch (代码测试后,不能达到所说的效果); B/ R: O. A: y! D- N1 A6 O
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    / j3 h" n1 X( O
  243. unwatch  取消被这个程序监测的所有key
    8 O: s% v- E9 w/ g. ~, j. d3 H1 s
  244. 参数,一对key的列表4 L  P! v8 w1 B; w. B8 b* {
  245. $redis->watch('x');8 w! n4 v6 J2 d
  246. % p7 e; |  V+ W& j6 @  R6 J" H' F
  247. $ret = $redis->multi() ->incr('x') ->exec();" \+ ]8 c! j, n2 o
  248. 3 l/ C$ }: n6 X2 S% m9 b8 S) g; G
  249. " u4 \2 W3 b# }4 F0 Z  c
  250. subscribe *
    0 Q+ G& z9 H/ B  k! y
  251. 方法回调。注意,该方法可能在未来里发生改变
    1 w" s. m" S% {; w% d* A

  252. 8 d. e4 _0 {6 E2 y8 |  E
  253. publish *
    5 v9 I" E/ F1 `7 i$ G
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变6 n3 r- k6 D# H* |7 x

  255. / k$ y  ]" N4 q  A: p5 _% _, `1 U
  256. exists: }  a2 u8 _: Y, t. r
  257. 判断key是否存在。存在 true 不在 false
    7 j0 j. v3 w; [2 _# n
  258. # ]) |' g* B2 _$ d. O' J- d
  259. incr, incrBy
    + g8 g% ?* e1 d/ b3 w
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    . c$ Q" v! q& k0 f  V; Z! y
  261. $redis->incr('key1');3 }( \8 d- h4 f% e& f4 O. N
  262. $redis->incrBy('key1', 10);
    % H1 p) `. k' O4 j! u; H* L
  263. 5 {+ Q- T7 f: E# p5 B+ c
  264. decr, decrBy
    3 Y  s& K% F6 c- I6 \! q) d9 D
  265. 做减法,使用方法同incr3 N8 O: A) |+ x- D4 n

  266. ! u" j. t( L4 m- }' h) p- l  F
  267. getMultiple; w9 m! m4 G) ~
  268. 传参5 d2 o+ x8 B9 c5 _- e
  269. 由key组成的数组
    # }1 N5 W- i% O4 w
  270. 返回参数/ h# F- V2 M3 ~* T# r
  271. 如果key存在返回value,不存在返回false7 r1 p8 x& d+ _5 w. H) r7 _, q
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    * H; k9 `. W! W! T- x" z
  273. $redis->lRem('key1', 'A', 2);& G9 c8 N! T: I: m: [: L
  274. $redis->lRange('key1', 0, -1);
    3 S, v8 N+ i# H6 ^; _0 W

  275. ( P6 z# n" _3 `. e5 g1 |
  276. list相关操作
    2 T; N+ h8 o6 B/ _
  277. lPush0 {! O2 f# Q' r* E- ]8 A2 l$ N
  278. $redis->lPush(key, value);: d' g/ ^+ p; G3 E5 I# L
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    . N* U3 ?# E$ c6 O0 O, P( J
  280. ; l2 G2 x. e/ ]* E2 K. l+ q& `
  281. rPush
    & X1 M( A; N2 S) n7 \) j3 ^7 F; v
  282. $redis->rPush(key, value);
    9 z) S5 I+ J& s7 Z+ [6 O
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    : \$ J+ I$ Z2 a7 k3 ]
  284. # U9 D' L$ Y% Y5 P' q6 B8 h
  285. lPushx/rPushx2 |; G( \2 ]) l) ?; \4 i
  286. $redis->lPushx(key, value);
    , f7 o* R2 K/ Y
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加0 r( B9 }+ w, n0 A( W: c; g4 ?
  288.   J6 G& u. N9 W3 Z
  289. lPop/rPop
    ) i! W, j' \5 ]3 D
  290. $redis->lPop('key');
      T" ^! W: [  {$ R: w5 t
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素& f1 {3 u1 z9 q1 }# i' R

  292. ) K2 F) O3 e0 g7 P
  293. blPop/brPop
    " e9 j' f' r: ]. X, o# L' s
  294. $redis->blPop('key1', 'key2', 10);
    * n$ `9 A; s7 n9 P/ y' B3 T4 o
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    $ F+ R' Q( q( L! z8 }1 [% I% l  X

  296. 8 P2 B6 q/ G5 E3 i1 @$ ~, p2 }: v, I
  297. lSize( n; V8 U0 |- b7 D7 M! x# H3 z$ A
  298. $redis->lSize('key');8 u5 R( m% M* n  A6 S. s
  299. 返回名称为key的list有多少个元素' f' k, Z8 ^% I) V

  300. ; U2 |4 C$ ]: ?  l% `5 K, Z
  301. lIndex, lGet
    3 q& s/ Q7 _! `8 L
  302. $redis->lGet('key', 0);
    . n5 V9 M0 O9 q  Q' d1 K* a
  303. 返回名称为key的list中index位置的元素7 t9 H; }0 x5 ~* C$ v- S# l5 J" S
  304.   M' j! H5 |6 X, F/ M
  305. lSet
    / G; z) R  p- b7 K
  306. $redis->lSet('key', 0, 'X');7 d- E# D$ I( k  I& d  m* o
  307. 给名称为key的list中index位置的元素赋值为value- V3 z* G3 r% `; t6 A

  308. . _  _* |) j3 b% ?8 K. V' [
  309. lRange, lGetRange
    . d! P- S$ s6 Z, k4 _
  310. $redis->lRange('key1', 0, -1);+ m1 f; P1 a, ^
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有); O4 R) T+ ?& H# [' P9 Z( p& q* C! K! ]

  312. 3 z% ~: b1 Z2 f
  313. lTrim, listTrim
    ; P0 K+ e9 H1 P3 }5 T
  314. $redis->lTrim('key', start, end);
    . O1 P, J6 h/ k3 i1 s
  315. 截取名称为key的list,保留start至end之间的元素
    / z; Z$ o5 f" J7 \) T

  316. 4 ?9 g( S' w+ E8 U2 v; Q. O
  317. lRem, lRemove5 g' h8 p! |" v" ?/ z  Q& ?/ r/ P
  318. $redis->lRem('key', 'A', 2);
    0 ^- O! v# c3 N
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    : c' _8 T% B1 T$ c- A  q/ o4 I2 S2 d3 G
  320. 2 c& W4 Q- H9 z2 l& c# N
  321. lInsert
    $ K/ k. L' x$ D, {
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1+ N# `) L8 j. `) V: r1 Z9 O
  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');
    # Z8 v7 l# l" d: d; G; F4 k
  324. $redis->lRange('key1', 0, -1);# ]/ K! y" E4 ]% s) t' h0 B; |% C
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    / Y8 o' n  x7 V8 `& t4 P
  326. $redis->lRange('key1', 0, -1);5 {2 C% D$ z( O4 I; G
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');  F1 f. t( q! Q/ I8 L
  328. ' W! j8 s+ ]6 R8 ~
  329. rpoplpush
    2 [5 W/ I5 G3 o
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    ( T( m. `% v6 c
  331. $redis->delete('x', 'y');2 \8 U2 I  F% _
  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'));
    , _3 l4 r% Q! k1 a$ L8 b
  333. var_dump($redis->lRange('x', 0, -1));
    5 f5 L( s5 A$ L
  334. var_dump($redis->lRange('y', 0, -1));
    % v0 a8 c# c% J4 S
  335. 8 E! w+ `! m7 ?
  336. string(3) "abc"
    5 m; @7 W2 Z" b6 K
  337. array(1) { [0]=> string(3) "def" } 3 `$ Q" H" u( u7 Q, H; s, `
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }. ~/ A* T+ l$ s

  339. 2 {+ o7 I0 t$ l) B
  340. SET操作相关
    2 w! D: S% g) D8 Z
  341. sAdd
    ! R! ^+ Z1 w+ Q8 @0 M
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    7 f: u# N! q, W% V3 q8 e" c' A1 w
  343. $redis->sAdd(key , value);! C$ |! V# h8 y) s' P3 ~( |
  344. # e1 G( ]1 T8 u1 R5 U- o
  345. sRem, sRemove) g2 N$ d  [/ B# f& v/ U. \
  346. 删除名称为key的set中的元素value
    3 E! w- h; d5 r- Z1 o$ K# k; X
  347. $redis->sAdd('key1' , 'set1');
    3 _2 r, O( c  N5 Q, i( v6 I
  348. $redis->sAdd('key1' , 'set2');, u: y& R: k( W3 C: \5 c9 V1 ]
  349. $redis->sAdd('key1' , 'set3');& z/ I+ t; w+ W" |, _' h
  350. $redis->sRem('key1', 'set2');
    3 w5 `3 K/ b& B1 s

  351. 2 B; c. R6 q( K, F8 Y
  352. sMove8 w8 y0 a+ N" M
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    ; S' T$ z5 M- U' M( L% y
  354. $redis->sMove(seckey, dstkey, value);
    . X' Y5 _! i; c1 @0 V/ t
  355.   |" ?3 W% @: J2 g! n3 M& G$ M
  356. sIsMember, sContains
    . \5 \- C5 ?- @4 R
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    1 T0 K% V8 c" o/ \, r" U
  358. $redis->sIsMember(key, value);
    $ b1 U7 [. G- X! y- P6 \) B, ?

  359. - M. h( g$ g" i( y9 l, D+ y  b
  360. sCard, sSize
    4 m! h$ b9 b% O4 _
  361. 返回名称为key的set的元素个数
    2 G# L2 M* N# r( q3 w% l$ x
  362. 1 A3 s8 }8 Z+ b
  363. sPop
    7 j  Z& e- O* k6 u
  364. 随机返回并删除名称为key的set中一个元素
    : Q6 d9 W$ e( p4 x" J$ `8 V- e
  365. 2 j0 |8 p0 i3 H
  366. sRandMember
    6 l: }8 z/ a; Q
  367. 随机返回名称为key的set中一个元素,不删除
    0 C0 [/ _7 \- }7 G9 Y& ]
  368. - P* i6 F  @8 [7 O* `# k& f  i
  369. sInter: x9 v: Y2 v% f. h
  370. 求交集
    3 M7 x, _5 I# d2 ]

  371. & e+ C" n0 v5 A
  372. sInterStore
    1 T' n' H5 ^) w" M
  373. 求交集并将交集保存到output的集合6 }- ^" {2 T$ s; |7 x5 F, m3 {
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')8 Y8 e+ t& i0 q. Q, j
  375. 1 V" s: }7 i7 U* T
  376. sUnion
    $ M! ?% v5 U8 i( Z9 H2 d' \( g
  377. 求并集# T+ J% }3 j% O9 t& y
  378. $redis->sUnion('s0', 's1', 's2');2 [/ t3 y+ q! K& v# u- w
  379. s0,s1,s2 同时求并集
    - n+ `$ X8 X" v
  380. ; b1 ]4 s. _, f
  381. sUnionStore
    $ I2 \5 O0 B- q8 P. a
  382. 求并集并将并集保存到output的集合* e/ G# v- z" s
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');! y- z8 M7 m5 ]- w" Z& Q+ N6 T

  384. ' k/ u$ [5 V% u/ ]
  385. sDiff. z* P% n' C2 M+ [. T# _
  386. 求差集1 s6 V( R, a3 u: c- N

  387.   c: o, s+ B  L+ B% \9 X
  388. sDiffStore& y% w$ K6 q( U0 B% ]
  389. 求差集并将差集保存到output的集合
      Q; ?( c% O; U0 O. W/ p9 @; t

  390. - C! j% h, A, k0 Q0 P
  391. sMembers, sGetMembers7 t3 x' ]1 @$ ]4 v% V
  392. 返回名称为key的set的所有元素
    + _( ~& d/ b! |5 Q9 U: C

  393. 7 f/ t: ^( y5 z: K$ b6 j) d
  394. sort
    4 y# z$ }5 g% b8 P
  395. 排序,分页等8 x2 O0 s+ \* z1 j2 T
  396. 参数! F: w- b$ I  O5 b3 {
  397. 'by' => 'some_pattern_*',
    ( _0 R  |# h; h' y/ F- g" a9 C
  398. 'limit' => array(0, 1),# Z9 R( U0 w5 U$ Q$ U% X+ p
  399. 'get' => 'some_other_pattern_*' or an array of patterns,3 h4 ?2 V- J0 K2 [2 s
  400. 'sort' => 'asc' or 'desc',: H# `5 K% T1 V. p
  401. 'alpha' => TRUE,
    6 L$ I2 o& \- y) u
  402. 'store' => 'external-key'; `& P9 \4 p) ?/ l+ K$ i
  403. 例子
    $ \3 Z8 g, M$ I0 Z' H. @5 ^
  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 B- ^3 R- d* S& c! N
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
      D: m! z# D2 O9 c, ~
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    + a2 ~' q1 i/ P5 k- O- M
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5$ D: n5 m" n& m

  408. 5 w/ M& s* q+ k! z7 t
  409. string命令: d6 e# s0 g5 M6 r
  410. getSet/ f& j1 K' f# `# p$ m0 W2 \
  411. 返回原来key中的值,并将value写入key
    1 \, G# G5 C2 r. q. @, ~
  412. $redis->set('x', '42');: a, O0 s7 E! u9 r
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    0 W  W3 l/ t2 f0 k( {0 M
  414. $newValue = $redis->get('x')' // return 'lol'
    4 `$ B, v0 ~3 ]; I* u

  415. 4 O3 V# p/ \% b, W- A3 g3 D' }# f2 U
  416. append! G6 N2 F- i5 z5 K4 w8 x
  417. string,名称为key的string的值在后面加上value
    2 |  V4 \8 u1 L. c
  418. $redis->set('key', 'value1');* x4 G6 X( |7 N  t+ `0 L# c
  419. $redis->append('key', 'value2');
    * T' `% Z) H! E$ v
  420. $redis->get('key');: t5 _* j6 ~- h  l! S

  421. 1 a0 Z0 z3 p; q" o8 _
  422. getRange (方法不存在)) _. B9 h# ], N# O" F
  423. 返回名称为key的string中start至end之间的字符
    8 F# S% M# k) `9 v% w$ m
  424. $redis->set('key', 'string value');- h5 F4 l0 c7 @4 F; b* |
  425. $redis->getRange('key', 0, 5);2 ^" d' p& o! {: x% P3 S
  426. $redis->getRange('key', -5, -1);
    . P. P  A# s; R3 c: F' \

  427. ; |2 R/ d' q5 {1 q- K: r$ b
  428. setRange (方法不存在)
    ( S; N+ }' i; G* N4 U; K; S
  429. 改变key的string中start至end之间的字符为value
    # w" J4 A- ~( |
  430. $redis->set('key', 'Hello world');
    & u% C8 Y3 Z' B% L" v4 L6 y
  431. $redis->setRange('key', 6, "redis");* Q2 e  \" i7 C& K" N
  432. $redis->get('key');/ w6 E, u: Y8 Y* L6 {& m8 ^9 J/ h7 U

  433. 1 [0 Q( ~& d& k, O6 j
  434. strlen
    8 g; j7 f+ E- C  S8 l
  435. 得到key的string的长度& r& R# I' z/ n
  436. $redis->strlen('key');
    - E# l- i, c6 `* p' m, ]- Z

  437. : G! [# A3 `. I: N* Y! @3 L
  438. getBit/setBit
    5 W8 O7 R. N; |+ A6 s% p1 I4 |4 E
  439. 返回2进制信息
    # E3 e' Y% B; y! j! d
  440. % \, z' J( Z" Q! i6 q1 l, t: a
  441. zset(sorted set)操作相关
    $ \. Q( @; |& @! Y9 I0 r, y# a/ y
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。& \. b# w' _- }
  443. $redis->zAdd('key', 1, 'val1');
      S9 R8 C9 A- h5 K1 r! A
  444. $redis->zAdd('key', 0, 'val0');
    5 K; X5 Q; q2 J$ J* q# I5 b  o5 V
  445. $redis->zAdd('key', 5, 'val5');
    0 H0 \6 f5 W; ~! w! A4 q
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    9 k  Q# Z' E$ m, F0 e/ A- K

  447. 3 b* D8 U, k5 w
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素' J% _8 c' T7 Q- `
  449. $redis->zAdd('key1', 0, 'val0');4 v) `$ l( _, s9 g7 ?$ J- o% E
  450. $redis->zAdd('key1', 2, 'val2');/ Z6 Q2 p; S& b! Q
  451. $redis->zAdd('key1', 10, 'val10');
    ) i0 f9 n9 G9 ?' v9 i+ u4 Q+ J6 S
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    2 Y7 Z7 K. i" S) j! m

  453. $ T, B% o# X5 v6 [7 i; U2 z
  454. zDelete, zRem1 B5 h. x: L$ p9 E3 E. {( G
  455. zRem(key, member) :删除名称为key的zset中的元素member' h, i. C6 n; I' K. @" u
  456. $redis->zAdd('key', 0, 'val0');
    7 I1 j) S' B; O
  457. $redis->zAdd('key', 2, 'val2');( {) x! Z( a+ O
  458. $redis->zAdd('key', 10, 'val10');
    4 e9 y8 H4 h+ J) U' h% D
  459. $redis->zDelete('key', 'val2');
      _7 a8 x1 M& v+ z" q' E: j4 x
  460. $redis->zRange('key', 0, -1);
    3 V: L% D% r% S( K1 i; i/ K

  461. + i: e9 T5 B. J3 O6 T/ L
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    4 O) m/ h  H; h  s% h
  463. $redis->zAdd('key', 0, 'val0');  R# S/ E3 Q* E6 K4 \
  464. $redis->zAdd('key', 2, 'val2');7 C+ w3 I" X1 O
  465. $redis->zAdd('key', 10, 'val10');
      H7 L+ o) M6 q
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    ( a9 S/ x! }2 `0 L) C

  467. + ~. Z; d& E) c7 P0 b" I7 ^, {$ o
  468. zRangeByScore, zRevRangeByScore
    * ]2 I6 F4 H: y
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    9 B) }0 t( _, c" }: i6 y
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    , S! r8 s4 P$ B

  471. 3 [2 p) Y# d! `
  472. zCount; \% X9 }  m. y
  473. $redis->zCount(key, star, end);" y, u5 u1 v4 u9 {
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    . ?1 b+ M  b; R1 ~

  475. / q/ @9 b! C: ~
  476. zRemRangeByScore, zDeleteRangeByScore' ]+ L. [4 V! k* f
  477. $redis->zRemRangeByScore('key', star, end);
    " k0 e, p, D+ H* C3 u( k
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    2 [' |& M2 z/ N- {: |0 u

  479. * ~7 i+ e5 Q7 e1 T. i% {
  480. zSize, zCard3 j  r3 s' H6 P9 S' Z% L
  481. 返回名称为key的zset的所有元素的个数
      P8 F% D3 E$ {. h8 d: g" t
  482. - S; q' g+ z; Q) \
  483. zScore
    9 c0 P( O+ Y) ^1 d) p2 F
  484. $redis->zScore(key, val2);2 M3 t! Q0 A# o2 h- ^
  485. 返回名称为key的zset中元素val2的score
    , c. T9 r# v% H2 S9 E$ A$ K
  486. / o: u( c! c  l8 r& m7 U
  487. zRank, zRevRank7 }6 H) V4 m4 s3 e& T
  488. $redis->zRevRank(key, val);3 L. S4 Z* p9 I3 J5 w7 F" f
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序5 Z. Z' k" c7 F' _$ ^, I7 g9 z3 ^+ T
  490. $ P6 @3 D% D: `1 @" j
  491. zIncrBy
    - J5 ?+ {/ g9 Y9 `+ n3 w
  492. $redis->zIncrBy('key', increment, 'member');
    " h, R, X- _, k3 s2 \
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment" D$ h3 x7 _3 X+ s  R$ U% `$ _
  494. 3 r/ n0 P& ~8 e, P7 T
  495. zUnion/zInter
    % S9 v/ u; o; u$ J+ T# Y, n, J
  496. 参数! w& \7 w% o1 `  y
  497. keyOutput
    ; |7 M, X/ G; ?0 w" }! @. @
  498. arrayZSetKeys4 }) o' M1 y- R) A' H
  499. arrayWeights
    9 m7 K/ |( w5 F% d
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    2 h' @0 G/ u: D2 e) w! x3 n
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。% ?- c9 A, R5 Q. \: w- }; h4 R
复制代码
' j: |/ ?6 V8 d0 ^

; N; [! w+ T: P$ W
$ I/ U- U8 L% y2 @' Y$ e" B& K7 x8 s0 J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); ! i) N( [: ]+ l: c' B2 B
  2. //连接redis服务器 ) j) b7 g8 H6 w, Z5 I* E
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 20:56 , Processed in 0.124947 second(s), 18 queries .

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