cncml手绘网

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

作者: admin    时间: 2019-11-26 16:58
标题: php操作redis大全
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php( ?1 M+ t& @" F; ~0 c- i+ s# Z( u
  2. $redis = new Redis();  
    - M. Y3 y" G0 d* k
  3. $redis->connect('127.0.0.1', 6379);//serverip port% j6 z+ R) U) B# k/ b
  4. $redis->auth('mypassword');//my redis password
    5 V3 C- T( F# K( ~2 ~1 L; _) B8 ~
  5. $redis ->set( "test" , "Hello World");  
    ( y; H; A" F4 q1 p) A1 b% j! Q
  6. echo $redis ->get( "test");
    6 b2 C/ n) j5 i" U! V6 y. b% n
复制代码
php操作redis函数封装
  1. /**
    1 v1 Z) Z4 k9 \% k1 r+ k7 f
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数* I& u# e5 r# o
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    , n, K1 h' c/ y8 z: _. S+ b
  4. */0 B8 _6 _+ ^- p! Q2 y
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){" |/ K) {) m0 g! e+ [& m$ t
  6.     if(!$key||!$value) return false;
    5 \7 v7 w1 ]. L; I  A
  7.     $host = $host?$host:getenv('REDIS_HOST');, o& p0 ^- g/ r0 m* \( ]& }! i
  8.     $port = $port?$port:getenv('REDIS_PORT');
    2 s: k+ {# j  q/ f7 r
  9.     $redis = new Redis();/ a1 B) n8 _0 Z) E* b; S- G
  10.     $redis->connect($host, $port);
    4 t/ `! s1 p) Q6 P5 h6 e; m
  11.     $value = is_array($value)?json_encode($value):$value;( V) m+ ^3 L2 `7 P
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);3 v; l0 H: A, ^! w% D" X
  13. }
    - I" v. m% l$ a! e4 Q
  14. /**
    " ^2 x& v9 R: [0 e
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi6 W, v1 [7 I: \3 j4 S
  16. */# {7 p1 \5 k6 v: U0 a) X
  17. function RedisGet($key,$host='',$port=''){
    ( P$ b( L5 O& b
  18.     $redis = new Redis();( X, d- d; I$ r$ |
  19.     $host = $host?$host:getenv('REDIS_HOST');
    7 O* H, F( X; j8 h$ ?; O, a
  20.     $port = $port?$port:getenv('REDIS_PORT');  I' L( F6 U9 t- H2 z1 U
  21.     $redis->connect($host, $port);
    " g; Y7 a  c' J% x4 X  f4 L9 \
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);; p! x4 R; ]: t
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    4 t' B" d' i& F
  24. }/ ?+ ~- N, H/ d: H$ H
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了/ u. ]" A; ~1 `- U8 k* R
  1. setex 带生存时间的写入值/ ]" @9 _' N/ o* }
  2. $redis->setex('key', 3600, 'value'); * V* m2 y& ^4 `9 k& j- E5 w
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    3 n6 A. j. e/ \, q
  4. $redis->setnx('key', 'value');
    - \' F; u9 ^; e  S7 K! T% H
  5. 返回已经删除key5 j4 p9 z% B9 |7 U% q* Q
  6. $redis->delete('key1'); 成功返回1失败返回0! W/ R# L( X! t9 I" _0 _
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    " l+ O  C+ B2 h  S) ?! ]" P$ x
  8. 查询生存时间+ |2 }4 C! ~' o6 X! l% V
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    % \6 m) ?1 W( Z3 [. D# K/ A
  10. 同时给多个key赋值,同时设置key0和key1
    & b9 o% z9 c" _# }' f8 r# f9 D
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));$ c# ?' Y- g4 u- U  g2 H- n! \' i
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    $ E/ x: d, g' l# X% x8 i
  13. $redis->incr('key1');/ G( x, I1 f! u5 z
  14. $redis->incrBy('key1', 10);
    ' A4 W# q/ J8 ?' U% u
  15. 减法跟加法一样
    % M3 o' k& x  s9 ^
  16. $redis->decr("key1"); 减少1
    4 b; T% _4 l1 m
  17. $redis->decrBy("key1",5) 减少5
    , p% r  `; a! D  z" A8 z

  18. 9 ?, T2 A1 O$ [% z! Y
  19. list相关操作,连表操作
    , z: h7 j7 @  }$ g; R& I
  20. lPush+ s3 A- _/ h+ `1 v* g( f4 i
  21. $redis->lPush("list", "888");" Q4 [1 A+ e! y' ?+ l
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数( N0 I! K, \6 x+ E4 ~$ R2 o" C& E
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    ; j  v" S- d! |: Z. S. t' K8 b# o
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素8 ~% U0 y. a  g9 I* X' v& ]
  25. lPushx/rPushx* d: [  B0 I/ M1 w- Q: n' b  }
  26. $redis->lPushx(key, value);
    6 ~: n4 U$ H$ `" {  d
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加$ H" _' s: c! _/ {4 e0 p9 E
  28. 4 u# e4 ^! z% T0 O  k2 Q2 H
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key' l! {" z, L2 B; p
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key. ?- k+ w/ j! P8 D: d
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回19 y6 @. e: O3 f# Q
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序: _+ h+ y& P7 ]
  33. sadd s1 zhangsan
    ; F; h  _5 `4 j5 s3 I
  34. sadd s1 lisi. O' W0 Y! V7 A" O) K6 R2 K! W
  35. sadd s1 wangwu! P  z# S" f2 E" ?
  36. sadd t1 yangxingyi
    ( |% m/ C5 t% `! s; q7 v
  37. sadd t1 lilei1 y# o% Q$ m% W1 ^. g" G4 h- A' U
  38. sadd t1 zhangsan
    5 D/ C; ]: X4 X7 v% h' J* `
  39. smembers s1 s1的所有集合内容) d0 C: G/ _0 I5 A+ V, H0 S
  40. sdiff s1 t1 s1有的,t1没有的,差集
    6 z8 C+ E; H( |' x/ ]) L( m
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    6 }8 ~4 g+ q8 q) {/ B9 J
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    , K; V8 ?4 I" y1 C! ~- n
  43. spop抽奖场景,返回集合里面随机的数
    ( W4 s5 ~+ d- Z9 E5 {; m
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    , g0 D7 C" H: O- ]. t/ w
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    4 g5 \# ?* v  M# b4 F5 C
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的+ U/ b, Y% b8 n8 i2 s, G: G
  47. 随机返回集合里面的一个元素,但不删除,重复中奖, k1 r" h. D/ F* B
  48. $i = $redis->srandmember('s1');echo $i;
    , W  H& C2 m& ~
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false8 h9 F7 p; V* }  o5 c8 K
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false( S. o3 k! ]' q  Y- a
  51. ' ~  s' ?& u1 I, a3 _4 |. d2 Q3 ]
  52. zadd key 2 value 有序集合0 ~# m8 p! D) r( J
  53. zadd y1 1 zhangsan;
    # ?4 O: o( U5 `
  54. zadd y1 3 lisi;
    & ]" K5 X- }; r' c: k
  55. zadd y1 2 wangwu;, s* P4 ?$ i! L7 o5 Q$ R6 w* P
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    % Q: E* x" M2 ?+ D3 |( p* l8 _2 I0 Q* P
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);, X8 j  G( ]3 |
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键8 M( L% q. G3 Q  G( a1 |
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先( V6 S" @! Q$ f; J$ j* {
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    % S: s2 r; Z. e/ C2 b$ a/ x' x
  61. 无序就scard,有序就zcard,有z没有s
    " B( @8 J4 q+ c7 J8 X; j3 }2 \& d
  62. sInterStore/ I- _' L9 y' }1 B: \2 E
  63. 求交集并将交集保存到output的集合6 {/ }2 a+ y8 F& D
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')2 ~# d; J/ }3 w$ e2 S1 [
  65. + r' U6 Y8 [2 T* w$ L
  66. Hash操作
    , I6 m, h8 `2 K0 o/ r, z
  67. hSet
    5 H' C# o* y) U* ]- {2 t
  68. $redis->hSet('h', 'key1', 'hello');
      a5 o  x' S/ i6 X* m( n4 {5 @) n
  69. 向名称为h的hash中添加元素key1—>hello
      m$ J4 [( \- q; @( S( T5 J! z
  70. 8 `  L4 k# J* h
  71. hGet
    ; ?' ]8 [' H+ k2 X  o$ g
  72. $redis->hGet('h', 'key1');6 r( R7 i# l# u, @! z, R. ^, ^, q
  73. 返回名称为h的hash中key1对应的value(hello)
    9 g$ Q4 x; c3 B* T
  74. 2 L; @) w2 W/ X5 a  {& ?( C% a) q# P4 u
  75. hLen& k& i4 g0 c; P( [
  76. $redis->hLen('h');
    2 ~% F$ ^2 v9 D5 R
  77. 返回名称为h的hash中元素个数
    $ m8 I7 w3 ]9 W

  78. , s6 U; v. v. X6 X
  79. hDel9 d7 b  u: z# [; l  c
  80. $redis->hDel('h', 'key1');
    9 z( c0 b, D0 x% u+ E" Y( j" ~
  81. 删除名称为h的hash中键为key1的域
    4 t. n( S" O1 |1 C
  82. 2 C) }1 V3 M% I. Q( B% d/ p
  83. hKeys4 {) j! D6 P& k; I3 ~% H
  84. $redis->hKeys('h');( d0 D7 ^4 M- o0 r
  85. 返回名称为key的hash中所有键8 z% n: v8 \5 ?8 C8 _6 ~$ B6 v
  86. 2 A/ \& ]3 l9 r( h/ U
  87. hVals
    . |# L) l( W+ |; b  ], Z% \. y
  88. $redis->hVals('h')
    1 O. }8 C  @! F6 u, Q: k
  89. 返回名称为h的hash中所有键对应的value
    1 n: J7 f& C: F! b8 P" r- B

  90. % y4 j+ Y" r. v0 A) B
  91. hGetAll$ w2 V- w: r' E. X2 i
  92. $redis->hGetAll('h');
    4 C3 m# ]0 U. ]' @/ Z" O) J0 q
  93. 返回名称为h的hash中所有的键(field)及其对应的value- u6 B: l! C8 m: F" R% n
  94. 7 j  `8 }( H$ `& u, A
  95. hExists, B9 T) i, h; r
  96. $redis->hExists('h', 'a');
    + J+ U$ x$ I# T& X6 @( Y1 p
  97. 名称为h的hash中是否存在键名字为a的域7 x( r. r! v3 V
  98. $ _8 d7 e7 `; `0 O5 B7 p( m
  99. hIncrBy
    ( K6 }1 j( z# V! j
  100. $redis->hIncrBy('h', 'x', 2);
    - E$ }9 N& X; f  \& x* d
  101. 将名称为h的hash中x的value增加27 y. b3 c9 ?# f& F9 |$ K
  102. * n% ?' Q( C' l, U! Z+ V
  103. hMset0 k* j# w3 v; ~  G
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    & ?  f7 q, b5 T; d8 c* e
  105. 向名称为key的hash中批量添加元素
    & P( d( Y  `& o6 U% n; ]" S% z
  106. $ ^: y+ E! @/ T3 [2 p8 q9 v, s
  107. hMGet
    / t, Z; f4 C, h. v9 m; D
  108. $redis->hmGet('h', array('field1', 'field2'));
    ; b# e1 z+ {) q- Z$ `
  109. 返回名称为h的hash中field1,field2对应的value
    # d- Q- {1 }8 j2 U
  110. $ G& r. ~+ q, G
  111. redis 操作相关( }" B5 c, C) \) G1 l* Q3 E
  112. flushDB0 ^4 C, j: T3 ~' b7 F. F
  113. 清空当前数据库
    & C: K0 @5 b( ]! v! V
  114. + _2 {% c$ x2 \2 m: P, O
  115. flushAll
    % ~, }- |+ y/ C+ ^6 z$ L, A# X
  116. 清空所有数据库( s* ?* Z9 e5 L# K6 G* Q* H4 z7 @
  117. 9 l; G: a2 H$ Q3 W' F
  118. randomKey
    6 l; b- p3 @* U0 @+ f( b8 t% a& b
  119. 随机返回key空间的一个key  w0 c+ [% y) V' C: k
  120. $key = $redis->randomKey();
    / }. _0 W  ~9 a( \9 |- e% Y+ L( D

  121. $ j- Q. Q2 N& t8 ]/ m. m' J
  122. select
    ) G; Y4 }. M( U- b9 D7 w9 {5 @* O4 C
  123. 选择一个数据库
    3 @! ]: I$ N$ f4 x/ s# b0 B6 M
  124. move
    ! [) p4 N6 v' l/ Y% X0 W
  125. 转移一个key到另外一个数据库/ o+ w- c2 t6 S
  126. $redis->select(0); // switch to DB 0
    ' r$ v% X) j1 V0 F. _% H
  127. $redis->set('x', '42'); // write 42 to x
    + X  k% |3 B, X2 p; A- k4 T
  128. $redis->move('x', 1); // move to DB 18 O5 y/ `7 S0 M& `9 J0 Y
  129. $redis->select(1); // switch to DB 1, x$ d, P1 k. T' E4 w% g
  130. $redis->get('x'); // will return 42/ k: y# ~6 l; p+ Z% l1 |. A

  131. 7 ^- s" A% E& S  }& ]/ d+ M
  132. rename, renameKey+ p& @" H* J; r
  133. 给key重命名
    " z+ }( o. l- o# X" n
  134. $redis->set('x', '42');
    . O8 C# p: C5 P
  135. $redis->rename('x', 'y');
    ' U$ a# N- P( q% L
  136. $redis->get('y'); // → 42
    4 s; V  V' ~3 P
  137. $redis->get('x'); // → `FALSE`3 Q: j* ]6 [  D/ c3 X$ _' v, b

  138. & [$ K. ^' I0 N* R- Q. C( y
  139. renameNx: u) O' I8 B+ u
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    0 `: D( B1 q5 A2 b2 ?. \
  141. * X8 w9 E) ]$ K7 @/ {- U8 B
  142. setTimeout, expire
    1 E" v* d8 M% j4 q
  143. 设定一个key的活动时间(s)
    : A) W4 ^9 i7 ^
  144. $redis->setTimeout('x', 3);
    3 L5 D5 R* s/ o0 k! `+ C
  145. 8 Z0 p0 E7 U) V: f: k
  146. expireAt' M: B0 h4 d" u+ y; c9 ^, j5 E. F& f5 M
  147. key存活到一个unix时间戳时间0 z4 l5 V2 F# ~* T6 x' d) e
  148. $redis->expireAt('x', time() + 3);. ~; K' o. ~7 x/ v/ X; F
  149. / B$ ~- x! j2 i" e  ?6 S6 \4 j2 j. u
  150. keys, getKeys; ~' c. l, Z% w
  151. 返回满足给定pattern的所有key
    1 s# l! W) _3 z& H' m* M3 ^) y
  152. $keyWithUserPrefix = $redis->keys('user*');! b0 ~/ g+ @5 Y6 \1 d9 ^

  153. ) d5 ^5 S- [7 q5 b: P) Q* K
  154. dbSize
    % E. r0 `! U7 i% e$ ^
  155. 查看现在数据库有多少key
    8 N. `! }( s& K
  156. $count = $redis->dbSize();
    + _- I: j0 l- @
  157. 6 c; K- n( ?6 u) h5 ]8 g
  158. auth. S4 C: \: c* E, F% S& I1 |
  159. 密码认证& m% i  c+ ~7 {  E* _, _
  160. $redis->auth('foobared');
    6 s' @7 w3 d( S% J( h, ]' C

  161. 7 q5 G9 d; x! F4 m7 T( @3 E6 V
  162. bgrewriteaof
    7 Z9 y5 B8 E7 @1 C/ J
  163. 使用aof来进行数据库持久化
    $ r% J* k( H. C, ~
  164. $redis->bgrewriteaof();
    / d6 b/ @( p: e- F

  165. 5 a3 @0 ]+ E9 s# ]5 q; s4 p
  166. slaveof
    & V% l( i, D% |4 q0 C# E1 n) S8 q
  167. 选择从服务器% K5 G$ i3 l+ t. ~
  168. $redis->slaveof('10.0.1.7', 6379);* J! G- n: Z& @% {
  169.   ^/ V' Q8 a6 q( N9 ^) x
  170. save' L$ P& X# w7 h1 R' n+ I
  171. 将数据同步保存到磁盘
    * I" d: T6 x+ n( b# c2 A
  172. 4 |* w8 e( S) g' M  f3 |0 W: l. t
  173. bgsave; @, J4 Z( s" M( N
  174. 将数据异步保存到磁盘) M3 M5 f6 Z& I7 \

  175. # T3 E6 s/ H7 a$ \3 O
  176. lastSave6 U3 B' z: {# R! {9 S
  177. 返回上次成功将数据保存到磁盘的Unix时戳$ ~) l6 i, ~( k/ e8 K" U) g
  178. 9 A4 W% s. P: {6 M" }
  179. info
    " R% j  X  C9 I, r* m- E% {
  180. 返回redis的版本信息等详情
    # T( `/ D% j0 L( L! D2 h- ~

  181. ( q/ f$ x9 v: i% U
  182. Redis::__construct构造函数
    & S, \* r  u8 T8 j1 j' x' z
  183. $redis = new Redis();
    ( u7 ~3 R& v0 o. @" q* r
  184. & R  ~$ q' _4 A) u3 I* d1 i9 r
  185. connect, open 链接redis服务
    , ]/ d5 v5 c( ]0 Z/ j
  186. 参数
    8 @) L& c2 g9 u% k
  187. host: string,服务地址
    ( ^5 G/ o4 T  o. x( q4 f9 r
  188. port: int,端口号
    ' Y+ A0 A8 k' q
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
      v6 L! b8 O+ y! y2 o
  190. 注: 在redis.conf中也有时间,默认为300
    % N: I) E2 ^% Q

  191. ( c  l3 Z( |8 J! H0 w2 y* U
  192. pconnect, popen 不会主动关闭的链接2 F: J$ ~  O2 C  f8 S! Z
  193. 参考上面; g+ C) |( i2 o/ T& p$ v6 A9 p! [

  194. $ M, j2 R2 n( _4 _8 `
  195. setOption 设置redis模式
    . j# T7 h  |: t' l2 d4 \& X4 G
  196. ; N: o% o& x: j; Q1 ~3 f
  197. getOption 查看redis设置的模式6 r! o8 [$ X* M

  198. 3 g# Z1 |5 o, n* @3 _
  199. ping 查看连接状态* O; ?  ?1 B3 ]
  200. 2 A; _- N/ k4 q( y
  201. get 得到某个key的值(string值)
    ; t" n% q% P6 z9 {# z' R  k
  202. 如果该key不存在,return false
    / e$ l1 T$ ?; T6 @7 p5 L- l

  203. ( [; q/ z% ~! p; [1 b6 Q
  204. set 写入key 和 value(string值)3 |, s0 q& R: U8 \, M, d
  205. 如果写入成功,return ture
    7 Z3 k# j. G7 J+ g) \
  206. / E- z% m; S! r% l/ F  h5 C1 M. p
  207. setex 带生存时间的写入值
    / i% t$ o& I  \) ]
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.8 s- d6 K* K: J6 t( o! ]

  209. , o- n% f' X0 ?3 j# N" i& E1 S1 y
  210. setnx 判断是否重复的,写入值# p" n2 M0 e5 O
  211. $redis->setnx('key', 'value');
    7 ^+ h) c8 L5 v& v
  212. $redis->setnx('key', 'value');& p# Q: G6 v/ k" e7 n$ O
  213. 2 P  K0 v- U" l9 N. f
  214. delete  删除指定key的值
    - i) ?; _4 C% o
  215. 返回已经删除key的个数(长整数). C; T! ~# s" a) F! ]" c" k
  216. $redis->delete('key1', 'key2');) H$ `+ q4 M* P* m4 H
  217. $redis->delete(array('key3', 'key4', 'key5'));5 i& v5 V1 s/ B4 @8 S8 w8 c: o
  218. ( h# k% ?7 Z* G; T9 ^6 P, ]
  219. ttl
    ( e) C1 a, B& E) y+ J* d, s! g
  220. 得到一个key的生存时间
    , H1 b! W% X! p; k. h* o/ o( ^

  221.   z" a* I0 z) O0 K1 S
  222. persist6 @8 E6 T* _" B/ @7 u1 q9 B
  223. 移除生存时间到期的key
    6 u3 N  S2 C7 N4 x% O7 h- w' u
  224. 如果key到期 true 如果不到期 false) `/ a6 _9 _! u% P2 Z* y

  225. + x  {5 _& F. Y3 K9 v; ~$ `1 a
  226. mset (redis版本1.1以上才可以用)
      c  D$ L$ l6 ]% V
  227. 同时给多个key赋值- B0 l/ a; z- Y% r. F& {; K
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));& C, l- r0 \6 L& ^+ H

  229. * I2 X( ]( a. y# r' y9 _7 i

  230. 8 ?, V6 v9 O6 l* ~

  231. $ |6 ?$ H1 B+ G( j/ }+ L
  232. multi, exec, discard  X" z8 H" {& L' G+ `
  233. 进入或者退出事务模式
    2 l8 @5 |4 ?9 A' d& |! m
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    4 f1 ~) d% Y, r  b, u
  235. Redis::MULTI:将多个操作当成一个事务执行* v) j& _  r+ Y
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证+ q! Y0 c! e: P. _
  237. discard:删除一个事务% ?. T7 w0 Y  F, i" a
  238. 返回值
    4 O& g0 e& P+ v9 |/ D3 b
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。  |+ e/ h5 V, A  y
  240. / b6 H+ U# ~" |( }  G( j: D5 i6 _
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    6 I5 d& k, x7 K7 ]- D* D
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)9 h1 J4 u) u3 O9 j; q' m. n6 A8 x
  243. unwatch  取消被这个程序监测的所有key
    % {- {8 I+ a5 O9 v+ `9 `
  244. 参数,一对key的列表; u5 A# v$ ~3 S
  245. $redis->watch('x');  }9 n  A3 e2 H7 r3 K
  246. ; P0 ~/ r) [. a$ a" m* k/ U
  247. $ret = $redis->multi() ->incr('x') ->exec();
    # O9 {3 x& e8 a: ]; A, H/ R$ C
  248. 5 l5 w* y/ R! |+ H/ r
  249. * M& p1 n) }8 n  @/ ]7 A
  250. subscribe *- s* \) Z1 t- S# M9 O1 B; M: e
  251. 方法回调。注意,该方法可能在未来里发生改变
    4 S0 J* K5 w+ _8 W; C# D' l

  252. ' ?) Q1 T: Z% k+ T3 {
  253. publish *
    ( K  i" R6 s  k5 C" Y7 @
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变8 ~# c' e: }+ N
  255. 3 I8 I& s: Y$ V0 B2 e. p+ x
  256. exists: e3 s* N8 G' R& \+ y
  257. 判断key是否存在。存在 true 不在 false" {5 y) l" X2 `0 X* N

  258. + V+ Y) w* P: O- _& F3 ?3 ?3 q
  259. incr, incrBy3 T2 l: ^$ e# y2 }- t
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ) f+ h  j# N! O2 m# b
  261. $redis->incr('key1');1 ?* D9 E- x, d- p" d
  262. $redis->incrBy('key1', 10);
    3 t: R, x' Q% A( A6 d; k

  263. ; @9 [8 K* }- J* e. t
  264. decr, decrBy
    / }: C) \2 D6 g! o
  265. 做减法,使用方法同incr$ ~  P0 z+ h& v' p
  266.   u" H. L% u, b" ]" E8 Q! ?0 i( M
  267. getMultiple
    1 s; U1 E$ h9 I5 E6 [
  268. 传参
    , S. |. r! E! d' _
  269. 由key组成的数组% ]  `1 d2 G" n" N$ P
  270. 返回参数
    ' w' T- p+ S2 w1 p# ~) Z
  271. 如果key存在返回value,不存在返回false
    . s6 Q. ?( @. S1 Y+ x
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));/ U6 I) R( k! X) |  Z2 t* o, B
  273. $redis->lRem('key1', 'A', 2);
    1 s, M4 A0 @0 r" S$ v/ V
  274. $redis->lRange('key1', 0, -1);
    : T3 B9 o8 h# m2 |

  275. 9 z9 D/ Z( s0 T+ E# j
  276. list相关操作5 ]& F( w4 z  [% x
  277. lPush* T/ E# l% W6 A; j  X/ h; F. L
  278. $redis->lPush(key, value);6 w+ _+ i$ ~7 E. f' N+ G
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    4 ]6 R6 ?5 e  W) c/ H
  280. 2 S# U1 {1 |) y4 T% N
  281. rPush
    4 T7 r# r2 W6 S
  282. $redis->rPush(key, value);) |& r& r2 a/ q- @6 x1 H3 d: y
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    " ~" q+ i& B8 N
  284.   E$ j- X( K8 s# L' q) X5 h2 e% k
  285. lPushx/rPushx
    2 I! w6 `- Y. p$ P' l. ~1 ~
  286. $redis->lPushx(key, value);
    + r! o. e: B$ T
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    4 M( F4 F8 l5 u

  288. " S* [# f: R( d0 p  M# z: |3 Y
  289. lPop/rPop6 w5 p+ a3 q, z7 f: J
  290. $redis->lPop('key');- g; T) D8 m/ M& O& \3 x
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    ( o1 |$ ~" R( S2 d6 x" z9 X
  292. , L5 d! x4 q% e$ n7 v, _& g, D
  293. blPop/brPop
    / \0 m; W2 }4 X! T3 f* E
  294. $redis->blPop('key1', 'key2', 10);6 \7 q8 c/ e9 [# d( S- u
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    $ V2 [9 u, Z" O1 E, e

  296. & }; V4 X  }% D+ \
  297. lSize
    % V8 g2 t& D: o
  298. $redis->lSize('key');
    1 S2 J  w# @4 F. n
  299. 返回名称为key的list有多少个元素" g$ }' L* v. }9 _/ Z
  300. " P3 z' T% K$ P2 f" \
  301. lIndex, lGet$ n4 e5 X; H3 \9 c
  302. $redis->lGet('key', 0);2 s# u( s" o) B# c5 t, u
  303. 返回名称为key的list中index位置的元素
    $ x( M( U2 O6 \. P3 S8 P
  304. 5 Z# R/ a8 V5 B& a
  305. lSet
    " D+ g% A3 o/ [
  306. $redis->lSet('key', 0, 'X');4 T+ M9 w! @. \
  307. 给名称为key的list中index位置的元素赋值为value0 M0 T/ ?' p! |' O! i# _* c8 ^- V
  308. % a. @2 B$ W$ S% v/ c4 K
  309. lRange, lGetRange
    4 ~: _0 w8 J- x2 S
  310. $redis->lRange('key1', 0, -1);( M: h2 [- ?$ e& o; O$ @
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)/ K8 ~9 Q: }) c3 W6 G
  312. 6 e. j% U/ Q2 d
  313. lTrim, listTrim
    # H: v1 \/ p2 T, D% f6 v- b' B
  314. $redis->lTrim('key', start, end);
    & a8 {4 U( Z( ~; }7 I
  315. 截取名称为key的list,保留start至end之间的元素0 J) K4 h4 q) P9 g" H

  316. . g" f. `! J* V& Y, L
  317. lRem, lRemove5 @1 q& O2 w0 h
  318. $redis->lRem('key', 'A', 2);3 Y% K/ u' d) s1 W* g4 O
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    , I+ v9 W3 \) c( Q

  320. 1 @7 t3 T2 Q/ ?( U' I! s
  321. lInsert
    : H9 t7 l( |( R- p
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -18 f1 Y8 \# v% {
  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');' `4 g+ y8 ]- D# g& X' r
  324. $redis->lRange('key1', 0, -1);
    . _1 b) R. o4 [# c) p+ K
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');! g" e5 z" |! r5 `3 v( C
  326. $redis->lRange('key1', 0, -1);
    4 |) H9 d6 ~6 U; j4 f
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    , a6 R9 H: L% l4 z9 P( f
  328. 4 F& }% E% }& p
  329. rpoplpush
    - F$ j( T/ f2 S7 Y7 x5 A
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    & b4 w% Q; N* Z% Q, ?
  331. $redis->delete('x', 'y');
    ; f8 N  @( e' |) C* ~3 |
  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'));
    : q6 ]* C, _$ b) D
  333. var_dump($redis->lRange('x', 0, -1));
    4 a4 |% ?" c: c& v. {& e
  334. var_dump($redis->lRange('y', 0, -1)); % s0 E. ^8 Y+ y' @

  335. 5 A' L4 {) q+ ]" o3 X9 \
  336. string(3) "abc"
    8 U( b( [* O: D4 S3 C
  337. array(1) { [0]=> string(3) "def" }
    % M6 O4 @! R$ k& F/ ^' l
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    7 r; W+ i! f" v" W
  339. , m( r( `# }6 ~: a( l9 R1 V, Q2 M
  340. SET操作相关
    % L8 j! u# `& c2 ], d2 Z
  341. sAdd! ]# C3 a; W. D+ A6 ~/ d$ @
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
      [- W9 \$ g( ?
  343. $redis->sAdd(key , value);
      H" v" F" C1 ^% }
  344. # t0 Z) Q) E7 f) Y7 r" z+ f
  345. sRem, sRemove- L# |2 p- `7 R" H6 ^4 ~) n
  346. 删除名称为key的set中的元素value
    ; h/ V6 I. p" W, A  ~/ S: e
  347. $redis->sAdd('key1' , 'set1');( E$ |# N2 w$ z& o' \: D) @
  348. $redis->sAdd('key1' , 'set2');
    $ J& n0 J9 k' i- f5 J- D
  349. $redis->sAdd('key1' , 'set3');
    ( I1 R8 S! I% H8 Q# e! u
  350. $redis->sRem('key1', 'set2');
    9 N1 H  K# ~4 v7 C) n. L  W, }
  351. ' Z8 ^- r9 n6 e2 d- J- ^5 u' J
  352. sMove
    5 Q$ \* F" e& G8 ~/ y8 D( K% s8 G
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合3 ^2 W1 A! L$ x) K: l# x
  354. $redis->sMove(seckey, dstkey, value);. ]+ @4 n" }  y+ M4 j. C

  355. . Z! {' O4 q; j! _: g& ^8 t
  356. sIsMember, sContains
    # {' w3 Y; M2 Y' C
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    + [6 v. y% d5 }+ U
  358. $redis->sIsMember(key, value);
    3 U0 t. i2 A/ I2 o0 Y8 ^. E
  359. ! s- \0 k9 p/ _3 C- R! l5 W6 H0 h
  360. sCard, sSize( K9 ~% f# }# |4 [* f
  361. 返回名称为key的set的元素个数
    8 Q7 S! M5 C# L* {# h
  362. $ ?" x% G( r$ k( _, J
  363. sPop: L8 U$ }- K9 Q
  364. 随机返回并删除名称为key的set中一个元素, Y% }* O; Z: J5 ?

  365. ' d6 e$ H2 [$ T7 L. \7 a6 Q
  366. sRandMember" }9 c' ]+ K* h, |
  367. 随机返回名称为key的set中一个元素,不删除9 `' q  Q  w9 |- \# o

  368. 1 r; p+ e% e) o5 q  Z# Y
  369. sInter
    ( m2 U; P5 x- l7 Z
  370. 求交集8 e  `# e8 o6 G1 F9 a( `

  371. " M- s. W9 c# M0 Y( ^  X- O
  372. sInterStore0 `1 A3 y( k6 \/ \2 E
  373. 求交集并将交集保存到output的集合( ]/ b4 _% q% P7 W( @0 C3 m: \% n5 M
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    . D! Y: y% l# K3 a- [8 R3 l+ T
  375. + H+ C8 q* y, \; g
  376. sUnion2 J9 _/ R3 r$ [+ C1 O  w% D9 g
  377. 求并集
    % ~2 `% W: Y% S4 l
  378. $redis->sUnion('s0', 's1', 's2');
    8 g0 e+ L  G- a' N/ [5 L5 s/ P3 X
  379. s0,s1,s2 同时求并集1 B; |, d* e3 J2 d

  380. 5 |. \; G: [* C9 b# X( S9 G. W+ E
  381. sUnionStore
    ( z) e6 D6 S  d# K' @) O; X: J& \
  382. 求并集并将并集保存到output的集合4 \3 j- @+ m2 m
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    4 |; ]4 @" y, y5 ~
  384. 6 r) p% ^: g3 o/ f2 ^
  385. sDiff
    ( o' @3 |- Q0 a  C
  386. 求差集) a/ J0 P1 Q% x

  387. 4 y; C1 b6 x( \+ B) U2 }
  388. sDiffStore
    - k7 a! U! e. G
  389. 求差集并将差集保存到output的集合
    : D8 i6 `0 J5 W9 j' d# |; p
  390. ' j. M+ V3 q0 P1 v2 C: d- k
  391. sMembers, sGetMembers. v9 a' K% p8 v, }6 s" s
  392. 返回名称为key的set的所有元素$ ], L9 [- @* h: \& i& a# a" F
  393. 0 K: r4 q. |/ Y6 ]* E2 R: f/ m
  394. sort) g8 D) q) f. k+ ~9 A9 `
  395. 排序,分页等: }- A/ J+ [0 s2 b. P% L7 ]
  396. 参数
    ; Q( R% G/ p8 {; W4 y9 G
  397. 'by' => 'some_pattern_*',# c- i( B& ?+ s' k
  398. 'limit' => array(0, 1),6 t; B) g1 ?. m( E- v6 q
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    9 V3 p. ^0 ~0 O. m2 A
  400. 'sort' => 'asc' or 'desc',$ w$ o$ Q' `/ J% t. o$ N
  401. 'alpha' => TRUE,
    6 H  w1 E+ O- R1 g5 R( `+ `, r6 X
  402. 'store' => 'external-key'8 }8 @5 J. d- a# I
  403. 例子* A6 T; n. l* Z  c0 I& `" d
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    3 G0 H+ `$ j- A* F2 F( |
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    : a& D% {) n0 N
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1# h. {% D3 Y: W" [
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    8 u3 P2 K( B. I5 v
  408.   f7 s$ {. h& n$ Q6 e0 }# _
  409. string命令
    - e4 P! e0 f% y. c( R0 X
  410. getSet6 r+ D1 W& R9 Y8 G
  411. 返回原来key中的值,并将value写入key5 @+ q6 c: e. d8 j, K+ |/ C
  412. $redis->set('x', '42');+ y/ s% f! M5 g- n. ?# l
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'* @+ ^: U7 [* h: f' Y
  414. $newValue = $redis->get('x')' // return 'lol'
    3 I6 Q( X# C6 M, e

  415. 0 P- u+ e8 B) j: |8 x
  416. append) k$ I' M) t, `; V- P* T
  417. string,名称为key的string的值在后面加上value
    7 P  k; c  }  O0 M
  418. $redis->set('key', 'value1');
    ! \0 e6 _7 S/ D
  419. $redis->append('key', 'value2');
    5 F9 e2 w& Q) S9 \7 v
  420. $redis->get('key');
    & F( \" K- J; \! |/ s/ U

  421. " G, K1 z- Q0 z+ h
  422. getRange (方法不存在)4 u7 r% R" n$ D) v7 U
  423. 返回名称为key的string中start至end之间的字符) d$ @+ ~$ k5 @* H9 j0 P. v5 X7 p- ]
  424. $redis->set('key', 'string value');% H# D8 r) L/ T" R! B8 P/ U  U
  425. $redis->getRange('key', 0, 5);
    0 H" J3 c9 h' u2 S  y
  426. $redis->getRange('key', -5, -1);
    0 O2 x$ G9 k& T; U3 a+ J1 f* A1 Q
  427. . l( b, F2 L0 ]4 q2 B; R
  428. setRange (方法不存在)7 E2 U; F8 Z+ I6 e7 u
  429. 改变key的string中start至end之间的字符为value
    " _- j' o' K# p, }4 _0 E
  430. $redis->set('key', 'Hello world');
    0 C. ?3 V3 s2 ]
  431. $redis->setRange('key', 6, "redis");5 d3 ?+ F& O2 K' g
  432. $redis->get('key');/ V# @* b% m( a% i$ R
  433. 9 [8 T0 g5 m! T; D1 ]. F
  434. strlen! t1 N9 w' S( ~. Q
  435. 得到key的string的长度
    4 E' }7 k2 {5 n/ L, J
  436. $redis->strlen('key');
    9 q" q! ]) R. `" K& b

  437. 0 W% k3 d. s" F5 ~1 `# \/ E
  438. getBit/setBit2 p- y% w$ \$ |6 C" Q5 Y+ ?
  439. 返回2进制信息; w, m& {: Y' |" c

  440. / \# a; k4 k9 Q, U
  441. zset(sorted set)操作相关
    . O9 J# b; `& T9 T; V, ]
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。( T$ O9 r- b! K$ h% i: E: n
  443. $redis->zAdd('key', 1, 'val1');
    9 ~* h( A2 e& r+ j* t
  444. $redis->zAdd('key', 0, 'val0');# C/ b4 s8 D% N3 u( ?
  445. $redis->zAdd('key', 5, 'val5');
    5 g: ?* N  d- `4 E0 o2 b: a
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    2 ~& F: {* d1 q) f

  447. 3 T7 m" ?! h% k3 V
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    5 e+ [+ t1 a: W+ r
  449. $redis->zAdd('key1', 0, 'val0');
    ' N7 D2 w, P2 \0 ?2 T/ j$ W
  450. $redis->zAdd('key1', 2, 'val2');
    , \$ H6 X$ R0 u5 V3 s
  451. $redis->zAdd('key1', 10, 'val10');
    5 ~3 y7 ~' R% [. P4 x8 _7 m
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    $ ^5 l3 r1 C" r+ Y4 L9 t' ^* ?
  453. $ |5 E- @, f8 {
  454. zDelete, zRem' \3 Y+ B' p' H4 T' u
  455. zRem(key, member) :删除名称为key的zset中的元素member
    % B' F# i& B& ]% u' q; ~5 s
  456. $redis->zAdd('key', 0, 'val0');4 h7 x8 p2 q! F1 X4 j, t
  457. $redis->zAdd('key', 2, 'val2');' Y6 |0 Z: |# Q# u+ \) G$ N
  458. $redis->zAdd('key', 10, 'val10');0 g& j' V( E3 E  Y2 |4 p' X
  459. $redis->zDelete('key', 'val2');
    7 I8 a5 R- ^! T: ]% N* E% b6 `
  460. $redis->zRange('key', 0, -1);
    ! g/ l7 p' S5 d. W9 V
  461. 6 @: U3 b9 g* B; @; B
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出* j5 {: G8 |4 [: J0 [
  463. $redis->zAdd('key', 0, 'val0');
    ' L2 e6 u4 l8 `/ z5 c
  464. $redis->zAdd('key', 2, 'val2');) P9 ?" v1 m; Y! ?
  465. $redis->zAdd('key', 10, 'val10');
    4 ?" n( Z# O5 f2 Y3 S# G1 W
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);2 E/ l+ D( q6 t0 `% U: f/ k

  467. & f! p: X# O9 J* I5 x0 |( y7 {
  468. zRangeByScore, zRevRangeByScore
    # Q  P# x5 H; B/ z6 J2 N
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));' k9 `- d! [4 t7 `( a3 ?& A; Q; Z+ m
  470. 返回名称为key的zset中score >= star且score <= end的所有元素! }" m* c) f3 w; s2 D1 v
  471. ; [1 i$ ^7 k1 v+ O9 M0 R7 |
  472. zCount
    ' \% o! G7 b6 l0 ]7 R7 F
  473. $redis->zCount(key, star, end);
    - m" D  X( A2 S9 i3 ^" h
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    / G/ h6 n% R" v# z5 ]4 }7 H
  475.   b0 C: @+ w4 C' s7 V/ |
  476. zRemRangeByScore, zDeleteRangeByScore
    : u  {! z% Z% n) R5 e
  477. $redis->zRemRangeByScore('key', star, end);  ], |" r& S) q; X) z9 ?
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    " F  v! f9 G6 I
  479. 3 d2 k. e0 N$ d& n
  480. zSize, zCard
    , I: [) u/ b5 J& W& U
  481. 返回名称为key的zset的所有元素的个数( N: X- p0 q$ n, ]4 M8 [

  482. 8 q5 l; F/ E) @3 K1 n! i$ E
  483. zScore! H$ x$ }) A+ }
  484. $redis->zScore(key, val2);
    & z: n' l$ C; B3 l/ z1 i1 K
  485. 返回名称为key的zset中元素val2的score
    ) b1 k" P. f# R+ [( q& P
  486. - S6 @$ k* ?' d3 _$ t3 Q
  487. zRank, zRevRank
    7 _9 C5 b6 J3 \: ^4 P4 {
  488. $redis->zRevRank(key, val);
    9 ]! y( o& i4 ~" y# p% E
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    % }" Y% p. q% O0 h- {! v% K

  490. $ q" E5 [: }) c
  491. zIncrBy) U, o# |0 K* k9 v/ \5 I3 c& P3 B
  492. $redis->zIncrBy('key', increment, 'member');
    5 a! a& }3 {( `
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment( t6 D6 Q/ p  h' Z
  494. 1 R5 S! I6 G7 M& h6 N
  495. zUnion/zInter
    ' w4 N0 v. y/ {6 n" i
  496. 参数  u. n  i' f4 a8 i$ W5 x3 w3 M
  497. keyOutput- t9 e9 }9 F( X% T9 r. \9 T
  498. arrayZSetKeys7 u! T8 {1 _; g6 j$ h$ X- I
  499. arrayWeights4 x) J3 j; m5 o
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    1 A+ @# u! |& r( [1 O
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    2 d# D- V5 M; r: s+ K0 E. n
复制代码
1 W( L: \, m% i* R

" ^) |2 y8 J/ i% S
$ u+ V* U9 |8 Y8 P* H+ u
& {0 ?+ a5 d" ^  o; P: [& h
作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis(); 1 L* x9 M$ {' M, r
  2. //连接redis服务器
    8 t* R( P: F2 L- E% x! p
  3. $redis->connect('127.0.0.1', '6379');
复制代码





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