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- E. l& d6 V/ V+ Y7 N2 p8 k6 P6 y
  2. $redis = new Redis();  
    4 K2 D7 I& e4 [
  3. $redis->connect('127.0.0.1', 6379);//serverip port. P5 ~, R9 i3 L" Z$ n0 U, \) l
  4. $redis->auth('mypassword');//my redis password
    2 m: |% t/ [6 a# Z
  5. $redis ->set( "test" , "Hello World");  
    + U% L( i2 h4 L' V" i5 o. U1 x
  6. echo $redis ->get( "test");
    1 K$ i+ G7 \) Y$ Q% _1 n, P/ G2 t* A
复制代码
php操作redis函数封装
  1. /**6 U) F, G2 r8 Z& R% U: f. x
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数0 O# T9 q* l* Y! ]
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi% Y8 X7 W: c; L9 h2 a4 Z( v
  4. */: b' K/ b8 c0 t! }7 g2 `
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    2 T7 N0 |( s% b! V) w
  6.     if(!$key||!$value) return false;
    7 l1 r+ X9 r3 y
  7.     $host = $host?$host:getenv('REDIS_HOST');
    ( c; h9 h+ d, D, I& Z
  8.     $port = $port?$port:getenv('REDIS_PORT');
    3 }' s  ^. w& V) Y; ^" V7 _$ D4 o& v
  9.     $redis = new Redis();6 I8 H9 v$ g7 d
  10.     $redis->connect($host, $port);
    & e3 [# j5 H8 ?) U* U  q/ X* C
  11.     $value = is_array($value)?json_encode($value):$value;
    , V3 l3 X" k! r/ ], Z
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);. i5 y. q8 [$ X. t4 p) J
  13. }
    0 G; {; Z$ P; O% B' C
  14. /**) c9 R- h& _4 ?# |- a
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi/ E# J, |( }# W! ^
  16. */  Y  l) Q) j( i9 J0 V: |9 d
  17. function RedisGet($key,$host='',$port=''){
    2 O, J2 i3 d: a6 P
  18.     $redis = new Redis();
    - u2 n# Y" ~/ h
  19.     $host = $host?$host:getenv('REDIS_HOST');- o/ q) K8 [0 a6 X
  20.     $port = $port?$port:getenv('REDIS_PORT');
    + \7 f* ~4 i6 y0 t" u% X# v: K" ]
  21.     $redis->connect($host, $port);
    ( H+ `! y1 q3 w4 Q
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    2 n0 G- S' H% O0 J( \6 a
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);4 R* @( ^& N4 s( E, p7 x3 h2 ]' g# g7 A
  24. }, l& F; s( s3 I! [9 t+ u9 ]) t
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
: X" K( I+ ]  J( U7 Q
  1. setex 带生存时间的写入值; @3 g; A/ ]- }- k3 `
  2. $redis->setex('key', 3600, 'value'); ; [; |/ i, R% z7 _8 N
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    $ V& O. X( E! X: a" F5 Y
  4. $redis->setnx('key', 'value');
    ; @: D$ |- a  S
  5. 返回已经删除key
    5 `9 }8 R5 {9 Y
  6. $redis->delete('key1'); 成功返回1失败返回09 n$ C1 `. i3 I
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    ' R% R7 A$ D: `
  8. 查询生存时间
    ; i2 H  [* o; M1 {& X) l0 Z
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    ' R$ i0 e: W" f# j7 r; K, a- Z9 l4 N8 r
  10. 同时给多个key赋值,同时设置key0和key1
    2 S6 U# z6 B& P) U
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    & @. c: T# D- ]$ x* b6 B
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ( Z; ^8 A+ f/ W* f
  13. $redis->incr('key1');
    7 e' d! ^0 m& l2 F, ]# v% l
  14. $redis->incrBy('key1', 10);7 r$ t- x" `1 S) V. v$ K
  15. 减法跟加法一样0 ?" i. a. c5 V8 W/ p
  16. $redis->decr("key1"); 减少16 N3 I7 y5 T1 _5 m
  17. $redis->decrBy("key1",5) 减少5
    - Y. |% ~1 ?8 g# b* p4 Y. A

  18. " e/ ^0 H6 L0 E) J
  19. list相关操作,连表操作( O6 u3 k6 P6 ]. K. Q1 b, U  q4 P
  20. lPush
    1 r) U: q' t+ p; @8 Q# r3 Y+ z
  21. $redis->lPush("list", "888");
    $ h# {; a. \: i
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数# h. d7 l: j5 |$ f% L0 c( m
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式2 r' Q2 }9 c7 h
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    2 Z! f4 p, J5 B  z0 g" Y
  25. lPushx/rPushx
    " ?) ]2 f/ c( _4 D3 B7 R6 G
  26. $redis->lPushx(key, value);
    ; F0 f7 {8 j0 ^/ `! e# m
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加/ Z$ |4 w: k. _: x# S7 i7 d
  28. % B( ^0 s$ v" U9 t
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    . ]0 g8 e+ u+ J
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key% E: }7 h. h8 e5 j
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
      g! z. P4 M* u0 N
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序" b& G- k3 {$ _  L2 ]
  33. sadd s1 zhangsan
    5 W. F; ^" \& e2 m& J5 a
  34. sadd s1 lisi
    5 `% t/ ~1 b" q0 z# x% N& A  T
  35. sadd s1 wangwu, _" \6 W* h# P) V
  36. sadd t1 yangxingyi
    3 J- c0 ^' o; b4 m- G- J  Z. H
  37. sadd t1 lilei
    & V4 k; y. C* w
  38. sadd t1 zhangsan# c# @; G% I# y; ?: z  }
  39. smembers s1 s1的所有集合内容) h. e5 b; C: Z( [' Z
  40. sdiff s1 t1 s1有的,t1没有的,差集, L& b7 l0 ~" q& V( l* g: |
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    + g+ [( y7 K6 @- A5 r# v
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    # l) w) \5 I( K" p8 |
  43. spop抽奖场景,返回集合里面随机的数
    ; T6 T7 X9 [) b! {5 {* `) ?
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    ) r7 k2 E+ I8 `0 |# U/ [- P, W
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数% O6 f) c8 x* x
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    ( n) R. Q, L4 r6 T# F2 V8 N) ?
  47. 随机返回集合里面的一个元素,但不删除,重复中奖% S: K: ?6 U$ M2 J2 R: ~9 J/ y
  48. $i = $redis->srandmember('s1');echo $i;' Z2 w% s' V9 U7 d1 ?* O
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    # L7 y: j& E4 [& M& a1 x
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    + h  l6 A# q; ]% |5 M0 }

  51. - q3 E1 x9 a5 s5 }# I8 q
  52. zadd key 2 value 有序集合
    9 }# B+ P3 W/ h' o
  53. zadd y1 1 zhangsan;3 J; P" N. E2 z
  54. zadd y1 3 lisi;
    . {% N) Q0 p+ e: [3 q
  55. zadd y1 2 wangwu;
    , p) q( ^' q: ~# v* n1 R4 M
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi5 F; V5 b; U- \5 D! i/ {
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    + W) m4 C8 ?, L. M# ~
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    / y! z2 Z) e6 o0 `' T0 G  G
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先" a9 a2 {+ o  |. {+ w
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    6 _: V8 ^" C% O, @/ V, ^
  61. 无序就scard,有序就zcard,有z没有s- _& @' i2 k5 C3 i* ]
  62. sInterStore6 y& i  p% {" s  X1 Z4 b
  63. 求交集并将交集保存到output的集合8 `* a. B- [4 v8 y% f
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')9 w: x9 L9 I( k; `, ?3 c

  65.   |/ B: \2 ?- b) C. B. B
  66. Hash操作7 ]( b2 S( ?- `) W% k
  67. hSet
    . h4 t4 |* d* ]) j0 @$ N% q
  68. $redis->hSet('h', 'key1', 'hello');" T& i: {. [5 n, `! K# Q+ E
  69. 向名称为h的hash中添加元素key1—>hello3 w5 ~/ l0 [- _! |

  70. 2 g' Y0 u" f) j3 \/ d4 j
  71. hGet1 g; k, |: J# B9 j6 z2 r2 `
  72. $redis->hGet('h', 'key1');
    0 a7 }# _# f: T: p
  73. 返回名称为h的hash中key1对应的value(hello)$ ~+ h1 s3 p: Q

  74. * L/ V5 A& M8 L. ]
  75. hLen' m1 i  J7 O9 }" g) ]9 Q
  76. $redis->hLen('h');: q. V" S5 f5 p5 U. {* p$ A) ^" v- U% @  M
  77. 返回名称为h的hash中元素个数
    / k  p  R- n8 o
  78. % Z. c1 m) A4 ]* E1 p" o
  79. hDel& F6 N2 q' ~8 |4 ?
  80. $redis->hDel('h', 'key1');1 J6 M$ c; s; m9 M
  81. 删除名称为h的hash中键为key1的域
    ; r0 [1 B3 r+ H2 K

  82. - H  F0 n3 M2 v% |; V/ S3 J9 J
  83. hKeys
    ) d, Y* S4 ~1 x" q
  84. $redis->hKeys('h');. N1 P$ i5 X2 K8 B6 S; Y7 k
  85. 返回名称为key的hash中所有键6 l) b+ o8 u0 C8 C9 V
  86. 8 q( W7 F) R! \+ }, f; l6 L: w
  87. hVals$ A, u! d( P! I8 z' i; k* G0 v
  88. $redis->hVals('h')( |+ R) |3 Q2 J
  89. 返回名称为h的hash中所有键对应的value3 L' B, ~! @$ X1 W  f2 [# V/ ^7 P( K
  90. " G% G8 P. G) h1 V& f
  91. hGetAll
    ' b7 s' `0 x& M9 V. k0 m1 [- D% T$ g
  92. $redis->hGetAll('h');
      C  E) v/ T% k7 r
  93. 返回名称为h的hash中所有的键(field)及其对应的value1 ~$ K! ^! _6 m0 p

  94. 9 {. l$ f8 n5 e( e
  95. hExists
    " v6 c! l9 @# [
  96. $redis->hExists('h', 'a');
    ) L' T0 [/ D& g$ w
  97. 名称为h的hash中是否存在键名字为a的域, j5 Q7 o- `' j% A+ m$ v! \6 t
  98. , ?% @4 y1 W8 t- M! M
  99. hIncrBy6 w9 ?9 c! F$ L7 n4 a4 E8 U9 C. [
  100. $redis->hIncrBy('h', 'x', 2);# R( T5 Z& L0 F/ g- a$ N: ^
  101. 将名称为h的hash中x的value增加2
    $ W7 E) y: ^4 V# q& r! ^. m
  102. ) f) j) s6 a- H2 X
  103. hMset
    8 G3 s& k1 P9 V$ F, f2 m
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));; o* B0 N1 D0 S- A% d
  105. 向名称为key的hash中批量添加元素
    - J) R$ n$ S- z& A% ^3 w5 b  D4 v

  106. * w2 _6 A9 C! E4 n
  107. hMGet/ V* I5 k# O6 q/ M2 ^2 c8 r3 h
  108. $redis->hmGet('h', array('field1', 'field2'));
    1 ~* B% C2 P& x- O9 n
  109. 返回名称为h的hash中field1,field2对应的value
    ; {/ |' K: ^. |1 w2 I7 ~* i

  110. : A5 M/ ]# d8 Z: f
  111. redis 操作相关
    # ~. x) t1 E6 |! B
  112. flushDB. Z) d# o+ m% e. ?" ^
  113. 清空当前数据库: u. c# i  S- J* f; d3 G3 c' j+ t
  114. , B5 E) F" c; O- n+ [. I+ }" o
  115. flushAll
    ( J: Y* `. w+ `( A  K5 J
  116. 清空所有数据库2 j' ]2 B# Y% K& \

  117. ) j. O  a2 z8 Q" g6 M
  118. randomKey1 z# N! ]  {3 |
  119. 随机返回key空间的一个key* U5 }$ R" ?- I* i+ s% }0 v* R
  120. $key = $redis->randomKey();* ]. k$ m* Z1 |3 G: J5 f4 ^

  121. ( O" q; ^2 H' ?6 A* ]' ?4 s
  122. select& p% @) a' S2 R5 t9 l9 K
  123. 选择一个数据库
    % c3 f5 T% r0 k/ F- r$ O
  124. move
    # F2 d/ R. D/ q, V' Z2 S
  125. 转移一个key到另外一个数据库" v8 s) F/ ?( z; E5 O  @& h
  126. $redis->select(0); // switch to DB 0. J, @( g( o  x. O
  127. $redis->set('x', '42'); // write 42 to x! Y% x5 i3 l* e$ m4 Q
  128. $redis->move('x', 1); // move to DB 1
    * a: u# q8 W6 C! p( g1 V
  129. $redis->select(1); // switch to DB 1  I( ^/ M. O$ }/ y6 ]
  130. $redis->get('x'); // will return 42
    % k5 E' R7 ^& i, m1 D& Z
  131. " ^8 m8 q0 y+ g, C
  132. rename, renameKey
    1 j! q  G6 c* A2 M$ y3 s7 _3 l
  133. 给key重命名
    5 r. l: @) a9 O5 M# l# j
  134. $redis->set('x', '42');7 M' e; ~* z8 z
  135. $redis->rename('x', 'y');2 Q! C% T- t7 f3 F
  136. $redis->get('y'); // → 42. e, c! ^  p3 d4 D6 N) l: R' S& v) U
  137. $redis->get('x'); // → `FALSE`
    ' `! b& a1 I# U+ u, I( V1 J
  138. 2 ]; V- ?  i$ q' d1 A
  139. renameNx$ L* W0 l* B# w% f4 G( v5 a
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    ; q3 `2 m0 }$ M4 Q$ \2 s( G4 b( n

  141. # i: n* U" C, v) e+ c' D$ ^; M: F
  142. setTimeout, expire
    5 ?' I" E! o- w5 Q* ?3 Y7 @+ F/ b
  143. 设定一个key的活动时间(s)
    4 {2 r" D8 ~4 \4 i7 R
  144. $redis->setTimeout('x', 3);1 V% ?1 k1 R1 _' V$ P& W5 R" C

  145. 9 h; ?3 u6 M0 I* h5 t* F, |: K% p- {
  146. expireAt" w- o7 _; _, r* c+ g5 g  t
  147. key存活到一个unix时间戳时间3 S5 X6 J7 m7 `
  148. $redis->expireAt('x', time() + 3);: {% r& Z" Q8 W0 q- n

  149. . m; ~+ p9 v: }. W
  150. keys, getKeys  l3 q+ w# J6 C+ E- `
  151. 返回满足给定pattern的所有key, D, m/ K# j. O1 i" h3 `. K) q* Y
  152. $keyWithUserPrefix = $redis->keys('user*');6 q1 i0 c- J: a* i) s
  153. # {7 Z9 N/ ?* m% ~
  154. dbSize- a3 O( d0 g7 \% k% i" H$ Z; V& d/ l
  155. 查看现在数据库有多少key3 h, w& q. l; M  A
  156. $count = $redis->dbSize();3 r) K$ Y7 X; g3 ~9 l4 m
  157. " `6 Z' R5 y2 r
  158. auth
    2 c; I7 ]/ R( \9 l8 c
  159. 密码认证
    & F' U, H0 F; {* @( Q3 B1 A
  160. $redis->auth('foobared');2 D$ u3 u  \6 }
  161. ) d  t8 f8 W) V6 M" f
  162. bgrewriteaof
    / L1 ~5 Z6 J8 k. a( _
  163. 使用aof来进行数据库持久化
    " K4 H! a5 y) ]# \+ ~
  164. $redis->bgrewriteaof();% m7 G5 s8 Q& p5 ]" a7 f
  165. 7 c  r* z7 Q/ ^- G
  166. slaveof
    3 v; u9 t8 [8 \4 U" K2 e
  167. 选择从服务器/ H, X3 ~2 T# w0 j4 S: b1 j
  168. $redis->slaveof('10.0.1.7', 6379);
    / A. H" o) Z" d/ \( U
  169. ( O) X6 E% j8 ^, u- ]) ~* {5 |
  170. save* ]4 q7 [$ o+ J% z. H
  171. 将数据同步保存到磁盘
    7 v( _) m/ Q% n$ e. b# {

  172. : E/ d$ q* b/ L' A" {, X5 i+ x4 p6 ~
  173. bgsave
    5 r3 t6 }# L0 {
  174. 将数据异步保存到磁盘
    0 {5 _" O! s+ `  G+ J- {3 w

  175. ( v1 Q5 J6 v. A( L9 N6 H3 n
  176. lastSave3 p+ D& ^0 |9 O8 H
  177. 返回上次成功将数据保存到磁盘的Unix时戳. f  o/ X* J' `; W7 U( K
  178. ( t5 W$ G* M& I9 u7 t
  179. info
    4 E* z: a% d; J( J
  180. 返回redis的版本信息等详情* c1 J! T7 H3 D
  181. 7 G" ]) |. H" H0 G- [
  182. Redis::__construct构造函数
    & M( o1 P# N( k( i
  183. $redis = new Redis();) ~1 m) u6 W5 }$ W3 Y

  184. * x( Z4 [+ C9 Q$ V6 x
  185. connect, open 链接redis服务
    " A5 ]6 L% f8 M0 q: V6 j
  186. 参数! J7 w$ S: W, A6 |% Q4 K( d4 X3 `
  187. host: string,服务地址& V- m& Z2 T) r" H9 b
  188. port: int,端口号7 y( b" i. J0 t. E
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)  }4 Y* o8 Y# p
  190. 注: 在redis.conf中也有时间,默认为300& e" _$ F% Q6 Z. U1 ?1 y
  191. 9 i1 Q% @% n+ U5 M: s; @. B$ F; w  O
  192. pconnect, popen 不会主动关闭的链接2 d8 T4 i  O0 X! L& T+ N. q" N. Q/ L% E
  193. 参考上面
    1 @6 v) R" z+ x& f1 r. Z' H

  194. - I$ w* \/ c& L
  195. setOption 设置redis模式$ x' z6 n' l6 i# [
  196. 9 l+ K6 W- a4 v" c8 ]& d# t
  197. getOption 查看redis设置的模式% w) o7 H- ?8 w
  198. 8 T0 c, `$ B. i4 r
  199. ping 查看连接状态
    1 t$ k' E( g! S+ P
  200. ' L6 u$ e0 m* M, n/ q! S
  201. get 得到某个key的值(string值)9 B3 W0 U# D5 t3 g
  202. 如果该key不存在,return false
    3 w$ F' z" A' a+ f0 C
  203. & s0 [; o# j" {) L, P% T9 j
  204. set 写入key 和 value(string值)
    1 f1 C- t% {3 ~. }: f5 J: h% R
  205. 如果写入成功,return ture
    ( M9 V( ~7 h. i2 ?* _

  206.   {) k& N: G5 P8 Q$ k2 y2 x% D5 Y
  207. setex 带生存时间的写入值3 e; b( l$ [( @+ r2 |
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
      j8 Q! v0 y5 w1 ]( {0 O8 g

  209. 6 \9 p8 A$ p+ |9 z
  210. setnx 判断是否重复的,写入值
    ( J! l3 g' J, D  r8 K
  211. $redis->setnx('key', 'value');
    1 e1 Q# K1 z4 z1 f5 Y9 l! {9 s
  212. $redis->setnx('key', 'value');
    - s2 g7 H1 [( s6 ?" U
  213. : q( N! P2 ?  H# Z. ]  B- U8 }
  214. delete  删除指定key的值1 t/ _( m5 {! L& D. D7 J) y7 p
  215. 返回已经删除key的个数(长整数). e& E7 n% u( d* f9 N& o. j$ g8 h
  216. $redis->delete('key1', 'key2');1 y& ~, i+ z4 v+ F/ O+ ]0 d
  217. $redis->delete(array('key3', 'key4', 'key5'));
    1 N5 J( W) |/ Y1 N( E' a
  218. 8 X9 |/ [7 Y4 D1 u7 Z
  219. ttl
    $ @% f* |" Q; z" Z
  220. 得到一个key的生存时间* }5 l8 R5 H+ d  [7 G. B

  221. / g; c# m; [0 Q, w# d
  222. persist0 X2 ?0 E! k5 L. [; x
  223. 移除生存时间到期的key
    " k. o9 e$ [9 }- k8 g8 @: @
  224. 如果key到期 true 如果不到期 false  {6 R; c- J6 x- J8 X
  225. : s4 h" V+ E2 _: W  m6 ]
  226. mset (redis版本1.1以上才可以用)
    * g; h! d; g4 L0 l
  227. 同时给多个key赋值
    0 u) {: m5 V, P4 @) _* z* d& Y
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    + S1 Q& [' q) l2 u8 R2 l( n0 ~

  229. , E# X) j3 O8 k5 B
  230. * p  H0 x0 m; @0 L
  231. + A% f0 x( \9 e! |' ?: [
  232. multi, exec, discard! H; z: u* C: f9 {2 e. e
  233. 进入或者退出事务模式, O# {: i2 N, F) Z
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    4 L* \- \( `; C, x& U8 {
  235. Redis::MULTI:将多个操作当成一个事务执行% b  x6 J, g& _) l6 |, y3 Y
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证% R/ }& ?" e" w8 [) c8 M
  237. discard:删除一个事务! ~2 _$ c* L, X$ e
  238. 返回值0 ?! ~: y  J, m* b! _
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    1 ~* R2 w0 z' Y* h6 C. v

  240. 4 P* c* E. D; h
  241. watch, unwatch (代码测试后,不能达到所说的效果)2 b$ m  M1 Z# ~' q7 E+ g3 ^$ B. T3 r
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)/ x$ M* @9 _5 @
  243. unwatch  取消被这个程序监测的所有key" _1 g- c4 D, P; s8 \
  244. 参数,一对key的列表
    . c, W: k9 `' s% p- q
  245. $redis->watch('x');
    , ~0 k" P/ x: Q

  246. + ^( q7 R5 @! S
  247. $ret = $redis->multi() ->incr('x') ->exec();
    / S8 y& d# f! ?% c8 @

  248. , f* G! ]" ?2 o# f
  249. % ~- z- B) o0 @; H# H1 y( Y
  250. subscribe *, W; e' A; h/ |  o
  251. 方法回调。注意,该方法可能在未来里发生改变
    - L+ g- y4 v/ g, B# U, d5 m
  252. 8 X( C; C8 g" _: K* W6 h% i/ O
  253. publish *7 V+ [+ |- y6 K
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变  y& ]# v5 ?+ N- g
  255. 6 V; w  r0 A/ q  }" J" `
  256. exists
    " ]9 a0 @6 D& \! w- r5 F5 c
  257. 判断key是否存在。存在 true 不在 false" D* \0 R- D1 h/ }, W

  258.   J& ]! ?  }( \  ^
  259. incr, incrBy" p  E1 `9 R7 c& f9 \( w0 _# v
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值: W3 U3 t* D8 }2 v! Y+ V
  261. $redis->incr('key1');7 f* G" h$ \% ]$ I& Q
  262. $redis->incrBy('key1', 10);
    * {' r6 {2 j( @* {( Y

  263. : q3 ]8 D6 y$ o6 G) \+ `! F
  264. decr, decrBy# ]" r9 |* V* Z' d# |9 }3 z
  265. 做减法,使用方法同incr8 O! V  ~" ]3 Q1 y# i6 A/ a
  266. 1 j. X" p5 F0 o: }8 U! K& C5 C
  267. getMultiple5 g4 a7 O6 K; s) C* X& y/ G* L8 L  }
  268. 传参
    8 e$ }0 P6 O, ?5 s( F5 m, @0 s$ @) ]
  269. 由key组成的数组
    ! o$ `. j" K' ?( v4 j$ C. L  s
  270. 返回参数
    ! U  m; \) u& g5 K$ m8 q
  271. 如果key存在返回value,不存在返回false
    ( ^1 M7 L' U" _4 E& M2 T4 D
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    % P) H) U  E$ ~) g, B
  273. $redis->lRem('key1', 'A', 2);
    1 G; _9 G: `8 E1 E! ~2 p( u8 w
  274. $redis->lRange('key1', 0, -1);
    % E3 ~) B* R$ Z3 N6 E! Y

  275. 7 }5 j' R* v. S9 h0 ?
  276. list相关操作
    $ @2 A5 R* z% d; g! Z+ {- f) ^
  277. lPush0 z9 H! ~2 O  B6 z  ]
  278. $redis->lPush(key, value);9 s4 k5 q9 n- p# o
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    + }& @: z5 K, p; M! U8 [* r
  280. 4 B# V' V! Y; Z% t
  281. rPush  t, e* v3 B( w! \+ K! U
  282. $redis->rPush(key, value);
    * j  J/ X. i8 A3 l/ W
  283. 在名称为key的list右边(尾)添加一个值为value的 元素# X6 U3 i5 m$ {) G9 `4 y
  284. 4 ^( k! l, K4 c# w- r6 z; `$ q8 `7 A
  285. lPushx/rPushx$ W% p; q% \+ B% Y  Y( [% W
  286. $redis->lPushx(key, value);
    ; E! V- `' m* x: b& v: v5 T
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加  z$ K/ f4 |. d6 E: V: J3 d
  288. 4 _2 k0 `8 M/ r% y$ u
  289. lPop/rPop8 J9 p" T/ V: w, I1 i( v+ O2 f" M
  290. $redis->lPop('key');
    ( A5 |! P2 b8 @" X0 w: S2 F1 X
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    0 q& _8 W& ^% U/ A: b5 }2 w
  292. 0 t  ]/ E6 U- x, Y  N+ g6 g
  293. blPop/brPop
      x. w: L& r9 P4 O. A) n( ^
  294. $redis->blPop('key1', 'key2', 10);
    ) t' K" ]3 p8 \% D& G4 j
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    4 }/ @: P% V5 y% P

  296. 1 S2 y: W% K6 q& V( Q
  297. lSize
    ; i# G$ `" u  {3 h  c0 D, r
  298. $redis->lSize('key');5 c7 S' U8 Z' U& V8 N$ I
  299. 返回名称为key的list有多少个元素
    0 G% @& n! B# r" ^- c! s2 \
  300. - X4 `0 A' L& k* w( {
  301. lIndex, lGet
    * N2 X/ ]1 F3 T% `% y/ _" k
  302. $redis->lGet('key', 0);! U; d, m3 k& `
  303. 返回名称为key的list中index位置的元素
    : W/ u, T2 k3 g7 E6 Y; E

  304. 5 y4 @1 C! n& q) A* Q4 X
  305. lSet
    6 P( u3 c+ B5 ~8 b  l9 a% @' d- d: c
  306. $redis->lSet('key', 0, 'X');
    1 j3 l# ]& X0 W0 E
  307. 给名称为key的list中index位置的元素赋值为value+ W0 T" @/ b3 u1 f* Z
  308. + N. M% S, i! X2 u; k$ }
  309. lRange, lGetRange' h% @3 c. B$ E2 u% G
  310. $redis->lRange('key1', 0, -1);
    * o+ g3 {/ G7 ~* T# O  q3 s5 [
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有). R: ~. K2 R: A  p

  312. ( C1 ~, S  q5 s6 \  g/ M) H
  313. lTrim, listTrim' _2 p7 r! B- A" Z: p& P( @: _
  314. $redis->lTrim('key', start, end);
    . U# I2 D5 |6 d6 H
  315. 截取名称为key的list,保留start至end之间的元素
    3 \+ T$ Y( i# Q# }# W2 Y- q

  316. ; G+ m6 E6 A. H+ i8 L5 B, r
  317. lRem, lRemove
    & g+ H# a( }0 F0 i
  318. $redis->lRem('key', 'A', 2);+ o- Z& V) X( x
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素3 I  i/ e" @* N5 o
  320. ! {  K5 t: T" b9 d3 M% }
  321. lInsert& {" d  w2 _; t
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -11 s$ ~% m( Y% |$ @! F+ l2 z, F
  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');
    " p5 f/ l  r6 q. O% ?
  324. $redis->lRange('key1', 0, -1);
    7 l* q3 z" R2 u$ f4 s
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    8 Q% e: ^- z. D7 R4 a/ r# t$ H
  326. $redis->lRange('key1', 0, -1);
    ' D2 F5 o. l- J1 @4 u4 I
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    + D7 O! F6 a8 ]2 @' O+ s

  328. + w% m# Q% }4 f+ q/ d! Z
  329. rpoplpush# _, }2 M8 G6 [/ W
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部4 j# O% ^. U6 D( E8 `
  331. $redis->delete('x', 'y');; Q: [! U* \0 E2 @. g7 x
  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'));5 m! @; L* f) e; P7 O, u
  333. var_dump($redis->lRange('x', 0, -1));
    7 |, ]# K7 x+ j& y% d; A
  334. var_dump($redis->lRange('y', 0, -1));
    * i6 z6 B! X4 {- U
  335. ! K3 H5 \, H; t+ Y5 }; A+ p' {* i
  336. string(3) "abc" 2 e4 ^- @8 k: C
  337. array(1) { [0]=> string(3) "def" } . p: M2 a3 ~4 B' S0 A6 P4 L
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }7 Y* [# F! L/ s
  339. % q( A* c+ A* V7 R% F
  340. SET操作相关
    ( _" M/ ~; e9 a* |0 b6 c
  341. sAdd
    - ?( Z6 V# ^  H
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    1 E/ d& ]/ G$ M; k$ j+ }" l2 p6 l
  343. $redis->sAdd(key , value);/ Y2 a) o4 G: E4 M: Y* D

  344. - j2 S8 f# X7 D, }1 [  C6 T( h3 R; N$ W9 }
  345. sRem, sRemove6 f  _1 R- |. j$ w6 H
  346. 删除名称为key的set中的元素value
    # X- C8 E, F0 t1 o
  347. $redis->sAdd('key1' , 'set1');
    3 y6 d% E' q& K* }. g! D: u
  348. $redis->sAdd('key1' , 'set2');
    % H( r2 ^. Q, i& q0 I9 H) u7 L  a
  349. $redis->sAdd('key1' , 'set3');: p/ g" C! ?9 q8 i
  350. $redis->sRem('key1', 'set2');
    0 Y' Q8 q( s: n& h* _
  351. & u% d" w2 M9 t! p1 n$ `+ c
  352. sMove
    ) r: I+ R* x- R0 V
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合5 t3 A' u& X* y3 g! {. u
  354. $redis->sMove(seckey, dstkey, value);
    : c! p% R2 Q/ V

  355. & s2 G3 z0 S) Q' g% C( L) e+ p4 h
  356. sIsMember, sContains, E7 d7 w9 z% o4 u& n/ [# _
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false- X+ J' C2 `) q0 L3 X
  358. $redis->sIsMember(key, value);
    4 D. z1 r: Q/ A  U, ?4 |

  359. ' E  P/ D+ O$ ]
  360. sCard, sSize1 }, p0 g9 l9 z% z. Y* R2 z- y
  361. 返回名称为key的set的元素个数/ i1 Y' z6 ~  J6 p* L& q7 l3 c

  362. ; T/ Q* z; B) o, u7 f6 S& f4 V
  363. sPop! a0 Q. i' y3 ]
  364. 随机返回并删除名称为key的set中一个元素" `: o' k6 F* ]3 s5 |2 r1 u
  365. : ]2 ?# B0 q7 N
  366. sRandMember7 t/ K, a# L% e, i0 [
  367. 随机返回名称为key的set中一个元素,不删除
    . \7 ^+ m& \" `( h# ?! g6 S; ?

  368. % a# _# d5 _6 p0 i
  369. sInter4 J( x8 F0 V% h# I5 x% X- a/ k+ t
  370. 求交集
    ! W& P3 r. F8 }# [3 h. _
  371. ) E5 |+ `3 ~4 W& \# w' n+ [) v
  372. sInterStore
    ) s. z7 l7 @: J0 R( o8 l3 q
  373. 求交集并将交集保存到output的集合
    # ~$ h4 E5 T( h
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    4 @' @+ k* z8 D9 I, S  N8 g% \: G

  375. ) L' v, V8 y3 |# L. r
  376. sUnion3 i; H4 k" a( u% C2 z- U! N
  377. 求并集/ H3 V# z# z% f: k; D8 B
  378. $redis->sUnion('s0', 's1', 's2');
    8 e+ a" t. z; h/ |' I4 L, V
  379. s0,s1,s2 同时求并集
    & c4 M5 z/ A" ^3 v1 u0 |! Y
  380. . ?0 ~. T* \- U( D. ?/ I! h( F
  381. sUnionStore
    ' t/ J  `" k3 r9 c- \# ], P- D4 w+ G
  382. 求并集并将并集保存到output的集合
    + r8 g# P, i6 d' F6 V; g
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    # G9 K4 M. b5 A3 Z. u7 v' M+ w
  384. + h2 |4 x9 h5 X: L
  385. sDiff+ J! }( C6 `: A/ f7 l; ~$ g9 t
  386. 求差集
    1 T1 u% R; q6 F  S+ k2 i

  387. % k9 B( k$ M6 I) Z) f: \2 {$ ~! h
  388. sDiffStore) u5 b7 |8 |- J9 d# l+ l* Z
  389. 求差集并将差集保存到output的集合4 e- ]( R; _( B" D# u
  390. ! \1 _( k2 h2 F, `$ C
  391. sMembers, sGetMembers
    7 j; @2 m) f( W- z+ F- _; p* n
  392. 返回名称为key的set的所有元素
    ; e* M; t/ ]/ ]

  393. * ^, }0 \  e; _
  394. sort
    9 ?$ ]  V! W# H( |5 z% v
  395. 排序,分页等
    ( |9 W) _: n# J( A
  396. 参数
    2 y, x5 w7 S! b; m5 z5 D# T! a
  397. 'by' => 'some_pattern_*',
    6 z; s2 Z2 q4 s2 f, `- `9 t$ O
  398. 'limit' => array(0, 1),4 |2 l8 ^0 Q& W! R
  399. 'get' => 'some_other_pattern_*' or an array of patterns,; F$ M/ R) w. r0 Y/ [. u6 `
  400. 'sort' => 'asc' or 'desc',- k. |# l8 a) [0 k
  401. 'alpha' => TRUE,; t8 z. l# f1 Z2 u
  402. 'store' => 'external-key'8 g$ ]1 o. H, b5 j8 K
  403. 例子
    " V& @0 d% y6 K4 t: |% 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);2 B  g/ b. B5 l# }9 `( n9 j/ k7 [9 S
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    - V+ C8 d/ {" g% \0 z
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    ! a9 e: _8 k+ o% R
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5- D$ a- ]+ ~% t6 {( f

  408. ; p2 I1 @) Z9 t$ ^
  409. string命令* D. r/ Z) x: A9 d) L% t9 O
  410. getSet) D+ P* D% ?+ C1 j
  411. 返回原来key中的值,并将value写入key
    : M+ n4 ?) I) C0 \' @
  412. $redis->set('x', '42');
    % E1 P; x2 {' G& l, ^  K0 P  K
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    / N9 h: S1 M! x5 w
  414. $newValue = $redis->get('x')' // return 'lol'  E5 N) v) E8 k
  415. " Y# Z! H9 Y- Z0 W. L" b) R) v
  416. append2 y4 l! Q; D9 B' _2 D5 A
  417. string,名称为key的string的值在后面加上value2 w7 z5 v2 }3 z" {. n% J$ i
  418. $redis->set('key', 'value1');
    " p9 G8 ~! W  l/ n: R& _0 Q( j
  419. $redis->append('key', 'value2');5 B, S1 q' _- M9 ^7 a- [; T) `
  420. $redis->get('key');7 Y# z! C( x3 i* z" x! m( G

  421.   e/ S3 R, I$ b& i
  422. getRange (方法不存在)2 G& v+ S; [! k8 y4 J5 |& L
  423. 返回名称为key的string中start至end之间的字符
    ) c* r, X# I2 y/ @; d
  424. $redis->set('key', 'string value');
    ) l1 M" v9 M7 O
  425. $redis->getRange('key', 0, 5);
    6 g) E: _' u, r5 m
  426. $redis->getRange('key', -5, -1);& M  D4 K) ^; Y* ]& P: S

  427. ' ~0 \$ ?2 Z4 Z+ ]' d8 g- V) K. a
  428. setRange (方法不存在)
    % o* k+ F- q5 n# [; x
  429. 改变key的string中start至end之间的字符为value
    : U6 a' w/ }% Z/ |7 I- y0 [* V. p& L
  430. $redis->set('key', 'Hello world');$ ?) ~! D8 d/ H5 z
  431. $redis->setRange('key', 6, "redis");
    8 Q: z9 M* K% a
  432. $redis->get('key');3 p1 X0 k) X+ ~) T
  433. 6 ^8 Y6 B; A2 {# O; @# ^$ ~
  434. strlen
    ( l7 w4 E, Q) p9 [, b$ S$ F
  435. 得到key的string的长度
    1 H" [& `, {8 {/ I0 ~$ j
  436. $redis->strlen('key');/ r+ F' T; W) J# R4 F2 p

  437. 1 `( {3 D, F' e9 z- o; i
  438. getBit/setBit9 q& N5 C8 U; B. Q* E+ x& O
  439. 返回2进制信息* G2 |: e2 v. i5 |+ t( c$ ?1 N
  440. * n8 `4 d0 _$ x; O; l2 u3 |6 o
  441. zset(sorted set)操作相关$ ?6 a' E& m. g# y
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    5 f# |; ~7 Z% M& t, _- D) d
  443. $redis->zAdd('key', 1, 'val1');7 }7 R! F" s: s0 d
  444. $redis->zAdd('key', 0, 'val0');
    4 ]3 t5 Z7 b- H' c) C
  445. $redis->zAdd('key', 5, 'val5');
    / e' u# @, F9 u. [  t1 n
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)/ X% P0 a: i" q! s4 s) Z
  447. 1 d* \: s2 V( u
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    3 l# z  F, U6 E' _- ~, e
  449. $redis->zAdd('key1', 0, 'val0');: z2 Y/ R3 D- z  d7 x
  450. $redis->zAdd('key1', 2, 'val2');  T& K' {) i& x  `
  451. $redis->zAdd('key1', 10, 'val10');
    . u3 d; V* p% A% o
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);& t" z$ I0 [  C" c( x8 g: L
  453. 0 Z1 U, V' i6 d. l' q7 t
  454. zDelete, zRem
    2 c' U/ j6 L2 m; ]) \' ]
  455. zRem(key, member) :删除名称为key的zset中的元素member0 @* }7 D. X2 x0 R! }5 c5 O' m- @
  456. $redis->zAdd('key', 0, 'val0');; O& }, z& Z% |& I" _5 M
  457. $redis->zAdd('key', 2, 'val2');
    , D' S' c, ^) f' m8 V$ {3 P
  458. $redis->zAdd('key', 10, 'val10');. m* X, x  i0 d4 X
  459. $redis->zDelete('key', 'val2');
    3 @/ R0 H. w) P7 t" t1 j) e
  460. $redis->zRange('key', 0, -1); ( w: {% T# s1 B3 _6 ?6 T

  461.   R3 \2 E4 ?" ?& G, ^
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出5 R. W; F4 J" f% Z; _, Q
  463. $redis->zAdd('key', 0, 'val0');+ q' ]  G9 F, Z; }' h  d
  464. $redis->zAdd('key', 2, 'val2');
    6 @' }- j7 t$ {2 y8 I$ b* S/ A
  465. $redis->zAdd('key', 10, 'val10');
    9 V# E: s  v/ d  D6 ]
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    ) y7 N5 U; L: r: w; f

  467. 0 @- n9 T' V: S  G' M
  468. zRangeByScore, zRevRangeByScore
    : P* t0 H5 i" h! ?" q0 m- j
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));4 ^* A9 c+ F0 N1 T0 g+ g
  470. 返回名称为key的zset中score >= star且score <= end的所有元素4 R# v9 c. Y; _9 y; H" P

  471. 7 n- u5 B. `; _9 G+ A
  472. zCount
    7 R2 T3 J# }8 q, ^1 L2 }) N/ x
  473. $redis->zCount(key, star, end);: K4 H! l  x$ p& I, H& u- ]  m
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    2 H5 T. S# w7 h9 M2 `# w# {
  475. * \* t  I1 R9 F. d
  476. zRemRangeByScore, zDeleteRangeByScore- i- |' S6 @8 y$ V7 U& I
  477. $redis->zRemRangeByScore('key', star, end);  J2 y* j! n+ h+ u# {8 \5 b& K
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数2 M/ H  |8 h( e- w! r# }( f% w
  479. 0 |8 n" Q9 ?0 c/ [6 v3 N
  480. zSize, zCard
    ( h9 z4 z* ]& }& h3 j
  481. 返回名称为key的zset的所有元素的个数- a" p9 W  r; Y& [
  482. , m+ @$ @( v$ X: A
  483. zScore
    * h6 B; a5 W- d7 y. t
  484. $redis->zScore(key, val2);
    * f- p: }0 c: i4 z
  485. 返回名称为key的zset中元素val2的score3 ~% K7 t9 {5 S' p9 j* Q

  486. ' G2 ?2 m8 k6 U  D3 }0 ~
  487. zRank, zRevRank
    * n9 q. p- ^* V7 a
  488. $redis->zRevRank(key, val);
    ' i: c6 ~  P4 U$ n4 \! N
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    / c# e' ]7 b1 D# z7 ^. E9 ^
  490. ) p7 s  M8 W6 y% r2 g! T8 j
  491. zIncrBy- O6 c9 c9 K# F. w/ ^+ j8 U4 X
  492. $redis->zIncrBy('key', increment, 'member');! e, b/ Y0 ~: p  U8 C
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    + o) y2 S$ d4 F' v6 z5 T5 R- H

  494. 3 [- U% N/ g) G
  495. zUnion/zInter
    ; U3 R) C( w) Y. D/ W  f
  496. 参数
    + g5 K% \. b) N/ l, A
  497. keyOutput& |' ]; F+ d6 H8 F+ y% m
  498. arrayZSetKeys
    ) A$ W7 e% q) U! w9 W
  499. arrayWeights
    8 Y. `+ J) x% P& I9 h
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    4 A' L) u) U* \) R4 E; b
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。7 X. A% R2 T; f# q2 h
复制代码

% ?; X1 m2 |8 E9 g! Y- u: L6 }
8 }/ d% ~( F% C( r, p7 J2 b( F/ j# ]
( Y/ z( D- O- G* ]) L/ s( S

作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis();
    7 X- z5 e, x, Z2 c  i' F2 ]
  2. //连接redis服务器
    ! I" m/ t& r( b, Y' o9 N% l2 y( j& ^1 |
  3. $redis->connect('127.0.0.1', '6379');
复制代码





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