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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    2 k& |7 P& @$ p' K- r; Y) F
  2. $redis = new Redis();  
    % P6 Q; \& E4 Q. s( k
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    3 _/ ~5 _6 E8 N  A
  4. $redis->auth('mypassword');//my redis password
    ! g. w% |0 g# K! q' X; u
  5. $redis ->set( "test" , "Hello World");  $ q/ w( w" M, T& ]2 L( H
  6. echo $redis ->get( "test");$ q' R% A/ z5 ?2 j7 F5 ?8 }
复制代码
php操作redis函数封装
  1. /**
    5 `7 Z) t4 c7 F# o0 V$ _) D
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数$ ]& T6 V4 Q& F
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    % `1 g* d3 [/ o" A
  4. */
    # O; p: L0 {3 [  `0 _
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    6 e) Y/ m# G0 f1 u' o/ i" @
  6.     if(!$key||!$value) return false;
    - Y& @3 ]% m& {8 v  N
  7.     $host = $host?$host:getenv('REDIS_HOST');
    2 n- s3 N% M+ S+ {9 {
  8.     $port = $port?$port:getenv('REDIS_PORT');2 W& q- M, R, g3 b# H# U$ Y% V
  9.     $redis = new Redis();
      v2 r" E* G7 E8 z8 u, x! k0 L. T
  10.     $redis->connect($host, $port);% b9 {  W1 \" S2 b( j
  11.     $value = is_array($value)?json_encode($value):$value;3 H$ R( o3 D' `' J- F  `5 ~; g
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);( J' m2 @/ q! s; Y
  13. }& k4 v( i$ [/ l8 @6 {$ K/ W8 U7 q' b1 D
  14. /**
    ' N* [# c! L! f3 b+ t
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi8 j% y9 s0 K8 B  g
  16. */' P; u  G; n0 v, k5 w
  17. function RedisGet($key,$host='',$port=''){% k/ }8 @# C9 ?: U
  18.     $redis = new Redis();( M5 `3 o% X! V1 a) S6 U: k0 S
  19.     $host = $host?$host:getenv('REDIS_HOST');
    ; v8 U: \& K3 W- k6 o7 C
  20.     $port = $port?$port:getenv('REDIS_PORT');
    + o; J7 }! u3 O, H
  21.     $redis->connect($host, $port);  E2 ~: e4 @" _+ B5 C
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);1 G6 A6 C, \6 F, [
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);+ O7 U/ o4 |; a. _3 y% l' ^
  24. }9 G8 W, K. `8 i7 U2 `7 ^2 k/ |
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
' q7 e  N" F. ]/ [" P: L. j3 a
  1. setex 带生存时间的写入值. Z+ J% S7 g8 y5 B8 Z( b0 s
  2. $redis->setex('key', 3600, 'value');
    - j# o. k+ G6 n" Y: b8 k- O0 H
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回18 w6 o0 m6 L! U* n; s& M  ^
  4. $redis->setnx('key', 'value');; \( K3 n5 ?9 w& R- X+ \
  5. 返回已经删除key! N7 s/ d) q% V% B9 [" p# H6 _
  6. $redis->delete('key1'); 成功返回1失败返回0
    & y; y# u6 B+ r7 ?8 C) P& ~
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0/ W! B* y+ L( a% @! d$ r3 K& `  o9 `+ o
  8. 查询生存时间' P* |* E! o" Q6 K9 m7 }$ a
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)/ S' Y- A9 Z' _2 H1 |7 p5 l, j7 S
  10. 同时给多个key赋值,同时设置key0和key1
      E; z+ ^* O8 ~% p! Y
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    9 E3 ]0 k8 ]$ {7 z5 R: d+ d: \; Q
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    $ ^3 j+ \( p0 H! U5 G1 |8 k
  13. $redis->incr('key1');
    2 M1 t& w5 ]  Y
  14. $redis->incrBy('key1', 10);  L' m! @5 k/ r: F- c* Q) I
  15. 减法跟加法一样
    ' c5 e% W+ n: \5 Z" n# w: a
  16. $redis->decr("key1"); 减少1. q4 m, W4 K" X8 ~* k
  17. $redis->decrBy("key1",5) 减少5+ _/ F! X$ a" `! z

  18. . V: |3 L) W9 a9 A3 j
  19. list相关操作,连表操作
    # B- y( v5 |2 x  O9 [8 c
  20. lPush
    5 ~* W9 Q$ S; m  ?3 i+ F3 F
  21. $redis->lPush("list", "888");" p/ w4 R- u& q7 [1 S
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    4 }# l6 J: I$ D- Q/ I- P
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式6 b/ G' p) Y0 w1 X( t
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    / [+ [$ a: d- B3 E& ^3 `  m( m0 i! z
  25. lPushx/rPushx
    + D0 e- z9 [: e' R; B$ T* @, w, L
  26. $redis->lPushx(key, value);
    $ J- Q0 @. n" Y- H
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加6 B# F6 _# f* v

  28. 5 J7 d* e6 Y2 k$ M' _- j( T6 G, o
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key+ K. L2 X  s9 T1 m- V6 z# y) b
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    9 f1 M& b3 [* b  q+ |5 ^+ x' K
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    2 U" M" y- C7 F& t
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    " |; Q2 u4 }' i# \: p+ K" c' n
  33. sadd s1 zhangsan$ ^) v& Z: o/ D
  34. sadd s1 lisi  `% _2 g8 y$ a. m( m$ ]
  35. sadd s1 wangwu7 p8 Y8 @0 M" h5 n" {2 Q; K
  36. sadd t1 yangxingyi
    ( U) O" \1 X7 J6 e  h: x
  37. sadd t1 lilei6 Q" |& ?2 O! p' C! n
  38. sadd t1 zhangsan
    : u* P7 l  S! w. d9 W  B
  39. smembers s1 s1的所有集合内容
    : S% F6 H! z4 o) t; F; i2 T+ Q
  40. sdiff s1 t1 s1有的,t1没有的,差集  Z2 O, _* ?" B3 r: j. g' A
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ; y" C5 ^+ Y  ]& L
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    0 G- j& J/ K, w3 _
  43. spop抽奖场景,返回集合里面随机的数
    0 O: Y0 \' E( n% g& J/ ?5 n
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了  X: D& [  V1 R8 H# N$ O; l
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    ; E$ }( l$ O% F# y# p4 s
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的- M5 \! @9 n% O7 a
  47. 随机返回集合里面的一个元素,但不删除,重复中奖+ U  d, l# u. T  T3 E+ I% h
  48. $i = $redis->srandmember('s1');echo $i;% B, d+ n% @1 A! r
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    1 e7 ^3 R' D8 I: u$ V) i( J. ]9 g
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false* o. G, Q: e- V2 ?2 ]6 q6 w( g$ f

  51. / n- m" `+ E7 I2 i  o/ |0 J! I
  52. zadd key 2 value 有序集合3 j8 D7 P. P4 i0 t9 m7 {
  53. zadd y1 1 zhangsan;
    ( d& d- f* e1 M
  54. zadd y1 3 lisi;
    8 s* S5 K# W; f9 K! `) B6 O) J9 k9 @
  55. zadd y1 2 wangwu;
    $ i9 g/ W3 j6 R* [& p+ F( q
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    + K! q" K- [. F; {7 L; z
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);6 N5 l. T" @! A8 w" D
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键, A; R0 D) g5 n& P2 G
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先* d5 M1 i: I! V2 Z( i; I: n, `4 `8 D
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ( V/ d" o% |3 V6 q2 }, v$ S( o
  61. 无序就scard,有序就zcard,有z没有s) g3 q5 M/ \7 Y7 M3 }, m
  62. sInterStore  v7 H* }% t! E# E; F! _: s
  63. 求交集并将交集保存到output的集合$ V6 Q9 G* z' U% h0 P2 z
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')& d- I( v' d3 T

  65. 3 ^1 z6 {2 o$ y
  66. Hash操作
    * D9 i4 h2 P/ J
  67. hSet4 ?9 F, K! [" r% D7 T! e5 q
  68. $redis->hSet('h', 'key1', 'hello');2 J3 o+ G) y0 d+ F6 k
  69. 向名称为h的hash中添加元素key1—>hello. U( Z2 E2 U) c9 D1 }

  70. 2 s! Y( w8 k7 {) M0 B
  71. hGet
    & b4 y5 u. v" X# v$ Z
  72. $redis->hGet('h', 'key1');5 a* E6 g" {# |; S$ z
  73. 返回名称为h的hash中key1对应的value(hello)
    0 A! {# d# h  `* G- M
  74. % n& k" h; a4 g9 K) v% A( x1 e
  75. hLen: m9 Q5 n8 B% \' J
  76. $redis->hLen('h');
    : I4 K+ F$ A" z% J7 l
  77. 返回名称为h的hash中元素个数
    - U6 V+ _4 Q- j8 c/ y8 B
  78. / }& s; s2 A; D' |
  79. hDel5 ^- _6 t9 b6 [1 I
  80. $redis->hDel('h', 'key1');
      D; e, X8 @: e4 L' V" A0 @7 b
  81. 删除名称为h的hash中键为key1的域* K- [: d7 k* g/ z6 j5 _

  82. 2 }. M' t, ]1 n3 F& }- M+ d
  83. hKeys- j0 R+ ~/ K" ~! V  y) {
  84. $redis->hKeys('h');  j# j) |4 Z1 X: H
  85. 返回名称为key的hash中所有键
    * ^6 R/ J. W/ S6 r9 Z5 U3 T
  86. 4 |* L3 I, ~: h
  87. hVals8 s" {% `* c4 v% H% b
  88. $redis->hVals('h')
    6 R# u% _: Q2 {4 P  F# D# n
  89. 返回名称为h的hash中所有键对应的value
    9 c. O# G* t2 ^+ \" d) o" A' p3 F

  90. / r. C2 N- v' A
  91. hGetAll. |6 l2 A3 ^0 j( r2 u0 m
  92. $redis->hGetAll('h');" ], c6 _' }: Z& y2 z1 [/ j1 P
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    6 B  i- Z' k' t3 W, n5 [8 K
  94. " S$ J$ W6 j' m! F) R* b5 v
  95. hExists
      M7 |6 Y3 @5 `' K6 w& _! w0 D
  96. $redis->hExists('h', 'a');7 `" E  Y. P4 m
  97. 名称为h的hash中是否存在键名字为a的域9 h. }2 \) \6 h( x1 G

  98. 9 L" {( p( K) M5 p
  99. hIncrBy
    0 l* ?, u# U  d- ?( q5 m8 I+ a
  100. $redis->hIncrBy('h', 'x', 2);
    . e+ [0 ^$ F: h& D+ _" m
  101. 将名称为h的hash中x的value增加2
    3 H6 a5 s4 G8 y1 A
  102. $ q5 V" W1 |& E+ n5 _7 v. ?0 L( @. E5 A
  103. hMset. K% g/ P% M. J9 K+ w
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ; P# c0 Q1 s: N" P, L' S
  105. 向名称为key的hash中批量添加元素
    & i+ S" `/ B# d, ^9 w+ T
  106. 7 l) o* Q& H) S- }2 t
  107. hMGet
    6 ~% O( Z$ _) i$ ?3 f4 ^: {: R4 Q( o
  108. $redis->hmGet('h', array('field1', 'field2'));
    . G& ~$ C' r, [( K
  109. 返回名称为h的hash中field1,field2对应的value! E# R; P8 K% R! ~4 ~

  110. * e. b: }  q! W: k8 W) i( h2 y( \; w
  111. redis 操作相关7 I/ Y2 H# s0 d% t+ K; G' _% `
  112. flushDB
    ; P& {% l" k: J3 S5 N6 ]
  113. 清空当前数据库. ?! S+ Z* l. E. K+ g" |

  114. + {  s$ M% V' ~( K6 B
  115. flushAll4 b3 ^) H4 @7 B; o/ z2 U) g/ F
  116. 清空所有数据库
    9 s$ \' n( ]1 s- k. w) H
  117. # ?- F) \. [( i2 ~
  118. randomKey5 |- c. j/ s/ a% G+ i) g
  119. 随机返回key空间的一个key
    1 D+ w+ _( w9 F# m6 k9 ?
  120. $key = $redis->randomKey();9 C6 ~5 e: o5 Q6 H  {# t
  121. ( z' p4 [3 Z  ?
  122. select
    , x; ?  R: u5 @( ?, f
  123. 选择一个数据库
    + n0 m0 H8 i& w8 {
  124. move
    * X/ i4 P- G. U
  125. 转移一个key到另外一个数据库& Y7 _; l0 V/ {1 ?; n' }
  126. $redis->select(0); // switch to DB 0
    " ^$ w& X* M: J2 y6 c
  127. $redis->set('x', '42'); // write 42 to x  V4 }9 a; |9 v" z# H
  128. $redis->move('x', 1); // move to DB 15 I" K2 I2 {% g' e) N2 `
  129. $redis->select(1); // switch to DB 1
    7 C) ^$ B% ]0 ^3 B! w5 O0 U
  130. $redis->get('x'); // will return 42
    ' u8 ~0 j+ J! _4 {) N. M0 x

  131.   z: A7 [5 D# T1 {( h- y
  132. rename, renameKey- e8 m( m6 _! m8 c. P
  133. 给key重命名5 o+ c* F) u; q2 W& D
  134. $redis->set('x', '42');9 c& B3 W* f8 i# J0 b9 P3 t/ t
  135. $redis->rename('x', 'y');0 f3 T2 s* T7 G
  136. $redis->get('y'); // → 42
    , B, ^; h8 l# {6 I- C5 b
  137. $redis->get('x'); // → `FALSE`
    $ {  B  z4 }# O9 u( G6 l
  138. 2 }3 p% i9 s' \* q. n0 J
  139. renameNx% r0 v3 ^' i; J2 |. P
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功" S5 p7 X! s6 s/ L
  141. 4 X' S. f7 d0 Y! Q+ Y0 K; `' V
  142. setTimeout, expire
    $ o" b* |! T" B* z" z) X: L( U1 q' Z
  143. 设定一个key的活动时间(s), z5 c/ R8 u, a
  144. $redis->setTimeout('x', 3);
    # S. F+ |9 q- `" i
  145. 8 N2 u. S; f( j: c( S
  146. expireAt
    # E+ p! l0 L; g1 k( d
  147. key存活到一个unix时间戳时间
    - M+ f/ H9 d& }8 S6 d/ h; p$ K
  148. $redis->expireAt('x', time() + 3);: k: O6 r3 d9 S
  149.   s0 J- _. c" o, m9 `) C' L
  150. keys, getKeys
    - k1 h$ v2 d3 {/ R1 G& i& r
  151. 返回满足给定pattern的所有key
    : I: k. T  h: F( n" c6 \4 F
  152. $keyWithUserPrefix = $redis->keys('user*');8 b3 f. V: V( Y0 j1 w
  153. ( {) ^! y! Z. J' U: ]
  154. dbSize/ u1 b, @0 s1 l0 q& `. [
  155. 查看现在数据库有多少key
      \( n) Y3 _8 a+ u! I9 K
  156. $count = $redis->dbSize();
    3 s$ B+ B3 R/ r/ Y
  157. # |! Y) ^, w5 I' b
  158. auth
    # m: [4 A! |  c8 V3 p7 R9 y
  159. 密码认证( L8 r5 T$ G* c. `3 E( s
  160. $redis->auth('foobared');6 ?" [8 }- f  v& K- K0 s# a, a

  161. # G$ G3 K. g+ L4 X
  162. bgrewriteaof: N: J! [1 D5 |  K% r& w/ A
  163. 使用aof来进行数据库持久化2 \' i5 }+ g$ y) }
  164. $redis->bgrewriteaof();
    $ G! a% q! G8 R7 r1 o
  165. # Q, d8 j' I$ V5 m$ Q' b
  166. slaveof
    ; z+ _& n9 F& }
  167. 选择从服务器
    0 r+ T+ H8 l! X
  168. $redis->slaveof('10.0.1.7', 6379);
    8 a! [. Y+ w' o$ S& u, p

  169. 7 ]* r& x) I! [5 l4 ]' \
  170. save. K( v9 T& v. o: H2 e* ?
  171. 将数据同步保存到磁盘9 }. X! x* j5 X7 }& U( x

  172. 1 S8 h0 D; O8 U: I$ F5 t1 o: S- \
  173. bgsave9 I  Z7 U( A4 E
  174. 将数据异步保存到磁盘
    8 N2 S9 k  Q! c, l) D7 d
  175. % V: r* J' {/ l" z: S/ A* c, q
  176. lastSave
    / z& v6 \1 s6 ~1 c$ M
  177. 返回上次成功将数据保存到磁盘的Unix时戳5 J  O. Z2 Y! s, T6 ]! V/ L  I1 L

  178.   J$ b& q& y" e) c& R7 Y8 A
  179. info
    + {& |8 ^, W! e: R
  180. 返回redis的版本信息等详情/ W5 d3 k- m" D8 d* l9 [
  181. + D; s5 @8 v6 a6 S6 F
  182. Redis::__construct构造函数
    , ]' f  x4 ]9 E7 K# R
  183. $redis = new Redis();
    / S4 S$ Z- H7 [7 c
  184. & w4 A, K: K7 y( L9 Y" d6 C
  185. connect, open 链接redis服务
    1 Z+ p9 b( E: {6 w! d( K$ X
  186. 参数
    ! Q9 U6 g' t; ~$ d" v
  187. host: string,服务地址
    ( w8 G  @' w& x$ u9 B
  188. port: int,端口号
    + L1 a% Y  e, m; M4 T+ S/ u+ G
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    # M2 C, m8 f6 b5 L
  190. 注: 在redis.conf中也有时间,默认为300- z$ P; P+ d) {% W8 W' A
  191. # |. Q& ]; y& \1 H6 Q
  192. pconnect, popen 不会主动关闭的链接3 t: q. a! q! F# w' x6 m3 m
  193. 参考上面
    0 R. \' {2 L! `8 v

  194. - B! l2 ]0 O$ C/ t" {, V
  195. setOption 设置redis模式
    & y5 o9 \8 E: J  x. q
  196. 9 q  x% _( Q+ N% L6 |9 a4 ?
  197. getOption 查看redis设置的模式
    3 L8 N0 n2 v$ h2 B6 h* Z- k( w, p
  198. . v* {  D5 u3 T, _
  199. ping 查看连接状态7 H4 d5 Q' L# ?1 A- x. u

  200. * A: v( R0 M5 ?0 ^$ d
  201. get 得到某个key的值(string值)$ y) G: {" p. ]- F% d, U
  202. 如果该key不存在,return false$ l/ n" S& d4 @

  203. 8 Q8 y& @: I' S4 c9 C1 R2 b
  204. set 写入key 和 value(string值)
    ( T" ~) f9 `, a8 A! X- l
  205. 如果写入成功,return ture
    ; W% _; l$ e  |" w  d
  206. ( b) \  \' }, K1 [- h
  207. setex 带生存时间的写入值* l. u4 v% u' i2 U: g5 |8 P8 C2 C
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.: c4 _! W+ _' N  B9 G

  209. # e7 L# z& \) I7 N! \
  210. setnx 判断是否重复的,写入值
    . x6 S: |7 |% r* H0 [3 @
  211. $redis->setnx('key', 'value');
    & B1 v9 {+ P0 ]5 a7 ~
  212. $redis->setnx('key', 'value');5 B* o8 k( d) f! h( F0 e  |5 @
  213. & u$ i* k" Q5 C# G4 O2 K. {2 V% J' ]3 b
  214. delete  删除指定key的值9 r0 J+ d, K+ s4 H2 v) w: `5 |
  215. 返回已经删除key的个数(长整数)
    % K2 t- L+ j/ |3 |, w* g& S- _
  216. $redis->delete('key1', 'key2');
    5 g9 e  N2 E0 Q8 l
  217. $redis->delete(array('key3', 'key4', 'key5'));
    ; D) e* ]: e  `# ?
  218. 4 e9 n% m' l  K! x8 [
  219. ttl
    , H6 t: p% _) T# }" D( q
  220. 得到一个key的生存时间
    & s/ G5 `) d- ~. w

  221. 0 o* |- L% @! J& a0 @" N8 f
  222. persist
    ! ^! w+ J9 F1 J& p; o3 S
  223. 移除生存时间到期的key
    2 F: T. ~' ?2 x; A6 h- @  j
  224. 如果key到期 true 如果不到期 false
    - F9 a! p1 w9 g0 N* x" e6 K
  225. 9 n6 t- a% F# x6 F
  226. mset (redis版本1.1以上才可以用)# j2 m" L; t8 t0 ?$ c) q$ Y
  227. 同时给多个key赋值  n6 b# q2 ~0 ?0 p
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));% [( M, u! m4 b4 ]

  229. ( b! H( V7 f- N" l: X& W

  230. 2 U" }/ u" L6 B, P% b  P9 Z
  231. ; q* ?3 H; M  D0 J
  232. multi, exec, discard9 }- ?+ l: W% P5 h" N- g. `0 m
  233. 进入或者退出事务模式
    # y, B! W) N& T7 {
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    # ~/ c4 G8 w2 D5 `6 q6 @7 Y
  235. Redis::MULTI:将多个操作当成一个事务执行' `0 j5 s7 |3 u- W( N4 T) f
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证* j4 b' h: Q' J; s  Z1 e
  237. discard:删除一个事务
    . H% A) T- h( ]- a
  238. 返回值
    ( c2 U8 H  E9 ], Q, P
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    " j7 H7 z7 G: x3 o( _8 l
  240. * D8 P; A) e! s6 B; n
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    ' G9 V8 T+ `# X3 Y
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)9 |  d- [, e! m" G" h' J7 D* j: Z
  243. unwatch  取消被这个程序监测的所有key) N+ u. b! }' C. P
  244. 参数,一对key的列表
    3 j9 l0 Z! y. v  r/ k0 R. W, D
  245. $redis->watch('x');
    ) M. P' w  d+ \0 G: y. X

  246. # p9 R1 o! u0 @: m$ ]- S$ J: K$ C( c
  247. $ret = $redis->multi() ->incr('x') ->exec();( i* _4 n$ ~  x$ \

  248. ! [' l3 o% T8 {2 m
  249. . m* {1 `# x7 a
  250. subscribe *
    ( m1 S3 l. F2 K9 F# `! G2 x$ ?2 ^
  251. 方法回调。注意,该方法可能在未来里发生改变
    5 j3 ~3 V6 f0 x# K

  252. . X6 s$ l) K1 j/ L' T( j9 t
  253. publish *8 [+ r7 z& k6 O0 ?2 x9 u' L
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    / N2 N9 Q+ t; e. @/ b- z* O

  255. 4 Y% t- f1 d. P- [
  256. exists
    # \! h8 h5 q+ X0 z* b. q
  257. 判断key是否存在。存在 true 不在 false
    8 ~7 O" T7 L8 r; E

  258. 2 `& m9 H9 T0 f& n- a# A
  259. incr, incrBy7 l! \" G" o- e' S8 h
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值5 z; Z0 b/ c, M0 ~& I
  261. $redis->incr('key1');
    6 ^# z+ k8 W; }' T6 K
  262. $redis->incrBy('key1', 10);
    & a& G8 Q9 q4 w( r- I' `

  263. 0 h+ Q. K3 q0 {+ r( f; w) t
  264. decr, decrBy7 ~8 n  H+ f# A. T
  265. 做减法,使用方法同incr* \; ?/ A9 m6 k9 r/ ~9 ?8 a
  266. ) F9 K! Z- ]( q0 E4 E3 b) A; I$ Y
  267. getMultiple
      w+ g) g8 W, L9 ~$ {% F( w
  268. 传参
    5 Z+ L! m* Y# k% [0 Z- s& q9 |% Y
  269. 由key组成的数组
    ' ]" H$ ?6 w1 P- ?5 E' V
  270. 返回参数
    " x% q+ O( ?4 V" e- _/ Y
  271. 如果key存在返回value,不存在返回false2 D8 B6 F* U* _( C& S0 n9 ^
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    , \: f7 F$ S% C$ `
  273. $redis->lRem('key1', 'A', 2);/ z; v, m1 N  P% w
  274. $redis->lRange('key1', 0, -1);
    , r6 {6 D9 Z) L0 E' Z9 L
  275. 5 |. ?: _. M0 {9 W0 ^  x+ F7 i
  276. list相关操作+ Y$ S: J6 H  l0 o! k
  277. lPush8 @, ~" {9 M0 E* b$ L0 y# k; z
  278. $redis->lPush(key, value);
    ; T7 R7 o+ Y5 x. L6 q. w
  279. 在名称为key的list左边(头)添加一个值为value的 元素. f9 K+ H# ?4 r; R$ d
  280. $ A9 I+ l, P! z# S
  281. rPush1 ^( @" U# k7 Q
  282. $redis->rPush(key, value);
    : @1 o/ l5 y6 ^  j7 @
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    / R+ \% ^6 w( [
  284. : L5 q  e- r/ k! ?
  285. lPushx/rPushx
    6 \; L0 ?( x0 `; R  |7 C
  286. $redis->lPushx(key, value);, e) l0 p6 R+ z1 P
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加7 N2 l" \3 T, u) b. P* U
  288. 5 L% w* ^& a7 u; k
  289. lPop/rPop
    ' U8 W: z+ O9 X4 X
  290. $redis->lPop('key');
    0 I  S) w  _) L+ k: k
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素2 ?% U  i4 L! y) n: o; M

  292. $ r- ?1 H6 s/ Z( A  F* W5 m: O- F1 M; Y
  293. blPop/brPop
    4 W: O+ e3 j8 N& ?, y' w7 B1 s
  294. $redis->blPop('key1', 'key2', 10);) x; s5 J9 j/ M8 u2 S
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    2 A3 Q2 q" }& A9 y3 ^  P0 d

  296. . U3 A$ e8 D$ C7 ~5 g" Y
  297. lSize
    1 D7 ]* r8 n5 y
  298. $redis->lSize('key');8 U/ \  a, |; s2 g0 N- W" T3 o1 N
  299. 返回名称为key的list有多少个元素( ]: N$ U& D( d8 ~* I* s( h

  300. . y2 r) t7 m3 r( Y& ~
  301. lIndex, lGet/ p# A) c" d: E% [$ z
  302. $redis->lGet('key', 0);% v& L  @1 T, c4 x1 k
  303. 返回名称为key的list中index位置的元素8 z" R4 |) Z4 [

  304. 9 I& S9 B/ j) T; R9 ]5 E# }
  305. lSet
    / \: j, l) d: f
  306. $redis->lSet('key', 0, 'X');
    3 v  O: J6 \! {* P' f; {
  307. 给名称为key的list中index位置的元素赋值为value+ z( j! w) y) g: w! T* B

  308. 5 t* @: h7 D! J5 `& }
  309. lRange, lGetRange
    3 g* G2 x$ h. p" [$ o4 U
  310. $redis->lRange('key1', 0, -1);9 ~) g  b! u; O* `5 W, {9 n0 w  c5 w
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    8 q) c& H2 D8 |

  312. 9 K  W$ t8 Z" W6 c
  313. lTrim, listTrim( W$ V$ X  d( n& `
  314. $redis->lTrim('key', start, end);8 U5 q* j% m& S$ Z/ p
  315. 截取名称为key的list,保留start至end之间的元素# w0 G( K9 |; R
  316. ( O7 ?. Q" Y5 H' K
  317. lRem, lRemove, M8 ~' C1 G$ \( S' Z; G4 c# z
  318. $redis->lRem('key', 'A', 2);5 H* w0 s$ {8 E- o
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    0 O- h$ L$ R5 x

  320. 0 A5 `0 F0 M$ H2 b
  321. lInsert
    7 l* h# i0 P5 }  u6 U8 M
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    $ i1 G' \# R5 j8 i( F4 X
  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');
    ) x/ Y$ Y. Z7 X) k& J6 x! c
  324. $redis->lRange('key1', 0, -1);
    7 L  [+ @( E& a+ B2 h
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');4 ^9 z! B3 u8 R9 L
  326. $redis->lRange('key1', 0, -1);
    1 |4 j) {# S0 f/ T3 g! @( V
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    8 Q0 c$ Y  S6 W1 n0 o+ ~. r3 }

  328. / v7 c. Q  j# \$ O% [' A- v2 d
  329. rpoplpush
      @" P* }' N# J: l  ~& L
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    ) m* ?1 ^' f( Z7 r( A6 I
  331. $redis->delete('x', 'y');6 ~/ |7 ^( e+ U2 q/ D
  332. $redis->lPush('x', 'abc'); $redis->lPush('x', 'def'); $redis->lPush('y', '123'); $redis->lPush('y', '456'); // move the last of x to the front of y. var_dump($redis->rpoplpush('x', 'y'));
    ! J, Y+ @3 d8 n5 J
  333. var_dump($redis->lRange('x', 0, -1));
    . m) O$ B1 e+ G8 W" t  B
  334. var_dump($redis->lRange('y', 0, -1)); 1 B. d0 U5 R( I4 L3 r8 I
  335. 3 f! ?7 P' q' I+ E6 O
  336. string(3) "abc"
    6 t3 C- r: m% x! N. l1 X
  337. array(1) { [0]=> string(3) "def" } # E: N$ ]$ |2 s7 d
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    3 e+ E4 A1 z% R3 O
  339. ) D/ k; u& h, F4 e
  340. SET操作相关2 H$ Y3 A1 i) P: z
  341. sAdd4 a% d, v2 T, X8 t" c$ E# R1 A
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    % W) J, w7 Z4 `( R& k$ W3 @
  343. $redis->sAdd(key , value);* n# j/ s+ h" h- K! T6 E: V9 a9 Q

  344. : h# Z, M. L8 U# j. j4 r
  345. sRem, sRemove
    $ M0 B/ ^* g/ I+ Q! n1 f! L9 |
  346. 删除名称为key的set中的元素value. F, S  W  M8 w' ]# a% _# t; m
  347. $redis->sAdd('key1' , 'set1');
    7 v; K5 c$ M4 n4 r/ c
  348. $redis->sAdd('key1' , 'set2');
    ; K! ~' ^4 B# h6 `
  349. $redis->sAdd('key1' , 'set3');  p  d' j# Y% H$ |
  350. $redis->sRem('key1', 'set2');
    7 g, y4 v* i9 X, K+ X& c

  351. ) r6 `5 T  v8 Y; _5 l. B2 N
  352. sMove
    : V, V$ n% T4 ?4 D# q
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合! v7 C. `, h2 r
  354. $redis->sMove(seckey, dstkey, value);5 D! T) d$ _+ J2 `+ W

  355. 7 X2 q8 N. U; Y1 O9 b! U
  356. sIsMember, sContains, O& X& a7 f  Z- j! t2 t& ^
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false( N, _% X% J" D6 ]( W) F
  358. $redis->sIsMember(key, value);
    # X0 n, Z; W0 c) N; c2 l: ~1 S. s
  359. 3 Q* P- n% P5 p4 L* ?3 W( I. w
  360. sCard, sSize
    . i! d4 m+ W$ j; h2 `, h
  361. 返回名称为key的set的元素个数
    . j$ K: c% J" n
  362. 2 ~) J, S  Q; h
  363. sPop
    & V% r8 r6 j7 p- X! b: _/ T
  364. 随机返回并删除名称为key的set中一个元素0 Q0 @4 t2 A$ Z, r0 Y7 W. F
  365. / p/ W4 ~& Y/ X3 r5 f
  366. sRandMember1 g8 u7 q/ w$ s5 I7 R
  367. 随机返回名称为key的set中一个元素,不删除
    ! m6 H- B1 i7 [' T4 z
  368. : ~7 n0 W* T: K0 G& m: C+ D
  369. sInter6 V- x$ u3 K# N: ]
  370. 求交集
    " I: h2 v3 Y  d, }1 t: n
  371. + m2 g/ V8 E' i* z
  372. sInterStore' R; D9 j" j1 g) [
  373. 求交集并将交集保存到output的集合& x9 u; W* b' B6 O
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    6 l1 p% T9 |# r3 `0 ~1 P/ J5 S
  375. + k5 x& e5 o& w( H
  376. sUnion. @9 ?, r' f5 K. i, t, s
  377. 求并集
    + L/ X: _" M5 \. {, [' b
  378. $redis->sUnion('s0', 's1', 's2');
    6 z' H/ F! L/ {) f  e7 t
  379. s0,s1,s2 同时求并集
    - H4 n& B, n0 N' D: n+ r3 O
  380. - U: h/ V$ v( Y! f4 ~
  381. sUnionStore
    7 N+ T8 I9 E' y# v! n0 T
  382. 求并集并将并集保存到output的集合
    + K$ q6 K0 ^: W" B+ `( f0 y
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    * m. z/ y% n3 m& ]7 ]8 V2 I( `

  384. 3 M# m, F2 @/ p' e* y
  385. sDiff
    $ O- r" \. G& e' U, O" L  O
  386. 求差集
    : H4 F8 \+ o1 v4 D+ b4 L, G

  387. 1 @7 [5 f9 r7 s$ w+ a
  388. sDiffStore
    + L* B7 x7 P! G; O- \
  389. 求差集并将差集保存到output的集合
      K& h& d3 {* w5 F

  390. : f9 S0 c" r/ g+ O1 q
  391. sMembers, sGetMembers% O: a& j" D: i) \% j8 g
  392. 返回名称为key的set的所有元素
    " ]& }; ^; S, }) r& Z" e
  393. 2 e0 e1 D$ d; n! r9 d$ }  A
  394. sort
    : x% L/ h, V5 C/ H; t2 N: k
  395. 排序,分页等
    ( e! L! H5 e. \; s% G
  396. 参数
    ( b+ _% ?2 K+ T7 `1 g
  397. 'by' => 'some_pattern_*',
    / u$ ]! Z& `" c) I4 j
  398. 'limit' => array(0, 1),
    + W0 }- Y5 V( P( t2 f# z8 H
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    8 B, v9 H' K0 Z- v# p4 d  w
  400. 'sort' => 'asc' or 'desc',
    8 ]  H2 R' c! b# @
  401. 'alpha' => TRUE,
    + l7 y0 C( [: }3 g* z9 X
  402. 'store' => 'external-key'- r/ b; M3 i$ l  T: q9 o% u3 F
  403. 例子" f7 F) d2 W3 {- o# v0 q0 N' i
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);% T1 M" J1 K, }0 e0 q* }) x( w
  405. var_dump($redis->sort('s')); // 1,2,3,4,54 M3 N* d! Z. q0 [
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    " o$ e8 ]! H' D- M& P
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    3 o# `+ T8 t0 p" l

  408. 1 I. N: Z% U: r% [$ A2 z
  409. string命令
    + M# w& Q4 s& q6 j4 x; V
  410. getSet$ L" P$ X# m9 \
  411. 返回原来key中的值,并将value写入key  ?# x, D1 k7 j" U- C
  412. $redis->set('x', '42');7 }1 h# Y$ P  F8 h
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'& T1 }! b7 T7 h0 @$ J* Q2 D2 K
  414. $newValue = $redis->get('x')' // return 'lol'
    / P. _% x7 K" J- @( [5 @1 y0 h
  415. # n' M; E3 z4 ]4 P$ Q- }; K0 t
  416. append8 }- I& @# ], Q3 y
  417. string,名称为key的string的值在后面加上value
    8 ]! ]# }  G6 X, J; t  c! E! a
  418. $redis->set('key', 'value1');
    & L6 O7 n. M+ J  H, @0 ^: @) p9 i& I' u
  419. $redis->append('key', 'value2');+ N/ I( t. S) `/ ?5 N, u
  420. $redis->get('key');, S$ W6 z5 Q; N8 q9 C, Z

  421. 1 x) @! e" q% ~- c( I
  422. getRange (方法不存在)# a* c6 G* A2 g4 ?: T% j
  423. 返回名称为key的string中start至end之间的字符
    & Y3 W% F. F" s) R- r
  424. $redis->set('key', 'string value');1 O/ P0 d/ i' ]5 N1 M
  425. $redis->getRange('key', 0, 5);' F9 A9 l) z5 T- `* \
  426. $redis->getRange('key', -5, -1);- h# n0 `' Q9 p* h3 h; }4 O
  427. * Y, P  x7 t/ Q4 Q/ ~6 w$ a6 a
  428. setRange (方法不存在)& U9 U% [6 p# o' {6 l% k& C
  429. 改变key的string中start至end之间的字符为value
    % _- }5 ]) k  }# p3 }, t8 B
  430. $redis->set('key', 'Hello world');9 E* `5 l2 p5 \' L/ b, ]7 {
  431. $redis->setRange('key', 6, "redis");
    2 P5 I5 t$ u2 x
  432. $redis->get('key');) ]  i3 ]: B- U# s- P

  433. + ^! u+ F' j* v+ A) o
  434. strlen8 a/ b9 w4 z: \
  435. 得到key的string的长度
    ( C& g! e% O2 _6 R
  436. $redis->strlen('key');" F  ^/ q% N# Y: ^
  437. ( g8 }. x6 r# Z( L% q2 a0 |
  438. getBit/setBit
    , M: }+ G! H& R( S3 g$ G
  439. 返回2进制信息
    $ {. m2 D; j2 @+ D
  440. ; _) @" h* q& T3 d1 b: `  ]$ O
  441. zset(sorted set)操作相关
    " I) `5 k4 M, x
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。1 Q1 o, G% W5 o, j
  443. $redis->zAdd('key', 1, 'val1');- c' }/ R3 X5 F+ q# r
  444. $redis->zAdd('key', 0, 'val0');/ f. B; M, B: V% l- S' T
  445. $redis->zAdd('key', 5, 'val5');
    ; ]2 w) T+ H) j( v/ I
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    ) T& ?# W& I& P# S/ o) q; y
  447. 6 b. {: W% D' P9 {. \
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素9 W) y: F! w( c4 F% H3 f0 {0 z; B
  449. $redis->zAdd('key1', 0, 'val0');8 ?" c) {) ]' V7 r- z
  450. $redis->zAdd('key1', 2, 'val2');. u. q( L6 U7 j
  451. $redis->zAdd('key1', 10, 'val10');
    ) ~% e9 e  C" z
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    8 I7 r: U  T1 G' \0 r) R. N
  453. ( z& ?9 Y# M3 u1 y7 U
  454. zDelete, zRem
    0 @; h- b7 t, M5 V) ]
  455. zRem(key, member) :删除名称为key的zset中的元素member
    ) j% u" D5 ]' P  O' B
  456. $redis->zAdd('key', 0, 'val0');! y( T. G2 h( H7 z- Q) n
  457. $redis->zAdd('key', 2, 'val2');
    % p% o2 N3 O6 ]9 N- C
  458. $redis->zAdd('key', 10, 'val10');
    ' ~' L. \$ {- ^  {/ W- }  [' `
  459. $redis->zDelete('key', 'val2');# k3 p& |( m" C" E3 ^" z
  460. $redis->zRange('key', 0, -1);
    5 R( J8 ]5 J- h( x) }
  461. * y, u" z! X$ g) x: J
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出3 a/ `. r/ X0 C! ?# l, i0 ^% f
  463. $redis->zAdd('key', 0, 'val0');) E6 j3 ~3 y4 P0 `
  464. $redis->zAdd('key', 2, 'val2');/ u% z- A0 z+ P9 t
  465. $redis->zAdd('key', 10, 'val10');
    4 d; e4 t3 x) r: ~, L( b* }) p
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);/ ?1 q$ G0 c) r1 q5 _( R% h, q  g

  467. 7 b. I3 a2 K8 K6 Y% H, M& Q
  468. zRangeByScore, zRevRangeByScore
    3 x+ u0 I. w3 f$ }
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));& f$ C- i/ Z/ p" e# [2 U( _/ B
  470. 返回名称为key的zset中score >= star且score <= end的所有元素  k4 m* p" o  k5 D& _

  471. / |( ~6 r4 R5 B# Z) z# Y# y
  472. zCount
    / Z' Q5 b1 M  o% m- U9 t
  473. $redis->zCount(key, star, end);( `  }0 I/ D& Q) V
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数! U& U- B' k! ]% }

  475. ! R2 d" B. `0 @  Y+ r1 Y
  476. zRemRangeByScore, zDeleteRangeByScore
    3 \" {% n% O8 U7 ?; g2 ]
  477. $redis->zRemRangeByScore('key', star, end);1 V! J% r0 b3 o: Z' R4 b8 c
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数! R- {0 Q- E5 a( @4 M6 W8 `* Z

  479. # y/ P0 }; d& M0 }4 h
  480. zSize, zCard
    * t4 z& g$ ?! g" [0 y
  481. 返回名称为key的zset的所有元素的个数
    5 s# G, x2 Y$ {$ L9 m" ]  j
  482. $ ~8 O2 K5 m7 A# M" e1 ^
  483. zScore" G# n7 n  J" r* l
  484. $redis->zScore(key, val2);
    3 K/ a  v- }% G- ~  C% {  }: X* Q2 @
  485. 返回名称为key的zset中元素val2的score
    ) R" H" h: T: z4 h% L8 n
  486. ; s% ?) t1 \- ?* W/ A4 R) e9 v
  487. zRank, zRevRank
    6 K! D& R2 x- _: h6 ^
  488. $redis->zRevRank(key, val);
    / n8 k! ~+ r. h' W4 {% ^
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    ! i$ z6 D6 J, L. K, P: M, i
  490. , g) s5 c- E( b$ p) l. m
  491. zIncrBy
    , [( a# j9 U4 r. P
  492. $redis->zIncrBy('key', increment, 'member');
    " Q; s9 p/ m' i# C$ i! D: p$ o
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment9 Q+ y: A0 a2 D+ s/ f

  494. ! R9 s  ~2 L7 m+ t7 u
  495. zUnion/zInter# o% Q0 [) K2 |# \0 m2 `
  496. 参数
    0 P4 g" X; B. z! o; @
  497. keyOutput
    - ^% T. L& g+ V+ z2 G7 K
  498. arrayZSetKeys2 B* P3 @* R% N, ?- c1 w0 e7 a
  499. arrayWeights
    5 o9 F1 J3 u/ `
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    * s, g6 j: L- F
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    5 }# Q$ s- D$ c1 l
复制代码

- ]# z3 V/ j) z! |' F
9 m% W& J( ~1 R% Q9 }" f7 t/ ], G3 p* T

4 e# p, C4 ], p- ~; m+ J. \+ U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); ) y" U6 c9 p) Z
  2. //连接redis服务器
    ( S+ p  |2 A# V$ s5 {2 T
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 17:23 , Processed in 0.069546 second(s), 18 queries .

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