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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    1 k" I" M0 c) E/ d8 A3 C7 D- Z
  2. $redis = new Redis();  
    0 Z% q1 T  k0 q# V
  3. $redis->connect('127.0.0.1', 6379);//serverip port( x% B$ q, I" o$ p5 y
  4. $redis->auth('mypassword');//my redis password
    ( Z; ^$ ^* J. C- b- Q3 D
  5. $redis ->set( "test" , "Hello World");  / m$ H7 f: L$ b( E5 C4 j) L7 @7 `
  6. echo $redis ->get( "test");) i+ ?5 B% ^6 r1 X& a; a
复制代码
php操作redis函数封装
  1. /**
    3 g7 W! k& A8 K. M  ?
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数( U0 N4 z6 k2 k% E9 ^9 P
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi* [+ e% {, w4 C+ D
  4. */
      n4 K/ [) @! {8 g1 Z. Q3 ]
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    , w( r9 a; v) m" |9 B! `# V
  6.     if(!$key||!$value) return false;
    5 }" r% g7 k  I; Q
  7.     $host = $host?$host:getenv('REDIS_HOST');/ G. j, w) f% E8 K7 R  [
  8.     $port = $port?$port:getenv('REDIS_PORT');  F) q! ?+ P: D; ^7 R$ w
  9.     $redis = new Redis();
    # O6 @  g* j2 q
  10.     $redis->connect($host, $port);
    6 c; E; e% N+ `* G1 K
  11.     $value = is_array($value)?json_encode($value):$value;
    5 C/ b8 f! l* V1 K: H
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);' [# x! e8 _9 ^6 w9 @1 M
  13. }
    ; U0 g5 N, W& y$ P
  14. /**
    % u/ B) V1 b* |0 d* H
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi/ v) j; {9 b8 M+ u% t- f
  16. */9 g" v" s. i1 x) r5 Z4 K
  17. function RedisGet($key,$host='',$port=''){
    " x. @5 ?6 c. W4 g! c/ L3 s
  18.     $redis = new Redis();
    6 z0 f! T' M2 q8 d; g0 K$ S; }
  19.     $host = $host?$host:getenv('REDIS_HOST');. ^" i4 r9 w! w% G$ |# s
  20.     $port = $port?$port:getenv('REDIS_PORT');8 @! E* r' s- R) p" ^% R1 }9 e, j
  21.     $redis->connect($host, $port);
    3 \2 A' C0 h# M/ p/ j! V
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);( x+ ?! ?5 c/ ^" M; a; x8 {
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);6 K- e8 t. Z% |1 ]8 R, [) K
  24. }
    & Z5 G" F) I2 h3 O2 b4 W0 [
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
# c0 l# t( t3 z- d$ Q* j
  1. setex 带生存时间的写入值: F- g; z# j2 E+ k' C
  2. $redis->setex('key', 3600, 'value'); 4 I; n1 t, P' N0 d9 H0 p1 M* _& [: \
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回16 A3 Z) N1 b$ }% A7 O
  4. $redis->setnx('key', 'value');
    & R: @8 u" _0 s/ O: e- R
  5. 返回已经删除key
      ?; n/ o, g- |. m' Q1 j$ g2 M
  6. $redis->delete('key1'); 成功返回1失败返回0" A% x2 f1 o0 @* C0 |9 _7 Z
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    5 @: R% j. T! V3 j2 D% O* }; B9 n
  8. 查询生存时间
    ) ], y* M2 T( q3 s: ?
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    ; \9 s( x% r4 l+ d
  10. 同时给多个key赋值,同时设置key0和key1
    0 W, ~" u0 C9 M$ H7 `& b
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));: K+ `4 S2 i5 ]2 Q' O/ e
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值- j" x, z& n* {! T! `  c6 x
  13. $redis->incr('key1');" U! C5 t5 d3 T8 Y9 b
  14. $redis->incrBy('key1', 10);* A. n: O& I) c: H! r( ^- _
  15. 减法跟加法一样; z/ n6 O; i% A
  16. $redis->decr("key1"); 减少1
    # `/ i) U0 B' _- X+ O% }
  17. $redis->decrBy("key1",5) 减少5/ b* I8 d, u- v# W
  18. + o, ~/ M% c6 f. \
  19. list相关操作,连表操作5 `4 w# A3 D. R+ I; P  ~, ?
  20. lPush
    3 c  r$ ]2 Q& ]8 v( m! ^
  21. $redis->lPush("list", "888");
    9 U/ w7 I- j9 R6 B
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    # \3 y- V' V6 L* O" C8 q) O
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式; q) [( y5 O0 l
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    8 `; K2 a/ @1 Z. f
  25. lPushx/rPushx
    8 ^% R  I: F; S0 E( N
  26. $redis->lPushx(key, value);
    & f4 }- v( p& u5 n! _
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    , M8 H% v% d% E) Z2 O# |/ M
  28. " b7 ^3 Y' y  F0 [( n
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key  l  p% a' N# g) Q* }1 H
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    4 {; B% [( F4 |8 j( U( c
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回12 X+ |: H! b6 i- L6 ^
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序1 G% M+ m, [4 ], B3 i
  33. sadd s1 zhangsan
    / [; m2 G$ ]/ P3 S
  34. sadd s1 lisi9 N% h6 E  Q  b
  35. sadd s1 wangwu% M* j" f9 q# |! u2 A
  36. sadd t1 yangxingyi' x6 M6 f) J/ |8 c% _
  37. sadd t1 lilei
    2 Z$ P) ?% l! b: t, P# N0 t' N6 D: B, y
  38. sadd t1 zhangsan
    ) E3 [( l2 j  |( J7 S
  39. smembers s1 s1的所有集合内容" b! [/ ?# }( N+ G
  40. sdiff s1 t1 s1有的,t1没有的,差集
    % `' p+ L8 d( \
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式" I1 f! n8 F$ E7 d1 B. g! z  }
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    " J; J& E, U( N! O
  43. spop抽奖场景,返回集合里面随机的数/ r0 f# m1 s+ y% O4 o( ?+ f3 E
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了" v7 y# F. p. L3 \  k
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数6 g+ Z: a2 Z" X" X8 g; L4 u4 _
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的0 f1 E; L( t6 M0 K5 }! [
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    4 \  v# D+ E9 A! M, w
  48. $i = $redis->srandmember('s1');echo $i;
    ; K  V: P  n" A7 ^' r" @" a
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    5 U' j/ [  ~9 }  u4 S
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    $ C- `6 S- Y! j: G  K

  51. ) s8 N6 ?2 L" m
  52. zadd key 2 value 有序集合
    & u* q6 \+ I! r+ P. g, y
  53. zadd y1 1 zhangsan;7 X4 ~/ j" r  E- o
  54. zadd y1 3 lisi;
    0 R% E* b6 f0 P: v
  55. zadd y1 2 wangwu;0 [" E. l! l/ K9 q) T+ X* Q
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    * ^1 l6 F3 O8 W
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);. B: ?2 {5 }3 W, [' t$ o" e
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键% F& D$ ?4 ]* A8 A/ E
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    ' P* X% F) n* P9 x9 X8 i2 c2 E
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的& u8 Y6 G) ^5 o' K; ?3 V% f9 j
  61. 无序就scard,有序就zcard,有z没有s( n+ P& s: l+ a* \
  62. sInterStore4 C8 D$ I( K% m
  63. 求交集并将交集保存到output的集合
    7 j% D! S- j& a% U+ d
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')" u/ L+ M& \& B
  65. / \; O  e: w! `  C8 w" `
  66. Hash操作
    7 `3 K! ?0 o1 Q* a0 ?( T4 h5 t, J+ A
  67. hSet  b" n7 U- ?2 L; [+ ?7 \% l" p6 \
  68. $redis->hSet('h', 'key1', 'hello');
    5 k1 `1 l) A( L, t
  69. 向名称为h的hash中添加元素key1—>hello
    0 o; u0 P5 `; @( e  J9 j$ y

  70.   I6 v& J. u2 R: |; j7 P) D3 E& Q6 A- l
  71. hGet
    % H7 Y1 a7 {' h! V! w$ ~4 Z. L
  72. $redis->hGet('h', 'key1');
    % }6 T0 w' f& j5 L% z6 M
  73. 返回名称为h的hash中key1对应的value(hello)
    ; [0 b( q" ~4 d  O' ~5 @

  74. 0 }" Q( z5 k5 }& x' ~' i' I- b# ~# h
  75. hLen
    % V+ |/ e$ z# s' f3 S
  76. $redis->hLen('h');4 @+ p$ B. U; B  S8 f0 g
  77. 返回名称为h的hash中元素个数" @0 _0 x, v6 u8 X  e' j' n
  78. ' R( P9 W& Y, P; y) }
  79. hDel$ P! K, f, t7 i3 k! B+ c
  80. $redis->hDel('h', 'key1');( ^, v/ A5 ]9 A; D9 ^
  81. 删除名称为h的hash中键为key1的域: |* o2 b' x9 J, _1 Y) X$ \" B

  82. $ e  u/ H) i; H) F) z% t  m- J
  83. hKeys+ S  o5 z0 l) g3 [8 ]4 L3 q
  84. $redis->hKeys('h');
    ; C9 G* t+ j  m# B" r. s& q9 E
  85. 返回名称为key的hash中所有键1 {' g+ _) X$ w0 ~! H
  86. $ J% [5 b/ {: T! _& O  r0 D
  87. hVals
    ( t4 ]" g$ c: C) \2 d% Q
  88. $redis->hVals('h'): ]$ h3 z3 B4 h) M, g" e$ a
  89. 返回名称为h的hash中所有键对应的value) a3 W: G% V+ @/ u3 r  u4 s
  90. 3 s% C3 g0 L! k+ \' C: ]/ J
  91. hGetAll
    ( F% B* ?" g3 C
  92. $redis->hGetAll('h');
    8 x1 v: B$ i2 U4 }( r3 o8 \
  93. 返回名称为h的hash中所有的键(field)及其对应的value% o& i1 t  G& T8 d3 G

  94. " ]& h$ _+ S; H$ M7 W! |! q" V
  95. hExists
    . C( |  Z: C$ t5 i: L' d  b8 k% F4 E- t
  96. $redis->hExists('h', 'a');
    ) u* Q+ `! s3 q& a& H- ]+ q
  97. 名称为h的hash中是否存在键名字为a的域3 k/ o# i5 \+ A! \5 s: p+ q4 e; U
  98. $ r, h, Y0 d9 j' w( j
  99. hIncrBy
    & T; k' k1 K6 m
  100. $redis->hIncrBy('h', 'x', 2);! e( j* e, m$ ?% _1 S$ j/ Y
  101. 将名称为h的hash中x的value增加24 E0 c. H; t5 m. h
  102. 7 k5 ^1 h; P: ~- [% ]  U) L
  103. hMset6 j8 n3 B) `7 P% r, E! `
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    4 C3 U% k% N2 i0 v4 R) K4 q" {
  105. 向名称为key的hash中批量添加元素* n# T# a4 w/ r2 N  Q

  106. * j9 \9 V: o7 ?% b! `
  107. hMGet; u( g4 C* {& P7 O* @" v
  108. $redis->hmGet('h', array('field1', 'field2'));
    6 ^( B- K& e+ I& D# s
  109. 返回名称为h的hash中field1,field2对应的value" G/ R* N  ~% X
  110. ! W; r+ L; u) i! h( I7 w* r" B
  111. redis 操作相关
    ( Q1 T5 f! i: d6 s2 ^5 Z  j# B# _
  112. flushDB
    , K& z3 V+ n* I/ T
  113. 清空当前数据库; }4 v6 t4 l& ~& O/ g, s
  114. . l" `' S7 {' @4 J' @' W
  115. flushAll
    ! H+ F/ s" ~( D- S! C4 w" n
  116. 清空所有数据库# K9 E6 b5 x" q# [' L( |

  117. ( J) G* s  I7 u
  118. randomKey
    9 R* h) A( z: k
  119. 随机返回key空间的一个key0 i. A+ P; p/ A0 a% A
  120. $key = $redis->randomKey();
    0 V, f: k( J8 l! H
  121. 4 w3 S3 I$ `4 u. e+ T: Y
  122. select
    + R- ?; J5 ?: H7 W+ y! ^
  123. 选择一个数据库& S+ h& z, L1 G4 G
  124. move$ F/ U* Z7 b* j2 a6 C" T
  125. 转移一个key到另外一个数据库
    / c. t- W$ Y2 }. u
  126. $redis->select(0); // switch to DB 0  A8 X; a( Y6 ~% G/ o
  127. $redis->set('x', '42'); // write 42 to x5 b. W7 i9 Y4 u& M
  128. $redis->move('x', 1); // move to DB 1& _+ {2 h3 t* t" k
  129. $redis->select(1); // switch to DB 1
    4 n7 g$ d; Q2 ?
  130. $redis->get('x'); // will return 422 M4 r' g3 m) @' b3 B3 d
  131.   h- n6 l7 m4 v
  132. rename, renameKey! S1 [1 M3 |/ a3 i$ V+ f
  133. 给key重命名
    3 W; a: J' j+ @+ v% b5 n8 s
  134. $redis->set('x', '42');7 _# s/ ~3 ]' Q, ~
  135. $redis->rename('x', 'y');' j# H" _  W& N( n$ E* x" u) w
  136. $redis->get('y'); // → 42& `, W. Y$ j6 C, G
  137. $redis->get('x'); // → `FALSE`0 d; r( y+ e- \3 O% t

  138. ) n! a& d; G$ ~1 R$ ^/ a9 `7 P
  139. renameNx0 Q+ K6 [7 j. l2 ^- v# X3 @- f, D# q+ D
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    6 K. ]% P9 m. V# G4 u
  141. 8 a6 t) W; F6 y0 F, |! G6 C
  142. setTimeout, expire
    ' @0 t, N1 y( f& Z6 \
  143. 设定一个key的活动时间(s)8 [! L/ Q: B& F6 q6 O2 T+ J! b5 \
  144. $redis->setTimeout('x', 3);
    2 G. ]1 p8 o& M) t1 E: a
  145. 5 T4 h; x7 t, d+ s
  146. expireAt6 h! H$ X: K7 k3 e4 v
  147. key存活到一个unix时间戳时间) G2 [/ ]7 B1 E+ F/ I2 o8 ~% L
  148. $redis->expireAt('x', time() + 3);7 x/ H# l' v$ E; ^& z0 K& P
  149. ' V. _5 ~" e7 D2 W. L) c
  150. keys, getKeys
    : |% S  g" H! f9 s4 ]4 Z' p
  151. 返回满足给定pattern的所有key
    0 A2 {# Z! S! v, }% q
  152. $keyWithUserPrefix = $redis->keys('user*');
    ) J) v* k1 b1 l

  153. * ~3 z7 K; _+ z6 q, c
  154. dbSize
    " |/ y4 R4 m* ^/ \
  155. 查看现在数据库有多少key; o1 M) j! U' l* |
  156. $count = $redis->dbSize();
    0 \1 [: V8 W  U6 W
  157. . A( L8 j! F$ t" L! ^" |' N
  158. auth6 w; p+ Z5 [9 [5 V
  159. 密码认证
    9 ]" k, Q( X. n5 ~8 E* u- u
  160. $redis->auth('foobared');
    . L0 ~) M, d1 }7 p$ M+ h+ m

  161.   q7 M( M/ ]9 H& m; F! \
  162. bgrewriteaof8 h) U$ t5 Q5 h: E  N3 g
  163. 使用aof来进行数据库持久化
    . d8 G! x% V, F' a
  164. $redis->bgrewriteaof();; l" b8 P6 F, m! W2 m. c/ J  x
  165. ' o: Q" p) R; B+ t( `  w
  166. slaveof
    9 P6 T: M% `2 B% M5 I/ l
  167. 选择从服务器
    7 }* q8 z% E6 }( W. O  `
  168. $redis->slaveof('10.0.1.7', 6379);( O1 g# t. ]# j0 S7 N3 [) l% v2 @
  169. 2 p+ z/ N6 P7 m8 g% R* a: C. V
  170. save3 e3 {0 [2 W( d& q1 ~# }( g
  171. 将数据同步保存到磁盘
    7 p6 C6 w' ~; Q4 o  F

  172. / X" n9 X9 f: Q9 l- H" @& ]7 z
  173. bgsave
    & T3 Y& U9 m" o7 A. W1 u5 [
  174. 将数据异步保存到磁盘9 u. a; \% t( Z$ z+ @; [% t  o
  175. 5 I1 N- ]. y/ {6 j
  176. lastSave
    8 ~6 J+ Y- x4 Y3 Q' I; X% L
  177. 返回上次成功将数据保存到磁盘的Unix时戳2 Q$ i- L+ |6 c/ B, N
  178. 3 {9 @4 Z0 Y% d4 r5 q! r% W4 k' x
  179. info
    1 N7 t" l0 \0 G: k
  180. 返回redis的版本信息等详情
    * x' t; l+ Y2 n, t
  181. ) @& W2 d6 m& s( \7 v+ x
  182. Redis::__construct构造函数
    ; s: V$ x1 C4 D6 t9 N" l
  183. $redis = new Redis();
    7 j$ i( n4 L; U1 [

  184. + k* O8 L6 M9 W4 W4 Z1 T# r
  185. connect, open 链接redis服务
    9 t) C" ]) ?1 I2 J; b# Q
  186. 参数8 R# O: z- w9 |9 i$ q8 Z
  187. host: string,服务地址
    8 Y* b6 L0 X8 V9 O
  188. port: int,端口号
    $ p* b6 w8 M7 w' s. P
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)/ L$ S# C' I* t  Z) F
  190. 注: 在redis.conf中也有时间,默认为300* S5 s6 f5 u) L; `2 U7 n
  191. 1 `* ^7 U, L* S
  192. pconnect, popen 不会主动关闭的链接: g/ V! n6 A, e
  193. 参考上面
    $ @& O/ |( T! x. b& T! r

  194. ) a, y# y$ N1 N2 b" |; V8 l
  195. setOption 设置redis模式9 R: C" I$ L6 b
  196. ! \/ y3 J6 Y( X* y2 H
  197. getOption 查看redis设置的模式
    " C. {) Y% `4 t+ n5 p
  198. 5 p8 N+ M- F& J$ O9 U( ~
  199. ping 查看连接状态6 l. n, e' I; @, t$ {

  200. 6 }1 ~! N; p5 a# s' v
  201. get 得到某个key的值(string值)
    ! d" r: Y3 q2 R. a# a+ G$ n
  202. 如果该key不存在,return false
    / B% z9 O# Q3 S3 ~6 K
  203.   \6 P4 ?2 G2 t) A9 _3 Z+ J
  204. set 写入key 和 value(string值)
    8 s; R' O0 ]7 |( ^" K4 r
  205. 如果写入成功,return ture- Z: v) g/ M: r4 J1 C. ?, n
  206. ( t8 ^- U$ a" Z; ]- @. h1 f
  207. setex 带生存时间的写入值
    5 a+ e, R0 ?' ]% e
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.3 A# j9 O4 C& b8 N) Q$ o+ G

  209. ) p0 V% K. }5 A5 N; F, n
  210. setnx 判断是否重复的,写入值& ~) X7 n: g4 c+ U
  211. $redis->setnx('key', 'value');
    & V9 o$ ^$ Y4 J% o8 ^; {
  212. $redis->setnx('key', 'value');
    ' x2 x) t) a& W; {, y5 x4 p

  213. % B' h- }+ i: \% M2 I
  214. delete  删除指定key的值
      T; U& U! l9 s6 V% h$ B
  215. 返回已经删除key的个数(长整数)2 z6 v$ Q. p/ {$ [3 R
  216. $redis->delete('key1', 'key2');. s1 l6 _) A: Y  z2 _1 }
  217. $redis->delete(array('key3', 'key4', 'key5'));
    0 F- F6 l# n0 i% B5 I
  218. " V# C2 z+ G7 h: o/ K# T
  219. ttl
    9 c4 t. v6 V9 d
  220. 得到一个key的生存时间
    , [2 l( |7 X; c5 P

  221. ( i9 y' I3 @2 z$ h6 \- X
  222. persist
      p$ g! c$ b* y  G. [; ?# Z6 m
  223. 移除生存时间到期的key7 Z5 A$ Q6 F& M2 ^" V$ ?
  224. 如果key到期 true 如果不到期 false# H5 q  K; Q6 I+ N
  225. 9 ~) f  S! G3 B* m' z1 n' w
  226. mset (redis版本1.1以上才可以用)9 Z, W" K7 T# t  e8 Z& j' l7 @$ Z
  227. 同时给多个key赋值! ^8 C/ Q5 L0 q( \
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    8 a8 P3 m1 `7 ~# o- [

  229. 0 ~- ~4 T, z$ |0 E0 u) ?  Z

  230. ) t5 O7 w( i7 \) Q* h+ `2 |

  231. - H$ x4 \) j! c1 j( D  n0 C5 @
  232. multi, exec, discard
    / e/ o: I& N" M2 Q0 S% l6 X
  233. 进入或者退出事务模式
    % H: y, r) R' Y
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    6 M+ w: O# e5 @: o
  235. Redis::MULTI:将多个操作当成一个事务执行, }, `+ E, f4 M  m
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证$ A4 S  D* J8 p
  237. discard:删除一个事务* x5 u8 e, G% s1 J  y$ f1 \0 W
  238. 返回值$ K" ?  s) s* C, n. W$ |( G0 p& \+ e
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。6 J; J7 N& N& K' d- y$ ~
  240. , l$ i$ }$ W7 E6 B: ?7 p
  241. watch, unwatch (代码测试后,不能达到所说的效果)3 |0 t. v/ P, {* y. f8 b! x
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)% w- [5 F( D. v% ]
  243. unwatch  取消被这个程序监测的所有key! u" M8 v" B" z# X) d* Q0 K( Y: h& u
  244. 参数,一对key的列表% y! b/ S; r) `1 K! Y% D" {
  245. $redis->watch('x');
    8 |' {6 u0 S" ]; b6 m1 E  S5 z! `
  246. 9 ]0 i# C( Z. ?3 D
  247. $ret = $redis->multi() ->incr('x') ->exec();, V, S( c$ h1 d
  248. 9 i! v9 N7 w2 _" O" C3 k3 V

  249. ' s' s6 f6 R3 ^1 ?1 ~4 ?9 ~8 n
  250. subscribe *: ~- u- H( Q" j+ h
  251. 方法回调。注意,该方法可能在未来里发生改变+ ~0 Z5 P& c; ~6 K2 v" H

  252. , y6 |% z, A6 V/ |+ \
  253. publish *% R& o. g6 M/ Q8 {; C
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    ) [  ~) N) N+ w2 P

  255. & _) \$ C9 S; W' H
  256. exists
    " K+ ?9 D4 q! d
  257. 判断key是否存在。存在 true 不在 false
    * _4 i! K* O! p: }
  258. 6 ^6 X! R: `& ]# t% S: b' v7 U
  259. incr, incrBy
    / o( A0 Y3 }; e
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    5 c5 P; W* ]3 X" v  b+ U' R3 \
  261. $redis->incr('key1');. [3 u/ J: g: L. D6 [6 n
  262. $redis->incrBy('key1', 10);& b1 f: L% \' B! D

  263. " B/ `# D1 F* f& K- J
  264. decr, decrBy. s$ c0 _( ^! M6 s# Y+ o3 K
  265. 做减法,使用方法同incr
    2 M- ^9 f* J9 ]1 `5 i3 E- b1 g

  266. ! I& @7 P9 O- r3 L4 ?: Q* p
  267. getMultiple
    - l+ @( b* t0 w3 {5 V9 T" W: V2 n
  268. 传参1 T2 E  f. [- ^! E, F) ]1 x( U. z
  269. 由key组成的数组5 Z% V- u& l  d
  270. 返回参数
    8 Z/ c4 q2 t' ]) g/ K
  271. 如果key存在返回value,不存在返回false
    ( a+ k- X: ?% ]% @& n
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    . f6 }7 w. q# [" g
  273. $redis->lRem('key1', 'A', 2);
    # o$ n: Q4 T7 D" u
  274. $redis->lRange('key1', 0, -1);
      a! p& r# n2 x$ \

  275. $ E( _3 i7 C; u3 Z9 V
  276. list相关操作, V* M9 L7 Y# d2 `( [6 j
  277. lPush
    . Q3 [' v! y9 m+ L. @
  278. $redis->lPush(key, value);( ^! I1 ?' T, V
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    5 I. i& G$ H3 _+ h5 l

  280.   B* P/ O1 v9 _" R5 }
  281. rPush
    ; U* n# g& H, j* p; h
  282. $redis->rPush(key, value);( L  R2 [+ Y9 i( W8 W' W: U0 x, ]
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    7 Q- E* r( J" p3 o( I, m

  284. / j3 Y2 P# g0 X; l
  285. lPushx/rPushx" f/ }) ?: z0 e3 [- }
  286. $redis->lPushx(key, value);
    * [' H' P9 ^! ~7 V0 @1 f" ^" i
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ( p& `! z2 G8 d" }/ j3 E) y

  288. 6 {. v; z- M, i' I4 J
  289. lPop/rPop1 A0 H9 W0 ^* ]/ |, B5 m/ |
  290. $redis->lPop('key');
    1 a" N( ?8 p, h& D. c+ D
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    * j7 A; s  T/ [

  292. # A( }1 O/ g1 N
  293. blPop/brPop
    5 |' D( X* M$ ^  ?! @  \
  294. $redis->blPop('key1', 'key2', 10);
    . w: O0 ]2 N# ]
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作; G. Y3 T: Q9 t) v& q

  296. 8 }! [2 _8 n$ C' l& }
  297. lSize
    ; v+ V* _0 r3 r+ _0 e
  298. $redis->lSize('key');
    + n% w# y# F# @, `# e. g% ~: {
  299. 返回名称为key的list有多少个元素. B( w9 q7 f. }1 y- S

  300. ) j: M% {2 H9 U" J8 _1 X
  301. lIndex, lGet/ z) n, R# a7 H0 S- c8 \% ^
  302. $redis->lGet('key', 0);- |! }) `) r/ w  O3 c
  303. 返回名称为key的list中index位置的元素/ u  _4 o/ ~8 `$ k. B" T
  304. ; O2 C3 _$ V  i# u& y0 a
  305. lSet
    4 i% o& {0 x3 Y, W
  306. $redis->lSet('key', 0, 'X');
    3 F" c' \/ s; O: A
  307. 给名称为key的list中index位置的元素赋值为value
    - G3 k) p3 n$ [6 F1 m! o: a
  308. 1 w8 U- A) _. l: @8 v
  309. lRange, lGetRange$ F( v4 B3 ~- X
  310. $redis->lRange('key1', 0, -1);
    ! e* c- w3 }! n" D
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)& U. o& V" i+ N5 s) W

  312. 1 i, I7 \% ?8 J" a- V4 x
  313. lTrim, listTrim& B- G/ ]# }1 e  b6 B8 r& M3 ~
  314. $redis->lTrim('key', start, end);* ^  h# W: d' T8 X0 I6 l1 _
  315. 截取名称为key的list,保留start至end之间的元素% i3 ]9 M* {5 d5 [. U: j

  316. ! ~1 f# |7 G9 r
  317. lRem, lRemove
    ' h6 {4 I% ~% A4 T8 U+ l
  318. $redis->lRem('key', 'A', 2);+ i1 K# P0 Y1 C3 K- s
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素5 \. |- c% [* P) e- M

  320.   S  u, j, H2 e0 a
  321. lInsert' j  p1 K5 {2 a7 o( M) u+ M
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    # V/ N0 o, Y% C7 [9 a
  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');( J+ w7 n' F: m  \
  324. $redis->lRange('key1', 0, -1);
    / T2 C7 H8 R  O, D6 V  u# C
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    ; v# d5 F. w" Z1 a" U
  326. $redis->lRange('key1', 0, -1);* s. r9 d' L. g) w
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    5 o# M* K/ Z5 _6 X: Y2 Q) Z) x

  328. ( ~) T+ w0 ^  O' y9 n' L5 w3 ]3 o
  329. rpoplpush7 ?$ a5 v& t  X8 w' j# n% W
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部. \& m0 b$ U, `# c, c% z1 U
  331. $redis->delete('x', 'y');, g1 w$ b8 k# _  p8 d! g2 ^
  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'));
    ) W0 L! ]3 c' f& o6 u. Q% j! ?
  333. var_dump($redis->lRange('x', 0, -1));
    + }# Z. R4 Z- ~
  334. var_dump($redis->lRange('y', 0, -1)); / w/ w. E2 i! n& ^2 r% ?, O# B) y, J

  335. $ {4 z0 `  J6 L  H& I. R" _5 Y
  336. string(3) "abc"
    . `( V) u. {3 ]) K# n3 a
  337. array(1) { [0]=> string(3) "def" }
    # B5 }- I0 E$ {2 n7 Y3 ~
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    2 I* n- i! o) ?  k- M3 X
  339. ' g7 N& d! M, V8 P1 c* @
  340. SET操作相关; j, X2 p- H$ ~. g: {
  341. sAdd
    8 p2 o- {4 Y1 a
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false" G. |5 p: W9 Z: `4 l8 Q8 Y
  343. $redis->sAdd(key , value);
    4 q( ?. ?  j! b' x( m" H
  344. ! w5 i0 ^8 P2 s7 ~/ }7 Z6 f* M
  345. sRem, sRemove
    & t- X) F3 A- Z' U+ x. H
  346. 删除名称为key的set中的元素value. `- u/ _0 C6 J
  347. $redis->sAdd('key1' , 'set1');
    / T$ F1 r9 w4 }5 \
  348. $redis->sAdd('key1' , 'set2');
    ( s1 g2 H+ _& }6 w
  349. $redis->sAdd('key1' , 'set3');
    1 ?8 F. V2 K/ \
  350. $redis->sRem('key1', 'set2');
    5 A2 T  j- c6 D) |" o' [. f. G

  351. % P/ F2 A- G, L. l: y2 ]* U$ A
  352. sMove1 b0 P$ s) B8 \# f
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合8 C& q  w' L- m6 ?: F
  354. $redis->sMove(seckey, dstkey, value);' I0 D( v  @1 V. K- Z

  355. 0 F" i% N9 F1 ^& Q
  356. sIsMember, sContains: ~: ]: T1 O+ l  Q3 Y
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false6 g. \1 m" ?# J
  358. $redis->sIsMember(key, value);
    " {4 ^4 ?( D  ?; S

  359. # D0 T5 P2 L; P, l% ?( Q
  360. sCard, sSize
    " ?. k5 d% m7 z0 B! j4 q
  361. 返回名称为key的set的元素个数
      v6 e" ~$ P3 k$ Q! K

  362. ' ~& Z" F8 S( b% L( n/ y4 N
  363. sPop& h. q+ r* ^3 G7 w- ~9 }) Z
  364. 随机返回并删除名称为key的set中一个元素
    ' |% [1 G, H8 G: K

  365. 2 U9 U' }. M8 R: i
  366. sRandMember- ]# a" p; m7 l1 R* s
  367. 随机返回名称为key的set中一个元素,不删除/ j% f+ h' Y) a$ k, \2 h3 r& e
  368. 7 V% H% C: U! ], L" s* {+ j
  369. sInter
    # [% \- \+ x2 Y2 a6 }0 Q
  370. 求交集
    9 }2 u. b. w* N' s

  371. / T2 T5 [& A, ?( C" P
  372. sInterStore
    % k, B; }3 Q; W7 d3 q, D
  373. 求交集并将交集保存到output的集合9 y  I5 V: ~5 N4 F
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    . w1 d- D: j0 r" L- k

  375. ( U; g- ?4 Z5 g) J3 C" C
  376. sUnion
    & W2 h; H1 s# e5 w% K& M
  377. 求并集
    * u) Q9 q3 s# d6 f' T
  378. $redis->sUnion('s0', 's1', 's2');
    / K% I) x* W) ~' Z8 q
  379. s0,s1,s2 同时求并集8 g+ y/ e7 e, }: G6 s$ s

  380. 6 v1 X" x- U- h+ N
  381. sUnionStore1 @: m. c% T, [0 j3 {* w
  382. 求并集并将并集保存到output的集合% [+ @- G' i. J% }
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');1 o: U; ?) W2 ?  m
  384. 8 D2 K# {" x4 s  }7 N1 d
  385. sDiff
    5 B# r3 g  r- k' ^/ L
  386. 求差集* d! p1 A5 R0 Y* l0 J2 K( w
  387. 6 C/ n4 Y& z6 L" x$ _
  388. sDiffStore
    3 k4 K! U% `$ X# f7 l! O: p9 l9 M
  389. 求差集并将差集保存到output的集合
    3 x! v" w9 m) W, l5 V9 U; s
  390. & A8 t! P& S7 `
  391. sMembers, sGetMembers
    ' M  a7 p) V6 s: O8 u
  392. 返回名称为key的set的所有元素
    & [7 L  {' o4 X, H7 x* m4 e
  393. 0 @5 _: I- J. X$ c0 x- C
  394. sort& k* _8 \% H* P  u/ i4 A" K
  395. 排序,分页等3 o9 _/ p& Z* b3 C! q4 E& ~1 |
  396. 参数
    1 K1 Y! Y7 d& b9 L9 q& p# Z6 f
  397. 'by' => 'some_pattern_*',  W6 A: D$ {) |$ C1 {! o/ r2 P" D
  398. 'limit' => array(0, 1),
    ' N. M$ m1 ?( U% k, C% M6 k
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    # h6 B1 k4 C; i- d
  400. 'sort' => 'asc' or 'desc',  g; B% e7 |+ A
  401. 'alpha' => TRUE,. b/ V, y# ]6 C6 r
  402. 'store' => 'external-key'
      o- k& h! f# ~0 X! w4 H
  403. 例子
    % A# r' `" f* d/ W
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    # ]; t3 _' U" R
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    7 f% U5 }/ C5 Z* K! U& x* c0 \! A
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    $ j. w3 L- f% ~6 j# n3 \
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5: I4 x( {5 o, z( x

  408. , \1 u$ @  q7 z  T6 {9 b0 O! c7 w" z
  409. string命令
    6 _: H! a6 [5 [
  410. getSet
    7 E# {4 z! g3 P/ {9 w; y& ~. C
  411. 返回原来key中的值,并将value写入key8 V# f% o; Q  R
  412. $redis->set('x', '42');( `9 e- r& j" b# W! u
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'/ S" F5 A" M1 D, }
  414. $newValue = $redis->get('x')' // return 'lol'
    6 G# H; a1 W8 V. G4 H: o: G" m

  415. ) x3 m( d/ ^0 F# ]* }! P8 {
  416. append
    ' ]9 |- Q+ X+ z" p, o# U8 X7 y
  417. string,名称为key的string的值在后面加上value- t9 `+ Q5 T" F; U4 o) c
  418. $redis->set('key', 'value1');$ B) K2 n4 Y2 ^* P) R
  419. $redis->append('key', 'value2');
    : I& r- F, E8 ~7 }' b6 m4 C0 a
  420. $redis->get('key');& p$ T( \# @, b7 X! H$ L

  421. ; C, \) r3 f. R! p0 u
  422. getRange (方法不存在)
    8 V8 G8 `  P2 R- r& t
  423. 返回名称为key的string中start至end之间的字符
    ! k' a; d# V! U3 x6 W
  424. $redis->set('key', 'string value');
    8 A1 M( H" |$ m  A, m- a
  425. $redis->getRange('key', 0, 5);
    6 t) c& Y9 j, {( a. }+ E" U9 q
  426. $redis->getRange('key', -5, -1);: N8 d- d+ w1 Q# |) U' }% T" ^
  427. 5 _' c1 F6 q* B0 N; T" R
  428. setRange (方法不存在)- X( M! q/ P, t( @! Q
  429. 改变key的string中start至end之间的字符为value
    % K9 Y# G% s0 c$ O6 J
  430. $redis->set('key', 'Hello world');
    ( P$ Q6 Y1 p! e& C* ^# K( e3 M
  431. $redis->setRange('key', 6, "redis");: Q3 K8 a! G7 d% J- H, ^
  432. $redis->get('key');$ P+ a5 }) }% r/ e

  433. $ X+ N4 w& P8 o/ u
  434. strlen
    % U$ w5 S. [( y9 v' c
  435. 得到key的string的长度: u( R7 S9 K$ j5 {0 E! L6 Q8 P# ]
  436. $redis->strlen('key');
    ; v: m8 _4 j4 V- i. j0 p
  437. 5 W1 G. `. J8 w' j
  438. getBit/setBit
    2 D, n" B* x$ A, P# ?+ F( h
  439. 返回2进制信息- W7 e6 e: \% |& f4 W1 S  q
  440. " N0 r) l! o! u& {9 q
  441. zset(sorted set)操作相关& f. J9 q9 Q6 R6 i* F
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    4 Q+ K2 X# R; b
  443. $redis->zAdd('key', 1, 'val1');
    ! K: `+ J6 r7 E4 d( l& c5 |, X$ t- C
  444. $redis->zAdd('key', 0, 'val0');! M/ _2 U- w: ?# F
  445. $redis->zAdd('key', 5, 'val5');% D  |; t$ S; E
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    0 [1 I. ^( Z( D. b' |

  447. 5 d4 b1 k- I% X* B( F
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    ' x4 Z& a4 W3 O6 g% K
  449. $redis->zAdd('key1', 0, 'val0');* q: V& u8 s2 K9 M# d
  450. $redis->zAdd('key1', 2, 'val2');2 [  O8 F7 o8 p) e0 T0 }( r1 `
  451. $redis->zAdd('key1', 10, 'val10');' \( S2 j0 ]. O
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    0 i9 ?" c* F+ S
  453. 5 M; j6 J0 n2 ~2 W+ Q1 }* O
  454. zDelete, zRem
    ) |# \/ W) Y0 e/ R4 L
  455. zRem(key, member) :删除名称为key的zset中的元素member
    ; W& i7 s3 P7 Q: {5 Q! t& Y; j
  456. $redis->zAdd('key', 0, 'val0');, I/ J& b* P+ K' P/ d$ |& c
  457. $redis->zAdd('key', 2, 'val2');
    + n2 q* H- a" e; p/ i; m$ N# b; S
  458. $redis->zAdd('key', 10, 'val10');9 E! V2 }! G, L
  459. $redis->zDelete('key', 'val2');* j$ y+ }# \" J! ~: ?
  460. $redis->zRange('key', 0, -1); " [# s9 l1 |5 _1 R+ \- j1 I
  461. 3 @" Z% G& k$ ?9 n& n; l; U/ s
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出' r0 _) G0 j  m  Z5 I2 O8 h3 j2 J
  463. $redis->zAdd('key', 0, 'val0');# _' x5 E9 ]: X
  464. $redis->zAdd('key', 2, 'val2');
    / w( b3 a2 v* O5 `' i0 y  ]. N
  465. $redis->zAdd('key', 10, 'val10');
    3 s7 H# x1 q2 H+ u: c& a+ ?5 j
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);; T* t3 V* F( f
  467. + l& ]$ S, \# U6 a" E7 B- D
  468. zRangeByScore, zRevRangeByScore
    + R4 D& X' e. l% F
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    8 a; X4 W, d! c% P3 F
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    1 S3 |8 \+ C2 v0 j, H& o
  471. 5 ^; C2 @$ r. m. P+ r9 {# d3 T& }
  472. zCount: ?7 Q) ^$ N& m* ?5 I1 \; Y
  473. $redis->zCount(key, star, end);9 U6 t5 w9 h! v$ J4 p+ U
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    ' o% E" i( k. R1 h/ [0 c$ {

  475. . @  u1 @% R  b' @" V
  476. zRemRangeByScore, zDeleteRangeByScore
    & Z9 \6 b! p1 z$ r6 ]7 `  Y, K8 J0 Q
  477. $redis->zRemRangeByScore('key', star, end);  U" W  |5 E2 k. m8 \- m+ U
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数4 p) q7 P2 j2 ]4 \! A( Q
  479. 7 @' L5 w$ G" G, p, S+ i3 A( L0 G# y
  480. zSize, zCard& h7 n% @. W$ L* S( \
  481. 返回名称为key的zset的所有元素的个数0 I& N$ o  V8 ~. k7 _

  482.   R; D  e! [) Z. Q1 l9 a# f/ S
  483. zScore
    - e$ z& u. t! r- r+ q
  484. $redis->zScore(key, val2);! p5 g2 p* K/ y" t7 D
  485. 返回名称为key的zset中元素val2的score
    + j: k6 i% I1 Z5 Y

  486. , @; i0 n" K8 D$ @# I# j
  487. zRank, zRevRank
    . N& V2 o" `; q) S
  488. $redis->zRevRank(key, val);- m: u* Q% w& c5 t' n$ m  Z
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序& M  N2 J) ~, n+ l6 a

  490.   {6 X) l. q' N" h8 M5 S# W6 S
  491. zIncrBy2 z& A& {* z3 e
  492. $redis->zIncrBy('key', increment, 'member');
    9 Y1 X6 G, d+ Q' {7 \; q) B# W7 k
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    ) i# u8 e+ g% c3 R- j* O, O' b

  494. ! c6 U6 y" e) e4 S# v
  495. zUnion/zInter
      X0 s8 w) l3 b- k/ {7 e
  496. 参数0 X* I' B' T7 s9 T! c
  497. keyOutput& Z  G# b: d1 [% c
  498. arrayZSetKeys
    6 r0 I" {9 I6 K; r7 c: r
  499. arrayWeights$ y% r( @7 t! V
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    # q  t$ \. O: w# c
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    ( h% y& g9 M) V+ y! A
复制代码

: z; P% f9 F8 f7 y! M9 z+ a# D% J3 _6 @' r

* Q- ~# m. k* m* c7 s
. a  T4 F) W/ e$ K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 0 c/ u5 R1 R3 f7 |) d
  2. //连接redis服务器 " S0 n, G' S, i
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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