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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    9 ]- C# J$ |7 b6 O* Q) `6 B
  2. $redis = new Redis();  
    5 N- F# u) g/ M5 l5 {
  3. $redis->connect('127.0.0.1', 6379);//serverip port
      ?3 A+ P# M$ K) ~% W( M
  4. $redis->auth('mypassword');//my redis password 1 t( s) }4 q, t& F  G! r# I  _
  5. $redis ->set( "test" , "Hello World");  5 R, u8 u5 j7 }6 N5 S
  6. echo $redis ->get( "test");
    ; p& g; t3 J8 ~- J, _. D' N
复制代码
php操作redis函数封装
  1. /**
    . }3 U* @* X9 f$ k3 k7 D- Y' `/ F, z
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ( Q3 Y4 P* X- h! ?
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    * U2 R0 _% Y6 G* B) B
  4. */' v6 y  k9 ]$ L) n& N
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    : E" E( k8 o; x/ Z# p
  6.     if(!$key||!$value) return false;
      i( _: b0 S2 k# ]
  7.     $host = $host?$host:getenv('REDIS_HOST');6 ]1 z2 `3 E! h
  8.     $port = $port?$port:getenv('REDIS_PORT');3 Z% O6 C6 W4 r" [
  9.     $redis = new Redis();' }- R+ f3 R6 e- [1 F
  10.     $redis->connect($host, $port);
    , m; q, y  L) V' c& ^
  11.     $value = is_array($value)?json_encode($value):$value;' d& |3 ~+ O" s
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);7 x$ j+ V- w) S: `  o! i
  13. }
    7 R% s  ]+ U8 x7 y6 ~+ l
  14. /**
    5 H$ n# b+ x0 N* g  F( c
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    1 s# R* i; z1 |; P- c
  16. */! g; [7 |' w7 w/ g
  17. function RedisGet($key,$host='',$port=''){
    8 ^+ C  h9 ?% z
  18.     $redis = new Redis();$ \+ x7 ]$ y% g$ ^# R: W
  19.     $host = $host?$host:getenv('REDIS_HOST');
    2 P- |3 P7 u  t2 D; g! F) h9 _
  20.     $port = $port?$port:getenv('REDIS_PORT');
    , ^# Z, `6 ]  e- ~
  21.     $redis->connect($host, $port);
    5 Q$ ~1 S/ @9 |8 j2 b
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    : y8 l  p  r) q' ^" R
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);8 `3 f) G  A# k) _" h6 D
  24. }6 L- E: w" i  E* g- [/ r0 U" t; v
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
2 x. [6 Z, Z. v
  1. setex 带生存时间的写入值
    . Y8 F' |4 W+ P: O9 ]: T( f! m
  2. $redis->setex('key', 3600, 'value');
    5 V6 a. U% O/ c9 H  @
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1: P, M+ h: x' S0 I5 b" m3 V
  4. $redis->setnx('key', 'value');
    , ~, R1 C- X4 ]/ p; T2 ~
  5. 返回已经删除key6 a1 P6 _2 P( Z  v  F3 K& V! J- f
  6. $redis->delete('key1'); 成功返回1失败返回0
    - U: s1 V+ ?. y7 p; t. O
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    ( L8 C- P7 [  R" S- g
  8. 查询生存时间( \, J4 \: z) `* U
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)/ I& _3 e, h$ u
  10. 同时给多个key赋值,同时设置key0和key1' _# v% |; u# j7 ^7 Y
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));- Q1 G4 w6 z/ e8 h3 f3 d
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    " O/ C/ [7 b# `" E2 Q2 Q$ ]& J, H
  13. $redis->incr('key1');
    " \5 s  n/ u- `" c  l
  14. $redis->incrBy('key1', 10);8 v% ?" b- T$ L
  15. 减法跟加法一样7 ]% J7 ~1 B; _, g
  16. $redis->decr("key1"); 减少1
    9 Z8 R" V% S* L+ K3 @
  17. $redis->decrBy("key1",5) 减少5
    , D/ `! o9 z1 q+ |' k2 X

  18. ) j3 b2 g5 ?: K/ ]; o5 k: K, t
  19. list相关操作,连表操作* `: b' y  k9 E( \" n2 l
  20. lPush! F9 r0 l* {5 K" b
  21. $redis->lPush("list", "888");
    1 V% q2 s6 Z. Y+ k9 w, f
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    + E* E3 N* B' a8 U  t
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    - E1 L/ G8 k4 {9 ^1 D0 a
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素+ e" ]  F$ w! w$ {+ v: {$ z
  25. lPushx/rPushx) a4 H+ ?: i& a) c$ _) |3 N  S' Z
  26. $redis->lPushx(key, value);! P& ?0 x5 I/ V6 U. K
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ( z( D4 z. E/ Y$ V( f; J2 P
  28. 7 L1 R! F8 F. ]. ]# @
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key7 M# m3 U* G/ [" M+ d
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key$ R9 H9 b6 f# v
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回16 K9 t1 t" ?: o4 e) M6 v/ Y' g! P
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序" x. G$ a# R: V% H1 u0 U; u
  33. sadd s1 zhangsan
    9 m  H3 i- y/ l( y
  34. sadd s1 lisi
    7 }( d# Z2 t8 J- j  @
  35. sadd s1 wangwu' e0 j+ q' e; F0 e  \" E
  36. sadd t1 yangxingyi
    , }0 x! W( c2 M1 o
  37. sadd t1 lilei0 ~; E* K/ d, p5 v+ A
  38. sadd t1 zhangsan" K$ P8 x! \* Q: T# H
  39. smembers s1 s1的所有集合内容! F1 w0 E. F4 q% T" P5 b; s, Z+ Y
  40. sdiff s1 t1 s1有的,t1没有的,差集+ V, S+ ^. g% K& P! F1 [  L
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    6 A: b2 ?$ l2 M6 }9 q# r6 `
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ' U6 Z( w7 H/ m1 ~+ K
  43. spop抽奖场景,返回集合里面随机的数
    * b% K: P6 ~! L* ?3 s
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了) Y& ~& G  r- I+ {
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    : a/ o% K9 x4 B: V7 T1 o2 v* `
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的* A* F! u  ~0 {' p
  47. 随机返回集合里面的一个元素,但不删除,重复中奖3 H9 D- b; p' |/ Y2 Y. k
  48. $i = $redis->srandmember('s1');echo $i;
    9 P- M+ o3 Y* c# H( M& E
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    * X5 ^1 K5 v( S: u2 ^+ x9 c
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false' {5 B% B0 t& V0 s  h5 Z
  51. ( @5 }5 a: D0 h0 g
  52. zadd key 2 value 有序集合1 z1 d& M" K* b0 P" y) H
  53. zadd y1 1 zhangsan;# J0 b& L0 t7 }6 s2 f- \0 T/ i# T  Y7 @
  54. zadd y1 3 lisi;
    0 m6 |7 A& g  g
  55. zadd y1 2 wangwu;
    & s4 [1 d+ Y/ O, }( V  X
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi1 X3 Y4 g: g' a6 y7 `
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    # [4 G: p' b, L& I; _7 n: @
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    / l4 H; c# c6 j0 \) x! [4 O3 z
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先  o; ^7 e4 z$ [. L3 B5 g6 ~* n: }" |
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的: y* c, L3 N9 R5 z$ h
  61. 无序就scard,有序就zcard,有z没有s
    ; K" x8 k" x7 p) H. ^
  62. sInterStore
    $ R: \1 U: N4 _5 W  n2 K3 l! u
  63. 求交集并将交集保存到output的集合% h" X1 n( q2 ?) F0 f
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')! @6 B  v0 l0 Z4 y5 d3 \, y: t

  65. . Z. [- A3 x6 d6 A5 |9 p
  66. Hash操作
    , A7 |% J+ o: S& K0 F
  67. hSet
    ) `3 {6 V' s7 n/ b- z
  68. $redis->hSet('h', 'key1', 'hello');
    ; m+ n, p# M* i4 x$ i
  69. 向名称为h的hash中添加元素key1—>hello0 ^: g, k9 C5 f; z4 @9 f

  70. - r. q+ w+ ^( P  k' @; i7 @" n
  71. hGet
    - U/ S4 O' X0 t) |" W0 o' \
  72. $redis->hGet('h', 'key1');9 F3 C& P- B8 h3 e1 Q- j
  73. 返回名称为h的hash中key1对应的value(hello)
    5 i% \: |$ x! h# Z5 b# _! S
  74. 4 {! V" s2 o2 E  j+ m( ?
  75. hLen. G+ K9 t9 y+ s$ |
  76. $redis->hLen('h');
    1 b  s8 z  j% P
  77. 返回名称为h的hash中元素个数
    * |/ b$ [! J' X- K' m$ ?- x+ z
  78. 3 b) Q- w) p( c% E, m
  79. hDel
    , Y' X. Q% J+ s6 [) D( v
  80. $redis->hDel('h', 'key1');
    / c( a% y( M- S  q
  81. 删除名称为h的hash中键为key1的域
    # C  B; W! V7 U# S) d9 ^: w' O
  82. , v1 {& G5 e2 Y
  83. hKeys+ \: X9 L& Z( s3 B
  84. $redis->hKeys('h');
    4 \$ t* S. @* V: e; {5 z' x
  85. 返回名称为key的hash中所有键1 H# c1 l, k* ]6 X7 f' U- W

  86.   q% D1 H6 k8 y
  87. hVals
    / Q( x1 Y+ _, r" s# c" M
  88. $redis->hVals('h')
    ' g) b& t, i% G" e/ H
  89. 返回名称为h的hash中所有键对应的value
    - {% M- z) @. ~/ c7 C2 b% g+ @! C
  90. # j9 l6 ^' I$ V# ~
  91. hGetAll
    7 y4 R/ C8 d7 _
  92. $redis->hGetAll('h');! _% ]9 m( @2 M0 d+ J. L
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    ) x; u* }" d. P3 E, i. a$ Q3 c

  94. 4 \/ Z7 ?$ Z* @2 x. d
  95. hExists2 x2 Y% g- U4 \6 Z; h
  96. $redis->hExists('h', 'a');
    . b- n# {9 v4 A
  97. 名称为h的hash中是否存在键名字为a的域
    " I. F# x6 m/ m) J
  98. ; O- \1 S: i( H! P
  99. hIncrBy4 c4 z# z2 `4 w1 M. l: n  }
  100. $redis->hIncrBy('h', 'x', 2);
    ( I2 D6 y. I' M$ I# A
  101. 将名称为h的hash中x的value增加2. p$ c6 u% r0 ~4 N( C% |- a# B8 v

  102. % _# U/ I5 p$ E0 S( i( V2 e# q
  103. hMset7 H2 u6 q  q7 s% ]' L/ {; Z- c
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    % ^% y5 {" E- T# C
  105. 向名称为key的hash中批量添加元素. y* D# z1 Y! u- |1 o! q, z
  106. # \7 K) T5 S# \9 h! g
  107. hMGet: l# q8 Z$ z" l1 P$ t
  108. $redis->hmGet('h', array('field1', 'field2'));
      ~  y" O* u  r
  109. 返回名称为h的hash中field1,field2对应的value
    $ [4 d0 |% {. B$ f
  110. 2 N" }5 Q8 j9 u
  111. redis 操作相关
    8 e7 P$ h: {# Y2 X4 G
  112. flushDB
    $ c( c0 E! Z# ~* j
  113. 清空当前数据库/ `, m1 f5 E$ [; Y/ V- X

  114. 4 T7 O+ `, i. L2 D; I$ P5 u% ]
  115. flushAll
    * E3 @! _! F4 m+ Z9 n
  116. 清空所有数据库+ {: o/ {4 v0 b  N; G9 n" r

  117. ) _7 d3 \. L0 Y$ ?6 \: e: [
  118. randomKey
    - X' i  C! T3 j, Z6 C5 P, `1 \
  119. 随机返回key空间的一个key' u% }& ~5 b4 C6 p( _$ O
  120. $key = $redis->randomKey();* _( Y" H0 H( W) y7 R( U. s
  121. / j8 R' p4 O; N, X# h
  122. select# Q3 M- _4 O6 p% F1 m; ^
  123. 选择一个数据库
    2 u4 A. X  ?$ l+ z4 R8 r
  124. move8 V4 ]3 Q5 ^5 [% _
  125. 转移一个key到另外一个数据库
    ( [; c( X; |* K5 i
  126. $redis->select(0); // switch to DB 0
    : T8 n: f3 k7 t& K8 f0 D/ j+ c
  127. $redis->set('x', '42'); // write 42 to x$ R4 Y6 N0 b6 A( L
  128. $redis->move('x', 1); // move to DB 1
    : A8 E& u8 N. Z5 a
  129. $redis->select(1); // switch to DB 1
      w( K! h- U6 q' U: A5 @
  130. $redis->get('x'); // will return 42
    6 R* q- z) \) T/ I) }$ A

  131. * h/ `$ u* f( _/ J
  132. rename, renameKey
    ( G" @4 ~+ |* _+ ^, e- ?
  133. 给key重命名
    * R  c( ~" |6 O1 \
  134. $redis->set('x', '42');
    " R! J, n( [2 b! v$ w* N4 E# `
  135. $redis->rename('x', 'y');
    # a, x9 n" Y- C; h& C
  136. $redis->get('y'); // → 42
    3 F  L# B. ~2 O' `
  137. $redis->get('x'); // → `FALSE`
    : ~& q! i. z  z5 |& k/ s

  138. ; e+ p( c8 |6 `" H0 `% z
  139. renameNx
    2 G8 S+ i/ k* ]* Z
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    % _+ ?1 F5 Q$ G: o/ M' ~
  141. : x, h+ @" E2 Z5 T2 ^- u
  142. setTimeout, expire+ e# k5 q1 ]4 h) C, ]
  143. 设定一个key的活动时间(s)5 M6 `/ J% l0 p6 O
  144. $redis->setTimeout('x', 3);
    : |( y4 ^2 Q9 F

  145. 9 t- Z! ?' a$ [$ E3 I
  146. expireAt5 c8 }1 T% X3 [: ?8 O+ w
  147. key存活到一个unix时间戳时间) [9 h8 `0 K, F* C& c
  148. $redis->expireAt('x', time() + 3);
      J8 }4 c( b+ I- M" K8 o
  149. " B; u& B2 I2 b
  150. keys, getKeys
    4 }( C3 ^% T. r
  151. 返回满足给定pattern的所有key% R% w  D3 _, S8 Z$ B
  152. $keyWithUserPrefix = $redis->keys('user*');
    ( _! y: Y3 z7 g/ Y- a

  153. # J5 c* Z$ H$ S# `  `% i* ]' ~: K
  154. dbSize
    4 u  S, w- ]! s! j
  155. 查看现在数据库有多少key
    ; I* a/ u0 D5 v8 E1 K0 }; W* K
  156. $count = $redis->dbSize();
    + |, h( N3 A4 X' i$ u& T7 d( [7 a
  157. * v$ M( R' M+ t* }
  158. auth% q5 U8 V! R4 Q# O% \& z* ?# H
  159. 密码认证6 w1 S, U" Y4 c! d/ u
  160. $redis->auth('foobared');# a* \. w0 P0 O! z

  161. / B8 t5 t7 R: `" M/ j# Z
  162. bgrewriteaof* s8 e+ |" J5 W6 w" f) l+ C: t
  163. 使用aof来进行数据库持久化5 @/ o. u; \, |( f3 x
  164. $redis->bgrewriteaof();0 r8 D- f& e( N0 {$ x! U
  165. $ P: Z9 B7 g# f) U! s2 K) C3 S7 j
  166. slaveof4 V5 r8 }' H* p$ ?' ]  S
  167. 选择从服务器9 \0 m$ N, m  O: J) k+ ^
  168. $redis->slaveof('10.0.1.7', 6379);5 E1 U7 q" c' W" {. G+ E! _. h
  169. , r. E1 U4 ^) i* X5 E' r$ D* \. p
  170. save
    8 ?6 o. Z& l" @: k+ B2 M& s
  171. 将数据同步保存到磁盘
    . ~& B3 C! y* K" t: n0 o
  172. 8 J* ~4 W/ p# p* ~5 c
  173. bgsave
    % y- p% e$ [% {! m
  174. 将数据异步保存到磁盘
    * e, {0 c- y3 R) c. z- B

  175. 4 }! h* ]! Y# j. S- @: }
  176. lastSave! W4 s$ c& N3 R8 H# \1 ^
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    & C5 B7 }3 O. U8 l- |4 U) H

  178. 6 Y" C/ M2 p0 J: a
  179. info
    9 k9 p, I0 p# }9 t$ N6 M
  180. 返回redis的版本信息等详情
    ) l& Z- u( @7 G# ^. S# o
  181. 8 s" y" `. V0 g' _, Y6 m
  182. Redis::__construct构造函数) T3 Z' k" C# ]2 P6 _- |1 _  ?% t
  183. $redis = new Redis();( {, I* I' S+ [* Z6 x) P
  184. & s' i) ^4 |% m6 z
  185. connect, open 链接redis服务
    8 @2 B, \/ e/ ~" O9 W7 ^) [& S
  186. 参数
    : O8 }0 b, M' ~" |9 S0 Q
  187. host: string,服务地址: F$ \+ s7 k7 l! U6 g# D! ]
  188. port: int,端口号
    " r0 T0 h3 _$ D; l; N* v
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)  J- ?* f2 d4 b  S, M. q4 l/ g
  190. 注: 在redis.conf中也有时间,默认为300( [3 [+ C4 Z- m
  191. ' [% C  m. _2 b3 f; ?
  192. pconnect, popen 不会主动关闭的链接; }$ Q/ P+ ]# A: ]  R  o/ i- q
  193. 参考上面
    . a/ Y: c4 F  a8 \1 J

  194. , W6 ]9 o8 q) [/ D6 U
  195. setOption 设置redis模式
    ) M- k4 b3 H2 g: b2 G: J- f
  196. + m1 B1 J2 T7 O* g) O& x
  197. getOption 查看redis设置的模式4 L0 r) B" q5 h( u

  198. ' O0 V: @6 b1 x# c
  199. ping 查看连接状态
    % E. D* H5 ], L+ `. p$ y# U

  200. " X$ K* M5 k8 U8 R  P  M+ a
  201. get 得到某个key的值(string值)
    2 H! G. D/ x: s5 \: x. A9 s& [
  202. 如果该key不存在,return false4 y$ U3 A1 E8 x) u$ P/ }

  203. $ \8 x/ Q* `: |+ N
  204. set 写入key 和 value(string值)" I* {1 R) c% p6 n* y
  205. 如果写入成功,return ture2 U4 _& q1 X( p: U, u

  206. 8 Y( l, G3 \* J3 K: j' Z, `0 `8 `
  207. setex 带生存时间的写入值
    # q( w  k- @7 J, T& \
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    * t; q- @& ]6 l' C
  209. / \& B; U; [2 x( B# @) i5 I
  210. setnx 判断是否重复的,写入值3 V) ^; Q: U; D+ _
  211. $redis->setnx('key', 'value');
    2 {" Z9 I9 u: M, @' z, V8 C
  212. $redis->setnx('key', 'value');9 y. e" F; b! U5 m3 f# u
  213. - y9 ^7 A; O4 w" y
  214. delete  删除指定key的值
    ( k8 Y6 g! b  d0 c1 Y" J* x
  215. 返回已经删除key的个数(长整数)
    - z2 K7 H3 |8 ^, ^/ e9 F
  216. $redis->delete('key1', 'key2');
    7 c3 E6 @2 e. V  J! |* {
  217. $redis->delete(array('key3', 'key4', 'key5'));
    4 x% D8 T. ~* `6 e# ~; U0 `6 E/ P
  218. $ h+ z8 C7 n4 o0 A% H, g" N
  219. ttl7 O# y7 R8 Y3 w7 j9 C: p! `
  220. 得到一个key的生存时间! d6 Q; Z) ^( Q4 [  G* r1 _

  221. ) I8 p( F. X: C4 O) S! {
  222. persist7 d1 B& V9 G* F# V
  223. 移除生存时间到期的key
    / u& b/ j9 e/ v/ U7 ~. Y' O
  224. 如果key到期 true 如果不到期 false3 s6 h! R3 W$ e# t
  225. 2 }2 S( }5 k$ P" S0 V
  226. mset (redis版本1.1以上才可以用)5 Y7 k% y3 R4 F! ?& t. |1 v
  227. 同时给多个key赋值& S0 }  p6 G' U& k3 z( b0 n: M
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));! G0 Z. P. M' k% I# H

  229. , \# V) i" i6 ]7 Q; `1 L# a9 B2 w
  230. . ?+ E# f* m# {( h8 W7 O) t3 r
  231. $ R4 d" k, N% ~5 `& J
  232. multi, exec, discard4 g3 j2 k9 v/ L, ~" K7 ]
  233. 进入或者退出事务模式1 d+ [1 I* X$ }5 l
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI6 l  Y& s: z, O; ~; I1 l$ N/ ^0 _# ]
  235. Redis::MULTI:将多个操作当成一个事务执行5 _- L& _! ?1 A3 i* d
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    1 A! e7 G- z" i4 U; V% Z7 `
  237. discard:删除一个事务! @! \0 \$ V/ a; X! Z
  238. 返回值
    ) r& Y3 c: ]5 ~. L  x
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    # i  ^. q' D! t5 T0 {9 h

  240. 1 U: i2 E' M, R2 F/ V$ T- f
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    * L9 j$ T2 U- [8 o0 {7 e. F/ Y
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    1 ?/ c) f" i# \5 n2 s
  243. unwatch  取消被这个程序监测的所有key8 l) K& ^3 c- t: ?0 [4 c
  244. 参数,一对key的列表+ p; O1 a1 r" t4 V
  245. $redis->watch('x');1 M5 y( j0 ]+ a
  246. 0 g. N4 O8 k& d0 ]; A6 H
  247. $ret = $redis->multi() ->incr('x') ->exec();- `* t. p6 ]% Z3 d# s
  248. 9 v6 g+ W  j! U% F

  249. 9 K9 l) ?2 [5 @& ~$ e- E* H
  250. subscribe *
    . K8 m4 x5 M) e" m) }; ^
  251. 方法回调。注意,该方法可能在未来里发生改变5 L# _) T3 f3 Q5 }% `8 L
  252. 2 T& C% p; E8 v# G
  253. publish *; I/ O( j: Q( Z; `- A, g! W
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变" K& T9 g8 A2 X8 ]; u
  255. : d4 B( Y1 f. V7 z) j
  256. exists
    ; q/ O- T- @  s1 Q) T
  257. 判断key是否存在。存在 true 不在 false
    " y5 T+ V# G9 N9 g" w
  258. 1 k* F! `2 K) p, I2 i
  259. incr, incrBy8 Z' ]4 C2 C! b& M: l8 k
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    3 O! W! ?7 l3 Z
  261. $redis->incr('key1');: O) l9 o) z: e' o% Y
  262. $redis->incrBy('key1', 10);
    * e- i7 C& g0 O. L4 i: E& ?& }( N

  263. 8 y0 s8 K3 B; h5 N* f
  264. decr, decrBy
    3 [7 |5 y3 b! c3 P3 v# ?
  265. 做减法,使用方法同incr
    + K5 i; g$ H8 Z9 |( U1 x

  266. 0 T9 k3 t- N. l/ I0 r4 r4 l: B: o
  267. getMultiple5 J( O. H3 y  t4 \+ r/ a
  268. 传参% c& n+ e  y& F) [9 X% F
  269. 由key组成的数组
    . d. x9 Q- r" {( M0 ~
  270. 返回参数
    ) O8 h5 z+ [+ y; G
  271. 如果key存在返回value,不存在返回false
    - m& a' F0 T7 f6 A1 \! G1 f. ]
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));  q% C- n3 J& w/ D3 @
  273. $redis->lRem('key1', 'A', 2);# P3 }% G# h: ]6 J6 t' F& h" s
  274. $redis->lRange('key1', 0, -1);
    ( p7 I% Q9 m: R

  275. / ^5 b0 B% [+ n. S9 e
  276. list相关操作: R# u4 R/ [3 h- e& c& R7 s
  277. lPush
    8 L- \% u6 Z* y
  278. $redis->lPush(key, value);0 N$ L# L  v& N" N' b; r3 P
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    & }8 ]9 _- I4 Y8 y3 W2 b

  280. & H1 O+ a2 B0 g0 s5 W& d" z: E
  281. rPush% v0 Q0 |3 P% z( x; E0 L8 v' B
  282. $redis->rPush(key, value);2 q9 _* i1 v( f
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    5 F$ z, R* z" N
  284. / S. ~) G2 ~$ e- F2 u" _- j- M
  285. lPushx/rPushx
    4 ?" T. `4 E; L; U  S
  286. $redis->lPushx(key, value);
    0 C- `' n' m( w: d4 h5 g
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加2 ]) Y/ C9 [/ n, h* N7 S  U: n
  288.   z% h) i6 q+ ~# L6 U; q$ L. G- |
  289. lPop/rPop
    $ Q1 l( u. Y" k. X  I
  290. $redis->lPop('key');
    * [, h& i! P4 U1 @/ K/ F$ F
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素* l; `3 {6 H4 E+ B* Y

  292. / G) F1 _# U3 W
  293. blPop/brPop5 k7 O, N' S% k% J, A! Y
  294. $redis->blPop('key1', 'key2', 10);
    % e7 I* s9 N6 `3 O
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作/ s( U4 F3 p1 d9 T5 I
  296. . a* @% E) Q$ g  C& \% S: Z  ]
  297. lSize5 c$ @3 F8 }$ N; g) L1 ~
  298. $redis->lSize('key');/ V8 p) t4 a+ s+ M
  299. 返回名称为key的list有多少个元素" I, _7 l! p) T* R  w

  300. , E# G/ H! ?( p% \4 H' a
  301. lIndex, lGet7 o  a; a; T( y9 w8 G
  302. $redis->lGet('key', 0);) q; W" i, ]3 E( r
  303. 返回名称为key的list中index位置的元素. A9 i3 x' j; s& Z
  304. $ E. @7 R5 F) @3 l* j' n7 |  K  G6 E" `
  305. lSet
    " \6 z4 e9 @) Z6 t0 }
  306. $redis->lSet('key', 0, 'X');
    1 ^- P" x( Z' i5 x/ T+ o( R% p
  307. 给名称为key的list中index位置的元素赋值为value% D1 h" u; L6 U

  308. , S# A: b6 {2 N6 ?/ V
  309. lRange, lGetRange
    9 b: V& [0 X5 N! F$ X2 j8 T
  310. $redis->lRange('key1', 0, -1);
    7 W- E$ Z& u# n; A
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)3 R5 c& Q4 K- Y3 m$ k* y
  312. 0 r6 e  ]5 @7 w* j0 M1 u
  313. lTrim, listTrim7 C" f0 }8 `( E& \
  314. $redis->lTrim('key', start, end);
    % F* z" c* _5 m" r4 x* {
  315. 截取名称为key的list,保留start至end之间的元素+ D4 z) e- ]$ O! c& O' q* y) g2 i2 ?

  316. 7 [) J0 L/ y) [. r; b+ g! {% o
  317. lRem, lRemove
    8 T6 K+ I* U1 j0 a" ~) j) S
  318. $redis->lRem('key', 'A', 2);2 X/ \0 y, Y7 f3 ^
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素" d" ~2 X" }+ S/ d0 @+ @

  320. : u% E, A. ?& ?" j) g
  321. lInsert9 a6 W9 o! [; {& `2 f6 ~! z
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1. ~( T* Z5 M: ~/ W* M0 E! 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');# Q: Z2 M5 r) e7 q
  324. $redis->lRange('key1', 0, -1);  @3 V. \& r( U" r3 L5 ~
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    * x+ m" Y+ O$ A& j
  326. $redis->lRange('key1', 0, -1);0 ?3 t6 w; G; D" K
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');/ c+ H% j7 t6 g. D9 w8 o3 M8 J
  328. / R9 v0 n+ C$ T" x" b* m  A
  329. rpoplpush  u, z& Z8 q6 Q0 d; J- b6 _5 k
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    . @7 i, z' u2 Z
  331. $redis->delete('x', 'y');
    ) H/ j$ a, a& }+ E9 }; l
  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'));
    0 O' u' I$ k0 k0 y" K1 A4 t* F! @
  333. var_dump($redis->lRange('x', 0, -1));
    , S! L+ {( R% i  y) [, b
  334. var_dump($redis->lRange('y', 0, -1)); ( |% Y3 ?1 w1 f/ o  L# o

  335. 5 u6 \4 x0 q; }$ W- }: e; k
  336. string(3) "abc" ; C, v1 }7 m  _, q8 k- Y, W
  337. array(1) { [0]=> string(3) "def" }
    ! u9 K3 I( v! }  c( K8 T
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    + a) y# Y! m$ i* k1 z% _
  339. . s3 K* T6 Y: q& z7 u$ I' o
  340. SET操作相关1 A9 J6 {% g% ]" m
  341. sAdd2 O7 r7 ?: ]& |
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    $ c7 P& L; |% a. y4 F0 J; N4 z' M
  343. $redis->sAdd(key , value);) s. R5 j- ^6 P- H$ j0 |* X* I

  344. 0 Z1 d6 G/ {  }
  345. sRem, sRemove% G. a0 M, s8 l# H& R
  346. 删除名称为key的set中的元素value
    5 }3 R/ _& r* o/ I  T: G9 T. j8 c
  347. $redis->sAdd('key1' , 'set1');% _( u/ u" Y" c* r
  348. $redis->sAdd('key1' , 'set2');, l+ K  ]; H9 J) I( p
  349. $redis->sAdd('key1' , 'set3');
    * F3 f% T/ a7 m/ J7 m% V0 G; y. n
  350. $redis->sRem('key1', 'set2');8 J0 O; @+ Y. o# {2 [4 @; X

  351. . \* m2 k7 p1 Z9 H# W" R3 @3 e
  352. sMove
    4 f% {7 g4 ]1 P6 d' V. p$ A
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    6 [7 R7 y9 w  x/ q% [
  354. $redis->sMove(seckey, dstkey, value);9 N2 k' Q9 m, w1 p( ~5 ~
  355. , B2 p! x1 {/ ~9 x! I& ~
  356. sIsMember, sContains% U, v4 X3 o* c
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false! k* Y2 s# c' P
  358. $redis->sIsMember(key, value);
    7 e8 U- R8 T* T+ D/ i; `0 _/ b4 ]

  359. 0 Z: P/ l" Z: Q/ P) v4 P' O
  360. sCard, sSize
    # P1 e2 k  r& M# F* E- Z% g" f
  361. 返回名称为key的set的元素个数, }* B- z9 q. z' {3 w
  362. 2 _' Y4 a: `+ W8 r% R' o+ F
  363. sPop  U7 e  A8 [1 Z  ~
  364. 随机返回并删除名称为key的set中一个元素% W- A) g1 V$ H

  365. 4 H- B8 ]/ n# s; N. R
  366. sRandMember
    * X3 P+ p: ?, }- g$ n+ n
  367. 随机返回名称为key的set中一个元素,不删除& x% t/ n" x0 Z" C! Q
  368. 3 ^3 t+ \- t# }4 M9 \2 v2 L
  369. sInter
    6 \8 D. q# ?% J$ Q/ o
  370. 求交集! I% B  o* x) ~

  371. ' e# G4 I  m0 l
  372. sInterStore
    9 C* K+ e3 q" s+ T: ]4 n
  373. 求交集并将交集保存到output的集合$ |: y/ o) U4 v
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    . L# |& C+ P7 p: G) N$ X

  375. % A# C6 E' k  V8 P# G
  376. sUnion1 ]+ F, j- m5 x) ~7 z- A2 B) Q
  377. 求并集
    ! i! B" x( q8 M9 i% r/ s
  378. $redis->sUnion('s0', 's1', 's2');
    ( o) q  e6 [. o2 N
  379. s0,s1,s2 同时求并集3 N$ _  a  ^. G6 K: j5 o
  380. , t/ n* k# s6 c6 o0 o
  381. sUnionStore
    " U2 X- W3 F0 _* }8 B. V* S8 K
  382. 求并集并将并集保存到output的集合
    * z& v- Y# t2 m& O2 Z* K
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');+ @& a1 O4 v: h8 h8 `2 I
  384. 6 o9 d. k( p- s& I" l
  385. sDiff
    % l6 T, Y$ k5 K5 Y" s0 ?
  386. 求差集; r+ P7 R! _& ?
  387. 5 T0 R) Q2 ^4 A4 E( d
  388. sDiffStore, u) A7 l7 e% E5 s8 D( l
  389. 求差集并将差集保存到output的集合1 t. W" Z+ U% L! H5 ^
  390. 1 b. n- A& D2 ?! ]1 Q
  391. sMembers, sGetMembers0 X. j) ~  G7 \- N- ^
  392. 返回名称为key的set的所有元素# z& e0 I! [3 x( m( v% g
  393. / j5 i! a/ o! E; M! J9 P  f
  394. sort
    9 m8 T! U7 B. p1 `1 t$ Q
  395. 排序,分页等, l, [" q# N9 M' }- k, Q
  396. 参数# x# m+ R; J! P  m5 Q' {0 d
  397. 'by' => 'some_pattern_*',, e' u- X2 }# W
  398. 'limit' => array(0, 1),& J, w% D9 P& m+ S+ Z9 v
  399. 'get' => 'some_other_pattern_*' or an array of patterns,# A3 G, J' ~2 B6 `& I6 R: S: D
  400. 'sort' => 'asc' or 'desc',
    # ~) ?- s3 T' q& M8 j
  401. 'alpha' => TRUE,
    % |" E! J; E* t
  402. 'store' => 'external-key'
    5 b; L9 p8 c# E
  403. 例子
    . B& o% B' w* ]0 _0 A5 V/ K
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    : Z" ?9 d+ _9 F. T  G  f$ \
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    1 ^* _: D" T3 Z
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,12 i0 @# [3 E& a1 t7 g
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    ' ]# t8 [4 w, k
  408. 2 g+ E: T! y  h" c/ d4 e- K3 Z
  409. string命令+ X* H& n, m4 @
  410. getSet. e' F- k+ C! ~, Z% J& B1 L. n* n
  411. 返回原来key中的值,并将value写入key0 `  s' p/ j% c0 ?: h% s# s
  412. $redis->set('x', '42');
    - o/ l1 j( ?  r$ S6 E2 b: i2 q! D
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    7 E& R; @$ [4 Y2 t" i, }
  414. $newValue = $redis->get('x')' // return 'lol'# Z+ N1 |9 N( r$ F" d

  415. ! @$ b; a, A$ F- _. x% }$ X
  416. append! }5 \+ v3 h# V+ f- J  Q
  417. string,名称为key的string的值在后面加上value1 A, y8 Z# g& N5 a1 T3 E% U" X3 z
  418. $redis->set('key', 'value1');
    % {' N5 P! [; s" F
  419. $redis->append('key', 'value2');0 p3 ?/ d# m/ L  ^# H
  420. $redis->get('key');
    9 P  P, J, R: f. J4 h( H
  421. % J& H3 P( A) K7 s  {
  422. getRange (方法不存在)' \$ m3 |7 a/ u; d# k/ N3 s# J& l
  423. 返回名称为key的string中start至end之间的字符9 S9 ?* P- M. ]: ~4 F
  424. $redis->set('key', 'string value');
    : q* Z6 D9 u) n; o. s
  425. $redis->getRange('key', 0, 5);
    3 s$ ~, x5 t  l' C
  426. $redis->getRange('key', -5, -1);. y, i9 H4 d2 c1 L/ E" k$ \% t

  427. 8 S8 z7 z+ y+ d: n
  428. setRange (方法不存在)
    0 O8 |# ^- s1 @3 E! b! [; L
  429. 改变key的string中start至end之间的字符为value
    9 r* X6 O1 K- V- o+ o
  430. $redis->set('key', 'Hello world');: t" @" v* \- }2 d' p
  431. $redis->setRange('key', 6, "redis");
    ; s3 _) F1 C* B
  432. $redis->get('key');
    # K% D/ C9 D/ y3 @

  433. : [9 L# S: O1 @3 U( o1 X
  434. strlen
    $ V1 a. g7 ^, S% Q; b9 H7 l$ q
  435. 得到key的string的长度
    ( g8 X% Z$ R6 Z% a
  436. $redis->strlen('key');! \$ Y) B: a+ Y; ]: X; g" l

  437. % q9 V* ]( n1 d* u( }/ O# \
  438. getBit/setBit& d% O' O( S+ C# _$ n! K
  439. 返回2进制信息
    ( q/ r- ], P" ?& r$ A) Z) p: s

  440. 5 k5 e! D5 v- H
  441. zset(sorted set)操作相关
    . c7 `9 i  U1 u( X' O& |
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    ( p* y# e$ m( X; B7 t
  443. $redis->zAdd('key', 1, 'val1');2 N/ I; F# g1 T5 d* P' m+ x
  444. $redis->zAdd('key', 0, 'val0');6 d& a0 N: g6 x! P- L* J6 A
  445. $redis->zAdd('key', 5, 'val5');
    2 G% a* H: i& ?4 N
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)/ I# U$ r) f" R

  447. 6 [. ~: ~+ n6 s" R+ c
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素2 @) f; Q) L/ _8 z8 G/ C1 P0 b) \3 B( h
  449. $redis->zAdd('key1', 0, 'val0');
    9 q% O; O* x3 A* O" g' L# [6 g
  450. $redis->zAdd('key1', 2, 'val2');
    ; ^2 G$ F( E  s3 v
  451. $redis->zAdd('key1', 10, 'val10');
    , e$ I% p4 R+ S
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    6 `. _# E! U( o
  453. 4 V6 p5 J" B% o) b$ i# O
  454. zDelete, zRem/ j+ y: |7 ]* v% n: ~
  455. zRem(key, member) :删除名称为key的zset中的元素member& l+ J* K$ k& ?2 j, X
  456. $redis->zAdd('key', 0, 'val0');/ [4 t' f" C2 F8 N8 m
  457. $redis->zAdd('key', 2, 'val2');- e' X' V1 \4 A. f
  458. $redis->zAdd('key', 10, 'val10');0 r+ V6 Q7 U' b: ~5 }
  459. $redis->zDelete('key', 'val2');
    0 i7 {0 m2 ], C0 `5 U% N& G& o
  460. $redis->zRange('key', 0, -1);
    0 ?- C/ C9 O+ X& B+ R/ J  G

  461. / s1 `# W- ]+ N9 J1 c
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出/ R6 b7 F( {- N  _0 Q
  463. $redis->zAdd('key', 0, 'val0');7 `" [9 e3 j" y" K
  464. $redis->zAdd('key', 2, 'val2');3 C' I# l5 r+ C) z. R
  465. $redis->zAdd('key', 10, 'val10');+ ^: e+ k! l" f  I3 @; M9 J
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    4 g5 y+ G" ]: m, D/ R
  467. 0 j% P% w6 E$ z; t& C) i
  468. zRangeByScore, zRevRangeByScore  g  l$ _+ K0 w3 V; J, `  J* R( |
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    4 j5 I8 |* e5 h; P# G# `+ d
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    ( \: q7 S& r8 F- G! f1 j
  471. " @& h) S- h' j5 f" p$ Y
  472. zCount: ~7 ~8 b' r' M% t, U3 J+ a0 ^
  473. $redis->zCount(key, star, end);" a1 h+ c( o: ~# H$ `
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数0 S2 n( j. e8 i) k: A6 R9 C9 y
  475. # o! ]" }% K' ~7 R: R) r
  476. zRemRangeByScore, zDeleteRangeByScore
    3 X3 M. ~5 V* ?' Z# l7 Z9 ~+ _
  477. $redis->zRemRangeByScore('key', star, end);
    - _0 V# O0 a  d4 m7 y+ Q
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数3 o. R# W  ~9 [# v9 L' r% T( ^
  479. : X# P% I8 ?/ x+ S7 Z0 t
  480. zSize, zCard0 G$ i$ Z8 b9 b& _
  481. 返回名称为key的zset的所有元素的个数) p7 Z) y9 Q) P2 T. i7 [& P) U; |9 ?
  482. ) ~5 f$ U5 X0 c* S2 ?
  483. zScore
    + ]2 E: a6 c9 Q: W- F
  484. $redis->zScore(key, val2);+ B" c+ D& j/ h# g; L
  485. 返回名称为key的zset中元素val2的score
    " D. i, H& O. r, a; H6 w$ V

  486. 5 ~' O2 k) T9 J, |
  487. zRank, zRevRank9 |$ C0 O" q3 u7 y. {
  488. $redis->zRevRank(key, val);. q9 M& X& e0 U' G' k
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序! S- g6 W# z* B. C# ~
  490. ; ?; b7 f& b3 P( m& n
  491. zIncrBy
    % H3 G1 `5 |1 Z# l
  492. $redis->zIncrBy('key', increment, 'member');
    $ @/ e) I6 S3 T
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment  y0 T. p" f3 X
  494. ! O+ W" h& C" q5 o5 f
  495. zUnion/zInter' F# k) w; `" m1 e7 ^" K* C
  496. 参数+ @2 t6 N. ]/ o- ?4 {
  497. keyOutput
    ! o) U. ~! {# Z' L# X( Y) k2 q) K
  498. arrayZSetKeys
    * l4 ^2 ]5 D! y1 {3 m3 J
  499. arrayWeights  N+ V, o6 [" y$ y; v% b+ _6 `1 t
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.4 b; Z: M3 S) C: H) e6 [
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    , e0 B& }! S' G7 w! n; j
复制代码
5 }; [8 [- G) D( G& S

6 ^' C' F9 |" x5 Z5 E
' b& d. x& M( ~2 o# F% N$ X) c* N. s( w0 p$ v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    & {3 @* F( P0 g! n
  2. //连接redis服务器
    . F+ b) _7 j& j) _9 p
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-19 22:38 , Processed in 0.091612 second(s), 18 queries .

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