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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php/ S6 J& k3 x8 s: d6 r9 r
  2. $redis = new Redis();  4 F' b: C3 Z; N+ y+ h3 I7 t
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    ( b$ @& h6 h* J  @+ S* Q: }! `
  4. $redis->auth('mypassword');//my redis password
      T; T& @9 Y( h: h' j' m/ t) Q
  5. $redis ->set( "test" , "Hello World");  
    4 k7 ^, ~' i, R/ b9 e
  6. echo $redis ->get( "test");
    # i9 X# @: `8 H- n) s3 _3 [
复制代码
php操作redis函数封装
  1. /**9 h: _# y+ i0 e2 j2 V7 F0 u7 y, m
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    5 d+ v! y1 p- w6 y+ x  z& f
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    0 u. Y* C1 A- H$ t) y8 C
  4. */
    & O! `8 B1 ]' [( ]: d6 V
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    " [/ E' [3 R0 f5 t  r: M
  6.     if(!$key||!$value) return false;* j& q7 M5 p2 _! D
  7.     $host = $host?$host:getenv('REDIS_HOST');
    8 Z& V6 x4 X+ o
  8.     $port = $port?$port:getenv('REDIS_PORT');4 i4 ~' E( J6 T8 a9 s
  9.     $redis = new Redis();1 B& _6 Y( D8 y. q6 x# A
  10.     $redis->connect($host, $port);
    3 s- o& Q. V$ \
  11.     $value = is_array($value)?json_encode($value):$value;1 ?4 }9 j2 m0 B
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    & Z: ?6 `% c+ q2 \3 p
  13. }  L" P2 {1 {5 C7 P
  14. /**" G. @/ l' E" G) a$ J: D
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi5 F! e2 \! p) V6 }
  16. */( O2 H! Z5 V/ C+ N( x
  17. function RedisGet($key,$host='',$port=''){7 u% \  N, u+ S" _
  18.     $redis = new Redis();0 M6 g" ?0 f2 Z. ~% d
  19.     $host = $host?$host:getenv('REDIS_HOST');3 i1 `: H, T! f" h
  20.     $port = $port?$port:getenv('REDIS_PORT');
    2 K5 A, \% Q$ x& W9 g
  21.     $redis->connect($host, $port);
    ) d9 p& r( c) b$ g/ G3 i( Z: t( l( R: Z
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);6 P- Y; f) a# v& h" s0 m$ X& K
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);1 f& C% ?4 ?$ z# e+ v0 Y# Y  Y/ ?
  24. }: S5 @- Z- w9 e, ?# U* U  u; M
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
0 _3 r( O% y! b0 Q% v. y, T
  1. setex 带生存时间的写入值
      [4 U. B% N+ s4 X# F: N' Q
  2. $redis->setex('key', 3600, 'value');   W, q8 C- y% C  g& K( ~+ o1 y7 J
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    " `! e8 D- C: q& {: |; r( B) p# R- \
  4. $redis->setnx('key', 'value');$ g% a6 ]- g7 Y' ?6 c* U8 ~  l* i
  5. 返回已经删除key
    - y; M0 m3 f5 g# \' N$ q( y
  6. $redis->delete('key1'); 成功返回1失败返回0# U4 I* |. r' b& g2 T# E
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    - j- X& ?" P  |; Y2 b8 H/ t
  8. 查询生存时间
    / `+ r. {3 T' m  d
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)3 A4 _; M9 _5 u. F7 F; E' b
  10. 同时给多个key赋值,同时设置key0和key1
    0 F; ~3 R; a5 m$ l2 h$ N
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));. E, I' G1 @5 U0 I6 S
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    4 L- F9 l! ^% `# @* V
  13. $redis->incr('key1');
    - s# \3 j% q/ I* n
  14. $redis->incrBy('key1', 10);$ j0 Y4 [8 h2 K
  15. 减法跟加法一样6 r4 l* o4 c" M0 G( f
  16. $redis->decr("key1"); 减少1  G# L% Z, M7 h% m
  17. $redis->decrBy("key1",5) 减少5# {8 S" W0 a" F/ b
  18. 4 r" c0 }" C3 b) P3 D" u& W8 h
  19. list相关操作,连表操作% {0 E. A) ^- R  \
  20. lPush! I% j* v- ]( R' j- B( P" H
  21. $redis->lPush("list", "888");) Y$ I, y5 ^7 u
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    # m( ]# b. G4 Z( g; |
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式; L9 J" U' f1 A' e, B
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    ) B' @' I) X3 D% i, p7 m/ J
  25. lPushx/rPushx
    # b/ {2 ^6 ]# e( n( a5 n
  26. $redis->lPushx(key, value);  O: z* d( m$ z- Y- r8 ?! N' G! J
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加. N5 X3 d: V7 A; R( a

  28. 2 q+ p% M/ y8 `( D
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key. X/ M# w/ c' G" T3 g, G# R/ e6 s
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    ' N2 m* [- Z7 y  M3 A
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1/ X8 I0 B" \$ \
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序2 P1 `% s: z) @# s) Y. {1 r
  33. sadd s1 zhangsan
    ; w8 V6 O; Z. i2 C
  34. sadd s1 lisi! n9 x$ P8 f! G$ m  O4 i9 Y
  35. sadd s1 wangwu( t% W6 q% j8 d! w2 F
  36. sadd t1 yangxingyi
    5 b+ a: }2 S1 M  K5 X
  37. sadd t1 lilei6 G7 Z% @2 W& M0 k
  38. sadd t1 zhangsan
    ( q* p- J1 T; e3 |8 @, o
  39. smembers s1 s1的所有集合内容( J" C" Y! U' J, l
  40. sdiff s1 t1 s1有的,t1没有的,差集
    . p% L/ h2 n: h7 C3 Q
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ' N4 j! U6 d5 r& l/ A
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的6 \' n8 A% q: n2 G3 k5 a
  43. spop抽奖场景,返回集合里面随机的数, _5 Z( x% d" @/ }' S7 v8 T! e; T1 l
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    ( P! N  h  B- C2 p! w
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数$ p& e4 @( T" e/ x$ `4 `4 y% ^
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    & p( E0 x, z7 \( {
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    9 _4 ]) X4 M8 ~, f
  48. $i = $redis->srandmember('s1');echo $i;6 ?+ V, D/ E3 r8 b# {6 \
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    . t% V4 e) m1 s. R0 C& E7 U5 n
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    6 F! h9 x2 [1 i, c

  51. ) O1 O: e+ j0 g8 l/ u3 v2 X: R
  52. zadd key 2 value 有序集合% d4 E9 t0 e- b  M8 U
  53. zadd y1 1 zhangsan;
    7 K8 c2 Q% F6 \# Y
  54. zadd y1 3 lisi;
    ! ~  ^6 ]+ c8 c8 q
  55. zadd y1 2 wangwu;
    ( |0 s9 ^0 J6 g' |* i7 G. L
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    # @& u! u. f2 l9 h" V# x0 u
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);  T. M- Y4 s, d7 q4 s7 U
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    0 h( {  e* S) }1 j
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先( q" n$ D$ z; x7 |
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    / e0 V' F( V9 }9 f  }6 O
  61. 无序就scard,有序就zcard,有z没有s2 d; K2 E- P' O0 {, j
  62. sInterStore
    % u- l/ r; U) Q
  63. 求交集并将交集保存到output的集合
    ! ~( S* T& H2 j- K/ d2 Z
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3'): E  G1 h& D5 @. j3 L. ~& f
  65. 8 c6 h3 o2 z- Y5 \  t- ~) T
  66. Hash操作: q) C0 O4 @" D6 A9 {* }( I
  67. hSet
    ' }/ _/ W: m2 I2 U4 U- l" @
  68. $redis->hSet('h', 'key1', 'hello');/ l7 H4 ~/ X) [5 ~
  69. 向名称为h的hash中添加元素key1—>hello
    1 t8 k! ^5 T2 @( X% u% K- h& d
  70. / l6 C5 j: r, |" l3 k+ Q
  71. hGet
    # m$ Q6 V" I- G5 `
  72. $redis->hGet('h', 'key1');" ?* q0 o+ P+ t9 q7 D3 M
  73. 返回名称为h的hash中key1对应的value(hello)2 G& A6 ?/ ~2 S7 m

  74. . u$ H8 J( _" O3 o1 j2 L
  75. hLen+ \, g1 t5 ?6 _' x, Z9 i
  76. $redis->hLen('h');
    , [6 V  a7 ^, ]( D5 a3 ]& [# r; Y
  77. 返回名称为h的hash中元素个数
    % A' ]; |1 d! e
  78. 6 W( A/ ~, `! g' B
  79. hDel& h- ~4 ~, D( W! j4 H# Q& h( N
  80. $redis->hDel('h', 'key1');2 }; f, B7 N8 X# l* q4 z3 S
  81. 删除名称为h的hash中键为key1的域
    : q6 C2 \5 E; s" i' Q' ~/ p$ s

  82. ( n# t" h- F% M( ?! ?
  83. hKeys1 D" r1 r" m& V5 X+ \
  84. $redis->hKeys('h');
    2 ?4 a+ h3 i6 b4 U( y
  85. 返回名称为key的hash中所有键3 ^( \$ Z$ p. p9 u0 W' w% F8 Y7 P
  86. 1 |( |5 I' b+ I0 @, I; M
  87. hVals
    ! D6 P4 @8 L7 n; |4 T' H4 W
  88. $redis->hVals('h')
    + F( E) W& }0 G) K4 L% w! U- ?
  89. 返回名称为h的hash中所有键对应的value
      z/ u% y7 I" ]# W) v" y0 G) l
  90. : i; Y1 K. B% `9 e1 Y
  91. hGetAll/ r6 [; X0 C% i  k
  92. $redis->hGetAll('h');6 Q6 D9 z# h" ^& D3 o% X
  93. 返回名称为h的hash中所有的键(field)及其对应的value0 O! }2 t; i4 }& n& v/ |1 p

  94. 6 y8 C; M' B, ?! |3 u
  95. hExists
    $ y) k) x5 R: ?. P# a/ Q7 }
  96. $redis->hExists('h', 'a');9 a; [' ]4 U+ j: p! v8 r
  97. 名称为h的hash中是否存在键名字为a的域
    8 F3 k2 _, ]( s# P6 w
  98. + E7 j& O) H( G
  99. hIncrBy
    6 o* R! N- s# }1 q3 T* K
  100. $redis->hIncrBy('h', 'x', 2);9 `3 h  B0 Y9 Z& F: Z
  101. 将名称为h的hash中x的value增加2* m, K9 ~, W1 _
  102. 5 ~' [; A2 Q  n  E3 j* w) a$ n
  103. hMset
    7 d7 G0 n& g9 E- O
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ) P. h# `' w+ e  {/ _- T! U
  105. 向名称为key的hash中批量添加元素, Y; S8 G% A4 A* m. ?, A+ k

  106. 1 s* [0 e: V" c0 h3 f
  107. hMGet
    ( S  y6 [" c2 C4 Q# @
  108. $redis->hmGet('h', array('field1', 'field2'));, D/ ~; O' ?5 v9 u) p7 E% r) v
  109. 返回名称为h的hash中field1,field2对应的value/ x: f, z5 F+ D8 j) n

  110. . o0 }) m# X4 `! ?3 c
  111. redis 操作相关
    0 B" g  f- V- N, I! _  `
  112. flushDB
    / u' I* j, e- q! Z, q% v5 \
  113. 清空当前数据库
    . J  ?4 V2 T; ?( b
  114. 0 M: ^3 ~+ y( D, [- q( _* c( i
  115. flushAll
    $ O* T" H$ v5 A# ]
  116. 清空所有数据库
    3 }% H$ H7 G# f' d
  117. & D2 M: _2 m- f
  118. randomKey0 m/ I# q% Z  s2 \0 p3 d6 M
  119. 随机返回key空间的一个key
    7 g9 k; X5 T  a
  120. $key = $redis->randomKey();$ c% d+ h. _" `+ w: O

  121. 5 t2 r( E+ P/ H8 Q
  122. select
    + o) ?, z) o, S" e' ?; J
  123. 选择一个数据库8 L$ R  E. e! [* o4 F* H7 C2 e
  124. move. }4 e! i: p( l0 |
  125. 转移一个key到另外一个数据库& P! ]' Q' U+ s& r- u( K& [
  126. $redis->select(0); // switch to DB 0$ D) o. ^1 v( V2 ?$ j3 A
  127. $redis->set('x', '42'); // write 42 to x
    1 B9 k3 q( J$ ^; l/ M
  128. $redis->move('x', 1); // move to DB 18 U/ N9 r" k3 L
  129. $redis->select(1); // switch to DB 15 c# E( t( v4 m& B* B
  130. $redis->get('x'); // will return 42- j1 y' \- y# q: K' U
  131. 4 S9 }( c3 `; m7 O1 l: N8 v
  132. rename, renameKey  q$ a9 ]- t1 U
  133. 给key重命名* Q: q' \4 m2 y4 E
  134. $redis->set('x', '42');; E$ R+ |1 _# O1 q6 ?
  135. $redis->rename('x', 'y');
    : h, s( _/ y8 P5 j0 ?, B
  136. $redis->get('y'); // → 42! O! F& i' X/ \0 q- a% r1 r
  137. $redis->get('x'); // → `FALSE`
    5 l) O  N3 G9 _7 T" Y0 N
  138. * O% r* ?9 Q1 T& E3 H4 ~) t
  139. renameNx
    . d) }, A* y: [% Q* z/ P! E- E
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功, @- R4 n1 C& s/ v% X

  141. 3 j7 C: v2 d& [1 E
  142. setTimeout, expire
    9 W3 F4 ~# Q" a
  143. 设定一个key的活动时间(s)
    + ?, p2 w5 s: w
  144. $redis->setTimeout('x', 3);; |% ?; w! B! a5 N
  145. & `9 a* J4 D& m" Z
  146. expireAt" W" Q$ r" ]6 N2 }1 t# ]  h, s
  147. key存活到一个unix时间戳时间
    ! g: x1 |: r' O0 B2 X/ M
  148. $redis->expireAt('x', time() + 3);
    / ]. |) S" m6 R. n$ M5 a) Q! B9 N

  149. ; `8 A- V' }/ I  U: Y
  150. keys, getKeys
    & k- F5 a7 P" q. l/ r9 f/ A
  151. 返回满足给定pattern的所有key
    ! T8 k4 u% C3 V( ?" I4 c
  152. $keyWithUserPrefix = $redis->keys('user*');
    * b. B% z  R/ v# p  n" M7 ^/ A& C
  153. 1 p% I. Z- ?* ^: ?) r
  154. dbSize
    ' h' u( ]0 Y; Y; r8 @
  155. 查看现在数据库有多少key
    2 \9 f' r  l* t, m) f5 Y
  156. $count = $redis->dbSize();
    7 c$ i! o& W8 i0 X2 Z
  157. 2 f8 s) E! e+ F4 i9 L* ]: W
  158. auth$ U9 _9 a0 N. ]( c
  159. 密码认证% F6 y2 o' z8 ?1 u( i
  160. $redis->auth('foobared');
    9 u( r% `% l8 w/ {5 m1 d; N
  161. 1 h" L, y( q9 ~: V
  162. bgrewriteaof0 ~: L# R' i! T+ o' P
  163. 使用aof来进行数据库持久化
    " j0 ?: s$ r8 W  q2 J
  164. $redis->bgrewriteaof();
    6 `& _: |3 d/ D, R" }. M
  165. 2 @2 C9 o7 z  S0 r  T
  166. slaveof
    / K8 k& ^; x1 C3 \* |, }
  167. 选择从服务器
    - E0 ^) Z# h7 x$ m+ R5 G, y
  168. $redis->slaveof('10.0.1.7', 6379);
    & Y# S# ]; J8 ]( e( p+ R
  169. 7 I* z3 Q/ S% A4 Q4 n! r; [
  170. save$ S0 W/ C  W4 c# V
  171. 将数据同步保存到磁盘
    / Y, k8 t8 t3 Q& J4 U. z# h
  172. % @$ j0 ^' b/ s! y( a: Q: c+ h
  173. bgsave0 d0 J. S8 k$ ]4 Q1 _
  174. 将数据异步保存到磁盘) Z$ |0 e4 X5 |: l- ?" J8 y5 B
  175. " T6 L% p8 X2 ~" l- v. G* T# r0 y
  176. lastSave, V. l; y3 {) ]& a$ x- Q9 o
  177. 返回上次成功将数据保存到磁盘的Unix时戳+ P# r4 ]$ a% P' x% S3 l

  178. + ^" U: P, G1 _" h, s
  179. info% {" `7 l4 H# U' \# l
  180. 返回redis的版本信息等详情9 i1 ^3 U. |" p( J4 Y" Z; t

  181. + T' D) t1 h/ g' t, b+ T$ \
  182. Redis::__construct构造函数( H" i* m% g8 b2 v. x
  183. $redis = new Redis();
    2 @4 t1 d) i- l2 D5 Q+ B8 e4 L# u  P
  184. + u1 Z- X) J5 j/ @) N
  185. connect, open 链接redis服务) |9 B9 c5 G( M
  186. 参数2 _' C. ]# @; g" l: w' c) @
  187. host: string,服务地址6 ^0 D- B* O* K; U# x. @- V$ A
  188. port: int,端口号- W5 G4 o! ]% F9 v0 W
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    4 p5 J+ f$ j7 p: u) i; l
  190. 注: 在redis.conf中也有时间,默认为300) f1 J2 Y# V0 K

  191. : j5 ?4 v+ ?1 _/ m0 A* ~7 H# E0 S
  192. pconnect, popen 不会主动关闭的链接
    , _; q  Z$ ]' Y% M* _5 n, v. j8 W
  193. 参考上面0 p5 P- V: c* v/ [
  194. & N& f6 J  M  i* M- e/ C4 v/ @; k
  195. setOption 设置redis模式& |$ u( C& I% O5 x: q, z! \' a
  196. 9 P8 ^5 j: S. Q7 X
  197. getOption 查看redis设置的模式
    ' i, l/ N5 W" Z, p

  198. 3 y, o# T9 v# M( p: z5 I2 O. b2 s
  199. ping 查看连接状态
    ' k! o( h1 |' N
  200. 9 N* \6 o; w& ]7 R- b$ }& Y  T+ y
  201. get 得到某个key的值(string值)5 M, t' L6 m& C& c9 W
  202. 如果该key不存在,return false
    8 i, J: H0 M. T

  203. " s) T0 o" {; A2 x" K
  204. set 写入key 和 value(string值)
    ! G; |! Q- S& k% t! ?8 q: B
  205. 如果写入成功,return ture: w7 C5 d* K; s  O$ w% h- B( h/ g" e
  206. " S' _# [7 L& S: B  i; i- I* |; B
  207. setex 带生存时间的写入值
    4 ]' B  A# M3 ?. W# a; P& ]
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.9 ]- b$ L% F+ z# Z" w: U/ y
  209. 3 k2 `6 h/ P# w7 S1 u
  210. setnx 判断是否重复的,写入值/ m" }: q* |; ~6 g. B
  211. $redis->setnx('key', 'value');4 `4 |- y0 f- ~# r/ @, [
  212. $redis->setnx('key', 'value');
    / |- V! z/ f8 F) T2 ~2 y
  213. 4 K) |) p; V; [8 J, p. L; ?# E
  214. delete  删除指定key的值
    9 {3 D6 s7 L# d: V& t
  215. 返回已经删除key的个数(长整数)
    : E" r4 c& k* G
  216. $redis->delete('key1', 'key2');
    / [/ h+ o' [- q1 O% B1 y
  217. $redis->delete(array('key3', 'key4', 'key5'));5 h/ Z- ^  s2 G* ^

  218. 1 x2 V0 X0 |3 z0 F! h5 `* Z
  219. ttl
    , F0 E1 x2 \& N. J& r' _& i- h
  220. 得到一个key的生存时间* y- C8 d4 v6 ?- B4 k; i

  221. % {9 a- o1 M% T* a! L) t% T8 @+ |$ A! m. D
  222. persist! Z+ {1 j- M" H: n+ f6 E
  223. 移除生存时间到期的key
    + J2 Z, ^9 Q, U
  224. 如果key到期 true 如果不到期 false$ g: ]' `* B" s( Q

  225. : i" U$ {) @) G2 x% l3 K4 m3 {
  226. mset (redis版本1.1以上才可以用)2 z7 {! X* S0 o/ a- F
  227. 同时给多个key赋值
    % W4 w7 P% x' h6 f
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ) o+ M5 T6 Z' Z# x. u
  229. ! o0 }: Z3 u, d7 E. \; _
  230.   d! H2 H2 |# s5 T
  231. , {. J/ T" l4 E% v) o- o/ }
  232. multi, exec, discard
    " m5 Q+ T; C: m" q0 q) ^# B
  233. 进入或者退出事务模式: [. L& g" m& N7 @" F0 V, r
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI9 ~% P4 R+ m  C4 f5 G  |5 ^
  235. Redis::MULTI:将多个操作当成一个事务执行
    " A8 ~' ?1 u+ p! U7 ^
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证4 S3 n! Z! t. `0 b
  237. discard:删除一个事务
    7 g. P3 i4 P) s- |$ p
  238. 返回值6 I/ |+ I0 y5 ~2 S: p
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    9 H# s+ _  ?4 O* Q) g0 N8 Q+ f
  240. 9 r" ?2 b+ k& P! v, }; A, U
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    ) O- h, E% X6 X
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)" R& O1 O4 s! c& R  c
  243. unwatch  取消被这个程序监测的所有key
    & \& F9 w0 B; B9 f, P2 t) A  n
  244. 参数,一对key的列表/ C9 c1 M) O* l# M$ G) o
  245. $redis->watch('x');
    4 c0 i- k! A& y& T  B
  246. 7 k  ^+ E# a9 {
  247. $ret = $redis->multi() ->incr('x') ->exec();$ r& V. ~5 N) F5 Z  a) ?, k
  248. ; h6 p. W+ H  _! ^* H
  249. " x' g* }1 R6 b0 b" L; _
  250. subscribe */ o0 ^: z  w$ ]5 P7 A& `$ j' Y
  251. 方法回调。注意,该方法可能在未来里发生改变  M) [  o$ Q9 ]
  252. . v, D; S$ H4 a
  253. publish *
    ( ?. t2 @/ ]6 \* h3 y0 _
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变9 e. o1 p0 n1 z, g1 B/ R) z
  255. . p9 \7 O# s+ Y8 e0 Q) n5 g
  256. exists0 y" e0 D7 k( |
  257. 判断key是否存在。存在 true 不在 false
    # k4 T) l& A* Y8 i: I" ^* i8 Z
  258. " w/ O+ L* E* l3 B$ @8 n
  259. incr, incrBy$ z3 U7 |2 p+ @( I& m! C5 `
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ' x  v, {& X9 }% ^5 o, \1 P/ l- \
  261. $redis->incr('key1');6 \% T# A% i7 F1 G* Z' H
  262. $redis->incrBy('key1', 10);" p3 F3 s3 X9 q

  263. 8 f! e6 ~9 k2 m+ f1 R1 D9 o
  264. decr, decrBy2 b9 @$ `- d# t5 N( ]
  265. 做减法,使用方法同incr
    + ?( x) w/ P+ ?) u6 [( Y
  266. " j' m% b, ]8 j# Q7 ]% U3 a
  267. getMultiple9 U3 D" Z# t5 ^
  268. 传参
    , M- M" `' Y5 \
  269. 由key组成的数组3 B0 Z* v7 b# k9 S) G+ {: w' k
  270. 返回参数
    ! ^9 {' N( v! w
  271. 如果key存在返回value,不存在返回false
    + ]$ T* E9 f% L! o3 ~6 ^3 z
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ) t" z( ?/ _: V( W; J5 E; n6 X
  273. $redis->lRem('key1', 'A', 2);
    2 i8 P- G9 m% t+ V: @
  274. $redis->lRange('key1', 0, -1);
    8 y- {2 z: N( c
  275. . u4 A( o8 G' F! q5 m
  276. list相关操作( m/ e, a0 A5 }0 k: R4 t$ d8 G
  277. lPush
    ( n& I, h# ~3 K+ k( G
  278. $redis->lPush(key, value);3 t( Y# T( F& k' l7 p" K: x" d
  279. 在名称为key的list左边(头)添加一个值为value的 元素: A3 J# |2 X" D# Q3 }1 r) o$ H1 B

  280. 3 w% ?$ ]( c& u5 \
  281. rPush
    ! u+ F; C, R& T/ F1 `
  282. $redis->rPush(key, value);" Z9 ~# X. u/ h' r5 U0 z" {( h
  283. 在名称为key的list右边(尾)添加一个值为value的 元素- ]* h5 ^3 Y" \
  284. * r, [" i4 _! Z! ^6 z2 Q) P' x  B5 b
  285. lPushx/rPushx" h  K; x* U/ k& d7 W. X
  286. $redis->lPushx(key, value);
    5 U! O- p; Z+ M2 T. |8 H
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ( A0 A. [8 R" t
  288. + R- r4 ~2 R/ E% F; C" b0 l& I
  289. lPop/rPop, ?- [( A+ H$ l
  290. $redis->lPop('key');
    / `" k; I) J7 e3 ~1 Y- ^) D5 ?; L# X# ]
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    $ @, N8 u; }$ E4 C8 O1 \& O

  292. ; |7 d2 `3 G& |! T: H! u% h1 g+ A2 ~
  293. blPop/brPop9 p2 c' [9 `. g1 }7 o6 v
  294. $redis->blPop('key1', 'key2', 10);
    9 l7 X# i. x5 d+ ]2 R" `
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    - `1 A! Y% ]: F$ S) S& A
  296. ( H7 o, M& b, f/ n
  297. lSize$ ~: u$ R! d5 T: s/ O6 B" ~, b/ Z% _
  298. $redis->lSize('key');7 p7 g5 }" J6 H  u% B7 f& n& F% U
  299. 返回名称为key的list有多少个元素
    5 Z& X2 l% F  \8 }; o5 A$ V

  300. / D* ]9 D) B% ]; H( F3 j5 i& p
  301. lIndex, lGet
    : s7 N2 B* }& l" Q: D1 n5 o; v
  302. $redis->lGet('key', 0);* Q1 l: L9 S. D" q
  303. 返回名称为key的list中index位置的元素
    5 K/ N& G& ?$ j) N: P
  304. ' Y  [" `3 y8 B0 a$ `* N- l( g
  305. lSet
    % ^# b, K. J, V2 ]6 h. b; f
  306. $redis->lSet('key', 0, 'X');" z- ]7 J$ C8 {2 J, U- p& @& @
  307. 给名称为key的list中index位置的元素赋值为value
    1 A+ N! z9 j  S
  308. ) V- T% O# s3 T6 y3 j8 Z- U8 [
  309. lRange, lGetRange6 w6 i( v5 N+ j% F
  310. $redis->lRange('key1', 0, -1);
    ) ~9 J7 P# B1 R- a& B- I! M7 [
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    # Z% a, x8 S4 I) D

  312. ) [( i) X- c+ ^9 v, v. [
  313. lTrim, listTrim6 U4 W# s  a8 W* V0 s9 P: y
  314. $redis->lTrim('key', start, end);
    % [- w' [& w6 C
  315. 截取名称为key的list,保留start至end之间的元素
    - l; M  L( D5 T' Q( F% `% f2 S" @

  316. % e1 o5 m: {# F4 ^
  317. lRem, lRemove
    * \" Y. W% E+ `1 u  i9 I
  318. $redis->lRem('key', 'A', 2);
    $ `1 l6 v0 m* g/ Y5 J8 O
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
      C, y, d: w- M" O, P4 a: g; N7 g9 F

  320. - g& T. T5 m8 d, ]% |
  321. lInsert
    0 Z( t% v6 c  z; T
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    , L! ^/ s$ h2 r
  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');5 w( Z! E7 j1 l# i0 f9 z
  324. $redis->lRange('key1', 0, -1);
    1 Y' W* T( O% f+ M1 l# W
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');) z. R( `$ ~, H
  326. $redis->lRange('key1', 0, -1);6 }) n# e( [8 c! D  a  e7 o; v
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    , r' z! h2 E# C' o9 _0 }4 x$ h& i/ y

  328. ' Z1 W0 y) w0 N% F
  329. rpoplpush. w& D  S! P$ J
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    $ Q4 F0 Y( z  e! c9 _( m% h
  331. $redis->delete('x', 'y');# {& v6 I' ^* l9 y  a, H2 j* Z
  332. $redis->lPush('x', 'abc'); $redis->lPush('x', 'def'); $redis->lPush('y', '123'); $redis->lPush('y', '456'); // move the last of x to the front of y. var_dump($redis->rpoplpush('x', 'y'));- ^. a2 X9 |( A7 c% k' y) G
  333. var_dump($redis->lRange('x', 0, -1));
    # M9 `2 p  _/ Z' k1 P
  334. var_dump($redis->lRange('y', 0, -1));
    9 n. q+ x- L; {/ S# ?% g

  335. : [; b( _* L+ d1 p9 G& }/ S
  336. string(3) "abc" 6 a0 G7 Z  R: X& e( a7 q
  337. array(1) { [0]=> string(3) "def" } ; K) ^: Z+ f* ^% K+ }
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    4 E7 R4 J) z4 C8 I
  339. , n+ p2 m' v, I
  340. SET操作相关5 N# n6 f" y( k* L
  341. sAdd
    / p0 e/ }' K8 _
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false5 h9 H8 c9 N, \
  343. $redis->sAdd(key , value);
    # a2 q  ~( m  w4 Y; k; j. x+ n9 \
  344.   m( p8 ]4 P5 d& M
  345. sRem, sRemove! Y4 X6 G7 D3 @5 Z7 w( n
  346. 删除名称为key的set中的元素value% o* Z, j6 R" }/ e
  347. $redis->sAdd('key1' , 'set1');" _6 N, J9 D/ r  Y* \
  348. $redis->sAdd('key1' , 'set2');
    7 }7 Z$ e+ G5 ^% h+ _/ R& |
  349. $redis->sAdd('key1' , 'set3');
    8 D8 q$ L# m$ \+ L) X
  350. $redis->sRem('key1', 'set2');
    ' J9 K( `% i0 P, c% `

  351. # y$ ^2 W) L& w9 m
  352. sMove
    8 N6 p* ~) v, h. k
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    ! Q5 w9 g+ T4 ]1 i- a
  354. $redis->sMove(seckey, dstkey, value);* c+ O( u+ s3 j* o' h3 F: p

  355. ' i( U% L7 M4 C) o, i5 s8 \8 R3 x
  356. sIsMember, sContains, v  j9 e0 ~! M2 h
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false+ h; m* s0 s3 |6 h" }
  358. $redis->sIsMember(key, value);
    7 [% M& l* ~: z( I; ^9 w  x
  359. 9 g: {  k; X7 j+ d0 }4 W0 }
  360. sCard, sSize
    $ O, w7 N3 \) m9 m7 q9 `" z3 \
  361. 返回名称为key的set的元素个数0 k2 Y8 d2 Y# Q" s# k5 D6 n

  362. 4 k) F% g+ e2 v
  363. sPop
    3 i3 i/ ~0 C6 |- P9 O' B
  364. 随机返回并删除名称为key的set中一个元素
    ) F" c" X" [6 ~$ b" O0 ~

  365. ) }7 o% A( J- h. Z8 w8 a5 a
  366. sRandMember$ I+ S7 O5 O) B2 \' e
  367. 随机返回名称为key的set中一个元素,不删除
    0 f. x$ z1 p1 U" e! X/ E, Y
  368. 3 Y; q2 F  c7 _+ R; J
  369. sInter
    $ g0 J% W- G8 v* s* r' N: H& [
  370. 求交集3 _5 N1 ~$ d% o/ J/ [& a5 T
  371. 1 Z8 i  J& U7 S  C7 ^5 {) W$ n7 Y; F
  372. sInterStore
    . W  I- e; s3 S& A3 |
  373. 求交集并将交集保存到output的集合
    8 u* j4 K0 o: v3 o
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ' r2 e' n: F7 _1 r$ G# q3 S
  375. " n8 u4 `! d) b% a6 M
  376. sUnion, v2 s) {6 k; p5 F0 c5 L- K& U4 O
  377. 求并集* a8 H& n, V  T" b8 J+ e$ Q- w
  378. $redis->sUnion('s0', 's1', 's2');
    3 n: T3 P' ^3 Q/ y
  379. s0,s1,s2 同时求并集1 m0 ^2 O; ?$ u( e/ T6 Z) ^

  380. 8 C0 q0 N1 ^7 C' g
  381. sUnionStore5 Z) e& g, f' x# D# z' _" Q
  382. 求并集并将并集保存到output的集合3 i. z9 _( q  H
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    $ C2 I6 z0 U0 k3 K" ~6 E! ?$ L
  384. 2 P* h* K! v' H$ q& Y& B9 m! p
  385. sDiff; v+ W7 q5 ]- a, \- x! y, a: Y; e
  386. 求差集
    2 b4 b0 {: z1 J% N; o( C8 f0 V

  387. * i+ y/ u6 A, i- w3 f/ M
  388. sDiffStore2 f. l8 ~& }, b2 F/ Z4 X9 l
  389. 求差集并将差集保存到output的集合
    1 V$ Z9 G2 z, L
  390. 7 F% @1 v* }6 Y, h& y
  391. sMembers, sGetMembers' j6 @6 M6 n5 I- i& S
  392. 返回名称为key的set的所有元素; u5 z+ P. _" ?& C3 r
  393. " P# t6 S2 ?; h+ r5 M& X* B
  394. sort
    0 i& w# m9 x( q  e$ H2 j
  395. 排序,分页等
    ' u( d0 K* I% W9 g! ^0 `0 y" G
  396. 参数
    + G# J, d' b% ]6 a
  397. 'by' => 'some_pattern_*',+ B1 M6 Q' w& p4 L3 f; v
  398. 'limit' => array(0, 1),
    / k$ N% p4 x' [7 a% W
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    7 q$ ~( K4 N1 Q) P7 P; m( l
  400. 'sort' => 'asc' or 'desc',
    6 Z; v# ^* K- i5 k$ ^6 S5 u/ i
  401. 'alpha' => TRUE," X6 W- o) R% x! L4 c0 e
  402. 'store' => 'external-key'
    9 Y0 e4 j% M$ m4 X- W1 D, f
  403. 例子
    # W! \0 b, s/ G9 x
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);* P. s( f" e# i' p8 o9 Y& x& j' B
  405. var_dump($redis->sort('s')); // 1,2,3,4,5& v/ t' z) L7 h, F; G; r" b- g# O
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    . Q$ E- [7 s/ H! }) p( C) C' E
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)58 C0 D- e( A6 |) v

  408. 6 q) ~* `, f4 c( q" U! t
  409. string命令; n& x5 j" ^$ K+ d1 n& f9 l
  410. getSet
    0 `. \; U/ Y% k( S9 |) i
  411. 返回原来key中的值,并将value写入key" P2 ~, y$ v  I' |5 z. U1 J: w/ ~
  412. $redis->set('x', '42');. J2 `8 G/ A6 S% O
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'- \2 ]8 |8 p( g! t& t; M
  414. $newValue = $redis->get('x')' // return 'lol', I8 e1 `- W; q0 i
  415. ' E9 p; \" k+ ~) _1 [/ T, K
  416. append
      z  ]7 l2 a' H% h6 Q4 ~: v
  417. string,名称为key的string的值在后面加上value6 Y/ F+ X8 ^2 c% }, ^( e! e$ f# ~/ v1 c
  418. $redis->set('key', 'value1');) z1 g0 W  ~4 u2 ?. I: {
  419. $redis->append('key', 'value2');+ p0 ^! E, g" d/ M, T6 ^6 y
  420. $redis->get('key');
    , h5 z* {: R' i1 O& e
  421. 8 a0 U2 o: s! d$ g
  422. getRange (方法不存在)" W; a6 l7 B# }
  423. 返回名称为key的string中start至end之间的字符2 s; ~) r4 k; U  v" h% D
  424. $redis->set('key', 'string value');* {- b" i/ s# M! R
  425. $redis->getRange('key', 0, 5);
      o6 i, f( Q% L2 B7 O: [' b+ }
  426. $redis->getRange('key', -5, -1);; j. m; A" C# |2 X' K& f

  427. 1 V2 g+ q  w3 Y5 g: x/ |
  428. setRange (方法不存在)6 }( R# }; G+ x' K
  429. 改变key的string中start至end之间的字符为value- _1 t# i! _/ ~& x( c; S! e' v
  430. $redis->set('key', 'Hello world');2 [" Z: }: a  Y' z& p' M% J' v" C) N
  431. $redis->setRange('key', 6, "redis");
    7 n! [4 I) S; J* Y5 F% m/ O6 j
  432. $redis->get('key');! l3 `2 G1 z& q3 |

  433. ' _1 m, n( {7 V% f# J5 @
  434. strlen
    ) `9 F" I8 E9 X
  435. 得到key的string的长度+ E& J. ?, ?! G# T" ?& M
  436. $redis->strlen('key');
    1 F* }  ~& D2 i  H& o: [/ Q
  437. ( K9 u( E* L7 `4 j
  438. getBit/setBit/ {" C$ T# _7 s9 p
  439. 返回2进制信息6 G; a2 x: z; {  Z+ K: n
  440. / C, ?5 Q9 ~' L
  441. zset(sorted set)操作相关0 \9 _- K$ w' Y+ h2 t) [( v( B- O
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。/ Z* g+ D3 H( q
  443. $redis->zAdd('key', 1, 'val1');7 f& u1 q0 ?4 Z3 M/ D
  444. $redis->zAdd('key', 0, 'val0');% o( Y; B/ O! \2 k* q4 J& W  h/ E
  445. $redis->zAdd('key', 5, 'val5');) [: ~5 r& }. S. p; f9 Q5 V
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)$ K9 h* ?- l% l7 W

  447. ' D3 n& t; D' @; e: T+ y
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    " J0 z) \& N# ]
  449. $redis->zAdd('key1', 0, 'val0');
    ( }( C( q7 A' p' f& S5 T4 F7 U
  450. $redis->zAdd('key1', 2, 'val2');7 H2 E) r! i" m+ g% O# U' n
  451. $redis->zAdd('key1', 10, 'val10');
    ; o- q2 O  j6 t
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    : ~/ ^' }2 K* [/ Z- }
  453. + C, {* ?/ i( M8 S+ e" O! m& D
  454. zDelete, zRem+ n% B4 f1 R0 @* Q7 g
  455. zRem(key, member) :删除名称为key的zset中的元素member
    6 x, [' P1 t* P
  456. $redis->zAdd('key', 0, 'val0');
    . w2 I( X6 n4 |$ @" N1 [& g
  457. $redis->zAdd('key', 2, 'val2');
    $ i0 R+ x) j; A# P: M# w7 d, T# H
  458. $redis->zAdd('key', 10, 'val10');
    3 T8 l. }  \; i* @& I
  459. $redis->zDelete('key', 'val2');
    9 @2 v* o- n/ k: a
  460. $redis->zRange('key', 0, -1);
    4 p5 d. Q0 p/ G' _0 l- k& ?& Q1 P. u
  461. $ U' X% d5 L/ }. C4 u0 O) y
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    ! ?0 e1 J% z5 ]
  463. $redis->zAdd('key', 0, 'val0');/ ~5 Z/ N0 {5 i$ X5 ^5 S
  464. $redis->zAdd('key', 2, 'val2');- E- ~3 u2 }6 _4 D( ]! O
  465. $redis->zAdd('key', 10, 'val10');
    ( g* d6 g# i$ F& W
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    9 C! d3 O) [$ c, \0 p" i  W) {

  467. 4 ]" T6 H( A1 F
  468. zRangeByScore, zRevRangeByScore6 S& p8 \" w) ~- q
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
      A- H$ I1 ~4 ~0 ~9 }
  470. 返回名称为key的zset中score >= star且score <= end的所有元素+ y, e. Y+ @# V6 T; V. h+ d% e

  471. / h. q" I+ L1 m( K9 \
  472. zCount
    . n# ^2 b3 a, O$ P( I7 R
  473. $redis->zCount(key, star, end);6 H* j  H; G. b" T( @
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数$ i+ g6 b+ g2 _7 ^4 b' s

  475. : I; Z, K( N8 c! }( h+ T2 g2 W
  476. zRemRangeByScore, zDeleteRangeByScore
    . _! K; E! A9 y4 q, p. n
  477. $redis->zRemRangeByScore('key', star, end);
    + t* Q' ^5 D4 `6 \+ i6 q* F
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数: _/ O" p% d# x- N5 \

  479. , Y! L' D* Y4 S
  480. zSize, zCard2 b/ m- J& ^6 s7 `
  481. 返回名称为key的zset的所有元素的个数
    . u* U+ Q- \" e; X, j6 w
  482.   Z! \: Y* y8 \$ |9 z
  483. zScore$ X' I, |, a9 Y( A! W
  484. $redis->zScore(key, val2);
    - r+ A3 c, D! j5 C& B, R6 Z' y) j
  485. 返回名称为key的zset中元素val2的score
    # c% i+ T2 o4 S+ V4 A2 Z6 K

  486. / ]4 d. T: u* ?
  487. zRank, zRevRank
    3 P9 c' J3 Y1 v7 L: _
  488. $redis->zRevRank(key, val);, A! {7 y0 O& Q7 T2 f8 ]) T
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序/ U! n- c! V1 `, W

  490. ) |, r0 D: ?4 Y' W( T
  491. zIncrBy
    * b4 ?3 `, h1 ?8 O6 `
  492. $redis->zIncrBy('key', increment, 'member');
    " W+ [' n2 Z9 ]1 ]) G
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment! U. X, y; x8 r0 s3 l$ {

  494. ; X4 W$ s  I+ L- @1 D  q. k
  495. zUnion/zInter
    : w- l9 D; J* Z
  496. 参数
    % `+ i5 h1 ~. `/ m$ D3 t
  497. keyOutput
    0 Q5 {- u$ w5 M8 I/ s  v; y+ O/ T
  498. arrayZSetKeys3 ]6 a: C4 U9 Z7 Q! I( T
  499. arrayWeights
    % S: ?$ A& G2 ^; Y9 d/ w% p
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.& j- d5 _/ }) A0 j
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。/ M7 x; X* U) C9 h9 N4 }- i
复制代码
6 r! C* Z  [9 N' D# R  N0 `
( V; _! f& a4 P, a* I, {- L
5 M5 @2 @; O% Z( X

& l! X! o* g1 j# s& V0 k* l. ?2 ~' z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    / }$ h9 z/ X) T6 ?1 `# V! p% U
  2. //连接redis服务器 , n# A* r8 X8 U% D5 E- \/ F
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-10-19 00:31 , Processed in 0.133956 second(s), 18 queries .

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