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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13701|回复: 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 }/ k5 [! F& O  L* U
  2. $redis = new Redis();  . N4 y% F% Z+ |9 d. a+ u5 ?0 x
  3. $redis->connect('127.0.0.1', 6379);//serverip port/ S, s  R- G+ h; H# v
  4. $redis->auth('mypassword');//my redis password ; y9 n# [& A3 W; n3 X
  5. $redis ->set( "test" , "Hello World");  3 J: J" b0 J2 ?# e) j* w7 m
  6. echo $redis ->get( "test");
    ! P8 U  [9 s1 y0 Y$ _2 V
复制代码
php操作redis函数封装
  1. /**3 i( y: y; f" w1 @; S5 b/ w
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数* P  ]; q: o7 P: d
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    ; U9 l! E7 N+ Q# R& X6 v2 k" x$ ~
  4. */
    ; i! }5 h" P) e6 E: Z
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    0 p4 S, T* w6 ~# r0 z0 K
  6.     if(!$key||!$value) return false;0 S- _3 f) ^" P/ z4 C& s
  7.     $host = $host?$host:getenv('REDIS_HOST');) d. y/ S2 z/ Y6 y4 f( L7 G
  8.     $port = $port?$port:getenv('REDIS_PORT');
    8 o" Q+ S* G; U
  9.     $redis = new Redis();
      v# w/ N& t% M6 `( [8 A
  10.     $redis->connect($host, $port);
    - Y/ `* `2 H. `5 e  T/ v/ |  n
  11.     $value = is_array($value)?json_encode($value):$value;, m, e: O3 y* N) |' @6 ~
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    ) }: ^8 }4 m. c1 y9 B( H' |) m
  13. }
    : r/ F9 d" s, g2 d5 T1 u
  14. /*** r4 d& _  r7 P+ ~- e) u
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi9 N, P. \) F/ I7 y6 j
  16. */1 b; S; t5 |6 {, J
  17. function RedisGet($key,$host='',$port=''){
    2 ]% d1 R) v6 a$ q
  18.     $redis = new Redis();* q, L5 q6 D8 @2 C% N% ]
  19.     $host = $host?$host:getenv('REDIS_HOST');0 m/ v- y) H. [
  20.     $port = $port?$port:getenv('REDIS_PORT');8 s! X( b- a. X0 Y4 [! B
  21.     $redis->connect($host, $port);
    ; K. w. O0 H5 x4 ~
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    # e3 `. {$ w, q4 L$ Y* n- t
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    - p, ?$ [2 U7 L/ A- H
  24. }- e- o+ C' |' C5 P  _6 G
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
" T; F# B! Z8 M2 H8 d7 O
  1. setex 带生存时间的写入值
    8 ~* x# B( _& e* T8 R5 G
  2. $redis->setex('key', 3600, 'value');
    ( ^  g# z  E- F( b9 _
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回11 q  D% \" ~# {2 d# B* D
  4. $redis->setnx('key', 'value');
    $ X# e# j- ?4 \9 c# k
  5. 返回已经删除key( m5 f4 o6 K* k& ]. C
  6. $redis->delete('key1'); 成功返回1失败返回0
    $ O1 J& I1 S0 _$ T
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0  l2 H! z9 v( u
  8. 查询生存时间
    " L- m' Q8 K8 K2 W: w* s
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)* k* J6 K& e& W% j  A- ^
  10. 同时给多个key赋值,同时设置key0和key19 x& i& P- A! @
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    7 a. p# y* H; @; [& C& D& Z& p
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值9 i* b6 m9 ^: n) d7 i6 s$ c& f
  13. $redis->incr('key1');$ A/ L/ m( ]+ n. g. ~3 e6 V
  14. $redis->incrBy('key1', 10);* x8 s9 U. ?9 p) H
  15. 减法跟加法一样; e9 Q6 b0 l9 x- Z  o
  16. $redis->decr("key1"); 减少1. k: _! j' r7 E, t
  17. $redis->decrBy("key1",5) 减少5& W2 z4 H3 M) ]* h4 h( B8 F
  18. + y9 b, y& \! I! Y3 u  D
  19. list相关操作,连表操作$ X0 H6 W# n; U  q- |
  20. lPush
    3 H5 v; x, I# X/ v4 F. H
  21. $redis->lPush("list", "888");7 w9 R  }! e* Z) `
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数2 c! a/ S# \9 g: Q& F$ S% m; N, Q
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    7 T/ G$ k1 `9 k, }, h- \
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素. p" d. V; O- w
  25. lPushx/rPushx
    * ?1 Y: n& _+ }) o- N  O( a
  26. $redis->lPushx(key, value);1 S- L, v8 m* Y7 h* n3 m! h5 ?
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加  D/ y1 g3 Z7 I. u6 T' d
  28. & d3 a+ @. r/ G2 b" ?: w' D
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    - w4 t$ O- O% b4 V) U7 y# i7 I
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key9 Y4 k/ h: h% U. K# }" S* h
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    $ k, H: t+ k$ s$ k. z3 \9 b1 J
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    9 I* o, a2 L0 H- H
  33. sadd s1 zhangsan
    ( ?5 x% ]$ b- Q6 Z2 z# R6 ~% k
  34. sadd s1 lisi
    ) O/ j' t0 u) i4 `$ Y# X6 V% J% h
  35. sadd s1 wangwu
    4 f5 a0 M3 s' Q3 j5 H% `
  36. sadd t1 yangxingyi" j" g2 ^" Y5 d; }
  37. sadd t1 lilei
    3 C5 E4 g; V  c4 Y* Y, u7 p  s" j
  38. sadd t1 zhangsan! n6 b2 o) r9 a
  39. smembers s1 s1的所有集合内容
    4 V* G/ \, b$ e7 y, j7 W
  40. sdiff s1 t1 s1有的,t1没有的,差集& E% H2 z. G, U! @/ A+ N) ^
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式* S7 J9 V4 `- l: P! T
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的! C4 r. g. k5 [9 X3 v$ u
  43. spop抽奖场景,返回集合里面随机的数, v8 K- v2 w( a, K" S) [
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了! u! h) }5 h( g: ]& I9 }& H. S
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数- ~1 @! D8 H2 h6 p, H! z- f- N4 O/ Y
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    ) w, j# s3 y0 [0 r9 w, {
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    - \7 _: U0 U+ D" [8 l( ~
  48. $i = $redis->srandmember('s1');echo $i;
    3 `2 {: O! q' E; ]4 v7 p# k4 x  q
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false1 e1 W9 b# F! l* ^7 V) V/ u% M
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    ' a$ g- Q6 O- t: d1 e3 }8 {9 s7 p# v

  51. 1 Y3 r. t4 @) M. A# ]7 q
  52. zadd key 2 value 有序集合% [3 g7 s4 V  g+ h
  53. zadd y1 1 zhangsan;+ v9 j+ m/ O! R7 ]5 a/ i
  54. zadd y1 3 lisi;
    1 R  I4 e7 o- E) e! O$ g# C6 e0 y
  55. zadd y1 2 wangwu;
    7 O$ d1 k" Q  q8 A+ x3 h/ s
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    $ M* }! Q3 \! P1 Z& t
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);- Z8 L( T- f- P1 `
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    8 ?. \; z+ C/ T! o0 G  l" {% X. F2 `
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先5 o7 V5 Q9 B  }" @  G
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的& f# n& C- J( c7 C; I
  61. 无序就scard,有序就zcard,有z没有s+ C# f0 [) D% K2 o7 K/ J
  62. sInterStore) Y: f6 D/ K" g* Y  C. X3 n1 ^2 W
  63. 求交集并将交集保存到output的集合
    9 F6 v8 o7 m& h0 D& ?: x
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    1 {' j( T2 h6 w3 h9 u2 P; t# z
  65. * {% S- n: D9 D7 e/ R
  66. Hash操作
    : L! J9 Y/ _) n" [7 f0 _4 U9 P
  67. hSet
    / \6 u( R6 P6 D* l& c3 X. n  Q
  68. $redis->hSet('h', 'key1', 'hello');
    / [. {* d' ?( W+ W( K
  69. 向名称为h的hash中添加元素key1—>hello
      F$ M: U9 e0 T* e! o
  70. # I2 e4 T* o7 f& D6 B
  71. hGet
    6 }4 O6 ~* V- l5 b
  72. $redis->hGet('h', 'key1');7 N3 l: T$ z6 W, v4 [& d
  73. 返回名称为h的hash中key1对应的value(hello)9 Y% E( S( @& ~: K: J( p. y: q

  74. 5 {7 [: \  Q: h- }: q
  75. hLen( x; l/ r4 S' u8 l! p
  76. $redis->hLen('h');
    2 M; y7 o$ [. t" ^7 r) e/ z
  77. 返回名称为h的hash中元素个数
    6 r0 [6 D$ }: |

  78. 8 ~( W0 N; ]9 q2 P" F. L- ?
  79. hDel/ p) \+ ?$ e# @0 Z0 k: f8 c& a
  80. $redis->hDel('h', 'key1');
    $ i: w( ^  a0 \5 ^( |0 w
  81. 删除名称为h的hash中键为key1的域
    " _! T  b4 B* ]) Y) i: R" ?

  82. * y  J$ o! e1 T( m0 s8 w
  83. hKeys& }$ p+ o! q: |$ Z6 l
  84. $redis->hKeys('h');
    * |2 V" ~+ b2 j; E
  85. 返回名称为key的hash中所有键" U  i+ h! p( f. S# I
  86. ! S# u+ r. n) C
  87. hVals6 Q- I, Y% V; J8 o9 ~8 D
  88. $redis->hVals('h')
    ; H  u& f( T( y
  89. 返回名称为h的hash中所有键对应的value4 ~# a- q- g1 o$ J# C* d3 Y

  90. " D4 P- u/ Y2 b/ ~( h# Y; s. c
  91. hGetAll, X$ E( x1 F6 o# E6 {
  92. $redis->hGetAll('h');
    / u$ R5 K$ J# u, j
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    2 X& L- {6 k+ y8 a& N) ]
  94. 1 {) ^7 a* [; f: [3 _0 t9 T3 N0 C8 |2 D
  95. hExists
    + U7 A  i" s; z" B
  96. $redis->hExists('h', 'a');' N; J" a% L# r4 X1 l0 `
  97. 名称为h的hash中是否存在键名字为a的域
    9 a: |2 }) H/ x- z+ q
  98. ) j3 }9 D9 O* O' g* G, @/ i
  99. hIncrBy0 s' G: \+ K" E; j3 m7 K
  100. $redis->hIncrBy('h', 'x', 2);0 L  P; Z8 f6 k  T! g& d3 b+ j/ A
  101. 将名称为h的hash中x的value增加21 l2 t$ N, \- R# }
  102. - ]0 G6 ]  w4 C* Q! }3 x
  103. hMset1 {+ u* b' E7 k0 U' u$ \( M7 \
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));  d) P2 L$ `' ~& u( V6 A: X
  105. 向名称为key的hash中批量添加元素0 o3 P- t! v3 z+ ]  ?
  106. ) k+ H8 A# F+ _. x
  107. hMGet, S, H; {% ~% p( {
  108. $redis->hmGet('h', array('field1', 'field2'));/ A2 ~6 S# ~0 S) X6 d
  109. 返回名称为h的hash中field1,field2对应的value& V# d8 I7 j( T. h6 z$ |
  110. ! q& V1 s1 s* T# ^4 \" O
  111. redis 操作相关) v6 J7 _& X7 D: n1 p1 Y9 J
  112. flushDB
    , l* H4 o' |, L: B# `
  113. 清空当前数据库3 L) J# s/ E$ j3 t) x# R* C
  114. 5 }6 T' S" i% e4 @8 p
  115. flushAll
    4 m/ K0 B3 f% M( x8 p9 u0 n7 C; {  n
  116. 清空所有数据库# _7 A, o: ?& g3 ]1 q, O

  117. . k5 G( M. }  G+ o% _3 [
  118. randomKey9 c% K- y# o+ P2 o2 a. r
  119. 随机返回key空间的一个key
    ; p. O6 l. D, g. C) }7 ]4 f' T
  120. $key = $redis->randomKey();, s/ k( ~- B* L/ o0 }
  121. ( }6 R% E; c2 Y4 m2 X: G0 l& m: ~
  122. select( K1 F9 p5 u, p- Q7 ~
  123. 选择一个数据库
    & w$ S/ I" T3 N7 R% Q/ g/ \) y5 Y: Z& ^
  124. move# [8 w0 j4 {* p3 O+ s# W
  125. 转移一个key到另外一个数据库
      j/ S7 n; }' x. j
  126. $redis->select(0); // switch to DB 0
    8 i$ E) w3 m! |: y8 U( o. m( _# D
  127. $redis->set('x', '42'); // write 42 to x
    7 n. f: m' n+ _! R
  128. $redis->move('x', 1); // move to DB 1+ R3 [- K. e: e5 s" W
  129. $redis->select(1); // switch to DB 1
    % _2 S! b  M% O  F. S, y8 l
  130. $redis->get('x'); // will return 42
    9 l. M  V9 J( N( K- U) v+ C
  131. 7 b8 U5 j5 O( o
  132. rename, renameKey
    ; l+ s( _8 A" U" `) L0 {! u
  133. 给key重命名% |' Q6 |& i- o4 Z" V& w$ Z
  134. $redis->set('x', '42');
    ) Z0 Y# `) m. o2 y' @
  135. $redis->rename('x', 'y');
    , N0 z3 i8 w5 e* Q/ P
  136. $redis->get('y'); // → 42' @2 l# k8 G. u6 J/ u& A3 R  U
  137. $redis->get('x'); // → `FALSE`
    9 M, L' K+ P5 {( P

  138. # N9 y7 k+ N4 a& o, u3 d9 W; F
  139. renameNx
    * k" N; v6 ~% Y- o
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    3 p/ @" f; a' x( J: A( |* }: V& V

  141. 1 b, t6 q$ p2 {# f
  142. setTimeout, expire
    # v) s+ `& E2 |1 a
  143. 设定一个key的活动时间(s)
    # @5 I4 G& x& O- X. F% {' M* c
  144. $redis->setTimeout('x', 3);
    . R, Z- B: a0 |$ V) q& F

  145. / l; a" k  G2 ~+ c' p
  146. expireAt/ Y$ J- v/ A1 q7 Q4 Q, B' d
  147. key存活到一个unix时间戳时间
    " E5 l9 D& l; C. _' w
  148. $redis->expireAt('x', time() + 3);
    4 Z% k) y9 G+ j4 {* o+ D/ f

  149. ) [7 {# m# p8 O$ j
  150. keys, getKeys
    ! _; A6 S; t3 ?
  151. 返回满足给定pattern的所有key
    8 t  K0 Z: b  g& X  X) `& h
  152. $keyWithUserPrefix = $redis->keys('user*');& X5 R5 T/ z7 D/ t2 S
  153. / Q; c1 @# K1 p
  154. dbSize# D) M1 P) F1 g4 K" m% z9 r
  155. 查看现在数据库有多少key
    , S  r# f2 p3 I" f- I  y
  156. $count = $redis->dbSize();% b. i) t* ?8 L/ ?

  157. 0 w$ p& `3 E; m8 g) r% E) v. V
  158. auth9 n3 v# N4 P5 Y- n
  159. 密码认证! Z% {& E. M' P0 e" X, L+ `" m
  160. $redis->auth('foobared');
    % H7 p- Y4 D" H; F4 D

  161. * G3 P/ |9 ~/ v( a1 y! T. `( d7 J
  162. bgrewriteaof% K0 p& e$ z" {3 x
  163. 使用aof来进行数据库持久化# W5 E* @. B6 ?  p! }* j/ d1 k
  164. $redis->bgrewriteaof();
    : w7 X/ ^/ a. K3 E5 F
  165. 2 A4 l, h4 y! K( R- {6 S
  166. slaveof7 `5 A3 s, w( M. T1 i: b
  167. 选择从服务器
    8 ?5 X0 b: ^0 ~6 D" i7 u/ M
  168. $redis->slaveof('10.0.1.7', 6379);8 W, i$ {9 G& D) \! t  M

  169. 7 u: N; o- d- t) ^
  170. save/ g5 V# |: J8 ?# P* C4 C
  171. 将数据同步保存到磁盘0 w2 Y: A! }* v( M2 D3 r

  172. 2 c$ F: h  {1 C* ]0 Y
  173. bgsave
    - }' m% y: N- _
  174. 将数据异步保存到磁盘
    / l% f7 X& f; q+ @& r  g6 @5 s
  175. ! a1 M& t, ^4 X9 b6 g
  176. lastSave8 w! M( j. Q) M1 }9 \0 ]
  177. 返回上次成功将数据保存到磁盘的Unix时戳) s; B  d* M1 }1 w( M

  178. - M- h* y, {$ |& B; [: K' P3 E
  179. info
    / ~3 }& t' u2 v+ U/ D) ^1 p! n9 I
  180. 返回redis的版本信息等详情
    $ n1 ]3 b  h0 `1 W- S' \% f5 v

  181. 2 e9 h0 q+ \5 J; K# A; U: U
  182. Redis::__construct构造函数+ g0 ^( y1 F4 f) d; U
  183. $redis = new Redis();. \7 U2 V" e( F9 X% e

  184. : |4 g. [# I0 ~0 p- J
  185. connect, open 链接redis服务
    . M. c/ i2 l9 p; v9 w( }9 Q* M0 f
  186. 参数7 {& M5 b5 k3 u2 l) i7 I+ p
  187. host: string,服务地址* R+ H) `7 V, _! q+ s
  188. port: int,端口号7 y3 X2 h7 a' Q
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)( A/ O6 j1 E5 y* m' V# O0 e
  190. 注: 在redis.conf中也有时间,默认为300
    2 P2 R( [$ C3 A* Y

  191. 4 v1 V* o8 p- A, A2 k; m
  192. pconnect, popen 不会主动关闭的链接8 q" R( D3 C% o/ x3 B
  193. 参考上面2 m5 Y+ K+ j4 a3 q9 b
  194. . ~; V: r) k' A: A% z
  195. setOption 设置redis模式, W7 x; r. w4 E, a2 |

  196. " f8 S2 O. c( s# k
  197. getOption 查看redis设置的模式2 F0 r& {! L0 w8 U3 [

  198. / w6 N1 E4 @/ W
  199. ping 查看连接状态
    : }5 ~2 Y0 [' u0 A

  200. - E+ C1 j$ ?+ W9 B7 V
  201. get 得到某个key的值(string值): d" ^/ v  D3 e5 u+ P! {) H
  202. 如果该key不存在,return false
    - _8 F/ C/ W0 H

  203. 3 I6 e7 Q5 b# }  p
  204. set 写入key 和 value(string值)
    + e, g1 p6 l& n2 X# |
  205. 如果写入成功,return ture
    : f: g- R& Z$ M/ N6 e: S7 m
  206. : n9 {- D  S$ s& C& `
  207. setex 带生存时间的写入值& n0 Z  I# d6 i  D$ k3 w3 `
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.7 K0 c8 B) \2 y$ n0 I
  209. & |' k2 E2 c/ a7 ~$ E0 g% L+ g& C
  210. setnx 判断是否重复的,写入值/ M& i' f4 p6 z( Z6 K7 [2 y" {7 C
  211. $redis->setnx('key', 'value');
    3 R  g, [+ B( Z8 w
  212. $redis->setnx('key', 'value');
    7 Z4 L; ^2 s3 D( Z  t/ ~$ U" B
  213. " K2 I7 u5 n% W4 e! ]
  214. delete  删除指定key的值$ Y7 \7 H1 S( l! C. x% N
  215. 返回已经删除key的个数(长整数)! i" w; T8 v6 }, v% u: T" S; z6 z
  216. $redis->delete('key1', 'key2');4 a' H, j; C, E
  217. $redis->delete(array('key3', 'key4', 'key5'));
    * {* f1 i: r9 f1 q% M8 T

  218. ( m8 {( n$ I3 M# L- W- Y7 g
  219. ttl
    : ?4 Y$ ^% O: n" n; q' C
  220. 得到一个key的生存时间
    ' t% X. N6 q' W

  221. " {' N! \! R, X  I# z* e- e
  222. persist: H" J% U9 o" [" j- L' X
  223. 移除生存时间到期的key; s- H* C" o: c/ l" Y
  224. 如果key到期 true 如果不到期 false. [9 T5 V7 ~  ]. g
  225. 4 M( U) c7 |3 N4 b: Y
  226. mset (redis版本1.1以上才可以用)
    ; B- r( W/ r4 l3 w" w
  227. 同时给多个key赋值
    4 j3 M% k( G! n+ B7 t- S
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));  o; C8 b+ {/ M. U( L
  229. ; F* N& d5 h2 s
  230. 3 e( f( X5 V7 {9 ^
  231. ; D+ c4 d& }$ a- m
  232. multi, exec, discard
    8 L8 I. L! p- }$ e# K8 J! w
  233. 进入或者退出事务模式
    ) R, s3 w8 C) _2 N4 h& Z! `0 L. ^+ r6 F
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    * {5 W; ~- H$ S# r6 t7 r" m
  235. Redis::MULTI:将多个操作当成一个事务执行' }0 l5 W- A7 J6 B' q
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证- O* ?2 V' u* p
  237. discard:删除一个事务
    # P3 J1 z2 I$ b) g- @9 ~8 N# s: n+ t
  238. 返回值
    1 r. b3 f9 J% K# x! a
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    : m2 l1 F5 `8 q- d
  240. 9 S- S: s5 P/ N# i( V* n
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    # i2 |- B7 Y' X1 w: q
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false). z* r8 Q2 j5 F3 ]$ \
  243. unwatch  取消被这个程序监测的所有key
    ( D! t6 N6 F6 y' [' h
  244. 参数,一对key的列表
    3 H! \0 e+ }' q8 r3 [% K. |, j
  245. $redis->watch('x');
    * {. S9 A: }2 W4 ^* a# [

  246. 7 p( S9 n6 P% ~
  247. $ret = $redis->multi() ->incr('x') ->exec();; _: b/ [& r* N0 `
  248. + t* {) ^  u9 `# F3 X2 `9 H& g

  249. 4 D& h+ y) n7 f0 O% V; h7 b
  250. subscribe *" x) Q$ R: ]) A6 m# o5 ]7 Q
  251. 方法回调。注意,该方法可能在未来里发生改变) B0 R' K+ D; G  ?% e* g0 M
  252. + A7 M- O/ [, \9 I5 @; G& v8 ?$ e* [; V
  253. publish *; l, V( O' n9 Y* K* n( I) ?  _9 S
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    . c2 s! V; U6 q5 X% y
  255. . J! u- p7 r) m" b8 i, y
  256. exists. ?, ~. t/ |8 G* V- I3 b& E
  257. 判断key是否存在。存在 true 不在 false4 d1 P- U/ l  J& X* D( F2 o

  258. % n( n4 q* o) E
  259. incr, incrBy
    % N  ?/ B8 o5 n2 q+ N
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值6 R6 u8 B+ Z7 q; y. L  z* k: N
  261. $redis->incr('key1');
    " C/ O! o" _0 x! i; T
  262. $redis->incrBy('key1', 10);
    : z, j, I% _8 y" }5 Q0 h" W

  263. 4 ?4 c, ~2 H3 B, W. ^
  264. decr, decrBy# j! J0 S' `" g- q/ e
  265. 做减法,使用方法同incr
    2 ~. c2 n) D# R$ E0 f( |% e; \

  266. , ?, P" p0 t  u3 v3 u/ F
  267. getMultiple
    4 O# |( r  L! _8 n  z& n+ i( _! h
  268. 传参
    / Z9 O+ J  i+ Q! |6 o( T
  269. 由key组成的数组
    & l8 k2 P" V- ~7 P/ v* b" ^; Y
  270. 返回参数* W1 C5 T2 F0 _( t
  271. 如果key存在返回value,不存在返回false( {" m. F, j( n) A6 a, a7 F
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ! t" \: h% v* |! ?7 q% b0 T) G
  273. $redis->lRem('key1', 'A', 2);6 p7 z( i! L% |  H+ e9 X7 `
  274. $redis->lRange('key1', 0, -1);9 p$ O; Y8 l' I" r- Y( |
  275. 1 ^+ e9 n& B+ [: t
  276. list相关操作7 g# Q4 T; F. }- s" s' o! ]' [8 m
  277. lPush
    4 z4 Q) A& m/ b/ g& r4 g" [
  278. $redis->lPush(key, value);7 f' z* N& P+ m2 M& D) p! s
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    # m1 T: v9 f* K+ H0 N

  280. $ Y( }. e* N  N& m8 h3 g5 c
  281. rPush
    0 f) p# [4 H+ }4 _& T
  282. $redis->rPush(key, value);$ P7 X# q! A# ^  H
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    & H% B1 p' W: Q! P$ j1 d
  284. 8 w: e2 w: j2 T" \4 S
  285. lPushx/rPushx
    " D: P( Q( c3 h" O5 c3 W
  286. $redis->lPushx(key, value);1 c' {6 R0 U' A8 t8 \1 h
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ( L9 J4 W$ o' P! H2 F+ {/ O0 q' y

  288. ' C" q9 u4 e1 H8 P9 G
  289. lPop/rPop
    % i3 z2 D4 H/ A+ ^9 w
  290. $redis->lPop('key');) E+ N# V" }, c
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    . \& p- j8 N7 [3 s  t

  292. $ S/ V4 g/ K3 U( X' b6 D% @/ q! a2 }! X
  293. blPop/brPop  w% l4 Y# O/ x/ N2 f) R6 r& ~
  294. $redis->blPop('key1', 'key2', 10);1 j2 a6 u0 B' R6 P+ a
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    / s3 {/ \( o0 Q9 W5 ~  e" A" }
  296. ) g8 x# B) J) P
  297. lSize
    4 v! {4 V" E# y
  298. $redis->lSize('key');: I3 W) X6 y- W1 |3 y, {5 u
  299. 返回名称为key的list有多少个元素
    . z% \6 i( C* g& T! X
  300. 7 G  ~2 [, M* {8 M$ [
  301. lIndex, lGet$ H: n( O  v" {4 Y4 L: d: {0 U5 J" Q
  302. $redis->lGet('key', 0);
    / e! o. L9 d' `2 s
  303. 返回名称为key的list中index位置的元素7 a" ^/ @: b1 g2 C1 D' g1 o

  304. 9 q4 B. C5 p' Z* E8 U" ]
  305. lSet
    " N, o  O% U9 n7 D
  306. $redis->lSet('key', 0, 'X');5 a( q: Z( [1 R3 y& I2 F( t
  307. 给名称为key的list中index位置的元素赋值为value
    $ b. }- g  ?# E" b& B
  308. 6 }: H+ ~1 x+ D5 `: M+ G
  309. lRange, lGetRange
    ' y6 m9 K1 ?# K9 A/ h
  310. $redis->lRange('key1', 0, -1);
    6 D8 y9 U* [! B; C# F' t
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)+ z7 O, `+ P3 |) q
  312. $ p. ]) c+ c6 m: f6 w
  313. lTrim, listTrim" e5 c  X; N6 u" g  P( X7 @8 k. l8 O0 V
  314. $redis->lTrim('key', start, end);* G& o/ L. j( Q7 }
  315. 截取名称为key的list,保留start至end之间的元素
    $ a8 x+ o7 Y7 `* O9 E
  316. % G( S4 B5 `$ M( f
  317. lRem, lRemove4 M- J! u7 i4 V- r% ]2 G
  318. $redis->lRem('key', 'A', 2);- N* E6 R4 v( w+ X/ V& Y4 Q
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素* G" A/ l6 X7 S/ T2 w' w5 e: w  ^6 b
  320. 2 a3 x0 D+ A+ I! G3 y
  321. lInsert
    : N; Y2 r' |# c9 S" W- f
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1' J+ s) r+ H( U9 `% k
  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');
    # Q3 S$ y- D; S6 B( N2 c
  324. $redis->lRange('key1', 0, -1);
    & z3 f/ X2 X3 q2 p
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    6 z; ?; i6 n5 O; ]
  326. $redis->lRange('key1', 0, -1);
    - ^" X5 a7 f) T4 `1 U% P0 [
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');- O: x! Y, D% S# J) \/ Q3 l/ T
  328. 8 J# n  ~! f1 o# y% h
  329. rpoplpush
    : K' l! a3 d+ G1 u- D6 m& Y
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    & a9 z2 n- R; v7 M# ]) L* c
  331. $redis->delete('x', 'y');" w" A9 V1 d! r7 C1 g" t
  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'));
    " \# }+ F9 h- S
  333. var_dump($redis->lRange('x', 0, -1));
    2 F  d  ?- M( b8 I8 Q2 z
  334. var_dump($redis->lRange('y', 0, -1)); + _! `/ B' J, ^! g
  335. 1 O& g% y/ {8 u: r# \) v1 v5 @; Y
  336. string(3) "abc"
    $ O3 O  O7 Y2 k1 x1 w
  337. array(1) { [0]=> string(3) "def" }
    7 B) j/ Y+ O" T+ ~9 m/ x. l3 J
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    0 F1 @4 F( T0 j$ L7 z4 w

  339. . r5 q+ J2 r5 M' \; s, K; F& [; a7 s
  340. SET操作相关
    1 a/ e9 j. I6 c) r" u
  341. sAdd! W6 [2 h2 M# P  k6 Y6 n) C% S; M' H
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false5 s6 z* K5 x2 W
  343. $redis->sAdd(key , value);! x$ V" e0 ?, }  x, Y  q8 Y

  344. 9 A8 O0 l8 A8 @* I9 a- I
  345. sRem, sRemove  C0 J- b- ]! W6 E% }
  346. 删除名称为key的set中的元素value4 N( ]! N% @+ w2 _, @
  347. $redis->sAdd('key1' , 'set1');
    5 a! m4 U. w. k9 u2 L$ N2 W
  348. $redis->sAdd('key1' , 'set2');0 j" y. W+ v' b
  349. $redis->sAdd('key1' , 'set3');% Y% s  Z6 t+ i3 k& E3 {
  350. $redis->sRem('key1', 'set2');
    ; ?" H5 D& o( I! S
  351. * a& s5 R, p$ a7 c- f
  352. sMove! }: l6 A5 y- v+ q2 G" ?9 s
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合7 D* H1 t- f3 B. Z: ~, H2 l
  354. $redis->sMove(seckey, dstkey, value);
    ) n5 R! h0 x; q" b* @
  355. 8 ~! h3 z' T9 g5 S
  356. sIsMember, sContains
    ( Q! ~+ J/ R) c6 A- p
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false: R+ o; o7 u( X
  358. $redis->sIsMember(key, value);# ]# g; s: O+ c$ B

  359. 0 {9 ^7 ~+ ^/ D% g2 U( H) B2 C
  360. sCard, sSize# d2 N% G+ g2 l7 n* _1 k! N
  361. 返回名称为key的set的元素个数5 z; u& }! l  U

  362. % ?9 X: u& {7 c
  363. sPop4 A+ W7 w; u9 x6 Y7 ?$ o/ D
  364. 随机返回并删除名称为key的set中一个元素
    ; K% ~  e& c+ g8 Z- Y

  365. " \. K8 m8 s7 K/ P" b$ F# ]" A
  366. sRandMember
    ( C0 ^. N( I0 Y/ }  ?
  367. 随机返回名称为key的set中一个元素,不删除. i# F# N0 H' ~2 |# t: Z

  368. " t" J2 K3 l$ k) A. j0 c6 P# i
  369. sInter
    9 |! k( N( M6 M) Z. g
  370. 求交集/ Q, p7 N, d/ B: J8 H% O
  371. * b6 [7 o) ^, ^- X# e
  372. sInterStore
    8 M4 j' \4 G9 ^
  373. 求交集并将交集保存到output的集合6 W4 W+ r( r+ a0 t* U; n
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    7 `' Y# N/ n+ ~# O
  375. & i8 A7 T  f. `
  376. sUnion
    ! |/ u/ i+ r" L! G
  377. 求并集
    : {2 {* Q* j/ ~  b( B& n
  378. $redis->sUnion('s0', 's1', 's2');
    + ~; g) M; H* n0 ]6 d' X0 m
  379. s0,s1,s2 同时求并集% {7 g9 N6 ~, N. t/ e6 s

  380. 1 u+ _0 |7 [! h; G; H, U
  381. sUnionStore1 l# {% t9 N+ r+ U
  382. 求并集并将并集保存到output的集合5 {% u6 I2 b" l: e
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');( M3 A6 I8 N  W- G" r3 W# |8 i) l
  384. " F7 y% a! w7 G, u
  385. sDiff8 _1 ^1 i: B, m2 y
  386. 求差集' Z: ?7 V9 u2 I9 f6 p+ S" {

  387. 8 g2 i8 `5 r8 w/ x
  388. sDiffStore
    8 a" X' \1 @+ f
  389. 求差集并将差集保存到output的集合
    3 k0 Q; t3 }6 _8 w& o% {
  390. 8 A/ M& r) K/ {7 j" w, t$ r
  391. sMembers, sGetMembers1 e6 L' P' N5 l2 a
  392. 返回名称为key的set的所有元素
    % s* c0 ?  k/ F" Z

  393. . M9 ]# f# S. g; i
  394. sort
    7 y0 P3 ~( V" o" q1 C
  395. 排序,分页等
    . D5 c7 ^5 F* z, e/ V
  396. 参数
    # b' q5 [8 x0 [) a: g3 J
  397. 'by' => 'some_pattern_*',
    4 P' i. O! a* w& s) ]
  398. 'limit' => array(0, 1),
    9 ?( e/ r- C: d
  399. 'get' => 'some_other_pattern_*' or an array of patterns,0 t# m" b( y: \' c
  400. 'sort' => 'asc' or 'desc',! ?3 e/ Z; O6 Y% \
  401. 'alpha' => TRUE,& y9 `6 v# Y4 Y0 E) [% K; s. h
  402. 'store' => 'external-key': d# @% T5 q; z+ N. P+ ^( }: }( T
  403. 例子, o3 l- v, |% H
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);6 [' T) s3 {6 u9 H
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    ) o4 r1 ?; I2 t. X. l( C
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    ' S- t# X+ a9 a! k2 ]- o- m
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    5 I1 F7 u6 _. S& r
  408. ' w/ s! p! p4 U* h
  409. string命令' g# D: p( l; ^% G# K- y
  410. getSet
    & D: k6 G8 D2 w
  411. 返回原来key中的值,并将value写入key
    2 H- w4 G; N: Y- V5 U
  412. $redis->set('x', '42');
    " K, L  R% q: V# R! ]: ?4 }0 m$ K
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol': w2 \" o" `0 b/ x5 n' N
  414. $newValue = $redis->get('x')' // return 'lol'' L. y0 \! J9 C* i
  415. / h, _# P9 L( D2 c* _
  416. append
    & M5 b2 z$ X3 Q! q
  417. string,名称为key的string的值在后面加上value
    $ b. E" V+ X' X9 D$ U' Y( L, X
  418. $redis->set('key', 'value1');
    5 M% t$ V+ i1 i" b
  419. $redis->append('key', 'value2');
    $ A5 A+ L# X' \! b
  420. $redis->get('key');
    " v0 k* h" F0 ^: c/ V' m

  421. 1 g1 {5 k! T  D. A' g9 p
  422. getRange (方法不存在)
    3 h! o+ p4 C1 s) j) Q' P
  423. 返回名称为key的string中start至end之间的字符/ l5 j6 l6 J0 R5 h) ~
  424. $redis->set('key', 'string value');: s" a+ B) Y( d9 |, ^' {, U4 v, ?
  425. $redis->getRange('key', 0, 5);
    , p0 a5 Y: n; }+ L
  426. $redis->getRange('key', -5, -1);
    ( e+ S$ ~; u9 w9 E' h1 v
  427. 4 l. ^* l& L0 E0 r9 V3 d+ D
  428. setRange (方法不存在)
    * v  ^+ _5 O' ?. Z% K8 V2 Y4 W' i
  429. 改变key的string中start至end之间的字符为value* ^4 `4 B0 X3 [' p
  430. $redis->set('key', 'Hello world');8 q0 U' D  P( S
  431. $redis->setRange('key', 6, "redis");7 O9 P; e& T( S, g: i7 D
  432. $redis->get('key');) j* ^, Z6 j0 x% U. R9 ^

  433. ! }' B3 p" z, L* d. ?) P$ d7 ]- F& K
  434. strlen: L- `( t3 @1 O/ w
  435. 得到key的string的长度
    6 U) i* n, e+ ^
  436. $redis->strlen('key');
    1 p' [. q& M/ k

  437. / [4 y% a3 o4 w! A
  438. getBit/setBit
    " y2 ]+ a3 w# ^0 G/ j, N6 G8 |4 T* u
  439. 返回2进制信息
    0 q% G( d3 n# S6 {4 N

  440. ' D" _; n( u, H7 g
  441. zset(sorted set)操作相关
    * r$ W" V" K2 z" i) y5 B
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    9 t/ L/ K! W$ c. D  H
  443. $redis->zAdd('key', 1, 'val1');3 }! n, W5 n& A& N! C+ N' Q% X- m1 t
  444. $redis->zAdd('key', 0, 'val0');( [& ^6 y. H, k  W+ Y, s
  445. $redis->zAdd('key', 5, 'val5');! x% z; D( c8 U
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5); t. W) Y; y; n. z- `+ b, Q" Y
  447. ! W  w2 Y+ ?& `" M3 q7 z
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素# `1 Y7 b% v/ i  c( [& s
  449. $redis->zAdd('key1', 0, 'val0');! A' E4 q  {1 e. N: M
  450. $redis->zAdd('key1', 2, 'val2');3 F1 p9 ]" s( H  L' y7 Z) f
  451. $redis->zAdd('key1', 10, 'val10');; z6 w) u& T( \4 D# ^
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    - S& H8 }, C. Z6 [, D" i" p

  453. 3 T- Q& R2 X% p& s! [, k; P
  454. zDelete, zRem: `& t7 T% Y, U  X
  455. zRem(key, member) :删除名称为key的zset中的元素member
    . `: H% \3 `: F9 `4 \7 B' t- _
  456. $redis->zAdd('key', 0, 'val0');9 @7 e  e. n- V% I
  457. $redis->zAdd('key', 2, 'val2');1 {" D5 ~3 h0 E; R) m
  458. $redis->zAdd('key', 10, 'val10');) F, j+ E0 U6 k) q
  459. $redis->zDelete('key', 'val2');) D5 o8 S0 B% x7 w& y3 r2 m
  460. $redis->zRange('key', 0, -1); + L9 b5 j( G; }+ q

  461. 6 W! \" b- X; `8 g2 m
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出) e5 v% _, ~1 f* v( ]
  463. $redis->zAdd('key', 0, 'val0');4 z8 j4 i! K" C1 P( X% i) Z
  464. $redis->zAdd('key', 2, 'val2');; U5 w: a0 s  a) s! }/ P
  465. $redis->zAdd('key', 10, 'val10');
    9 W- ]% A' T! o4 U/ C; n5 a
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);4 F3 a3 t) G# B2 Q9 U2 m( ~8 ]7 i
  467. 8 F* A% S" ?; w! @
  468. zRangeByScore, zRevRangeByScore
    6 e& Q8 w! l% U& s/ J6 i  `
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    8 s2 ~! i9 i6 V; s' z, r4 p
  470. 返回名称为key的zset中score >= star且score <= end的所有元素* {( M' ^+ D3 v3 {. z# j

  471. 5 \: h0 D+ [) W6 Q9 _! v
  472. zCount( V& G- J9 }9 _6 ^  c6 c$ y
  473. $redis->zCount(key, star, end);
    5 a7 t" V/ B" H8 b) R( }& g
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    % P6 q9 J! A) o1 Q7 C9 b% |
  475. # }; h4 q; \0 x( m$ O1 A
  476. zRemRangeByScore, zDeleteRangeByScore- }7 E3 e9 ^. a1 v: ~8 d
  477. $redis->zRemRangeByScore('key', star, end);' }& o( \7 e9 x2 K
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数: J6 q9 [  O) E- U

  479. ! H" \& Q! ]2 @3 H4 w
  480. zSize, zCard
    3 }" z. ?& V9 G
  481. 返回名称为key的zset的所有元素的个数
      }$ s! i3 P% y$ \5 S3 Z. C
  482. 7 D- q5 e2 h8 G0 ?) V& U3 Z2 e" P7 h
  483. zScore# \& S4 H! q) ^
  484. $redis->zScore(key, val2);& Z0 u& Q8 t9 v8 z7 H( `
  485. 返回名称为key的zset中元素val2的score
    6 @" @1 @. q0 S4 S
  486. + G! W/ h2 X5 z7 ^: M
  487. zRank, zRevRank
    6 J' R- P7 M& U6 z  ~' x4 G
  488. $redis->zRevRank(key, val);
    9 l+ C( J3 \! K  j  s
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    , I* }6 Z- q& Z! v3 M; E& [3 R

  490. ' X' o, I* H% ^. [+ M5 n
  491. zIncrBy
    4 A* p( \" L% |% \8 c' }* w0 V" O+ c
  492. $redis->zIncrBy('key', increment, 'member');
    ' G. p3 p" U2 y
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    & _1 J$ i- E4 R# C

  494. , J1 l1 o& p+ u; h4 z0 F% u. I
  495. zUnion/zInter; G- E& T7 w/ a# v& Z
  496. 参数
    * y& O/ {9 ^& W# ~9 s/ g' @3 V
  497. keyOutput
    ! g: u  h+ m7 Q& _# R2 t
  498. arrayZSetKeys
    * T2 ^& i( J, G+ U, X" O- S
  499. arrayWeights* U0 w+ @  ~" w+ [# R6 @  y
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    0 u2 n1 W/ J& B
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    1 ^: s( |' ^: M. X
复制代码
0 |+ x4 l+ W7 z

2 V8 k" ~0 `9 }2 F: h. p2 a! j
7 y8 s; \+ s/ x* C5 K3 D" p% x" `, f8 u! Q* y! I; h! N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    9 o' E) P9 R" i8 A0 j
  2. //连接redis服务器 : O9 ]7 b9 Y9 S/ Q$ Z7 c% m
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-20 00:01 , Processed in 0.081187 second(s), 18 queries .

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