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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php) ?* J2 |- _& N- w/ M
  2. $redis = new Redis();  4 W' x2 U% f$ ]+ z. y
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    2 G! f# G) u% [3 V  r
  4. $redis->auth('mypassword');//my redis password 0 L  O, g, V. W1 o1 f: O
  5. $redis ->set( "test" , "Hello World");  
    2 C! Y- \4 V% K$ [
  6. echo $redis ->get( "test");* i7 e" \( A  R0 s* X$ B
复制代码
php操作redis函数封装
  1. /**
    $ e* b( g3 d- P" R/ m
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    , i5 ^' F2 d& O5 U3 N* X
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    6 h) \4 j) }% f3 x7 n# X. O/ V, ?! ^
  4. */$ [; a* j$ {6 d
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){0 [, j* b7 u) w/ H( S" |
  6.     if(!$key||!$value) return false;
    . {  A; x( `/ S! S
  7.     $host = $host?$host:getenv('REDIS_HOST');( d+ o3 n; x- I' l  C6 Q9 {2 Z
  8.     $port = $port?$port:getenv('REDIS_PORT');
    1 l: l! }  k3 ?1 m) j; y4 X' H. l5 a
  9.     $redis = new Redis();
    & L# n3 p7 G3 I2 L$ J! R1 Z
  10.     $redis->connect($host, $port);$ ?& e, B2 I3 {' t& B
  11.     $value = is_array($value)?json_encode($value):$value;; T' l. D, `& X8 m0 M; I
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);' S7 d( Z7 S0 O9 Q0 v9 s9 M3 |
  13. }* d/ `, |& ]5 M. p
  14. /**
    3 x# @& I' M! Z  m1 Y" [) b: q& T
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi2 m. q& D0 J" ^  a' Q0 r! o2 |
  16. */8 C) t6 h: c( v" j  z  N# {
  17. function RedisGet($key,$host='',$port=''){" I6 b8 j" \0 [  G0 s
  18.     $redis = new Redis();- l) U7 d3 H+ q7 I5 h$ h" M1 r8 M. O
  19.     $host = $host?$host:getenv('REDIS_HOST');
    / P! t0 B  ^% B9 \
  20.     $port = $port?$port:getenv('REDIS_PORT');
    ( p$ ^1 i" {% s, t: z& w
  21.     $redis->connect($host, $port);' ?' M. v+ o. k, \) p+ m, x
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);- @  \8 g! ^- V9 A% g' B# {' l
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    6 [. E- _' R& u
  24. }
    % n% _1 I- Y/ @/ R) C
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了8 ?% a- N( M, t4 _" l+ v
  1. setex 带生存时间的写入值* o9 [! A6 n: F/ y1 r
  2. $redis->setex('key', 3600, 'value'); . D0 P$ E4 T- V/ m  H
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    : Z5 p0 [9 L0 M/ @" K" ^7 g
  4. $redis->setnx('key', 'value');
    " i2 A( O9 c, h" u. b
  5. 返回已经删除key; Q0 e9 H; @3 k
  6. $redis->delete('key1'); 成功返回1失败返回0
    & {1 v! j) ?9 Q. i2 [: `
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    3 _- ^& v- _5 Q8 c$ {) _6 f  P" W' L- O
  8. 查询生存时间3 {" B# q1 }) S8 Y
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    1 \& y9 m& j# g+ d
  10. 同时给多个key赋值,同时设置key0和key1
      j5 P. s+ o8 @  F
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));5 ]. M" m: Z" H; t" X9 O
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值# ?# D6 \9 X2 ?, ^$ s  S1 n
  13. $redis->incr('key1');. E$ @0 ]9 O; E) J
  14. $redis->incrBy('key1', 10);/ q) k% R8 b  e5 F6 J" @1 l' t/ N
  15. 减法跟加法一样
      G+ r! Y7 t1 ?* u. B
  16. $redis->decr("key1"); 减少1
    " U* C5 K$ \8 U5 x$ h
  17. $redis->decrBy("key1",5) 减少5
    2 d. P$ z% e# z( z1 K

  18. ; [( l- q/ q$ \5 Z! K. ]
  19. list相关操作,连表操作
    ) L9 a. k4 ~4 Y$ M" [& {
  20. lPush
    6 A% f( y$ I- f( N
  21. $redis->lPush("list", "888");. d. r  @- N1 s' b! F
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    : i5 U' {+ e2 H8 t# f
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    4 a3 z+ P$ q, N# d5 f! `
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素) S$ e% }; E' M6 x9 V6 R. Y
  25. lPushx/rPushx
    1 ^0 q6 ?3 L9 J* ~
  26. $redis->lPushx(key, value);
    - w8 d5 b$ u- K- i
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ; s* e3 g- P" D: u
  28. 6 B/ h) y$ |8 @% R
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key$ W/ I8 m& G, Y8 {6 B
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key" E+ h2 }" z) g% z1 w3 @* B
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回10 Y2 @( Y" U- u+ ]. B6 B% k* Z
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序, j/ z# S; |& V# D" E0 v, B) c
  33. sadd s1 zhangsan* U5 B1 o) l$ u
  34. sadd s1 lisi
    - X* f4 v6 `# }/ q& G$ s7 p" T& C- i6 w
  35. sadd s1 wangwu- Q# X% x& ^: Q* g
  36. sadd t1 yangxingyi# b5 q2 o$ L9 R, `+ B' w, G
  37. sadd t1 lilei
    % Y( ]8 v: e  k! U" T
  38. sadd t1 zhangsan
    ) n- @8 ~" E: L. L# {3 N0 d
  39. smembers s1 s1的所有集合内容6 M/ z: h$ o9 ?
  40. sdiff s1 t1 s1有的,t1没有的,差集# d3 {" H1 `& ]* U/ A
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式. I, P& `% L/ q
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    2 V: j6 y( m/ W) I5 F9 E6 Z
  43. spop抽奖场景,返回集合里面随机的数5 h* n' V0 [5 K4 x* C
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    8 C* M+ D9 ]3 o( @
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    * d& m% F) Q4 \
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
      O' @. L: P4 O
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    0 s% S* W; Y  G
  48. $i = $redis->srandmember('s1');echo $i;
    ! k; _! }% t! T9 O
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    - V% ^4 R) W4 Y: H) n
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    1 t& }2 c+ l. q! ?) h- a- ]6 F
  51. 9 K- a* \/ b* z1 q
  52. zadd key 2 value 有序集合- Q  [6 @; K& L0 o$ Q
  53. zadd y1 1 zhangsan;
    ( R+ Y) }9 C3 R* G8 @2 E
  54. zadd y1 3 lisi;  |& ]- R8 Y/ O& o3 `: p
  55. zadd y1 2 wangwu;9 T! f/ E. z6 m% l! `
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    , t  ?* q# R* J& h& Z* J7 g
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);2 H8 q, {6 d4 q9 |6 o6 O
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    7 h- D  c1 r. U9 f
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先9 t, i8 l; ?& |0 b- ?5 r) q
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的4 [+ S) ~6 @' o/ s) V: E  |- m! P% w
  61. 无序就scard,有序就zcard,有z没有s
    , T# |, d% v. h
  62. sInterStore6 k0 ~  J5 Y5 Y. _. T8 v
  63. 求交集并将交集保存到output的集合6 C2 ~* M7 V! P
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')8 C7 u: H! y$ W  o- Q
  65. / l$ R& i6 {, G+ F7 f" m
  66. Hash操作
    # J6 l/ N: F/ T8 n5 X$ N) z9 s8 [' {
  67. hSet
    ; n; A! v, r+ d8 l- M9 [
  68. $redis->hSet('h', 'key1', 'hello');! S. D0 f4 r' f: L# A. z1 r
  69. 向名称为h的hash中添加元素key1—>hello
    $ O  }5 z  B; w
  70. 2 u2 Z& G) `! z+ ~  h8 G
  71. hGet% \: X* ?+ ^1 @
  72. $redis->hGet('h', 'key1');
    7 N# Z3 M; w4 p: n( O+ u0 w
  73. 返回名称为h的hash中key1对应的value(hello)$ f- c/ q9 _. @# a& X

  74. 3 u5 Y( i3 B! V6 P6 l
  75. hLen  [7 a) U! ~# n6 I8 H
  76. $redis->hLen('h');
    ( g! M/ ]8 E0 F
  77. 返回名称为h的hash中元素个数) h/ G: Y" G: e
  78. + E6 n4 e: M3 i: {2 f" `
  79. hDel8 l6 ~* s2 `7 b. Z
  80. $redis->hDel('h', 'key1');$ `& ~1 m; Z0 |$ K1 U2 m( h% l# p
  81. 删除名称为h的hash中键为key1的域4 e, _) K7 H, F0 l; w: }, M1 W

  82. ' S) _! P7 c9 A( v, G% Y% @
  83. hKeys
    / @6 e  X7 I& E% o3 a; `
  84. $redis->hKeys('h');- N5 l7 |0 ^2 g5 o
  85. 返回名称为key的hash中所有键
    6 R5 v% N# z0 \5 V! t
  86. . f' R" M3 l+ w8 Y9 J# g1 n
  87. hVals) @/ l3 J) F9 a* T1 @4 d
  88. $redis->hVals('h')
      n9 O0 p, R# \
  89. 返回名称为h的hash中所有键对应的value
    3 D: Y! r$ m7 n% [% ^
  90. & m" g; J$ a7 B0 @5 o# r2 [7 v1 g
  91. hGetAll
    1 G5 B% ]4 e, Z( R
  92. $redis->hGetAll('h');
    : C( P1 X- h% C' |! y0 I: n
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    . \8 z  y" D% {

  94. . S/ V2 b; L5 [
  95. hExists5 l- \+ ^, e  _2 g" I) ^; [
  96. $redis->hExists('h', 'a');5 ]+ a6 Z( {6 z% r
  97. 名称为h的hash中是否存在键名字为a的域
    , k9 _1 I0 N! Z' O8 D. }

  98. 7 x# o- `' `, P( |: Y
  99. hIncrBy' O% ~1 M. _% D" W: m
  100. $redis->hIncrBy('h', 'x', 2);
    % C4 t& m5 F' r6 T% T- V8 J
  101. 将名称为h的hash中x的value增加2
    ) f1 o2 q1 Z- Z9 h

  102. ( |: ]; b+ `& r$ q" n
  103. hMset
    ; k0 d4 G9 ?( i+ s' w% v$ T
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ) {. ?$ y1 |2 N% W* R
  105. 向名称为key的hash中批量添加元素" D+ H: a7 V' p+ I+ I8 m0 O! |

  106. " O( j- I6 ^  B" D3 k% }
  107. hMGet
    5 Q7 `- [# R3 R2 Z/ r9 m- R
  108. $redis->hmGet('h', array('field1', 'field2'));
    1 N4 c6 {, c6 ?$ {+ p. `9 e  A/ f
  109. 返回名称为h的hash中field1,field2对应的value
    . h) x0 i6 p+ Y& [, H
  110. ) z2 E& R& \, i  N
  111. redis 操作相关$ u* f: h/ f3 V2 `
  112. flushDB
    , z$ t; t) O/ h& W- o
  113. 清空当前数据库
    8 B5 }6 C% Y: i+ a( f

  114. 4 R# }8 e" X+ }0 x: g+ E9 q+ w
  115. flushAll
    5 L, Q8 U6 V2 \+ E- N
  116. 清空所有数据库# ]2 m2 ^7 I$ q% b# B

  117. ' N" D$ R* U7 y* g
  118. randomKey1 y/ Q$ W( x& X6 K) K) ~' q7 ^0 Z
  119. 随机返回key空间的一个key
    ) f, `* B$ e9 E4 h
  120. $key = $redis->randomKey();1 x  `3 E; i* O) x/ i! v2 t

  121. ! z9 ]; ~% Y) F; `+ v- e
  122. select
    : p/ c$ S0 b" E4 C* d; U' p
  123. 选择一个数据库/ T4 `6 ]+ |4 _0 G. w
  124. move
    9 u2 |. B' p, S' Q
  125. 转移一个key到另外一个数据库
    - K: E- s' T! i+ I+ u  c7 a5 M
  126. $redis->select(0); // switch to DB 0
    * [- A5 O% N: L9 }& ~+ U6 \7 r
  127. $redis->set('x', '42'); // write 42 to x4 i& ]3 J9 J. y3 L# C
  128. $redis->move('x', 1); // move to DB 1( o6 q0 T8 m) R6 M) O2 e7 Z: M
  129. $redis->select(1); // switch to DB 1& E7 y+ R5 ~0 ^5 i! w/ L+ l: a
  130. $redis->get('x'); // will return 42$ I( J6 C2 v' S' s* {5 Y
  131. 1 I+ Y, L6 f& O7 q
  132. rename, renameKey
    & H+ g1 @; {: X8 ^2 ~4 |" E
  133. 给key重命名
    / I, `$ q9 K! a: h4 `8 D
  134. $redis->set('x', '42');
    ! A( ]9 p. o2 P  g+ s' f
  135. $redis->rename('x', 'y');
    0 K( f' z; S4 @# _5 T6 z: Y1 I" Z1 H8 y
  136. $redis->get('y'); // → 421 q4 g! g) V, p" ~7 N, E& ~- e, P, k
  137. $redis->get('x'); // → `FALSE`6 A. c* g% I8 g1 ?# c+ L, M

  138. 7 T) p6 |9 g* r2 c/ f
  139. renameNx0 H7 u  o% L! I9 G8 ~$ I. Q; P
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功" I! |$ s# ~1 {, L( S: W' O  S

  141. " L# p. q+ W- F
  142. setTimeout, expire- t! p0 e4 C; a8 j4 k% d5 }
  143. 设定一个key的活动时间(s)
    1 a- z) J/ q* h$ r
  144. $redis->setTimeout('x', 3);
    9 q3 ^8 Y1 t, h. b
  145. 1 F0 Q) S4 e" H3 B0 ~" K7 c
  146. expireAt
    & r" V' Y1 F# ^: O
  147. key存活到一个unix时间戳时间+ I- J8 o& H# k# d
  148. $redis->expireAt('x', time() + 3);2 f% E) V8 d& v5 e& E( z

  149. 9 G0 L( _0 {. f
  150. keys, getKeys6 S5 H( }8 M5 Z
  151. 返回满足给定pattern的所有key
    ( q0 r) ?  L# Q
  152. $keyWithUserPrefix = $redis->keys('user*');% c9 h4 {5 `2 {0 p# f! p
  153. - d6 a' r4 ]9 B+ r* _) N
  154. dbSize
    4 w% p- v3 L" T7 R6 L
  155. 查看现在数据库有多少key& X+ ?6 \! X' n
  156. $count = $redis->dbSize();
    & G: t6 {6 U" ]9 W& Z. p

  157. 7 G4 T3 v7 b$ Z( p6 d. x9 Y, `
  158. auth7 N2 u8 @) O8 q( o; p* n# M
  159. 密码认证
    - q0 m" q3 l  |  W  h; I
  160. $redis->auth('foobared');
    , F- I( z5 {: m( |

  161. 1 L& P- W4 l& U( y
  162. bgrewriteaof
    & p% W- O" @, z6 i" b  n6 d
  163. 使用aof来进行数据库持久化
    1 i: Z) P: P) ]* K% S8 S; w. l
  164. $redis->bgrewriteaof();
    ; M: v; O  b5 g5 b2 J% M- u

  165. 9 V( i% p& p, S8 Y) A) l) D
  166. slaveof. \7 a3 c$ b/ _1 i5 [
  167. 选择从服务器
    $ G) {4 k  C3 a' d: _, |: {" O
  168. $redis->slaveof('10.0.1.7', 6379);3 B. z+ L) ^) t* \
  169. ! ]+ G/ I4 t& d+ }
  170. save
    + B' [1 ~. F7 u3 G% `' L
  171. 将数据同步保存到磁盘! C# S) |1 [) P! @  s
  172. 8 n3 y7 @1 Q; M! h& a
  173. bgsave
    # y1 m$ g" ~2 h- i0 c
  174. 将数据异步保存到磁盘
    / g& f- J6 h) Y: z+ O
  175. 1 s% w0 c, _! ]2 C8 u+ w+ Y
  176. lastSave
    7 B- o. Q& B- l) ?% V1 C
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    , ^6 u) \# z: _1 j0 e7 [5 B

  178.   n& `! d+ w/ ?! C, z
  179. info
    + O8 G( v3 z4 S  o  _
  180. 返回redis的版本信息等详情
    - T7 X! h  T) B3 L
  181. ! Z9 p4 J  C2 L+ T
  182. Redis::__construct构造函数' T# M4 h  \+ S7 h- d
  183. $redis = new Redis();
    4 N- J# z# h0 h  b# y, E- ]
  184. + b. L2 j5 `: q6 A! ?. o
  185. connect, open 链接redis服务( e3 k5 L/ M7 S) a0 D% |( u! E0 L
  186. 参数) d' N5 P. B( `0 G" ~  S
  187. host: string,服务地址
    4 x8 @9 Z: V" j1 M% ^/ o
  188. port: int,端口号
    ; {# c, s( G9 L5 @. l# l4 l
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    $ B' q9 E+ s( w8 _5 a8 [
  190. 注: 在redis.conf中也有时间,默认为300: R! z4 M4 ~0 G: B9 s2 S: u

  191. ( G+ q1 y* Y! h$ q7 \7 ]
  192. pconnect, popen 不会主动关闭的链接+ I/ p8 M: m- o$ P' D
  193. 参考上面, H9 M" T/ Y: e3 v  m2 M

  194. 4 C& R1 L- \$ X$ l) t" J
  195. setOption 设置redis模式
    ) D+ {; P+ d- |; l, c" b
  196. " N5 i5 R# S8 A: }4 C5 B
  197. getOption 查看redis设置的模式9 H0 Z! p  Z, d7 Q. F. G1 l1 S, f

  198. + ?& L: ?0 N; B, W& j
  199. ping 查看连接状态2 G* N9 D7 Y" A5 A) w: p

  200.   b$ ^! m6 j- d" ]& b! _, c
  201. get 得到某个key的值(string值)
    + h3 @5 f+ K# }8 B' d- Y: q
  202. 如果该key不存在,return false. _% T9 F5 ~  F) i& x6 n. @7 L
  203. # q" o- c% S; g* `
  204. set 写入key 和 value(string值)
    # N+ T* i& p# K4 N( }) b
  205. 如果写入成功,return ture5 i7 Y# H% N' O7 N: J7 U1 O0 b( u

  206. ! Z5 D  m5 N& a3 I$ h
  207. setex 带生存时间的写入值
    , L5 U! y" c- o- `/ z/ r
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    ! f6 D) e3 ~: O) ~9 @
  209. 8 F  c; b* K5 p
  210. setnx 判断是否重复的,写入值
    8 Z7 e9 `/ i8 D) e6 V2 |9 j0 [
  211. $redis->setnx('key', 'value');4 [1 P7 y5 |$ _4 Q0 i
  212. $redis->setnx('key', 'value');
    ! \7 p; A) T; @# }0 l4 H5 |

  213. ) v( T: [# @1 l) v
  214. delete  删除指定key的值
    7 E% r9 T* e: k1 F# ~
  215. 返回已经删除key的个数(长整数)5 |) Y' y! a4 E; m5 u) S4 f* P
  216. $redis->delete('key1', 'key2');
    7 L& t* m6 f% \% M: ?) Q% m* G/ l
  217. $redis->delete(array('key3', 'key4', 'key5'));
    + T0 g# _2 l! a' ]) A2 I
  218. / M2 Q/ m) d, [5 V& S, ?/ Y" @2 ~
  219. ttl# D# x4 _+ G5 a
  220. 得到一个key的生存时间4 {, r) ]; v3 W) P, S6 O8 @
  221. 1 Y" z' M) a# L: f2 i  h
  222. persist
    3 F4 h$ ?4 e- b
  223. 移除生存时间到期的key
    ! `6 T8 U- m; l( ^- D
  224. 如果key到期 true 如果不到期 false3 z" o) K" X: \9 Y
  225. ' z! A5 N3 ?3 ?" r- e" J6 D
  226. mset (redis版本1.1以上才可以用)1 c1 w& n+ E, X1 w  Y3 V
  227. 同时给多个key赋值
    0 p- ^( [' O' @: z( i4 h* V5 W
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    + x. ?1 F2 n1 z1 x, o! p# o& w
  229. 7 y& ~% `! U9 `. i/ C: K9 M
  230. " J1 ~5 E  t  e- Q; @7 k! b

  231. & V2 m1 B+ N  {" z. d4 m0 W
  232. multi, exec, discard
    : G" K' }1 l8 p8 w/ d) X6 r* _% K3 ~
  233. 进入或者退出事务模式
    * a8 h1 l* X- `5 x
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    1 v7 c+ `; m. j6 j
  235. Redis::MULTI:将多个操作当成一个事务执行  {9 W7 D% b0 |  r4 j# z! T
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证% C% k) M& s+ p
  237. discard:删除一个事务
    0 L1 ]( b  x$ ^- v  V/ f4 @
  238. 返回值# {8 A2 r3 }2 I; D
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
      |1 ~, L6 g( M; K$ [1 S  c8 k
  240. + p* R* l) C7 O7 f
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    % M! G: d% G4 X  T5 [" V
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)/ O, W# a) o* L7 C
  243. unwatch  取消被这个程序监测的所有key
    ! ~& j1 c! R3 m+ Y- f
  244. 参数,一对key的列表
    ; S, ?6 b  U- W) a
  245. $redis->watch('x');, F5 w! a2 t! X* r

  246. 2 M3 z0 y9 b  V) E
  247. $ret = $redis->multi() ->incr('x') ->exec();
    + G4 T* n; ~$ ]5 m) V7 h" [3 A

  248. 4 @" K1 ^4 |4 c/ S, p& B* R
  249. 1 }) l7 |3 ~/ q
  250. subscribe *
    # K- [* E, d$ e  J$ r+ l* h# ^( X
  251. 方法回调。注意,该方法可能在未来里发生改变
    % t$ f% I* s: D- j

  252. $ M+ e+ `, t3 m, A  J7 O
  253. publish *- ?% x6 I- L7 j
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变3 j4 r- `7 W4 O8 L

  255. ; D0 U* [6 F* Q+ V& T
  256. exists
    # O% x$ l  D" ]' n- @$ |- O
  257. 判断key是否存在。存在 true 不在 false4 U) i; r2 a9 V. z6 Y  _: z

  258. 0 I# V# E- h3 Z$ P! o
  259. incr, incrBy1 R1 ?4 S. O" n+ Z9 U
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    8 {$ D; t6 |$ M/ O4 B% X  ~3 y
  261. $redis->incr('key1');
    ) i4 J; C$ v! ^( S
  262. $redis->incrBy('key1', 10);: F3 S% y* \/ |: S

  263. 7 C! ^& N+ {( D1 c4 t4 ]
  264. decr, decrBy  K3 |, L9 V; L: c# w
  265. 做减法,使用方法同incr
    2 a3 m/ k7 X+ a5 H$ K$ x+ l
  266. 0 o' ]4 s( w. j, z, s) }1 ^7 c
  267. getMultiple' K4 P1 }$ ^  [( g0 ?/ f# o. V( Z9 |
  268. 传参) u, L) t; z5 F' r2 m
  269. 由key组成的数组
    5 T  {; \0 J0 Y
  270. 返回参数
    1 [  k: j7 I/ Y  P- r; D
  271. 如果key存在返回value,不存在返回false
    9 n, X- o8 q, s) ?
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));4 A# z3 h2 J$ e
  273. $redis->lRem('key1', 'A', 2);; _+ y# J7 I  E4 X0 z7 k( s
  274. $redis->lRange('key1', 0, -1);
    7 c2 m: m9 C, O. B

  275. 4 q5 ]9 [9 u  q
  276. list相关操作
    5 V1 r! {1 A+ `2 o4 j1 j! j
  277. lPush1 t" Q' Y* x7 e+ e4 x
  278. $redis->lPush(key, value);1 m- w& h; f: q' ^
  279. 在名称为key的list左边(头)添加一个值为value的 元素6 h% P5 {! A) I0 @4 W
  280. ( S. D, O  ^4 W) ~3 X
  281. rPush# x$ s9 |* G( g: M5 K: ?
  282. $redis->rPush(key, value);  r% f4 ^8 a, i( p
  283. 在名称为key的list右边(尾)添加一个值为value的 元素6 X5 V+ L2 E9 E  w. T
  284. % b5 j' V1 v2 y
  285. lPushx/rPushx7 X( h  V4 M( L4 @
  286. $redis->lPushx(key, value);
    + ]  v# l5 r1 b! Z+ j
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    7 G( p& P7 X$ }8 }! k6 X) h
  288. ! A7 q. n: a+ ?5 o8 j
  289. lPop/rPop
    6 U  p/ B/ ^4 Z/ X- c- T
  290. $redis->lPop('key');3 }. f! P, g+ X  C' j' P% O
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    ) t7 k! ?5 L3 K% R& {) u

  292. ) Y: M# x8 c3 x. _$ ^. u
  293. blPop/brPop
    % D+ p  ^9 f* x$ e; K3 B) `
  294. $redis->blPop('key1', 'key2', 10);) ^+ Q7 l8 g8 X/ J
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    ( {' W: `1 F, ~, a3 n

  296. ! D$ @  K- F- E' E; |3 M! i# G
  297. lSize
    2 J( j: ]: C$ s/ M
  298. $redis->lSize('key');0 [$ T- H: m% n2 |- E4 l
  299. 返回名称为key的list有多少个元素4 g( |4 Q1 B# d9 \
  300. 1 D/ b/ @( g" j0 s& E
  301. lIndex, lGet
    % d6 ^$ S4 ~' R, K# a5 L" f
  302. $redis->lGet('key', 0);
    : V5 S; D8 Y. G! B, _% x. }
  303. 返回名称为key的list中index位置的元素
    4 B" E* x# M4 R9 P, x. \+ \! l) I
  304. ' H- _7 N9 Q+ y" [2 C/ b
  305. lSet
    ) i) B7 M* F2 w7 m4 h3 y3 @
  306. $redis->lSet('key', 0, 'X');
    ! d6 k$ s1 y# J+ g! G- w& [$ A
  307. 给名称为key的list中index位置的元素赋值为value- f1 M0 K6 B- `; B$ r2 P; c9 M

  308. 8 W2 T+ T. f. U. j( `8 `
  309. lRange, lGetRange, ]. c/ R4 o  o: P. o: b
  310. $redis->lRange('key1', 0, -1);5 v) I: I: e& v0 m; t& _+ B+ A
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    7 \4 P: H3 D% Y3 E* Z" s) q
  312.   t* O; [  F+ L
  313. lTrim, listTrim
    0 m% f( X$ W! Z: Q3 E/ r8 p" s
  314. $redis->lTrim('key', start, end);
    + S1 K! j& c4 M, n; w
  315. 截取名称为key的list,保留start至end之间的元素4 B1 b& L. g+ B% x

  316. " U- l1 }0 J( t' L' q% w% q
  317. lRem, lRemove. u' d, o8 r0 S4 ?' ]
  318. $redis->lRem('key', 'A', 2);
    : v8 O, e8 \0 g. R( r5 |" m7 b+ U
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素% X$ H$ ^/ K- h- F) r) Y8 R
  320. ( p0 Y# f' W/ L/ `7 S
  321. lInsert
    " {9 D* p6 s/ m1 l! o: u0 e
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    3 d4 }' S5 a7 u4 Z& U
  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');
    7 h7 r  f% M$ \; _7 \4 U5 b+ Y
  324. $redis->lRange('key1', 0, -1);7 l' J% b" n: {2 Y# B7 h* }
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');/ A! X! {) N2 u# g* _+ g1 P: }
  326. $redis->lRange('key1', 0, -1);$ V2 @0 m  ^1 [8 a2 g) U
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');" a+ R: r0 C: u, Y# C! j

  328. + I; Q# K) Z0 g9 P4 [/ d# S
  329. rpoplpush7 [1 |5 Y+ t& z0 v, T7 T
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部8 U$ E! f% h! k4 S) y5 @/ s4 T! }
  331. $redis->delete('x', 'y');
    % f1 F4 O. ?0 Q( ?$ f& G: T; H2 w, h4 v
  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'));7 v1 G, ^9 `1 i( I1 o
  333. var_dump($redis->lRange('x', 0, -1));
    . {# s/ i! P7 X9 _) a! f
  334. var_dump($redis->lRange('y', 0, -1));
      u* F; Q: m/ s, S  E$ _

  335. ' n. k, s; d9 P# H0 V3 O* q+ V0 l, J
  336. string(3) "abc" , c! ?  M8 {) |! u0 h$ s
  337. array(1) { [0]=> string(3) "def" }
    ; `/ g2 w% R* c" `1 `' R+ L
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    . o" Q6 _- e/ e7 h  u
  339. 5 _! p; U& A& V
  340. SET操作相关4 u8 w/ K" j2 {: R0 D" C7 O3 L- l
  341. sAdd, w7 B/ _& {) G2 Z8 x
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false0 a, u6 G0 o; u) o5 w8 }& w& o
  343. $redis->sAdd(key , value);  @, N( J* F: c) v" o0 l0 B7 m

  344. + N2 t% k: p3 G- g7 q9 S( P
  345. sRem, sRemove! M5 z1 v: x; e6 A$ B  `# ]  h
  346. 删除名称为key的set中的元素value
    $ w# k& D: P; u! M* [; ~6 @) Z
  347. $redis->sAdd('key1' , 'set1');
    ) |6 R0 ]7 `2 A; E& q. O9 b  D: X/ y
  348. $redis->sAdd('key1' , 'set2');
    6 `3 [4 ?0 U0 n( g. _7 p7 i6 ]0 b
  349. $redis->sAdd('key1' , 'set3');$ D! b2 S( p! R& U& O) F
  350. $redis->sRem('key1', 'set2');
    3 d! t% Y* |2 C( y

  351. ) a$ Z- `, y- k8 P! c- |) T
  352. sMove
    ; W0 j0 s) F5 W" @+ Y" m) V* R+ D
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    9 b5 ~# G) I1 c. G* C6 e
  354. $redis->sMove(seckey, dstkey, value);
    ) [  A* w, y9 ]( i  w* w/ }
  355. & F: i6 `0 h* b- o
  356. sIsMember, sContains0 e+ E$ q5 T5 s" R9 N% x
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    2 c+ J, E) Q6 d" {! q
  358. $redis->sIsMember(key, value);
    + C  q' t! \: c; k; H

  359. : m8 i9 N- y( \! |& d
  360. sCard, sSize
      X/ p8 u( s1 F9 \1 R
  361. 返回名称为key的set的元素个数
    4 x! ]) C! q. X6 V, @- k- I: ~1 w) B+ q
  362. 4 d$ F- X8 N: p, M4 Y8 ~: P$ c
  363. sPop
    ! c, h4 S* l) ^9 G" ?' [
  364. 随机返回并删除名称为key的set中一个元素
    0 Y3 [5 H/ K( V: s3 n* O7 e5 F
  365. ' x. Q) K6 {) i
  366. sRandMember
      j1 x2 |( G/ {! y* }0 P2 `" C
  367. 随机返回名称为key的set中一个元素,不删除9 T- f' G, c: D6 h& S

  368. 9 v- x- t2 f# A# L
  369. sInter
    2 `0 [" e' [9 H
  370. 求交集
    3 ]1 T; m0 _; X  P' z" w, ~

  371. . [8 `* D+ W% \3 P
  372. sInterStore; Z! e# x  O* F3 g$ Q0 P; }" w, c
  373. 求交集并将交集保存到output的集合
    + L' N. u2 g+ X# Z/ E1 G# O$ p
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ; q/ q% N( @  v6 ~) G

  375. ) u, D5 W1 p, q" J. Z& G
  376. sUnion
    % I9 |% ~7 I6 d4 B' N
  377. 求并集" M( T( m2 |# c  k9 k
  378. $redis->sUnion('s0', 's1', 's2');8 ~, U2 o$ Y- m
  379. s0,s1,s2 同时求并集
    0 J; f1 g- D# V( c; B
  380. # Q6 r+ N0 I$ Y  Q" z
  381. sUnionStore
    5 H6 A" O% n, d3 d) K
  382. 求并集并将并集保存到output的集合
    ; B- m/ v8 |, m$ X+ i8 S7 ?' K
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    8 }7 ^5 K- M) B4 |1 B

  384. * u& {! M( P; y
  385. sDiff& C* e+ ]# e: l# {
  386. 求差集
    - d- ~% z% v4 s" J/ ]- C+ R
  387. 1 W5 t1 ~& m5 T* |, `
  388. sDiffStore
    " m; N! t, v0 I1 m
  389. 求差集并将差集保存到output的集合! P7 H7 R& C( t5 S. G5 W
  390. ! m7 f8 r6 V/ d1 U- y5 o
  391. sMembers, sGetMembers& I" S3 q5 S* c/ o4 @+ u( f. q
  392. 返回名称为key的set的所有元素, ]: F$ |  f" W4 |9 o* g

  393.   T9 i8 M0 R' C" C
  394. sort
    ) `9 p  k+ M, ~( G6 x  j
  395. 排序,分页等7 b+ b, y  K5 I  X" R& V
  396. 参数
    & O$ G# L8 b6 A# B, O
  397. 'by' => 'some_pattern_*',  n/ |4 I/ m1 a: A2 i
  398. 'limit' => array(0, 1),0 }* G& V! N! ?6 q
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    . n$ U: X: j- G# e- l8 W  Z) \
  400. 'sort' => 'asc' or 'desc',  \! l4 N$ p9 r+ W$ _: r' V) j
  401. 'alpha' => TRUE,
    * ~& k, Z9 J7 O$ r. J/ t! u" W2 J
  402. 'store' => 'external-key'& b/ Y" \! i# n8 S3 I3 z
  403. 例子
    # _/ u( B2 F/ ]1 V+ Z$ g
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);$ L$ S6 [& J3 U6 B: B
  405. var_dump($redis->sort('s')); // 1,2,3,4,5" k9 P0 A; Z( {; t: W7 P, O+ \* Q
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    . d7 `$ b2 Q" d
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5, s! [* _3 n9 y0 i

  408. 8 Y7 w' I" [0 i3 B. b
  409. string命令
    2 I* R& H; H/ c1 w2 e' ^0 @
  410. getSet
    & x7 M- ~. [( |; M) F
  411. 返回原来key中的值,并将value写入key
    & z; C* b$ _5 b
  412. $redis->set('x', '42');9 z# ]$ \2 [1 m6 U  \( M, [
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'3 }$ ^3 a3 L. \8 e6 d
  414. $newValue = $redis->get('x')' // return 'lol'
    & c# j4 Y' ?  t! S; D  Z6 ~7 K

  415. ; M5 k3 c; z7 Y1 ^$ y1 b- M
  416. append
    2 Z7 ?$ ?2 @8 `/ f3 r7 w9 l
  417. string,名称为key的string的值在后面加上value
    % e, }$ E. u- r7 X9 L$ w* n7 c( D" W
  418. $redis->set('key', 'value1');* S; ^4 G# l- a
  419. $redis->append('key', 'value2');
    - q* D4 J/ ^/ [: B: R) Y0 z3 N
  420. $redis->get('key');
    6 L2 l, `3 f: o) b( {! X2 k2 a/ P
  421.   }8 V9 ~1 E' D
  422. getRange (方法不存在)
    6 x8 \4 F) h0 G9 H2 E8 g3 Y
  423. 返回名称为key的string中start至end之间的字符
    , c( R9 o1 b2 u. n$ f2 x
  424. $redis->set('key', 'string value');) q% m! C4 V5 o1 @# b4 L! h
  425. $redis->getRange('key', 0, 5);
    ! }: e4 U7 X- ]! ]
  426. $redis->getRange('key', -5, -1);; R" P7 t# Q5 s* z8 Z+ U) a

  427. 9 h! n( a; r$ D$ ?6 v
  428. setRange (方法不存在)
    1 s, b# C  R% ]" P& I6 i  c. T% U# y
  429. 改变key的string中start至end之间的字符为value
    & w' A( m) q% m& Y& Z& U9 T
  430. $redis->set('key', 'Hello world');
    ) h1 b' E8 l1 P3 B  g
  431. $redis->setRange('key', 6, "redis");
    2 h! _/ b: y" d7 Y9 D
  432. $redis->get('key');
    # C( ]% N, o' b, n; V9 n. v0 c

  433. : V8 F* T( G$ G/ s
  434. strlen
    6 c$ _6 c- I/ P* Y
  435. 得到key的string的长度
      `6 T, ?7 ]+ \. {/ c7 S
  436. $redis->strlen('key');3 V# I% \" Y. Q2 D. I1 R. e
  437. 0 E3 G0 \5 C/ b
  438. getBit/setBit5 u# g. g- S9 X$ O# {) f  B! d
  439. 返回2进制信息
    + t' a3 L. A3 n0 a. o$ Y

  440. 1 A; y( M- u# S* f$ V! n
  441. zset(sorted set)操作相关
    1 d& Q- n7 H' C1 H1 K1 ~
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。0 K/ j8 S, c  T  q/ w
  443. $redis->zAdd('key', 1, 'val1');% a7 A6 w2 I1 t2 X
  444. $redis->zAdd('key', 0, 'val0');+ ~3 M6 F! [. O1 V1 ]( e7 u) U2 k
  445. $redis->zAdd('key', 5, 'val5');
      h0 z6 {3 L- A, g
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    . h* ]2 _* ^! X+ i3 K+ J
  447. # q0 h, H6 ^$ ]- F- y
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    + J" b4 ^8 Y0 n, L9 F) f# V  c
  449. $redis->zAdd('key1', 0, 'val0');
    0 e) X5 p6 V' z9 Y! I0 w! G
  450. $redis->zAdd('key1', 2, 'val2');, `- k( S6 Z3 |5 J  F
  451. $redis->zAdd('key1', 10, 'val10');) G3 i$ j1 W/ B0 ?
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ' x  h% |; p; t3 U' E

  453. % A. g3 j# y( p0 q# s
  454. zDelete, zRem* H  s: P5 ]1 E) Z3 c; r  G
  455. zRem(key, member) :删除名称为key的zset中的元素member
    & Y( G; V! Z7 N+ a4 T
  456. $redis->zAdd('key', 0, 'val0');7 b: P# G/ {! Q) y6 X: n( l
  457. $redis->zAdd('key', 2, 'val2');
    - H5 W! y' x1 b0 J" v1 m
  458. $redis->zAdd('key', 10, 'val10');+ C& t! h9 V9 t6 w! f) H5 g
  459. $redis->zDelete('key', 'val2');7 F  J) e/ ~6 h3 ]
  460. $redis->zRange('key', 0, -1);
    ! t3 W( J- o! O; q
  461. 9 ^" m. ^, `; U4 a# c
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    4 q( X* E" Z! [, e; D8 e7 U
  463. $redis->zAdd('key', 0, 'val0');
    " |' K8 M: x  n! A: j
  464. $redis->zAdd('key', 2, 'val2');2 G% X8 }& j8 X; D
  465. $redis->zAdd('key', 10, 'val10');
    5 \$ V3 t# Z- O% u$ T, d7 H
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);) ^5 B5 ^* Q( Y3 J: g. \4 E2 w

  467. " S3 v% @. |' u2 {' J( [8 P$ p
  468. zRangeByScore, zRevRangeByScore
    ; b' }8 L+ I  M3 Z0 f% H
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));0 d: {6 p& @! Y0 z" Z0 B5 y
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    ' e4 ]0 k+ @/ b0 W3 V! R4 T; L
  471. 1 Z) S8 }4 ~* l7 X  b1 r  P6 C8 ?
  472. zCount1 b& X  m9 m" H/ X
  473. $redis->zCount(key, star, end);
    . t* {3 G. ]0 _& ]; i
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数* E& J: v- |  R5 b! `7 @$ D7 e
  475. - w& R& [5 ]# n) p. D5 w' J/ J+ g
  476. zRemRangeByScore, zDeleteRangeByScore
    6 D% z5 I3 x0 S( q: v9 K
  477. $redis->zRemRangeByScore('key', star, end);8 M2 p. k, k9 o) J2 E, g
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    & @/ `6 M3 S% J% c7 W( |& b. v

  479. 9 j2 o+ q+ D% S' e, S  n* q
  480. zSize, zCard
    ( F7 w& b7 t* W# c1 r5 U: n, G
  481. 返回名称为key的zset的所有元素的个数
    3 {, a( P* ^' v: e- J+ h2 }
  482. ) k; H, q* f  A' _
  483. zScore5 p$ n/ Q0 \6 L& @4 e, Q
  484. $redis->zScore(key, val2);
    ( ?# m$ _( ^: V, {7 x  Z
  485. 返回名称为key的zset中元素val2的score9 C9 r# J0 m0 a6 R
  486. / I- _& M7 _- `6 r1 F
  487. zRank, zRevRank/ t! z: I4 m+ w" x; o3 Y
  488. $redis->zRevRank(key, val);
    ) [' r+ j6 @0 I) u: r- H
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    , T* l! w  ^. H6 F5 _% s, V

  490. ) X" J% U" Y8 a! A) `3 f
  491. zIncrBy1 b0 z$ a7 e* `) i
  492. $redis->zIncrBy('key', increment, 'member');1 _) x6 R; V' ]! A4 E) {( h
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment' }( s. O2 }9 {$ I+ J9 `% O

  494. 7 p1 R1 `6 ~$ R- U( w" i6 Z, `, h
  495. zUnion/zInter. \! A2 w' H7 i; n7 A7 W
  496. 参数
    ' ~/ ~# z2 f$ b# b
  497. keyOutput
    9 K" \8 F% j/ D
  498. arrayZSetKeys
    % v3 }0 `+ i& t* g  j2 }/ c4 p
  499. arrayWeights  ]; r6 i# B8 {# O3 W% K6 ]
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    : o" Q( q+ h5 `1 x3 [
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    7 w4 j2 X) a: N  K2 R8 _! Y
复制代码
( f! \; Y1 u/ v+ K) p# Y
2 |$ F% w. g/ D

. w% W1 k. s; |% I6 k( \2 t: d
# B* m5 b! ?5 b' K6 m* A' v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); : o& t3 Y2 p8 R- n2 m) u  Z! ^$ ?5 m% s
  2. //连接redis服务器 . Z- Y& n. k, Y! s7 V6 e/ T
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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