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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php6 t4 @' E+ b9 w: G# e2 Y
  2. $redis = new Redis();  * b$ u2 h4 a" M* X( s
  3. $redis->connect('127.0.0.1', 6379);//serverip port7 }- E. p5 o7 g
  4. $redis->auth('mypassword');//my redis password
    + a/ C6 n* {; }7 C
  5. $redis ->set( "test" , "Hello World");  
    - M  E4 {: y9 l. E
  6. echo $redis ->get( "test");5 ?* ]+ S# j! t# G! \# s
复制代码
php操作redis函数封装
  1. /**
      p4 ?2 R4 y, Z- ]
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    5 D3 Y% V1 T2 F6 C
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi! \& G9 c  G  S* L4 p. B
  4. */
    , b! A$ R& ?7 l- M
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    ; I% X2 ^' X: N
  6.     if(!$key||!$value) return false;
    3 \9 N! h& Z6 D' R; A
  7.     $host = $host?$host:getenv('REDIS_HOST');& _+ }7 s& K& v' W* E% U, Z
  8.     $port = $port?$port:getenv('REDIS_PORT');
    / b3 w/ w, g& |- Z& I) E
  9.     $redis = new Redis();
    ( ?4 @7 Z; R% l5 v3 @9 `9 ^
  10.     $redis->connect($host, $port);/ V/ y. K: W, o: }, X: ~
  11.     $value = is_array($value)?json_encode($value):$value;3 d5 D. M0 i. Q3 G" y
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    ! v3 s. e. a; f6 @, o: v
  13. }& T; c$ U& c& E9 `: v2 G
  14. /**
    ; C$ U1 M; P) v8 ~4 H
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi! p- w' @# n2 b7 m- j- d5 |
  16. */" o# r6 M4 D: z, t9 `" C8 S5 d2 {
  17. function RedisGet($key,$host='',$port=''){
    - g/ |0 G7 V0 b3 f5 l
  18.     $redis = new Redis();- n+ G: n- R5 I, m& {
  19.     $host = $host?$host:getenv('REDIS_HOST');) H! u. y& z  V9 f& `! G7 }/ K
  20.     $port = $port?$port:getenv('REDIS_PORT');
    6 H. ~! h+ ]: H, ?* P. Q
  21.     $redis->connect($host, $port);
    $ ]2 C- _+ S2 O% D$ y, }4 ?" g
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);0 M: G; O& c( t' `) j( H
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);$ ^( C& T; {% m- E' z% `
  24. }5 A" P& H' B0 x* x$ T1 Z1 I9 U  E! r
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
2 W) p# Q6 g$ |6 c" E- S! ]7 t$ f
  1. setex 带生存时间的写入值& R' `/ r; d3 z/ h. {. G! P& c
  2. $redis->setex('key', 3600, 'value'); 3 Y: w* C, `; _1 e$ \) J
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1: x6 t0 {8 i4 c; d! I
  4. $redis->setnx('key', 'value');
    7 Q  p$ Q( {" f, [5 V8 U: |
  5. 返回已经删除key* Y% G: h8 ]: D4 s6 |
  6. $redis->delete('key1'); 成功返回1失败返回03 d8 d" p& j1 `- f1 n  r$ ]
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    8 N7 c, p7 M! B/ b' O9 ?" J( z
  8. 查询生存时间
    $ I8 T$ L. W1 r: i4 N0 Q8 B
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)) o$ I, f/ _6 t: Z$ O
  10. 同时给多个key赋值,同时设置key0和key1- G" ]" J% z- u9 y# @1 C
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));7 d9 H) t. Y; U$ U
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ! r3 J7 L, y% Y) n
  13. $redis->incr('key1');
    . h+ [. r3 H, X! k0 c0 M3 y
  14. $redis->incrBy('key1', 10);
    2 |: V+ E) K7 X! M5 r2 w4 E( z
  15. 减法跟加法一样& t# e4 M& }; k! E& f# Q* M
  16. $redis->decr("key1"); 减少14 {/ b' \, G* G0 o  F: _' I$ Z4 V. r
  17. $redis->decrBy("key1",5) 减少5
    & D. {3 W# g3 c. ]- D: z
  18. 8 {- H! P/ `9 s' ]5 q
  19. list相关操作,连表操作
    ' x) \7 A/ ^8 S. K: X
  20. lPush1 ]- J8 {7 b, h
  21. $redis->lPush("list", "888");9 l+ r0 I' {( N3 i
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数; z4 ?. F( M; P
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    ; M3 [! }2 @& X6 D
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素. _' _; D7 E* v" O) J# ~* M  W2 v
  25. lPushx/rPushx
    2 N7 d( e" p9 Z, A
  26. $redis->lPushx(key, value);( u- l& z2 G. e; }3 U
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加6 i2 A( b4 }' b5 @' D( U+ ]
  28. ' W: D1 A, D1 ^
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    ) F8 @: f. v0 A) ~/ c) V9 M
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key: z! H/ [, _# G* `& x  [$ j% A9 f
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1, o" s- d9 K3 P4 N8 i  _1 i
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序2 {* U" Z0 |- d2 F- f
  33. sadd s1 zhangsan" m- T4 ?% w0 ?* X8 R' M
  34. sadd s1 lisi' q8 R. Z* ^( O, B$ b9 a/ Z+ V
  35. sadd s1 wangwu( d" O2 Q1 e( ^  n( P% E
  36. sadd t1 yangxingyi# f: h- ]" M" q  \1 i8 I5 \
  37. sadd t1 lilei
    " d; p( J0 b5 V
  38. sadd t1 zhangsan
    & P3 u- A5 g( ]: x) Q
  39. smembers s1 s1的所有集合内容
    0 Q- Q% W5 F0 G
  40. sdiff s1 t1 s1有的,t1没有的,差集
    # k8 `, h+ k/ l7 A7 n3 _* v& H
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    5 k% \$ r! \/ Y! v
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的0 X3 O5 ~4 B. j
  43. spop抽奖场景,返回集合里面随机的数1 q  X; a" k( B8 \% s' `
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了' i: k# J1 r5 c$ x3 s
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    + {1 ]3 m) s3 e% ^( {( {
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的- G* U; u( s0 n
  47. 随机返回集合里面的一个元素,但不删除,重复中奖6 s, I! n' [# _2 t; }
  48. $i = $redis->srandmember('s1');echo $i;  @# N) l' _+ D1 ^. j
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    7 m9 h7 `* ?% @
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false9 f/ o$ H0 a: ?0 p" @' d9 w

  51. 0 W1 [: Y9 g3 G, m6 g! E/ ?
  52. zadd key 2 value 有序集合. N) h  i/ i% [! r7 |$ H
  53. zadd y1 1 zhangsan;
    * C& \, I7 J5 n
  54. zadd y1 3 lisi;
    , Q+ o% m2 @# X
  55. zadd y1 2 wangwu;8 n; s* ]  n( F6 F; r; L, J
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi0 t+ b+ U4 c) D4 j, C
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);( x  r  _' d, O9 d
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键: ]8 G2 k0 a2 ?% H4 \
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    7 n% O' q8 v% t5 Q3 \) a
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的3 e* Z- N+ K; L9 G; `3 }
  61. 无序就scard,有序就zcard,有z没有s
    $ H" n* P0 ^, K2 b6 L1 t: d- |
  62. sInterStore7 i# c1 Q+ G$ h0 }# N
  63. 求交集并将交集保存到output的集合
    / Q" t% a1 r/ P; R
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')+ b4 ?2 x: D! x4 W% N$ ~* @/ D

  65. , b$ l2 }+ ?3 \9 C1 M% x0 n
  66. Hash操作
    # _# B$ r7 Y7 \& Q
  67. hSet5 c5 A  k5 p+ i$ w
  68. $redis->hSet('h', 'key1', 'hello');7 A3 M  O% I. n5 c6 ]# U. }% Y" m
  69. 向名称为h的hash中添加元素key1—>hello: u8 y( y( Y" q9 h! u5 S. i
  70. # K7 p1 `2 |) m& e3 d
  71. hGet9 ~# x/ u7 W7 [. P
  72. $redis->hGet('h', 'key1');! D; S7 \) B6 ~
  73. 返回名称为h的hash中key1对应的value(hello)1 r- }3 A) j- ?" \

  74. ( x$ y0 t1 J# s+ w0 E) k- K
  75. hLen
      i' a8 R( z7 x6 Q- r
  76. $redis->hLen('h');
    / N$ e! c( J& r! [' k8 Y
  77. 返回名称为h的hash中元素个数/ X5 l% S, o4 Z5 s# C
  78. 3 W' j8 p) p9 m: |
  79. hDel# m5 e+ w( U- E5 d
  80. $redis->hDel('h', 'key1');
    0 ~! e5 p% y/ p3 A% x) o7 G3 s
  81. 删除名称为h的hash中键为key1的域
    0 a! I0 f' O1 B2 W6 \
  82. 7 f1 v, @* T- y0 B9 O9 R$ |! m
  83. hKeys$ k) _3 h& V" ~) J
  84. $redis->hKeys('h');: x9 O, @0 u5 \  u( n
  85. 返回名称为key的hash中所有键' S: F8 a: |( d* U: w+ A2 j

  86. 8 S3 z1 J, W! a  Y! t# N
  87. hVals' _' r: o4 e) g7 @' \+ s% r
  88. $redis->hVals('h')2 \8 Y2 E3 t5 ^4 ?
  89. 返回名称为h的hash中所有键对应的value) t0 K9 {. h( M  v2 r
  90. ' v2 L8 k: I  j6 O/ M7 Y
  91. hGetAll
    % M" ?* }* U7 U
  92. $redis->hGetAll('h');
    ) m4 S+ C; C; h9 t. w
  93. 返回名称为h的hash中所有的键(field)及其对应的value
      }$ ?9 {: @4 t( [* Y
  94. 1 S5 Z. d3 o0 p! s7 I, O0 e: c
  95. hExists% T% r: F7 r$ b" b  t
  96. $redis->hExists('h', 'a');
    8 n" j8 j8 k3 Z0 X# _( F. {
  97. 名称为h的hash中是否存在键名字为a的域
    0 z% f# R; G/ B- l5 U& f
  98. 6 k1 ?7 z% y3 S* y* c7 w3 u* Z' `! \$ p. I
  99. hIncrBy
    / X+ D( e7 \9 ~9 i' I1 B# P
  100. $redis->hIncrBy('h', 'x', 2);
    1 H3 w6 n1 u( @7 w
  101. 将名称为h的hash中x的value增加2
    ! \# W9 ]- [/ C  v

  102. 5 S! I0 y# ~4 o
  103. hMset( F# N  x3 l. b. q9 o
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    5 G5 M3 t7 P9 `: B6 X
  105. 向名称为key的hash中批量添加元素3 J7 a$ X3 ^" v5 M. @% w
  106. ) h( @4 v4 t7 ?/ O, ^% O
  107. hMGet; ], d3 d; {* F+ o
  108. $redis->hmGet('h', array('field1', 'field2'));
    5 U7 ~! X2 p- ]' g0 m, n6 n4 Z9 ~
  109. 返回名称为h的hash中field1,field2对应的value" k: O& |2 G$ n
  110. 2 {2 H1 m: V# [7 N6 g" C
  111. redis 操作相关. b6 _  _# i4 R- Y2 I/ `$ x1 ]
  112. flushDB, i$ N% j9 I' u
  113. 清空当前数据库( J# _6 |# t$ t/ t
  114.   ~- U& L  X& N- G# _+ Y  x
  115. flushAll$ G/ w" f) M3 d- V) A+ C
  116. 清空所有数据库9 Y, z" ?" h1 a/ g0 D2 A

  117. 0 Y  s5 a8 y1 n8 f" h0 o7 w
  118. randomKey% [3 k- a  C# p
  119. 随机返回key空间的一个key
    / F. I% \/ l: M0 D/ l% w9 r' a
  120. $key = $redis->randomKey();
    + j0 M% e' h; a& F' T' t

  121. ' G7 y. W) O9 i: e# p$ u7 |' f! W4 k
  122. select
    3 o# |# i4 |- y# I
  123. 选择一个数据库& ]; f7 Q7 j3 ~  v9 `
  124. move7 M  W: a+ [! _. @& f/ R  b% Z7 ~: n! B
  125. 转移一个key到另外一个数据库
    ; B" ?9 |. G/ b' ^4 |6 m
  126. $redis->select(0); // switch to DB 0
    % K% ~% _  g$ w
  127. $redis->set('x', '42'); // write 42 to x3 i& B3 @* ~/ b: B0 ~4 p, k( ~! m
  128. $redis->move('x', 1); // move to DB 1
    , o) o- W. N- q( R2 M8 i! V$ a
  129. $redis->select(1); // switch to DB 1( k/ U* L$ Z" r5 |& y/ V
  130. $redis->get('x'); // will return 42
    - U7 \" i4 H4 o/ Z* l/ k& ^
  131. ! u3 ?( |9 f2 B3 T$ J; t
  132. rename, renameKey
    & d( A* v' ?4 C3 I1 c; z: p8 f
  133. 给key重命名
    $ R7 L; r! `" o9 O. X: [
  134. $redis->set('x', '42');+ _/ h) |& q! n3 x: I- E- J3 r
  135. $redis->rename('x', 'y');9 w+ D( e- O7 y! C# U1 e# y
  136. $redis->get('y'); // → 42" E8 A) g0 u3 k+ Y# r2 k
  137. $redis->get('x'); // → `FALSE`
    + Y- ?3 Z) ^. h
  138. " m2 U, J- |3 b0 ?2 K* b2 K; n( {
  139. renameNx
    ; q4 \& I2 K  c1 q( k# C
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    ! P( V8 F/ x) g

  141. + ^3 b: J+ e  }* f5 a2 a
  142. setTimeout, expire/ N# B% k# p; e5 B
  143. 设定一个key的活动时间(s)
    + z! R7 `6 U$ |- p4 ~
  144. $redis->setTimeout('x', 3);  e) {" g' B) N! P" a, I
  145. * l0 ~$ P# E/ f/ K3 X8 M
  146. expireAt
    ! J- c( [4 P$ j: `9 H7 p0 h
  147. key存活到一个unix时间戳时间. ?  ~' `- m  Q6 w! c1 B
  148. $redis->expireAt('x', time() + 3);; [& H* [: P" s

  149. ( N3 j( E  @& q, D; K. f
  150. keys, getKeys
      q2 N* @2 J1 j( c- l  a( Y
  151. 返回满足给定pattern的所有key
    ( {' R+ p4 e8 x3 \3 Z# O  p
  152. $keyWithUserPrefix = $redis->keys('user*');; O  n# E/ h: E* k

  153. . ?6 _& o8 s, R( P" M! @; I& y
  154. dbSize7 X) a* o% j, r& ?/ \: y& H
  155. 查看现在数据库有多少key
    ) Y2 \; F( [. K$ \: Z. y7 C( d7 F
  156. $count = $redis->dbSize();. D: z! n) A/ {0 b

  157. . o/ G1 }  p% ^$ M0 R
  158. auth
    % Y6 S; Q8 F2 T9 q/ ~& _
  159. 密码认证
    1 I2 L2 M4 T1 m' [9 X
  160. $redis->auth('foobared');5 u; T8 g8 |" z" J1 H5 d& x
  161. 4 i1 ^  w/ A' l( v# F, ?
  162. bgrewriteaof
    ( [- O+ u$ W' B$ q. M+ c7 e
  163. 使用aof来进行数据库持久化
    + \' S, A$ q, h, R
  164. $redis->bgrewriteaof();7 f$ G: ~7 c  f: V. j
  165. ! F1 T! v  ?6 o8 t) s6 X
  166. slaveof- h7 m% [1 a$ ?# k+ v7 d+ `
  167. 选择从服务器% G/ d% X. V  v
  168. $redis->slaveof('10.0.1.7', 6379);1 c% `. h  j6 v# P8 h4 M

  169. % t# k( E2 y, t! e) @) F$ Q
  170. save
      l8 D& I; P/ E
  171. 将数据同步保存到磁盘
    6 X3 U* D; n( q7 b; A

  172. " y1 l4 `8 g( ?9 F; `& {8 ?
  173. bgsave6 v) X- N5 K& I! Y- ?
  174. 将数据异步保存到磁盘- r1 [- w" z5 g
  175. & v: @1 w2 V3 n) ~. W
  176. lastSave
    ; L$ I! B- f. W4 V3 Z
  177. 返回上次成功将数据保存到磁盘的Unix时戳0 U9 l6 h# a. L. o. e

  178. - ~! L" x5 {' T. g1 c' o. L/ n
  179. info! h$ n) m. L3 M: Z- p
  180. 返回redis的版本信息等详情
    % H* E# }+ l) e
  181. , I  ?) h! A* @* E+ ?- P  i
  182. Redis::__construct构造函数
    / b/ K6 P" M# A7 ?7 V1 ~% a
  183. $redis = new Redis();* q' o$ l7 h1 ?* H) I6 z
  184.   v+ G: E3 u/ L
  185. connect, open 链接redis服务
    . y, R4 ~+ ?& q+ A
  186. 参数
    2 X1 V0 S+ o. h* ~+ Z% w8 J6 o0 z
  187. host: string,服务地址/ F) J2 t, B5 A; t2 ]
  188. port: int,端口号
    & c' b3 F6 U1 s9 F/ h; T
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)0 E  N8 u6 s) e$ p9 ~! W
  190. 注: 在redis.conf中也有时间,默认为3005 n4 W0 B7 d4 t: G! F

  191. % }. w. J8 y; L: d- p
  192. pconnect, popen 不会主动关闭的链接8 {# I( S& s) \, r8 F' R5 x! h& Z
  193. 参考上面
    2 P% h3 j( w, ?* s$ g" ?, R% [

  194. 8 s" l0 V. f8 i9 U0 X# _; ]9 d& o
  195. setOption 设置redis模式
    1 U* I* T  l2 u) K+ M8 H. E0 \

  196. 2 P. t# Z4 p0 n
  197. getOption 查看redis设置的模式& ^+ z$ ^7 h/ H2 d
  198. # @7 c' v9 [, [$ ]2 b' a$ u1 N  o- K8 M
  199. ping 查看连接状态
    # E( g8 K) m- }
  200. / s2 w! x' J( f
  201. get 得到某个key的值(string值)) s! f3 v' [% `1 C
  202. 如果该key不存在,return false
    " C( y  }) k: W( j/ |! q4 m
  203. 9 ?+ h- E3 L/ }1 n" z
  204. set 写入key 和 value(string值): j4 m" i! n7 J& q
  205. 如果写入成功,return ture; k1 A6 f8 Q9 V+ I
  206. ( N& n# f3 X! B, s# A3 a; M
  207. setex 带生存时间的写入值4 ~2 O: E9 y' o6 z1 x
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.$ N2 q- M( ^1 }1 J1 b4 ]
  209. 5 T, M, q  ^( L' s3 R5 D+ N
  210. setnx 判断是否重复的,写入值  q8 |6 a, B: R& Y! q4 ]( z
  211. $redis->setnx('key', 'value');8 z) r$ P( @; `- L& G# s& l
  212. $redis->setnx('key', 'value');, L3 `; U- O- T* ?2 ~7 s2 m
  213. 3 C1 `  S$ L; v$ C
  214. delete  删除指定key的值5 W1 Z0 A& L# N0 z4 w" v3 a
  215. 返回已经删除key的个数(长整数)
    0 \6 u4 V! ?8 ]4 I* h# x
  216. $redis->delete('key1', 'key2');& U+ Z8 W: V: z3 l: r- ^( s7 u, O
  217. $redis->delete(array('key3', 'key4', 'key5'));" W+ r3 D+ Z! d+ Y3 O- p

  218. / Z  B# @+ F* H: v4 X6 [' z
  219. ttl
    ( f9 u/ z; H$ f: V
  220. 得到一个key的生存时间% ~( ^4 j- c' W+ h
  221. " R: h0 y$ h/ b
  222. persist: y  S0 Y1 Q- H6 b
  223. 移除生存时间到期的key
    6 W8 y2 Y2 A9 j/ d: [1 O
  224. 如果key到期 true 如果不到期 false
    ) a9 }3 L2 r! b: b% e

  225. 5 Q0 J9 j2 h2 o7 F2 d: N4 p
  226. mset (redis版本1.1以上才可以用)) U6 N3 \9 c8 m7 L+ C
  227. 同时给多个key赋值+ r5 C# X5 Y' n% Y9 P
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));& {! _" Q% h- X, Q
  229. 6 W0 J1 G5 P! w, l# A( `9 E" ^
  230. " T  U5 g6 J$ a1 |7 C" ~+ i
  231. 0 N; h8 v6 X& W7 G+ R1 d
  232. multi, exec, discard
    9 s: O' h0 y3 G, s+ k
  233. 进入或者退出事务模式
    ; T- R# K0 h  J& Z  i
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI; `6 I( |! P6 _! J+ v
  235. Redis::MULTI:将多个操作当成一个事务执行3 ?7 E2 P6 K5 Z5 @7 k% C+ E. h+ m
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证1 _) }; A) _, l, p* k6 p
  237. discard:删除一个事务# G% |& Q# [* C
  238. 返回值# w4 Q' n9 [/ I
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    % F) d# r& r& {% d
  240. ' A- D1 c2 x" ~& j
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    + W0 ^3 i/ z+ ]/ W5 j" C1 m. \
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false). f. a$ J5 x4 @$ w1 P
  243. unwatch  取消被这个程序监测的所有key) @3 {  @4 ?$ ]8 c
  244. 参数,一对key的列表
    9 D: _- ]3 [( O) q1 M7 x! e
  245. $redis->watch('x');- K8 ^, U' k% C2 b$ C* m
  246. + s( U8 H% }, M
  247. $ret = $redis->multi() ->incr('x') ->exec();
    4 G5 S7 P) U  N; a/ n0 V, P
  248. - h: w( ]" M- J  I! j- O
  249. / Y/ W/ O( c( R$ O
  250. subscribe *- P* C; [. U% |% j. v
  251. 方法回调。注意,该方法可能在未来里发生改变: E3 a+ o6 Y; n

  252. ! d# L# V3 M! q; |6 A- R9 i
  253. publish *& ]" i- `) p8 |& [! o
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变  A4 z7 ~/ F- V$ S, X% ~( C

  255. - Z4 @: Q$ E# U9 s! G  Y! z! c
  256. exists9 }( n1 i' V& o8 g4 Z" U
  257. 判断key是否存在。存在 true 不在 false6 S, ~, r; I) G+ e' N
  258. , R' b+ f9 |4 ~; c) w& W1 V
  259. incr, incrBy7 @& J2 O" E' X+ s$ N* f
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值' _) n4 u% f4 a
  261. $redis->incr('key1');3 e6 V1 Z. P! ^3 R) a: p
  262. $redis->incrBy('key1', 10);5 J, g4 v4 _7 X% N! G2 n
  263. 4 q/ z4 Y5 c5 S2 g
  264. decr, decrBy
    2 s- `: w* X# P" y8 b
  265. 做减法,使用方法同incr
    8 a! h" [9 h3 k$ M2 C
  266. 9 k, b+ c3 u9 f& z8 ]
  267. getMultiple
    $ _7 }/ Q' W) w
  268. 传参; A; e  n: k( |8 k8 Z
  269. 由key组成的数组
    0 f. Y8 N# ~* O' J" b# F
  270. 返回参数% N8 i) X* C. V& J+ J  ~3 W
  271. 如果key存在返回value,不存在返回false
    ( m) h) ?2 q, p* k3 U
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));! J* e- Z! _$ v4 m
  273. $redis->lRem('key1', 'A', 2);& W2 Y( E; M  J, \& p9 t
  274. $redis->lRange('key1', 0, -1);6 x* H( G* e# \; R0 M

  275. : `+ b3 ?5 f0 C# ?* e
  276. list相关操作
    ! \% F9 ]8 d7 X' G3 [- ]9 T
  277. lPush
    $ c3 q1 ?3 a; `4 Q' l% _4 o
  278. $redis->lPush(key, value);
    * s1 @9 `. L) ?) {
  279. 在名称为key的list左边(头)添加一个值为value的 元素1 J' B, \7 C6 w2 \0 ^" C) z7 T

  280. 3 H5 J1 ~) O) y" k3 L9 u, x8 Q
  281. rPush
    & X3 t7 y5 e7 K& r% k$ \0 _
  282. $redis->rPush(key, value);
    * F  b/ a+ M; p1 q
  283. 在名称为key的list右边(尾)添加一个值为value的 元素7 x6 I* U/ e+ Z2 s2 G
  284. 0 n: j! b9 U) M3 ]# z
  285. lPushx/rPushx1 C4 {( v1 s# O" A( v" V2 }
  286. $redis->lPushx(key, value);- M3 \, O$ l; x1 R4 d
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加" i: O' W9 }+ D; F7 Y
  288. ( n' B* h4 Z/ K; E8 W( q
  289. lPop/rPop8 A4 t' w, m' W* n- |
  290. $redis->lPop('key');
    , T( N3 _$ a  ~2 N5 i8 @( K9 e
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    9 [/ I9 t8 |0 o( M+ R) ~

  292. 5 F! X- U! ~: w% X- e% c) h; _
  293. blPop/brPop
    5 p# ~6 n: l; e$ ]& R
  294. $redis->blPop('key1', 'key2', 10);
    9 c9 c$ b1 j4 \: X, e
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作8 ~2 [1 K/ k, }* u( W2 t+ t! d

  296. 3 Z5 b& i% u0 V; m! @& m
  297. lSize
    4 b: `* I% q: `
  298. $redis->lSize('key');. L! p8 Z% J1 P9 d( z! p
  299. 返回名称为key的list有多少个元素
    : Z+ |- j8 j5 i# \9 ~/ F5 t& }: F4 Y

  300. ( Q* U5 a& B" M% T& _) O
  301. lIndex, lGet) v6 d, l7 K9 ]; K
  302. $redis->lGet('key', 0);
    ( i2 L( t  @3 n5 V% D
  303. 返回名称为key的list中index位置的元素3 ?( t4 ?9 e! v, Q9 H8 ~0 X

  304. 6 P5 @# t9 [6 @7 p) n; p
  305. lSet0 q- v8 g2 w; ^" d
  306. $redis->lSet('key', 0, 'X');8 Z4 o; E, w1 D1 S% m. c
  307. 给名称为key的list中index位置的元素赋值为value& ^1 i+ I9 Y( @1 n' A. g

  308. 0 g) l$ j" ^$ f: W+ O/ S
  309. lRange, lGetRange6 G' V% X% P3 r7 I/ ]
  310. $redis->lRange('key1', 0, -1);7 R: N- s6 m( i( r- j6 D/ L! y+ c
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)3 f# P: s8 F6 x/ Q: z/ a2 k. Y

  312. ; v5 c+ O6 E) _% [7 m
  313. lTrim, listTrim
    0 z& V% b, a' a2 L8 X: M
  314. $redis->lTrim('key', start, end);, c( m7 u9 T  F1 I+ M$ o  R
  315. 截取名称为key的list,保留start至end之间的元素
    2 a4 G- G( e. W% h# H% s

  316. ! l2 L% p% G% H: K4 I
  317. lRem, lRemove+ `5 p$ Y, _" D. B8 D- k' g2 i- ]
  318. $redis->lRem('key', 'A', 2);% R# G1 o9 h7 o+ h% G/ y0 j
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ) e) |( V# N" z+ h# j" m2 A2 T

  320. 7 J* K( A% s: E2 P
  321. lInsert$ f0 g3 {& s# L" k) z/ M1 J1 @
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    4 {: L% G! q& ]- x+ r4 A9 i3 d- Z3 i
  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 z5 }* I/ R  E; g) s
  324. $redis->lRange('key1', 0, -1);
    6 H- B% _( K4 }/ u, O5 q
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    1 K) _% s+ H% _* ?- g0 p
  326. $redis->lRange('key1', 0, -1);
    / e2 h+ Z+ K0 [- n7 j. C. J, g
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
      J, Q# r- j% S& _6 U6 E) N, H
  328. ( k  ^( Q2 c& m5 }( @6 d  J! P4 c
  329. rpoplpush
    $ w' S7 G1 Z8 @
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    ; T! o' e7 p  y( R8 e
  331. $redis->delete('x', 'y');$ a: L" N5 N- {8 O! f
  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'));
    3 f+ `" M5 z, f2 q$ V: k
  333. var_dump($redis->lRange('x', 0, -1));
      ~+ ?! }  d4 m/ b8 T) S% N
  334. var_dump($redis->lRange('y', 0, -1)); 7 b" ~' u/ X% h* [( j5 c/ W

  335. % A# ^2 |( Q( @8 M
  336. string(3) "abc"
    " D- |  y( ]4 _9 t1 [3 f' r( }
  337. array(1) { [0]=> string(3) "def" } ; A* }% L% ~! b& y' e( R: m5 S
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }9 y! S1 r3 E/ [7 D& ^$ y

  339. ' V# h2 B6 [7 u% P9 l  Y# `8 D% E
  340. SET操作相关4 ?& n- }8 U; y. u* f" `1 w, B/ D
  341. sAdd
    2 j, v3 o# |$ k$ x5 p! p/ z' {) c9 S
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    5 E$ d- o, F& t' a8 |
  343. $redis->sAdd(key , value);
    , O" a/ ?. ^8 P" J  w1 x) U, ~
  344. 1 B" H9 Z6 [5 K/ D2 S. J
  345. sRem, sRemove
    ' t3 h1 ?1 Q- a" \# w6 n
  346. 删除名称为key的set中的元素value* ]9 O( A" Q' @4 o* |7 S$ W2 j9 l
  347. $redis->sAdd('key1' , 'set1');3 s9 d2 ~3 y! j# X% L& {5 {* ]# H
  348. $redis->sAdd('key1' , 'set2');
    ! d% K8 D5 I& s8 l
  349. $redis->sAdd('key1' , 'set3');5 \& G' d1 |, s
  350. $redis->sRem('key1', 'set2');/ D' Q) h5 t! ]7 i

  351. 0 v3 i1 a$ x5 w+ B* y' b0 U
  352. sMove
    0 O, d5 X& H3 ~, V' H
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合' e, k2 {4 ^2 t# W" O
  354. $redis->sMove(seckey, dstkey, value);1 Q0 [# `- k% T0 e/ S5 _7 V

  355. 0 j7 M1 ]; M5 `0 Y3 a
  356. sIsMember, sContains, y1 s9 j* l. r$ l3 g+ T( R
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false2 x! L/ C4 q( v& n# z" ^' Y
  358. $redis->sIsMember(key, value);
    ' g# \* Q: o: N' s7 T1 x( Z
  359. 9 h) K; ~. U" |8 ]
  360. sCard, sSize
    - h4 j9 j8 Z+ P  o6 }6 w  U# |) K
  361. 返回名称为key的set的元素个数8 E6 S! o0 |6 V; L: V" B; J; t
  362. 2 Y1 n% d4 z! j: f0 u4 I; A% B$ J
  363. sPop
    2 I( Z8 R( w, ]# p2 @
  364. 随机返回并删除名称为key的set中一个元素
    ' B1 U& I7 Q0 H. o+ G

  365.   \* W" S0 q4 @
  366. sRandMember
    ' f0 ~) p+ h) E
  367. 随机返回名称为key的set中一个元素,不删除
    & r! V' a% V4 S- j4 P& o. D

  368. - A; R1 \0 |7 _2 v& p
  369. sInter
    ) Z% o, ^( l6 S" s4 }* I7 }6 o3 y
  370. 求交集
    2 A$ T0 e0 L$ }9 m+ g5 ]! N
  371. + p, M; y+ _' k, z4 X3 u  A
  372. sInterStore+ A& V, n8 }4 ]2 j9 F& B5 v
  373. 求交集并将交集保存到output的集合. R  L/ @  K* l: s: e( L
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')( O: g, S: p0 L$ |

  375. 0 l7 P: |) i  j  |" V( h
  376. sUnion5 X1 i- U) Z8 [# ?3 w
  377. 求并集
    ) Z8 D& a: l9 ?2 [8 z5 G( @
  378. $redis->sUnion('s0', 's1', 's2');
    3 w9 {$ P8 ?; e3 `( U: Q- q4 D* \
  379. s0,s1,s2 同时求并集
    % V( g# ?. X! x2 }( l

  380. 9 B& @+ r$ k' L+ T" ^
  381. sUnionStore
      c1 T# v6 `$ ?- f  U2 h
  382. 求并集并将并集保存到output的集合. s' p4 o" |5 w5 ]
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    3 K4 E' k  v( s' ?" p" d" Z
  384. ; Q3 Y; y& d% n1 G8 [
  385. sDiff
    ) U' h; P" E! \1 R1 V) l
  386. 求差集
    # c! a( l0 u1 @) G
  387. 8 y& S) |! W9 K7 e1 D; H! N
  388. sDiffStore- ]3 @/ ~: ?* x2 r7 j7 I2 F
  389. 求差集并将差集保存到output的集合$ n1 A3 Y2 w2 x* ]9 P! U

  390. - ^0 ]2 y. \" a
  391. sMembers, sGetMembers
    / b3 y" z! D: K: J( X
  392. 返回名称为key的set的所有元素
    ) V$ ^+ k$ q  v8 m3 ~
  393. ; w; S5 C* Q+ Y0 Y7 C4 O9 {
  394. sort
    8 [. U6 h, m3 B; H
  395. 排序,分页等% z$ Z3 l# X# W
  396. 参数9 s+ g. G1 e6 i, a& [
  397. 'by' => 'some_pattern_*',- y1 o5 U. ?# H* l. F
  398. 'limit' => array(0, 1),/ y" w7 I# i1 p9 \# j. q8 s- g
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    . b+ R6 ~) x3 M9 T9 q2 {
  400. 'sort' => 'asc' or 'desc',
    % q+ a9 E2 t* r+ ]- p, ]3 u1 q& i
  401. 'alpha' => TRUE,
    0 B1 q7 t  E, W
  402. 'store' => 'external-key'
    2 A% M) D$ j% I- W+ W. h& o
  403. 例子( g# e0 l, g& |) s0 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);# H2 R: e: G' E' B  l' D2 E1 V) V! O
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    3 r. P2 P: u$ w# s2 q4 y
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1" ?: v5 ?, O$ M$ l) m; z# ?4 V6 U
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)56 q, F3 F( }' Q

  408. $ E. y! d3 L" ~( R* A$ u
  409. string命令+ g4 t/ E! f/ O8 V$ n2 I+ U% t- Q
  410. getSet
    7 {# a. `# v4 t: U5 H
  411. 返回原来key中的值,并将value写入key
    $ `) D$ _- a! D" L9 d1 A5 j
  412. $redis->set('x', '42');5 i, w  \' T  T4 V
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'( k# z* T* y( {  x; G8 ~% w7 `
  414. $newValue = $redis->get('x')' // return 'lol'
    / x" A& D# L: J1 Z* q
  415. 6 t$ I* j& O7 s" c$ V
  416. append) D- ^0 I+ W1 E% J1 f$ k5 X+ x- b
  417. string,名称为key的string的值在后面加上value) T, H# F$ Z- ?6 [; W4 x
  418. $redis->set('key', 'value1');: p/ Y" a0 L; v
  419. $redis->append('key', 'value2');
    4 I/ r" F6 N4 W
  420. $redis->get('key');  F. q( r, T, F9 n! j

  421. % x4 `; H1 U$ l1 a/ p5 @
  422. getRange (方法不存在)7 J) z( b7 T9 u9 k& [# p3 B: x
  423. 返回名称为key的string中start至end之间的字符+ Z. N6 V% F5 @9 Y* l
  424. $redis->set('key', 'string value');; C; `" g: @, s2 P: |$ P  y, ]: o
  425. $redis->getRange('key', 0, 5);* ^3 ~  F' P3 v
  426. $redis->getRange('key', -5, -1);
    5 k. q, q9 F' _$ g4 w2 C

  427. 0 \. A8 G' s9 n3 s4 h
  428. setRange (方法不存在)4 V  K1 h5 r, E/ I6 o! R
  429. 改变key的string中start至end之间的字符为value
    & E  Q: {9 S8 ?* x# c6 o% R
  430. $redis->set('key', 'Hello world');! h) e9 K7 C6 q3 c
  431. $redis->setRange('key', 6, "redis");/ X, M. Q) R( l
  432. $redis->get('key');
    1 q2 N& O. k6 v! `5 K

  433. % Y0 O! S' m3 ]$ U* X
  434. strlen
    4 L2 \4 ^+ Z$ }1 n9 }" _9 ?
  435. 得到key的string的长度. u8 J( ?) c* U9 h" h+ Z- T9 N
  436. $redis->strlen('key');
    * {* [! ]! @. X: W0 K
  437. 3 c* L' [/ S: g. v$ ~
  438. getBit/setBit# o$ `6 C! Z2 R* b4 k
  439. 返回2进制信息7 l2 ~2 U7 {3 n, S% M( H

  440. 1 x8 f; i+ m/ q! |  I1 b
  441. zset(sorted set)操作相关
    . l* }2 v' \, r$ m- v5 L7 [
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。3 \* }1 R: v6 b/ _( m$ s4 F5 H: G; X
  443. $redis->zAdd('key', 1, 'val1');& {% Y. W% v* F) ]% M1 a- e; ^
  444. $redis->zAdd('key', 0, 'val0');& ~; n$ k6 ^( d( _9 h
  445. $redis->zAdd('key', 5, 'val5');. L2 i& F7 v+ K8 V8 t
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    / ?; X2 z2 ?2 o1 e+ [
  447. , m: o: n5 |  }6 X# y% b4 j
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素& r: b0 w5 o+ ~2 ^- \* |
  449. $redis->zAdd('key1', 0, 'val0');. M0 h% `5 H9 {- ]
  450. $redis->zAdd('key1', 2, 'val2');4 q8 v- ^% Q& V4 v# h4 G
  451. $redis->zAdd('key1', 10, 'val10');+ v& e/ `9 S% Q& Q
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);6 m1 a* V# S' b& V

  453. ' a* A* o: c( Y
  454. zDelete, zRem
    2 }" X& |3 D, p4 w$ ~7 u- q, k
  455. zRem(key, member) :删除名称为key的zset中的元素member& ]- ]/ X  n, z% Z  f! `- V
  456. $redis->zAdd('key', 0, 'val0');
    6 z# L" ?- z) k4 `, P" J
  457. $redis->zAdd('key', 2, 'val2');9 y- ]7 C  M8 d0 A7 c; d, E
  458. $redis->zAdd('key', 10, 'val10');
    * s, D* P: k/ \+ k2 y
  459. $redis->zDelete('key', 'val2');1 L& h- z1 f: r0 H# [9 N
  460. $redis->zRange('key', 0, -1); $ B1 ^7 ?4 v2 q
  461. ( a  ~/ d- T3 I0 O  _
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    9 e7 F! L5 d: z( [6 W, A
  463. $redis->zAdd('key', 0, 'val0');- n, ]9 o. J- x+ X7 P
  464. $redis->zAdd('key', 2, 'val2');3 u$ v9 T4 e# t$ g) \9 D( q7 z" M
  465. $redis->zAdd('key', 10, 'val10');
      A5 Q- o! h  a$ X1 r# c+ S% |0 ?
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);5 ?/ _- }1 \( R( _! W7 q

  467. 9 I- V) C" ?, v, D# J
  468. zRangeByScore, zRevRangeByScore
    ; j2 F$ S# c1 |) @3 t2 I
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));" ?* O. T( C5 ~
  470. 返回名称为key的zset中score >= star且score <= end的所有元素6 N+ W5 s8 w) F9 P
  471. * r- |# X3 m4 C  p
  472. zCount
    % r, O: e" C3 ~8 O. G' l8 |
  473. $redis->zCount(key, star, end);3 D" @! }+ K' k( p* d
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数1 P% h( y& B& q; c3 n% t* a! ]

  475. ! r+ f1 @3 \! A) {  L. l' N. x
  476. zRemRangeByScore, zDeleteRangeByScore& `% y9 j4 ], d% |& q# V; [. r6 x' |
  477. $redis->zRemRangeByScore('key', star, end);# \4 H9 ~. x5 h# @+ i$ Y  j1 \5 B
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数8 ]1 W. A4 a. `& X1 l* A
  479. 0 R+ \6 U( X' A0 U: q" |8 l8 R
  480. zSize, zCard
    - _, _0 m1 M" S5 E6 B
  481. 返回名称为key的zset的所有元素的个数
    - e- Y* M  A& e" t

  482. 0 |; ^8 e- C% z" [
  483. zScore
    4 {* Q" B2 w% J( T& p4 w9 |2 B4 b
  484. $redis->zScore(key, val2);
    , q/ X' M3 }, X7 H: N& d! w# S
  485. 返回名称为key的zset中元素val2的score5 N: d9 F( W- U$ T& R  E

  486. : \/ U) i+ k/ ]
  487. zRank, zRevRank
    0 ~! y. B8 u# t* ]+ |
  488. $redis->zRevRank(key, val);
    & K7 X& p) c6 b( b
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    & Q2 v* y! S2 N0 H) W5 @
  490. : G( \+ {0 Q) B1 f% \
  491. zIncrBy' Y" U8 ]& B8 T4 M: o: S! @
  492. $redis->zIncrBy('key', increment, 'member');4 g( N9 o, ?7 m, P
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment. U% C# j4 z/ {1 e" ~% M) o& o
  494. , ?  m" i9 g& ]7 B' s
  495. zUnion/zInter( V0 l2 F" r  Q% K
  496. 参数2 I# y' [% h2 u; C1 j6 f
  497. keyOutput' z/ ^5 d  L9 w
  498. arrayZSetKeys
    9 z+ g6 ^1 g; w* G! m% t6 s
  499. arrayWeights: o# e4 b7 w$ |% A) D
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.) E0 x$ v+ A0 H' ^6 T6 J
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    + R; _5 g) |% s2 b
复制代码
$ _% I* a! o% s; ^' n

0 V# ]7 `+ R0 i: Z7 O' X0 ?& I' ~5 y" |
" }! [5 b0 J5 v! @7 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 9 c0 y# Q$ F+ x( h5 \; S6 N
  2. //连接redis服务器
    ' U4 v4 t8 p2 E$ H! \
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-22 07:00 , Processed in 0.068354 second(s), 19 queries .

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