cncml手绘网

标题: php操作redis大全 [打印本页]

作者: admin    时间: 2019-11-26 16:58
标题: php操作redis大全
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php3 u& r% L/ O6 q* @: @3 T! A
  2. $redis = new Redis();  ) C5 R- `' ]$ k- |; i9 R% C
  3. $redis->connect('127.0.0.1', 6379);//serverip port1 b/ A. M9 S( G9 J
  4. $redis->auth('mypassword');//my redis password
    " ]( B/ {, j0 Z% w; y% ~/ O& [
  5. $redis ->set( "test" , "Hello World");  & R, O3 {) ~2 V" M( Y7 b6 g6 r
  6. echo $redis ->get( "test");8 K6 i/ c, e! e+ v
复制代码
php操作redis函数封装
  1. /**
    3 I# @! ]8 r  ^+ F1 k: C0 U7 w/ [
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    9 U5 z& G$ ~. A1 a( W" N
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    # i. D2 U' [* u0 ~5 W- M
  4. */
    & n, r' ?# D1 y8 [( B
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){* [2 }4 y8 x: v! h- k
  6.     if(!$key||!$value) return false;
    ) h8 I. r3 Y) z9 q6 D
  7.     $host = $host?$host:getenv('REDIS_HOST');
    ( g- w- Z, ]8 C/ F: u
  8.     $port = $port?$port:getenv('REDIS_PORT');/ m& C6 E# e( [3 O8 |
  9.     $redis = new Redis();/ s# R  V6 y! Q& T2 ~6 q3 ]
  10.     $redis->connect($host, $port);
    9 D+ I7 M4 s* [  \% t. h! V
  11.     $value = is_array($value)?json_encode($value):$value;
    3 s5 j! N$ u4 k) a$ ~( C
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);; S* Z9 A7 z# i' t
  13. }
    ; r3 T# M. z4 y6 e' r
  14. /**
    $ A6 k( P0 A! ]# i) R' z. r9 Q
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    ' H8 J9 e( S* X/ y
  16. */8 o! l& z: C7 w; O8 n
  17. function RedisGet($key,$host='',$port=''){
    8 h- I0 K# K" a# _
  18.     $redis = new Redis();' L& t) B- E$ }- ]4 ?5 ?
  19.     $host = $host?$host:getenv('REDIS_HOST');/ V# f3 C2 v: V5 ?9 W
  20.     $port = $port?$port:getenv('REDIS_PORT');
    # a6 [9 x  e" Z$ e+ ~" k( f
  21.     $redis->connect($host, $port);
    , `. `- C4 C' S% w/ U5 q, J4 {1 m9 [( a
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    4 V! I6 m2 N' Z7 h3 I0 j8 J
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);* q' x6 _2 `& F
  24. }
    ) Q( K- o1 @0 @4 o1 v: `1 Q/ O
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
7 n( {$ H5 X5 C/ j
  1. setex 带生存时间的写入值1 p0 F' L8 n! A! n$ v# o9 v2 `
  2. $redis->setex('key', 3600, 'value');
    9 b. n& Y& O2 o& w# V
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回18 t0 V7 ]0 o! ^
  4. $redis->setnx('key', 'value');; o% n# \3 B( J1 y
  5. 返回已经删除key% G3 Z' X. j% t" n+ G4 {
  6. $redis->delete('key1'); 成功返回1失败返回0$ ?8 D. |! D  }( L! a  {
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回05 G5 M' b9 u& X* `( Q. r' f8 r
  8. 查询生存时间
    * l7 E. |8 E4 G& N3 C, {
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)0 F7 u2 I1 V) |: r
  10. 同时给多个key赋值,同时设置key0和key1
    $ N* c- h! u: y$ m5 y+ c0 c2 b
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ; \* e, r- L9 v# }! d0 b. ~
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值# v+ v! _3 \3 x1 M0 x& R
  13. $redis->incr('key1');
    " d2 O% B  l9 I. Y
  14. $redis->incrBy('key1', 10);3 O. v7 h8 A) N: q
  15. 减法跟加法一样
    : s- E$ Z/ q8 q+ f0 ?* O
  16. $redis->decr("key1"); 减少1. t, t( Y+ n  n1 {, ^# q, y
  17. $redis->decrBy("key1",5) 减少5  S* P  \. x1 ~  q

  18. - P: G/ Q( h. G  `! A/ w
  19. list相关操作,连表操作
    4 q& ?$ _0 d, V1 t  u8 ?7 D* k- E
  20. lPush
    % C8 z% x3 u; F# V8 e( N5 a
  21. $redis->lPush("list", "888");
    5 A0 ]9 D, w& C/ Z( r7 T5 G/ }
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    & l- B1 \0 O9 z2 [( y
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式! ~% T9 D; h* J+ o( @
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    , X5 `( C" A9 M5 |6 h, `
  25. lPushx/rPushx
    ! n: C; u! J- S, N
  26. $redis->lPushx(key, value);0 P& r$ k3 V. p2 O8 U0 t
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ; |  b* ?6 [4 y3 _
  28.   y$ B4 _  q/ d& G1 }: L/ _! T
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    3 P/ K1 P5 `1 ^. Q5 Z
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key8 Y: d( v+ N% [% A( s0 b: O
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1( U3 t0 F2 Q; w/ [$ U
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序: Y  n% o% g4 a. u4 v3 s
  33. sadd s1 zhangsan: x0 f* H: P% r# s4 |6 Q
  34. sadd s1 lisi* a4 Y1 G  F  Y: K
  35. sadd s1 wangwu
    + B7 U2 o* z7 O
  36. sadd t1 yangxingyi' b8 ?0 X7 F' y3 Y- O. U% f
  37. sadd t1 lilei% \5 r8 m# |  I, }4 Z( j8 I
  38. sadd t1 zhangsan
    8 L: V7 }% H* |7 i/ G
  39. smembers s1 s1的所有集合内容
      z8 g) q9 T! \( Q4 I7 l8 R
  40. sdiff s1 t1 s1有的,t1没有的,差集( Q, ^) ]# s- k9 Z' x) b
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ) S; ^3 x5 b; Z3 X6 e
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    % o- G( ?( K3 q8 F
  43. spop抽奖场景,返回集合里面随机的数! T. n3 k/ m0 i' t. H1 Q
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了) o2 n/ b8 Y" s8 m1 p0 d
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数- R' K, Z6 {. Q- m1 B# N9 C- c7 s# J
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    ; P+ v5 Y1 Z1 W$ i( |1 R1 x
  47. 随机返回集合里面的一个元素,但不删除,重复中奖9 E" k/ t2 L% P" G# ^
  48. $i = $redis->srandmember('s1');echo $i;  t. H7 g" Y: S4 l. e
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false, w: f7 h* y: {& T! I
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false  L# ?: o9 t  x3 i

  51. 3 ^- V: J3 X5 m3 Q+ y7 C% s
  52. zadd key 2 value 有序集合# c5 W& y: ^* Y3 I8 H0 J
  53. zadd y1 1 zhangsan;
    5 I( S, T% ], I2 ]8 I
  54. zadd y1 3 lisi;: R; v7 P- k) w* o, H
  55. zadd y1 2 wangwu;6 u  R7 e8 S) D5 v9 f1 O
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi" B" j6 i4 `+ d3 ]
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);& X. q, |" h7 G; ]4 w& n5 O
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键9 B" V" i- W$ V& ?. S5 `
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先0 i7 r! d6 {* q, {, b& l/ p
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的# O" j) K9 b. f+ r' F! c
  61. 无序就scard,有序就zcard,有z没有s* Z7 j  d) d9 J1 k' ]5 Q
  62. sInterStore
    ! \# t. N* y/ i7 `6 e
  63. 求交集并将交集保存到output的集合5 K7 p" f$ ^, r  c$ c2 y" I- k
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')  Z9 P! Z+ L" D' J& i2 z" {* g

  65. $ I' R5 e0 ], a7 d" O8 C' B
  66. Hash操作( ?8 g9 L6 {3 e+ }
  67. hSet
    # f* B& V1 V+ M. B4 Z0 a
  68. $redis->hSet('h', 'key1', 'hello');7 P* g6 b% `8 p5 G. r
  69. 向名称为h的hash中添加元素key1—>hello; ~5 u  `& _# e* d0 \7 o
  70. * l$ C, c- S! K2 [
  71. hGet
    $ M5 @' S' U$ T3 j
  72. $redis->hGet('h', 'key1');5 R; a' Y7 u2 a! @. @* g4 ?
  73. 返回名称为h的hash中key1对应的value(hello)
    ! U0 |$ d' Z5 `' C0 \
  74. + C: M# r! @  g
  75. hLen7 G* ^7 }7 m7 B% d2 b
  76. $redis->hLen('h');, r, z1 @$ L0 }
  77. 返回名称为h的hash中元素个数
    0 L  |6 q; z$ e$ C* x6 J( d

  78. ! Q: l1 |+ S2 \. C5 _
  79. hDel( d2 V/ y7 Y. r% |# G
  80. $redis->hDel('h', 'key1');# s$ ~. t/ p1 B! n9 l/ h6 {# ]" A" a
  81. 删除名称为h的hash中键为key1的域
    + t+ D* S  w% ?0 g6 }. s8 ^. p; ?

  82. $ h0 Z" R) h3 N' A
  83. hKeys7 y3 Y0 _$ H$ U$ X
  84. $redis->hKeys('h');
    ( i& h/ U; _# m4 h  X) y; Y
  85. 返回名称为key的hash中所有键9 n2 F: ~! Q# X( m, z' n' B
  86. % E. q; a& w" k+ i# V
  87. hVals
    7 n+ y$ Q( [2 l
  88. $redis->hVals('h')
    & ~) r- l' d& b( z' h  Y
  89. 返回名称为h的hash中所有键对应的value; F+ A2 W$ o: b/ R) r
  90. # X( m( q! {5 Y/ l
  91. hGetAll
    % j1 E  b' V! Z9 l/ Q+ D9 c
  92. $redis->hGetAll('h');- {. k  s0 p  E9 x) }# N
  93. 返回名称为h的hash中所有的键(field)及其对应的value* ^/ g- L' a; c6 L! d1 d

  94. % s, t! w4 H; a& x. M% }3 p, m, p+ k
  95. hExists' q  I- k* I; h3 o# X5 d* {
  96. $redis->hExists('h', 'a');1 s: P, A/ m: k+ d/ _
  97. 名称为h的hash中是否存在键名字为a的域
    / c  x4 e7 s$ r5 s0 t. B
  98. 8 O. ^2 G8 S. d7 t+ y
  99. hIncrBy
    ) h5 W: z7 v* D" `! @, n( U
  100. $redis->hIncrBy('h', 'x', 2);
    3 |+ ?2 s1 J8 v4 \
  101. 将名称为h的hash中x的value增加27 e. J1 O- X2 L5 e/ @: Z5 U  |6 ?
  102. - j4 f: A: o, U+ J" \8 C; I) V$ N) d- V
  103. hMset+ |  f# D  h7 M: q
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));3 o: U8 e- j! d3 @1 e: ]5 L1 C
  105. 向名称为key的hash中批量添加元素
    $ p8 L3 V& ?0 ]$ H

  106. % Y$ g  Y+ T* K7 V5 Y1 _, R2 [* X
  107. hMGet
    " R% d* C8 }: x8 ?: A  k8 G
  108. $redis->hmGet('h', array('field1', 'field2'));
      e# J$ E/ t8 c' `
  109. 返回名称为h的hash中field1,field2对应的value
    ! c5 m0 K+ Y. [: X

  110. . a* Y% g! P  P' U- l8 {
  111. redis 操作相关
    ( i/ @: J, m' I' L! `. f
  112. flushDB  w) M  L! \+ Q
  113. 清空当前数据库
    2 r6 t, O. t; L% Q/ p

  114. 5 i" L2 ?/ Z* y5 n
  115. flushAll
    8 @  L- N$ z: Y  f3 o- X9 C& l
  116. 清空所有数据库0 a) ]1 w0 g% `0 |% D8 V0 f

  117. 9 G$ c7 `* q. i
  118. randomKey3 J1 A+ Y$ r/ Q) r- S8 R+ X* f
  119. 随机返回key空间的一个key
    ' e2 l5 {5 K5 o9 j$ O
  120. $key = $redis->randomKey();- z) {, ~! m& k$ T6 |( G2 U

  121. ' r1 M3 ^2 O+ j3 M
  122. select# ]6 P3 \' |# t1 x& m( G
  123. 选择一个数据库8 o' h, A( m  m9 q0 j5 s8 x
  124. move
    ) J4 }0 }3 {9 q9 s
  125. 转移一个key到另外一个数据库( Q9 W" r" t9 v
  126. $redis->select(0); // switch to DB 0* y* \% A& Q; D# {6 B
  127. $redis->set('x', '42'); // write 42 to x9 K# K; J4 z/ `2 g
  128. $redis->move('x', 1); // move to DB 1
    ! ]. Y2 R! H1 a( r6 |5 G* U
  129. $redis->select(1); // switch to DB 1
    / B: m: @1 {* b1 [$ v7 z, N
  130. $redis->get('x'); // will return 42
    : f0 d6 U8 E9 \& G+ T6 `1 S
  131. " [# F' R! b: Z
  132. rename, renameKey
    - \, \2 _, B  T, Q' |8 O# z
  133. 给key重命名
    ) w1 s- @0 t0 }% G* U+ j  ^' ^4 ?1 ]
  134. $redis->set('x', '42');
    $ n* u7 m2 a0 x" j
  135. $redis->rename('x', 'y');$ ^! X, F. }3 i" s2 t( @$ s
  136. $redis->get('y'); // → 42! z9 c/ n- f$ {- Q9 y
  137. $redis->get('x'); // → `FALSE`- Z/ t( _+ _; Z9 F+ @
  138. . Q1 |1 f' q7 _3 Q# k: g1 c& v
  139. renameNx: _. v% \4 P& }. X
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    7 c5 `& g" `7 X+ \  @' D$ F

  141. + o7 t/ S$ X8 e6 p
  142. setTimeout, expire8 ?/ Y3 H5 b4 A4 P& U
  143. 设定一个key的活动时间(s)6 x: x1 }* X3 ~- i, z! r% U
  144. $redis->setTimeout('x', 3);* K; K1 Q8 }# y- N4 f
  145. ! ~3 {9 n% Q; a9 R# W  u7 D
  146. expireAt2 e) X) P3 _0 {- M
  147. key存活到一个unix时间戳时间  A3 r' `( |! x* {% M
  148. $redis->expireAt('x', time() + 3);
    4 I5 K. w( |. ?9 J

  149. + [  a4 W6 C1 V$ F2 j" v% b
  150. keys, getKeys  o  `& W" l# y- t8 R
  151. 返回满足给定pattern的所有key
    ; {7 |5 }" d+ j9 b- R2 I6 A
  152. $keyWithUserPrefix = $redis->keys('user*');
    . V7 J/ `6 o9 D
  153. - C  P  n8 [* u+ b4 x( N
  154. dbSize" d  g! ?$ k' f( x! c
  155. 查看现在数据库有多少key
    - o4 O9 ~/ J1 S* K
  156. $count = $redis->dbSize();
    , h$ H$ C. L3 n+ C4 c9 B

  157. 5 K+ ]5 ^- d5 T. L
  158. auth
    ! f& D3 a+ t0 R) [
  159. 密码认证
    $ E' ^. m. g) R9 B0 ^
  160. $redis->auth('foobared');
      y5 O3 t9 R, Y8 K
  161. ; o  m* k8 S7 j1 ]- r3 X
  162. bgrewriteaof
    6 W1 ]9 F* ~. s: {
  163. 使用aof来进行数据库持久化
    9 T* P( {9 z+ s7 _7 ]: {. r
  164. $redis->bgrewriteaof();
      W6 D8 z4 E& q" c$ O- W5 @2 e
  165. ) J' f* ^; Z/ {2 Q3 r, c8 k
  166. slaveof4 s; K8 M3 x+ }% n: W
  167. 选择从服务器
    * m1 [( Y% J4 O9 M- ^
  168. $redis->slaveof('10.0.1.7', 6379);2 W% h. f8 u; a! `0 E4 }2 F8 [+ u* H

  169. ' K! M& g1 Y6 j. [' t
  170. save0 \; f$ D0 H9 }
  171. 将数据同步保存到磁盘; W( b4 [. c9 A' ^! s) R

  172. 8 [0 U0 H, d! u( d
  173. bgsave
    * Z( A$ j, n( q3 e( j  e. q
  174. 将数据异步保存到磁盘
    + W# e1 x: r  ^! ^1 x9 P4 ?' o
  175. 5 k3 u5 ~& n2 Y
  176. lastSave* b* @, ~8 m- _/ E) H% W( Y
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    8 T) @( l- \: {2 F

  178. * k6 ]' [0 j  E* P3 G( r
  179. info$ J; }# v; H0 A) O7 E8 W' ~% r4 v
  180. 返回redis的版本信息等详情
    # N- ^* L8 I( `- u- g
  181. : w/ w. H9 B! T" O2 m+ O
  182. Redis::__construct构造函数& K: R7 ^5 p+ O8 i
  183. $redis = new Redis();4 f, l, M" r+ X7 g2 }6 x
  184. # R4 T) u0 J0 N- O- a3 |# _0 H
  185. connect, open 链接redis服务
    , z0 W% H$ o) G+ _% g0 n) d6 F
  186. 参数
    6 [( c1 k, v! U4 u( H8 L7 `
  187. host: string,服务地址
    : |" }* `3 S  \; |
  188. port: int,端口号9 a! Q1 d( H1 }8 @
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)0 C  N) q( ?1 c. q  c. d& O
  190. 注: 在redis.conf中也有时间,默认为300
    / H- M& n9 S2 M
  191. 4 v9 i" a4 }. ~1 L5 K- q
  192. pconnect, popen 不会主动关闭的链接/ y5 |# P- k  \
  193. 参考上面
    0 I7 p, L( X; P: r: u

  194. 1 X* ?& _- t2 O1 a, Q
  195. setOption 设置redis模式
    ( }& z: d  T1 ?; \! T

  196. $ C* l$ q% a/ }3 t/ q
  197. getOption 查看redis设置的模式  n1 E+ K2 y7 n4 A& _8 W1 N/ n

  198. - P" Z: j/ l+ y4 ^, v; D
  199. ping 查看连接状态
    $ D) N+ T' Z( L4 S4 m" R$ Q5 z; D
  200. 5 {1 [7 k/ ]- x4 I& H
  201. get 得到某个key的值(string值)
    . r1 {8 O; S  X- q4 |5 q
  202. 如果该key不存在,return false4 e. c1 ~4 E8 P" O' k
  203. 7 u$ y1 B4 x- s# W3 O- H9 V
  204. set 写入key 和 value(string值)1 r  I% A8 H9 J0 y4 V. Z  u  B( Z
  205. 如果写入成功,return ture! ~4 }  v% S+ W- l' f+ D# D

  206. " l, w  C. S7 I. n; s* R/ y
  207. setex 带生存时间的写入值# j0 v8 e2 j1 \+ L3 ^& N7 g
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.+ H6 t7 j3 n% B6 J+ @  O/ `) T3 L

  209. 5 g6 z  [- z' ^" j! n
  210. setnx 判断是否重复的,写入值3 J9 n* g# O' M5 K. E" P
  211. $redis->setnx('key', 'value');
    8 S( C5 _) P6 [9 |2 W, A& h
  212. $redis->setnx('key', 'value');
    8 x1 y1 I2 ]! J! D7 [6 n
  213. ) E  `5 X( ]* b, h$ r8 h, H1 C
  214. delete  删除指定key的值- C+ I2 d+ @# {+ i& P! Q
  215. 返回已经删除key的个数(长整数)$ r0 V- i1 m! s' K0 L: s: x
  216. $redis->delete('key1', 'key2');2 z, I* M. j8 h! R* C
  217. $redis->delete(array('key3', 'key4', 'key5'));( m. u- R7 _2 O! @+ v
  218. : x* L2 g0 |) G0 o2 m6 t" m
  219. ttl
    * U' Q9 |: f! m" J' i
  220. 得到一个key的生存时间5 i( H9 M5 g5 {, Q) G0 c

  221. $ u1 h4 Z) g/ R8 \* p# ~: N2 M
  222. persist
    # k; Y- K" ^' A( z# j
  223. 移除生存时间到期的key
    . O8 v6 \$ d5 Q2 I- Z+ z% _
  224. 如果key到期 true 如果不到期 false* ^. y1 B/ y0 @/ U: B" G; Z' `

  225. + P. b& t6 h* g' {
  226. mset (redis版本1.1以上才可以用)8 U$ o3 P: M. [6 s
  227. 同时给多个key赋值
    8 C8 X; V5 `4 A; R( @
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    2 F! F1 [! ?% A0 I$ {+ a$ l

  229. 6 l: r3 n1 ]1 _
  230. 0 h* e: x! D" R8 H, P: H

  231. % R' ^- N+ l2 r
  232. multi, exec, discard
    5 Q+ h0 H4 h7 C6 @( F2 i; }
  233. 进入或者退出事务模式
    ; g1 m4 h4 J$ J" J# j9 a" ?$ p
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    & n6 }' P& y% U1 V. A" @* X6 W
  235. Redis::MULTI:将多个操作当成一个事务执行
    + Z1 ?( I# V$ {- V0 a. Z* d
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    0 Z7 z) l6 U$ m. J# g) D
  237. discard:删除一个事务# Y. s' D/ _% ?" M+ E* \+ s: J
  238. 返回值
      v' Q# o  J4 p" F
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。+ _5 ]) T* g. c  b) u' ]- P
  240. ! n: C) ~5 Y% w9 y" [; `# c
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    0 t8 ]! H! G8 ~8 j
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    & [* y- Q% _6 J! w1 v8 D, ~# P
  243. unwatch  取消被这个程序监测的所有key
    4 v0 |4 |0 O* h$ ^& A4 T
  244. 参数,一对key的列表4 V0 |+ m6 |# T! v3 I/ {, y
  245. $redis->watch('x');; {" u, C; e5 w; h. l: `) o
  246. . O, r8 R  y7 J0 ~& ~
  247. $ret = $redis->multi() ->incr('x') ->exec();1 U! {; K! M6 a

  248. ; j" o& O# R# w9 X. ]! J, u7 r
  249. + P8 f7 N- t2 E5 B2 T3 `9 }- _
  250. subscribe *9 t. ?2 v; d1 i6 G$ K
  251. 方法回调。注意,该方法可能在未来里发生改变7 P$ x; i4 ?' Y8 G2 e: i& t: D' ^
  252. - X1 h5 \5 \2 b0 l0 |
  253. publish *5 S/ `0 D2 {  {6 s8 H
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    . J" \" x3 D  _* [  E% a1 w

  255. * B$ F9 r# q1 h7 }
  256. exists- u7 l4 r4 O5 k" K
  257. 判断key是否存在。存在 true 不在 false: D: e8 ]' O$ ]4 ]+ C+ I

  258. % Z: H7 ^% L# q; M9 d1 E  d
  259. incr, incrBy% V  l; f3 N9 U, J: ]" ~1 @1 S
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值9 i; T4 `. w3 f5 H6 P
  261. $redis->incr('key1');( b- I! L" n6 x$ f
  262. $redis->incrBy('key1', 10);
    - I: u( n) x0 |$ K% ?
  263. 6 x' k) I* k; n' Q+ v! ^
  264. decr, decrBy, h$ M, h6 k3 a+ Q" R4 J2 ?
  265. 做减法,使用方法同incr" A- [$ s9 H  g6 R
  266. + K- @  I# j3 S5 m4 t
  267. getMultiple
    2 G6 k. N5 ?6 J# x, A# U$ `
  268. 传参) t& @. n# ]" Z* b4 u
  269. 由key组成的数组+ Y. u# D+ k5 b
  270. 返回参数3 O: k# a: f0 H# W
  271. 如果key存在返回value,不存在返回false
    9 }" U  c1 G' G5 }! Q
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ; ^! A# x8 f0 G! g9 J
  273. $redis->lRem('key1', 'A', 2);# l9 L# Y& @7 g7 q; V
  274. $redis->lRange('key1', 0, -1);6 b  E( Q1 o' m  q

  275. $ f4 X6 b; M. T# `) u  {& f+ E
  276. list相关操作
    % ^$ S% a4 p+ N, V, g, a
  277. lPush
    % F4 {& U' ~- E2 b9 H( K" ]) Z
  278. $redis->lPush(key, value);1 w' t0 X9 G& K
  279. 在名称为key的list左边(头)添加一个值为value的 元素6 v+ L2 W# ?5 U* [; C

  280. # y' p; U% |4 p% X9 x
  281. rPush# r3 i$ v+ h- Z+ ~% \# d0 e
  282. $redis->rPush(key, value);! T. j5 `; Z5 R, I' k6 A, H. j4 R
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    ( f: X7 R$ x& g* K: q1 Y. n2 T( G

  284. 9 ^3 E  K* D  {2 i
  285. lPushx/rPushx
    0 ~. K* w9 O' T+ S8 T+ Z; g9 \/ H
  286. $redis->lPushx(key, value);9 |8 `$ |; H* I2 o" P# P
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    3 v3 ?$ j( F' d# B4 n# `

  288. + ^- m0 ^) Z/ M
  289. lPop/rPop9 u" X* W  D0 Y' G" a$ U% Z- D
  290. $redis->lPop('key');# d0 o& b+ s" C, E3 w
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    . ]4 r, D. i% y1 O) M8 L
  292. * F* g7 D) ?4 i* T
  293. blPop/brPop
    , Y' J6 G- [& x) ^/ e
  294. $redis->blPop('key1', 'key2', 10);
    3 ?, q8 T) r7 r0 x2 k5 k* S5 p/ _
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作* b! {% }# g  }1 h8 W

  296. 7 v& R0 c" c: r( n  m2 |4 |2 w. f" t
  297. lSize9 u2 e5 d  f! c& a. n
  298. $redis->lSize('key');& H, J8 T, z7 D% B$ T: T, e( S
  299. 返回名称为key的list有多少个元素* ]' b/ x& \  \) Z

  300. 4 z0 w1 O* Y. n( u/ I0 k$ T$ G
  301. lIndex, lGet$ p0 o6 z1 [2 ?; M1 z) D6 N
  302. $redis->lGet('key', 0);
    4 u7 u" Y! U) X4 `
  303. 返回名称为key的list中index位置的元素
    - i- k' a- u  ^3 R. o% x
  304. ' @1 a+ C: g" i- o
  305. lSet7 X0 F6 X# k( X( N! @3 J
  306. $redis->lSet('key', 0, 'X');
    2 y. V' |) E' Q( ]0 j+ u' r
  307. 给名称为key的list中index位置的元素赋值为value
    & U% @% q( I$ X7 F7 P% f: H" q
  308. : D' g  S. v: w  T* M
  309. lRange, lGetRange
    ! t  b# U: M" V; D
  310. $redis->lRange('key1', 0, -1);
    ' Z5 b% f6 s2 k" ?6 I: o2 B: t& F" [
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    2 j. a0 R0 M( u. h

  312.   r9 w+ w7 F7 Z
  313. lTrim, listTrim* W- R, ?" }2 s! W
  314. $redis->lTrim('key', start, end);
    $ C9 M" l% _" J
  315. 截取名称为key的list,保留start至end之间的元素
    . L9 P; H( N# n- [3 T
  316. ( @5 F. K1 i$ |
  317. lRem, lRemove
    7 @  J: S% I+ `# v0 h
  318. $redis->lRem('key', 'A', 2);
    ( T, _( S* V4 [$ z3 s) P6 e* Z' t
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ( f2 T7 B$ s7 W& X! x

  320. + W' C% ~- i3 X4 t7 r) m
  321. lInsert
    & ~6 _3 p" r8 J, l) d: ?
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1" }; e& p8 p" F  [9 B1 z. z6 @
  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');! T: D  _4 L; B1 i7 d  ]
  324. $redis->lRange('key1', 0, -1);5 W* n$ S; t4 D
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');! [' {" p" |2 }
  326. $redis->lRange('key1', 0, -1);
    3 L4 o7 U! z  P  u
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');' E! I- }/ u2 [6 j, n
  328. 2 x5 N3 e& o6 ]
  329. rpoplpush4 {; ]$ q) A: p
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    5 r0 ~( C2 f" N2 `' x6 D& }
  331. $redis->delete('x', 'y');; o! S* t2 ~1 S% ~1 }
  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'));
    $ @* `: m0 ?* |% m
  333. var_dump($redis->lRange('x', 0, -1));
    . T5 I6 H: b: z1 k; P6 {
  334. var_dump($redis->lRange('y', 0, -1));
    & T& M! j1 r; R
  335. / E$ A# `6 i) |% X5 E$ i3 F+ V3 Q. y
  336. string(3) "abc" ' t. g" }$ K. V+ e3 z$ _
  337. array(1) { [0]=> string(3) "def" }
    - a/ ~6 T' b7 `4 C% g
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }( c  f8 w) \9 i0 E7 z) Z/ m

  339. - X1 O4 i8 S9 J" j/ T. }2 U
  340. SET操作相关
    0 O+ H4 t, [4 j; z
  341. sAdd( o( R9 s% f5 h$ G: \6 V# `6 r% f
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    . ~4 t; w0 x$ E0 E3 o+ {/ c
  343. $redis->sAdd(key , value);
    6 S2 y4 ^& B  V
  344. 1 ?6 P  p& u* T4 @1 K
  345. sRem, sRemove6 b  ?: V/ C( G% R0 D6 l
  346. 删除名称为key的set中的元素value8 p7 d) ~$ q4 ]2 `% {1 X+ H6 h4 P, O
  347. $redis->sAdd('key1' , 'set1');
    * a7 Y6 j3 B* q: c- z1 n
  348. $redis->sAdd('key1' , 'set2');1 H9 J) r' _! a# h& q  \
  349. $redis->sAdd('key1' , 'set3');' N. e4 N: g2 h( `5 H7 Y
  350. $redis->sRem('key1', 'set2');
    7 _$ S. A! B) r, [, W

  351. 5 S3 y9 A" O1 ]/ d& b
  352. sMove/ \! D6 O( G# r  c) e7 e0 d
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    / d$ h3 {4 I+ Q! \
  354. $redis->sMove(seckey, dstkey, value);
    7 E5 \; `8 h5 J9 M  ?: U5 S6 U

  355. 7 |: F6 p4 H! Z5 D# [, U" M1 A& X
  356. sIsMember, sContains
    - K& C) a, T, e. |( _9 r* z/ q  C
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    0 C1 v3 y9 y$ x. Z0 j% R1 j
  358. $redis->sIsMember(key, value);8 c/ ?. ^4 ~" _$ k% |. O( a0 ]) w
  359. + Q* }2 ^: E/ f! j* g
  360. sCard, sSize
    1 c+ u! I7 Q1 L; b6 r( w. W
  361. 返回名称为key的set的元素个数
    * m" K: G. s5 f+ g
  362. + D5 z: q- Z/ j  J9 @
  363. sPop
    7 v2 z' @" L& C
  364. 随机返回并删除名称为key的set中一个元素; }, b$ W* C& A8 j0 o' G

  365. 9 r# C8 ~( I6 L9 [" f
  366. sRandMember
      I" f  d1 `" Q8 c4 Z, T" S
  367. 随机返回名称为key的set中一个元素,不删除
    $ a2 [" e9 d: @. X0 k
  368. & Z  P/ i* ^- Y1 t+ A$ Z' d
  369. sInter
    ; E/ }" s1 C: G. M1 \" T" ~0 h
  370. 求交集  }+ B* g: }0 M: n! m. r4 s
  371. % [$ U5 U  I$ J$ W6 n
  372. sInterStore  X( f4 L' Q2 G- X3 i
  373. 求交集并将交集保存到output的集合3 o/ h, T. X( a2 N/ _' ~
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')6 [) A3 \/ G3 `! o

  375. 1 c! `3 r; h8 J' a
  376. sUnion2 V( j7 p5 w7 `% A
  377. 求并集
    9 I* Y7 J  l! O5 h& P. @$ E
  378. $redis->sUnion('s0', 's1', 's2');
    ) o, |1 K3 A) {9 h; D/ V4 H
  379. s0,s1,s2 同时求并集
    5 r* i6 \/ [" n( O$ |9 g6 Y

  380. 5 s, x. O- V( R# b& s. A
  381. sUnionStore
    ; A4 F1 _3 B0 S4 u
  382. 求并集并将并集保存到output的集合
    " u! x2 i+ y& `' S1 r' U! L
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');" y: x) I! {4 t/ m; x+ t' Z! V/ D
  384. 6 ?1 `6 O$ b. X2 _0 u7 ^3 E
  385. sDiff6 a" u! r9 Y- Y5 a# o
  386. 求差集" Z- x# B5 J5 l* l4 @; H
  387. " e$ h6 |# }' r( y# r' q4 }
  388. sDiffStore' e; n  _9 a* p0 }" x
  389. 求差集并将差集保存到output的集合8 z* W7 G8 y* T$ c4 x

  390. ( a+ z( M( I* H4 M% H5 r& [
  391. sMembers, sGetMembers
    8 m8 L$ x) Y# z
  392. 返回名称为key的set的所有元素1 k1 @) a$ p  j, `* |5 `7 T

  393. 0 e5 [" Q) c4 T. s7 ~& Z
  394. sort
    ! G  d3 u1 L( {: H
  395. 排序,分页等: s" ~1 V, W0 a. M2 q) e. b; M: r3 ]
  396. 参数8 j8 W6 Z% {- J( y( P8 _& [
  397. 'by' => 'some_pattern_*',
      x/ W6 _2 I5 C1 S; A: i% E9 K
  398. 'limit' => array(0, 1),
    . f, V) O7 b. B/ }; U" ]) K! t1 P
  399. 'get' => 'some_other_pattern_*' or an array of patterns,6 S- _4 _2 _! f' G" V$ }' ?
  400. 'sort' => 'asc' or 'desc',
    ' {; s! |+ w3 }9 K/ y3 o* L
  401. 'alpha' => TRUE,
    ' B  V. |  w  M4 x* j5 N. e) P
  402. 'store' => 'external-key'
    - c" ?2 M3 z! o5 O  o
  403. 例子
    , j% X% S: n" W& c- M/ o, f/ o0 ]; R
  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 y" ?& p- s% P& t: H2 a8 W) e; _
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    * ~/ M. S2 h- g, |, x. r7 o8 t
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1( ~* J5 f) r. ~2 _8 i% C; L
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5% N9 N4 |# v* R7 q: I) `
  408. ; ^' [0 a# ^6 {7 b1 f. f4 h
  409. string命令# l3 e5 j+ o6 r+ l$ C  s
  410. getSet* L8 A( w: O/ n, p! S( I
  411. 返回原来key中的值,并将value写入key8 ?" Q" v. J$ k% `$ z  T3 V
  412. $redis->set('x', '42');
    & P3 |# C* f: V' a( {) ?& H
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'3 x) r* O& I! ~8 y, l- l6 U' P
  414. $newValue = $redis->get('x')' // return 'lol', L3 y+ ~8 i' M3 E1 y' s1 z+ Z

  415. * H& k% `# ~  d% R) }% U' E0 O
  416. append
    . ~' Q! r( y" a, x
  417. string,名称为key的string的值在后面加上value6 `  `# h! M$ _
  418. $redis->set('key', 'value1');4 R4 `& S& K$ W
  419. $redis->append('key', 'value2');
    , H# y0 P( ?3 B0 S
  420. $redis->get('key');' E+ o. S9 J6 e+ m1 w

  421.   c  Z+ P- Y/ z8 }- O
  422. getRange (方法不存在)
    * h& G4 P& ~+ b6 E
  423. 返回名称为key的string中start至end之间的字符
    : R2 k6 }* M( E0 E# z% d
  424. $redis->set('key', 'string value');! ^  A+ T" ~9 C% D. F( ?( d
  425. $redis->getRange('key', 0, 5);
    7 t" c' @- d" @" H2 I
  426. $redis->getRange('key', -5, -1);
    $ s* h9 Y; u. P; U5 d* c9 f
  427. 1 S) c4 i2 `) O$ H$ m
  428. setRange (方法不存在)
    : V) e6 A5 U# y2 Q6 y8 H7 O
  429. 改变key的string中start至end之间的字符为value# a6 |% Y+ ^, ~
  430. $redis->set('key', 'Hello world');( R7 o* c/ y) P' y7 O
  431. $redis->setRange('key', 6, "redis");
    : ~# A: d0 c  {: e
  432. $redis->get('key');$ p8 `: y+ A7 Z2 U( L9 w- N8 V

  433. / {' [$ j+ n0 U; ]; ]/ Y+ K
  434. strlen! N# _( d+ E/ n7 n
  435. 得到key的string的长度* x2 b4 \. L$ |: ?7 k3 K
  436. $redis->strlen('key');
      C+ Y0 g6 o! f6 ^4 d

  437. * h  ^3 t  N+ I* |, x  y8 b
  438. getBit/setBit( ?: ]5 B& ?& M% d& c& u
  439. 返回2进制信息
    4 {: q: Y. Z3 f1 L. U

  440. + M# \4 [9 Q  ]+ P+ y+ Q* f0 ]
  441. zset(sorted set)操作相关
    6 u' v, Z( X+ F
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    7 B( Q' _3 z. _" C
  443. $redis->zAdd('key', 1, 'val1');" p" v7 H( }" Y% a2 ]
  444. $redis->zAdd('key', 0, 'val0');
    4 m6 G; J! j- i- m8 e  w. z; I
  445. $redis->zAdd('key', 5, 'val5');
    * @* A3 i7 b: N% }" l
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    " G! w6 t3 q" k& O; W
  447. " {6 h8 `* r& x3 v3 O! V/ y
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素8 U$ Y0 Y) s  \* X! Q+ ?" k. F- l# U
  449. $redis->zAdd('key1', 0, 'val0');# i4 r4 b; i  t" p: U1 |) l. r
  450. $redis->zAdd('key1', 2, 'val2');. v1 _" C8 G6 L& T( j
  451. $redis->zAdd('key1', 10, 'val10');
      o9 P6 \1 ^+ M
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);( R7 m" h& V: P" A
  453. . N1 n  a3 A0 n- N) p% \$ A4 a6 v
  454. zDelete, zRem
    0 I; x( _0 i6 c2 m- G
  455. zRem(key, member) :删除名称为key的zset中的元素member
    5 N4 G5 S% V- R) g4 R
  456. $redis->zAdd('key', 0, 'val0');& x" Z, L4 {7 Y
  457. $redis->zAdd('key', 2, 'val2');; Y* m1 g, J( h$ K7 R' V
  458. $redis->zAdd('key', 10, 'val10');; u5 n& k/ z  H
  459. $redis->zDelete('key', 'val2');
    1 G" C$ Y- H! ]4 t, r5 K
  460. $redis->zRange('key', 0, -1);
    ( P( g3 k" c2 C" k6 a# v1 b6 n
  461. 4 S7 s2 L& J3 L6 H) j! ]- E2 {
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    0 m) _' U# r4 ]* H; U' l% Y2 y& n
  463. $redis->zAdd('key', 0, 'val0');
    8 o; [% ^: \9 W, z: ~5 v* S" K
  464. $redis->zAdd('key', 2, 'val2');; u6 h  x: P: [# H' o) e+ j9 b
  465. $redis->zAdd('key', 10, 'val10');! n# l1 D2 U5 M! d; j1 `
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    3 j7 a& x) e4 g# C& \
  467. 3 e5 E7 S; D, U; f/ q- g
  468. zRangeByScore, zRevRangeByScore2 O( n2 o4 V1 M4 V$ R& o; y7 V
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    1 F6 j: r3 K3 Q
  470. 返回名称为key的zset中score >= star且score <= end的所有元素/ d1 w- E: j7 x8 k" q

  471. 9 b+ l7 e# q9 ^. ]2 V( c9 p9 c
  472. zCount
      t6 J' J6 p- {1 `  P
  473. $redis->zCount(key, star, end);
    2 e( @1 W, _+ w: d+ i! b
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    " C, E$ F# y  E9 D9 D/ J- d

  475. & i. n+ d/ t0 E3 a
  476. zRemRangeByScore, zDeleteRangeByScore
    # P) W4 h: O4 N
  477. $redis->zRemRangeByScore('key', star, end);) s: J, m4 Y. F3 s
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数3 l0 ?& @6 L7 d5 v( X) |
  479. + s. D* ?1 p6 n0 A7 h9 ^6 x/ {
  480. zSize, zCard  r' J0 ~6 X8 n8 i
  481. 返回名称为key的zset的所有元素的个数3 _" R6 e- S8 K& V$ ^3 f6 i
  482. 1 g% C) f; Y1 \& b1 S7 R, F
  483. zScore' j( |* `% @* W: ]
  484. $redis->zScore(key, val2);
    5 E+ t9 t% @1 z+ w% H1 ^: q! i
  485. 返回名称为key的zset中元素val2的score" ~: \$ O. |+ H

  486. 3 q5 N7 g1 ]% B4 l- ^
  487. zRank, zRevRank
    1 T  Y" Z4 D, h9 B4 \( f8 k
  488. $redis->zRevRank(key, val);4 Z9 _( l- h5 K: A" c& T( s
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序# O3 H$ t- |" ~( w- q( I
  490. , x. X9 _0 R& d; Y
  491. zIncrBy
    . K) E2 I# D4 ]7 H: ?' O& G
  492. $redis->zIncrBy('key', increment, 'member');- G8 i  b8 ]( f1 ~( Q
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment0 K6 ^5 G( C; a2 \/ V4 H: l
  494. 6 h. _3 G8 w3 e8 x/ }$ y5 B
  495. zUnion/zInter
    6 s. c& k+ ~0 E  d' b
  496. 参数
    + y; j6 T7 P9 U" e: u
  497. keyOutput" J2 W, Q( \/ n% j9 S9 p
  498. arrayZSetKeys
    + p$ M5 w( u! r9 y  t1 J
  499. arrayWeights' c" E) F0 g0 c5 k
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.8 ~- u& k2 U  ^3 N3 ?1 i
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。1 m; }  W5 o* F; S, j
复制代码

3 s# R! I: Z9 F2 Z: N
. i1 A. }( H% _! f' d# g# f
. J9 F! h8 o: T  m3 n2 y$ J
  o4 A: ]9 V$ m( o8 N1 g8 R' ^% n
作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis();
    * f' n% f' r4 M; i; y
  2. //连接redis服务器
    9 ^6 H' H2 L2 Y* R
  3. $redis->connect('127.0.0.1', '6379');
复制代码





欢迎光临 cncml手绘网 (http://cncml.com/) Powered by Discuz! X3.2