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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
      \* n1 }& N) f6 g3 V% D
  2. $redis = new Redis();  
    ( Y- U: C! ^4 c  I9 H' c
  3. $redis->connect('127.0.0.1', 6379);//serverip port$ u! I, z; A2 m1 r! A2 C1 J2 z3 Y2 t
  4. $redis->auth('mypassword');//my redis password 3 k5 d6 q9 F* ]
  5. $redis ->set( "test" , "Hello World");  * g% U: h8 z! j
  6. echo $redis ->get( "test");- _) g" ?+ n% X5 E
复制代码
php操作redis函数封装
  1. /**
    2 o# `7 Q  s# E" |) B
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数8 a5 L8 }0 {) ~2 m. G
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi  z9 U' M7 d6 _) D/ m) [
  4. */
    5 @$ ]2 l- A' m. Y# F) r, J3 |
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){: F+ ]8 j. x% K* ?
  6.     if(!$key||!$value) return false;
    $ }2 a* W: n: \/ y4 K8 P, C
  7.     $host = $host?$host:getenv('REDIS_HOST');
    ! H4 R7 H, s5 [! V& h1 }
  8.     $port = $port?$port:getenv('REDIS_PORT');
    : i' T0 J( G5 e5 L! j
  9.     $redis = new Redis();
    7 N& Z4 `! O% o! H+ r/ \* v" s- k: {
  10.     $redis->connect($host, $port);$ Y0 V5 J: M  L5 L7 i2 t
  11.     $value = is_array($value)?json_encode($value):$value;
    & d8 k/ z) y' `' S: R6 |
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);) [1 y+ [5 B; |+ R1 S
  13. }
    8 x+ x) {8 W% _% Z8 A
  14. /**
    7 t6 B' q* L9 x+ O! x5 u! V7 b
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    4 `$ K- q9 p$ @+ g2 b
  16. */
    9 ]) H# \" F) K2 Z
  17. function RedisGet($key,$host='',$port=''){
      z3 j+ T/ e4 X" G; _: r! b
  18.     $redis = new Redis();
    ! q$ t$ v& K( N3 _
  19.     $host = $host?$host:getenv('REDIS_HOST');% F; n  k( K- n1 Q" O: q) q: {
  20.     $port = $port?$port:getenv('REDIS_PORT');; A8 K& k5 a6 Q1 a, M) R
  21.     $redis->connect($host, $port);9 s: e% M# [, q
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);2 H- ]8 o7 W' G) ~
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    0 `6 ~0 I8 D! g6 A" ?7 |, H
  24. }
    7 a3 c* |1 D+ x
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了# y! y7 F. u2 X% ^
  1. setex 带生存时间的写入值8 h, L( w" N9 }3 N+ z
  2. $redis->setex('key', 3600, 'value'); 7 g3 G4 q2 Y) R) `; `# s7 R8 L
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回10 c8 ?# g3 ^. Q
  4. $redis->setnx('key', 'value');1 r* _3 J3 ?4 X6 j
  5. 返回已经删除key
    3 K: t8 f( W0 J4 V, J
  6. $redis->delete('key1'); 成功返回1失败返回0. Q- ~/ I( P- D0 M2 l
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0, _9 n, y! t7 C9 ?8 X. Z
  8. 查询生存时间
    ( {% r! n! i$ @; a
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    , T. I3 W3 s  S% r. m
  10. 同时给多个key赋值,同时设置key0和key1! j6 _" Y1 n2 t
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));$ J6 x9 Q: G: X6 ^+ Z2 G
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    % g7 l. n% K& v* K$ z( Q
  13. $redis->incr('key1');
    , s, y7 i* b" d$ V! \: L3 ]% ]* g
  14. $redis->incrBy('key1', 10);
    9 x1 A9 W; ~- k+ C8 o9 N8 q- V
  15. 减法跟加法一样( d# @3 C; r5 W7 {. s9 c' z
  16. $redis->decr("key1"); 减少18 k% }' k- _# f! ^( j1 ]
  17. $redis->decrBy("key1",5) 减少5- [6 R5 H$ F) j# v$ C2 L" H! Z

  18. % \4 Q/ z- S' f. j" S* g0 b7 @
  19. list相关操作,连表操作: r! E4 g) e; }
  20. lPush5 U* m# Q6 f, C4 o! k6 P
  21. $redis->lPush("list", "888");
    $ T7 ^0 _% y+ R6 w# Z' a7 p' N
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数. V1 B; Z  m! o$ ^) s% [" r( A
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式2 g6 O9 w. p2 ?% d3 f
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素# D, o, S# l5 Z0 J( W- S/ a" w
  25. lPushx/rPushx
    , a" {* _0 v" P( x0 J: D
  26. $redis->lPushx(key, value);
    - u0 `# Z5 e# u2 {* R" I) P0 I
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ' A' W5 i$ n( o

  28. . F( r8 |8 r) G) M& k! T. z
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    , X& K5 t6 N: S4 r
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    + q2 S  _+ F' K) v1 r9 w
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    7 D2 f3 M% T1 d/ K( X
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序2 x! w' n. E1 @
  33. sadd s1 zhangsan; _& c) a( w* I6 d" c
  34. sadd s1 lisi
    : X+ k) n  i% W: b9 A0 C
  35. sadd s1 wangwu/ [" J- P6 K0 j5 s0 S$ G( O5 ?
  36. sadd t1 yangxingyi
    ) }' \8 i/ M" T( d
  37. sadd t1 lilei
    & r( L4 L/ ~. C8 r% e
  38. sadd t1 zhangsan
    ! v) d. c* i9 m% q! ~% q  `
  39. smembers s1 s1的所有集合内容
    8 D# T) S) f& f# Q  A# F
  40. sdiff s1 t1 s1有的,t1没有的,差集8 Y5 e* \2 O! v/ _6 M
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式0 L! f9 O- w0 S! g
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    4 T- T( I# g" F9 _0 r
  43. spop抽奖场景,返回集合里面随机的数+ [4 O: S4 c) Y
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了% q9 M' Y, J' w
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    # D8 n$ W4 E. C7 b, H
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    " k# E6 X# i  [$ \8 c' F! [
  47. 随机返回集合里面的一个元素,但不删除,重复中奖# L6 ~/ N. i2 s$ ^, c
  48. $i = $redis->srandmember('s1');echo $i;
      u0 v1 t) o) D+ r  d1 h3 P: [
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false1 }; s! ^: k* j$ K5 R
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false- i9 j- G4 t, h

  51. + A6 c3 [, v" M' Z
  52. zadd key 2 value 有序集合# {- ~9 u% z! D4 ?: [4 E* x
  53. zadd y1 1 zhangsan;) u8 z4 m  w( N2 V& E
  54. zadd y1 3 lisi;
    # K7 ]* M. r2 d7 H0 n$ W
  55. zadd y1 2 wangwu;, W! d! B+ k; T, ^# ~5 ?
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi$ b1 d" E7 Y* r
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    , u9 M$ m3 W: u& ~
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键* F0 g) y& q! Q  S4 n
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先! f# ^) F5 X+ }" V& q
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的8 U, X" {  \; s3 [+ X) i- D0 V
  61. 无序就scard,有序就zcard,有z没有s# d8 ~8 p/ O4 R& e/ t: V$ j
  62. sInterStore3 X6 r* t! @$ h* l& V
  63. 求交集并将交集保存到output的集合
    & f* {( w; Z& j- E
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
      }- W& z: m7 ^
  65. , i) R/ X7 `5 C$ M+ a
  66. Hash操作' _4 U# E4 V+ e1 x
  67. hSet
    3 g4 u( e% L/ _! Y+ w4 R0 Y
  68. $redis->hSet('h', 'key1', 'hello');
    + L, c" o5 V/ \
  69. 向名称为h的hash中添加元素key1—>hello$ i- F3 k9 |1 ~- o

  70. # Z2 y: w! b* c$ O
  71. hGet. Z1 f* h' l" v3 y) e
  72. $redis->hGet('h', 'key1');
    4 H& L; u* C. h# ~3 U7 R
  73. 返回名称为h的hash中key1对应的value(hello)% I' k( a4 C9 D' H' [& ~- _
  74. % U1 U0 f# d3 @' t- o  y1 n/ v* }
  75. hLen
    3 X- ~* `) n! h4 r
  76. $redis->hLen('h');+ K% F7 ~' L, T( t9 ?% F# b( Y8 Z
  77. 返回名称为h的hash中元素个数6 ^/ o5 V+ A& i* f4 @1 \: X: ]/ r
  78. ) c5 }5 o1 a- a# A% P5 n5 O
  79. hDel6 O' x! M) e( X3 m3 _8 W3 m9 ]
  80. $redis->hDel('h', 'key1');
    6 D/ u6 U2 N0 Z2 N
  81. 删除名称为h的hash中键为key1的域" I7 j3 J* @7 ]# i: M

  82. $ k. _0 L' j; c3 N1 s2 z* z
  83. hKeys1 O# M/ {3 l1 _. s% {
  84. $redis->hKeys('h');
    ' Y' z; `  C! d
  85. 返回名称为key的hash中所有键: w0 i- Z) s0 H) O6 B( u9 [" J: u1 d

  86. . m" R: H2 l2 m  ]2 K0 b" M, s
  87. hVals* T: f. ~/ _' O1 R+ w1 v' ]6 F
  88. $redis->hVals('h')  N& \) M2 z, T0 R& n+ x' O
  89. 返回名称为h的hash中所有键对应的value  T- M8 Q+ X% k6 S# i
  90. " L# r# Y' i& G1 P7 o1 v1 _
  91. hGetAll
    ' H& Z* X! F- V( Q+ `2 h
  92. $redis->hGetAll('h');( j" x  J! X( D
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    ! m) z# P2 U& y# ]4 u
  94. $ K/ Q/ f; M/ Y4 a- r9 w
  95. hExists
    + @8 R' [* l  t" h
  96. $redis->hExists('h', 'a');  s* L7 ~8 Z9 c, c+ N
  97. 名称为h的hash中是否存在键名字为a的域
    1 k% W# j. N3 x; m9 M
  98. : \5 q5 x. u4 t7 U4 n
  99. hIncrBy
    1 f- k4 `; v+ G0 S# Y# ?
  100. $redis->hIncrBy('h', 'x', 2);
    . ^4 [% z0 W8 R
  101. 将名称为h的hash中x的value增加2' W( Q+ l) V2 }5 O/ [; M
  102.   ~  {. j4 b9 h  P" B
  103. hMset$ Q. d+ h5 j4 n* @% J2 \' }
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ( i: R) t3 w2 L4 E
  105. 向名称为key的hash中批量添加元素/ v; u/ h5 g8 K; ^# q) h
  106. - Q" \/ W! Z; J) P/ N8 @
  107. hMGet5 t: i4 ^2 Z" p
  108. $redis->hmGet('h', array('field1', 'field2'));* x' J. A& k# w# |
  109. 返回名称为h的hash中field1,field2对应的value
    ) `& ~2 g7 M3 H1 L8 j+ {4 M

  110. / @3 _/ r# j0 j
  111. redis 操作相关
    - a0 k4 H0 R. w) b; c& w1 n
  112. flushDB
    ; b0 }5 q1 [0 s" v
  113. 清空当前数据库" A5 V# W  L# ~/ o2 [' c
  114. 9 R0 C) }: t+ B7 O/ i; z6 ]) {) o
  115. flushAll/ J( G, Y, J6 j& F
  116. 清空所有数据库' A, L) s$ ^2 j& I' ?. ]2 d/ v9 m

  117. / V3 o: j; Q( k) \2 Z3 {
  118. randomKey
    + O. X0 w$ N3 k' V! d4 c
  119. 随机返回key空间的一个key
    ( i" E, ?0 P! k( x  M
  120. $key = $redis->randomKey();- H4 c- m, t# y
  121. : A0 w# ~5 g6 U
  122. select! a2 ?4 R6 f4 H0 h/ b- I
  123. 选择一个数据库
    # B( {9 ]+ d  h; |9 N
  124. move
    + |8 ]( p% s* ^
  125. 转移一个key到另外一个数据库, R9 Z2 O+ s% b0 l
  126. $redis->select(0); // switch to DB 0
      M8 N; {- _3 m
  127. $redis->set('x', '42'); // write 42 to x# R( O: M1 }+ y8 a
  128. $redis->move('x', 1); // move to DB 1
    6 c8 A4 o$ G1 K
  129. $redis->select(1); // switch to DB 1. \3 H1 m. V7 [, B6 w% C' c# R
  130. $redis->get('x'); // will return 42' q* N% d# u, `% o/ O0 ~

  131. + b, ^; i, a. u: S0 S/ N7 |: c
  132. rename, renameKey) d& {4 b1 a2 q/ E8 g  @
  133. 给key重命名
    , D6 G$ H) K2 S3 O/ Y' m3 L
  134. $redis->set('x', '42');
      W, g" ]# B& s. c( X% G% x3 U
  135. $redis->rename('x', 'y');
    ! z. C3 d: b0 y' O/ J6 H6 q9 I* I
  136. $redis->get('y'); // → 424 P# M4 T, o5 R, }; L* l
  137. $redis->get('x'); // → `FALSE`  c* D; H5 j: u: ~9 M
  138. 0 o( C, L# R7 U8 ]
  139. renameNx2 O4 i, E1 k: y  `9 w3 n- O
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功# D6 d- K! T4 b$ e- X3 T4 T

  141. & X; ^% B1 e) T
  142. setTimeout, expire
    + ^2 _, b4 y3 W7 T. F1 k( h
  143. 设定一个key的活动时间(s)% g- l$ O2 U1 L- G  q! v& v
  144. $redis->setTimeout('x', 3);" K" c0 {9 h9 d' ]. @- k

  145. 6 |7 Y4 n8 d* O
  146. expireAt; P* M! |( s7 P% {9 c; h$ q
  147. key存活到一个unix时间戳时间
    7 A3 J( U' {; k, a7 n
  148. $redis->expireAt('x', time() + 3);
    - a# ]% |" ?; q3 Y
  149. ( s, x$ A  N5 H  J
  150. keys, getKeys
    ' |3 n) `; q$ c1 s( V
  151. 返回满足给定pattern的所有key
      i% B  b( i( o! ~/ ^
  152. $keyWithUserPrefix = $redis->keys('user*');; o: ?% O( [) i; o! g) W* a$ J
  153. : V6 J2 A+ b9 M, M! s) s. Y" o( I
  154. dbSize' L+ F; O( b* `1 k& X0 s
  155. 查看现在数据库有多少key5 F6 a7 `" A5 Q9 z6 q( _( k8 I
  156. $count = $redis->dbSize();
    ' p, X" @7 F; e4 b, W: ?: x
  157. 8 d! S& B/ P0 [7 Z  ]
  158. auth6 Y) q$ C* A/ H% D0 X  I* Q
  159. 密码认证
    + U2 W$ K: w) l% F
  160. $redis->auth('foobared');) O5 I! Z9 b; N+ Q

  161. & @/ s. o0 s  D8 }# r
  162. bgrewriteaof& K; `% q* }4 J1 F2 O, r
  163. 使用aof来进行数据库持久化, |9 d; |3 P( S9 ?6 F
  164. $redis->bgrewriteaof();
    6 ?2 H" m7 N' ^( P7 O/ Q

  165. . v! o( H# _* `8 r8 k0 z/ g
  166. slaveof+ Q3 S, y8 K& M- ^+ O; n
  167. 选择从服务器
    9 U. L" u, k, y3 R) W. N
  168. $redis->slaveof('10.0.1.7', 6379);5 x$ v# l$ E8 ?; {, T+ m: S
  169. * E5 _9 A: K: K' ~. D
  170. save
      [5 M4 s' `; @; m( e
  171. 将数据同步保存到磁盘
    + a* `/ H0 Z: c' [% P

  172. / I# I8 M% t5 l* I
  173. bgsave
    9 X. K" Z7 {" J# |; q
  174. 将数据异步保存到磁盘
    6 u( A2 m4 `; N# Z0 B9 X

  175. 9 U; I' I! n2 ?3 l+ G
  176. lastSave: x) O  j9 }4 p; Z0 b8 \; X2 s
  177. 返回上次成功将数据保存到磁盘的Unix时戳) l3 O8 ^9 ?2 Y
  178. # w6 e; @7 x2 e5 F# w& {5 y* C
  179. info
    ; N9 l) ~0 G! F9 S/ e
  180. 返回redis的版本信息等详情
    $ d0 v2 y, B/ {6 V3 m" y$ R
  181. , R6 U, }2 m6 Y. y' {8 N. c
  182. Redis::__construct构造函数
    ' v; M% X& A- A) ]0 w4 h" b0 W1 q: V
  183. $redis = new Redis();; M* O: c& y6 Z
  184. - q. g$ Z6 f2 V! S- w* w1 |) q; M
  185. connect, open 链接redis服务1 i( A$ z. |1 j+ w, f  I
  186. 参数
    : K  o8 i; X( A1 ]% C
  187. host: string,服务地址
    2 n' c3 o. F+ O5 X4 O! g6 ?
  188. port: int,端口号7 j  I0 o- Q" D$ H
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    : D  h4 K2 z6 P( P( Q3 o) q
  190. 注: 在redis.conf中也有时间,默认为300
    ' w6 h* E8 [, N9 u6 J$ i

  191. & |4 ^; i0 K1 g9 g
  192. pconnect, popen 不会主动关闭的链接
    & T5 N8 z$ J" ~& X5 s
  193. 参考上面
    6 ~/ c( Q- p. K2 `, y! M) z

  194. ; s' W, [+ B& Y+ f
  195. setOption 设置redis模式3 q% ~9 O  g/ H* I9 l- {
  196. ' g  B4 l3 b" n: @5 }4 s7 ?
  197. getOption 查看redis设置的模式( y+ [' p% y  T7 b% a3 i. f

  198. - b3 t8 z" D" I+ l3 f( k
  199. ping 查看连接状态# H* F/ L3 i  _% _7 i& o' v

  200. & `$ L- F* N( z, P2 B
  201. get 得到某个key的值(string值)% }7 c" i: B6 x. }/ n& e
  202. 如果该key不存在,return false7 j5 W- D7 ^" ^! _
  203. & C" p7 R2 h. W, U
  204. set 写入key 和 value(string值)) n. V3 K9 U5 \5 m; u; y
  205. 如果写入成功,return ture  W7 k6 t# i4 l0 M0 o, x2 ~
  206. ; x# |6 h- w% ]! w+ E6 L4 ?
  207. setex 带生存时间的写入值
    $ e4 h* M! g/ v' R# r  R
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    # d8 F/ p5 J# c: D1 r
  209. / l# `- u' U" G$ K! F
  210. setnx 判断是否重复的,写入值# s4 X1 F. Y9 f# V& n  E
  211. $redis->setnx('key', 'value');
    & n2 H( m% V7 e
  212. $redis->setnx('key', 'value');% C: }! y' Z7 f# H  ^( G+ J& {

  213. % V5 ~; R3 W0 W; Q6 z
  214. delete  删除指定key的值7 }& x2 A+ O1 J% y# K* f0 n
  215. 返回已经删除key的个数(长整数)
    ( }5 C; W# F( h) h6 z( x; @, i
  216. $redis->delete('key1', 'key2');
    3 x& P' {( I: l5 {9 m8 q. A. C
  217. $redis->delete(array('key3', 'key4', 'key5'));
    : V2 r. S) b6 ~

  218. / b5 g$ j! A9 w& R
  219. ttl
    , H& R  G" n: ~( x+ m+ U" x
  220. 得到一个key的生存时间% n8 N; h+ M/ l$ z
  221. 5 `- I. _$ J. g
  222. persist' a+ ]8 V; r) {  i' x) W
  223. 移除生存时间到期的key3 k% \& B6 q+ }+ v- I/ I6 q8 K1 Y
  224. 如果key到期 true 如果不到期 false
    4 w4 G7 Z. W$ ~$ t0 j

  225. 2 g! z# W& n) e0 W' S. f3 v3 I
  226. mset (redis版本1.1以上才可以用)
    6 L6 ]  j7 X4 E" t3 m! i7 A
  227. 同时给多个key赋值/ r, C9 d0 y( K: R4 T
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    & I  P! @: o, H$ X( a
  229. 7 a( N  A# g5 A$ M
  230. ( [0 I5 ~* r3 X2 J: t0 w; C4 \
  231. 3 ]8 q4 G* D& `0 F
  232. multi, exec, discard
    ' _3 M" K3 r2 I% U
  233. 进入或者退出事务模式
    0 ^: s" f' n  M' m* F8 w  {6 B
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI. b5 c5 x5 {% _1 Y- f( B) y
  235. Redis::MULTI:将多个操作当成一个事务执行
    & Z  v% I/ M2 X/ m4 G
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    # C8 o4 G. w# l" Y
  237. discard:删除一个事务
    + C5 c  Q2 f2 y
  238. 返回值2 y6 a0 X. k' Y# Z  K
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。( W* R/ \3 M6 o/ C7 S
  240. 9 i2 @2 S5 M7 w2 D
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    - F' {) _7 Q! ]
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false). J+ `# p2 d4 y$ N
  243. unwatch  取消被这个程序监测的所有key
    ! C% q; q: p2 M4 |
  244. 参数,一对key的列表' ~) n- F1 ^5 \) {% f$ c) v
  245. $redis->watch('x');/ }+ m9 d0 b% t/ l4 V, d
  246. 8 Z* o' r6 b; z% W4 s' M" M( U
  247. $ret = $redis->multi() ->incr('x') ->exec();
    0 N$ {7 F9 }  Z7 d! @' q6 ^/ H8 C4 w
  248. $ c0 X. P4 T% {: `- u3 c
  249. 3 _, P( [/ G4 m0 u( I( X8 s
  250. subscribe *  a+ y: J7 z6 {7 y0 y% T
  251. 方法回调。注意,该方法可能在未来里发生改变& _8 A6 t# e: F* D' m

  252. % _0 {6 y9 x' T4 V+ @/ ~* t
  253. publish *
    ! |5 E2 M  b5 [
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    : b% S: A/ H* D9 p2 e
  255. 4 D. R9 V* }1 ^  I& B9 s
  256. exists( D! ^. E* C& ~
  257. 判断key是否存在。存在 true 不在 false. L* A& ^$ h$ Y7 [# U$ M  S
  258. 8 K- [1 v- L8 X1 a; ?
  259. incr, incrBy
    % @+ [' `7 ^1 f4 o  p
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值! j# R$ P0 E8 ~- @( X2 `
  261. $redis->incr('key1');% r$ E6 t# A' W# U6 p8 S7 O
  262. $redis->incrBy('key1', 10);
    : I5 b$ X" d. I  }  j" ~! I' M
  263. & u$ c$ P: d' z9 i
  264. decr, decrBy9 ~, l# A1 `+ [9 U* R  L/ K3 L4 O
  265. 做减法,使用方法同incr: j( D2 X  i' Y6 g
  266. 1 m, W7 i. k/ T# d0 N0 Y1 B
  267. getMultiple9 K6 Y" d; F- Y* x& h+ @5 y
  268. 传参
    4 {" d8 U4 Y1 G' P
  269. 由key组成的数组
    8 x9 k: `" _! Q/ n! E: r3 {7 I5 h
  270. 返回参数! l  c( P5 H6 P2 Z' G
  271. 如果key存在返回value,不存在返回false8 n3 P5 t7 @/ G. q6 W: W# R% U
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ) i' w' J8 i) v; ]
  273. $redis->lRem('key1', 'A', 2);, ^( A0 W; ]& s* m+ i& h# E, w6 c
  274. $redis->lRange('key1', 0, -1);, b' g/ e4 r: p% v$ p( M: J
  275. 4 o- t2 W# @; G2 [  U
  276. list相关操作
      {( ]2 O9 ^" k# P% I
  277. lPush: J, i5 ]8 z; H8 E
  278. $redis->lPush(key, value);
    2 r: K6 d9 p( j  O! {
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    ; C; k, F6 ]" ~: F0 J! X

  280. # _, N: P8 \& y
  281. rPush
    ' A1 U; \% N( B" q. D
  282. $redis->rPush(key, value);
    5 ^" _% }+ K4 }. Q( R6 I! d: D
  283. 在名称为key的list右边(尾)添加一个值为value的 元素% J8 b. r7 q6 `1 j7 @

  284. & @/ P: g- Y* ~
  285. lPushx/rPushx, Q% u9 j9 i3 }, X" \- a
  286. $redis->lPushx(key, value);  u- b1 q4 D6 _  v
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加6 k- P, _" _9 f' J  O+ u8 R2 I

  288. " I' n  \" R, \
  289. lPop/rPop/ l% N/ O* {, @9 m
  290. $redis->lPop('key');) p: q5 h8 h9 c2 D
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    3 s/ w& q" v7 C4 ?( O
  292. 6 N! d8 N9 X  _% }5 F" r& H+ ^
  293. blPop/brPop
    3 g3 ?8 g7 j: Z
  294. $redis->blPop('key1', 'key2', 10);
    3 H8 Z- r2 [3 C) R) A  r0 d
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    " g6 J: H6 H+ s9 W+ n: K$ d: K  S

  296. 3 }) B% B* W0 C: F$ [5 p$ ~  x" t
  297. lSize2 C" S+ `& a& Z. {( i
  298. $redis->lSize('key');: ?0 Z' A( R6 I9 d
  299. 返回名称为key的list有多少个元素
    - y  L! V* t8 }  x
  300. ! O. f6 E) e( \7 P
  301. lIndex, lGet
    ' `% A8 X0 G5 G6 j& C, Z1 q8 N
  302. $redis->lGet('key', 0);
    % Z% d' d5 H/ X7 D
  303. 返回名称为key的list中index位置的元素
    7 C# n. {) }4 ]5 k# Y" K9 Y

  304. : T- G5 k1 T! S( Q' G* _9 ~9 o/ r3 w
  305. lSet
    * L, @3 w6 s  T( Y
  306. $redis->lSet('key', 0, 'X');
    , z" y/ ~. Z5 y* t$ ~! {  s
  307. 给名称为key的list中index位置的元素赋值为value
    4 z; c) U: S7 S* d' Y; J0 t6 P% s  o
  308. ; k5 H) `$ n+ K- ~1 K6 ?7 M
  309. lRange, lGetRange4 d) F2 |  z8 S' j
  310. $redis->lRange('key1', 0, -1);
    & f$ M! T6 b: t( L+ @4 l- B
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    , M% k9 N- u5 O- {" ^

  312. 9 X# i5 {9 }5 T" X
  313. lTrim, listTrim' k! ^! t: J( _3 H; y) V* Y
  314. $redis->lTrim('key', start, end);
    " {/ g- ?, Q0 Y' O" V/ D% S8 R
  315. 截取名称为key的list,保留start至end之间的元素
    6 f, j6 n" I) U$ x5 N7 `. Y

  316. ' k, g) ^- ?% ?4 `. D1 R+ O$ l
  317. lRem, lRemove( r: }2 O3 C5 V6 C, z- v
  318. $redis->lRem('key', 'A', 2);7 @9 E, G& \1 @) {
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    * Z5 P0 b* U. w$ g! o$ S1 H
  320. + `' ^2 p" d. C+ p
  321. lInsert
    + i; K3 w# D9 }. h
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    - q0 R8 K6 J1 _* [! p
  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');
    7 q$ I- c2 t6 E- y2 I& ?; D7 B: Q  b4 A! W
  324. $redis->lRange('key1', 0, -1);
    & H. g) b( m+ ^- X
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    3 S! p$ h- n0 B. t
  326. $redis->lRange('key1', 0, -1);
    ) W" |9 v5 o. B* x/ O$ N! b( m) A
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    1 M- ^! q3 Q: M/ l& y' g, W+ i
  328. 5 E6 E$ v( w7 P2 X, E
  329. rpoplpush4 D+ A; F3 Q9 s2 ]: z
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    * @. o3 I0 A- Y0 o% [0 v" [
  331. $redis->delete('x', 'y');: {3 Z1 O0 R  D1 n4 o  A
  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'));7 @2 j& |, k  ]" `4 N8 o2 ^
  333. var_dump($redis->lRange('x', 0, -1));
    % ]* Z2 F3 g! ]+ @- ?" m
  334. var_dump($redis->lRange('y', 0, -1));
      M, @0 G# ~  @  s

  335. 2 S' y( I8 F- k1 h2 t+ r
  336. string(3) "abc" 5 P- v" s; T4 I  `3 s& A4 m
  337. array(1) { [0]=> string(3) "def" } , W- d# ^1 j& d" D
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    - k% n1 f. N/ E5 p/ p5 s
  339. $ H5 P8 a0 _; Z2 o" `9 x
  340. SET操作相关
    ) i) m! Q5 ~8 X$ |, a
  341. sAdd
    2 w  d& T/ r2 G# q! G2 |
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    ! Q- P* J' f' ^
  343. $redis->sAdd(key , value);5 i7 @: j  [" D! [; n

  344. . c. X/ U) }4 ?0 c
  345. sRem, sRemove
    / s, u$ u6 `2 t7 ?3 X, J
  346. 删除名称为key的set中的元素value
    7 }, z) x( U( _% e
  347. $redis->sAdd('key1' , 'set1');' ?5 B. G" v% N1 B& V5 @/ i
  348. $redis->sAdd('key1' , 'set2');
    2 W6 l0 ]: K" _$ R. l
  349. $redis->sAdd('key1' , 'set3');7 ?9 i" S# f4 C# ?+ l
  350. $redis->sRem('key1', 'set2');
      T  ^: {; f% b' X
  351. ' E6 g" v$ X# @6 {' A2 h. {# y  Q7 r
  352. sMove
    9 E3 G- I( `6 {1 h/ [
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    $ Y8 V, j; ~1 F/ f+ @: G! @2 o( X
  354. $redis->sMove(seckey, dstkey, value);- B" ]* ]4 N1 F+ T# x1 g
  355. 4 k) `* F) x! M* Z4 h; d
  356. sIsMember, sContains+ A  Z8 a3 D9 ]6 g
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    0 E7 c, j2 R/ P9 z. ~, N3 o0 R" i! W, {
  358. $redis->sIsMember(key, value);
    , T# _; `6 P7 r' }4 r) A( h
  359. . {6 k7 m- Q' v" \; a
  360. sCard, sSize/ b$ `  S, ~4 V- U$ G/ l, ?3 _& }
  361. 返回名称为key的set的元素个数
    6 {1 P. V3 Z0 w. l, m. s# s

  362. 4 a% F  j  L* j2 w5 G, ?) ^* s
  363. sPop6 f- L& [+ Z. \# T- H1 {/ G
  364. 随机返回并删除名称为key的set中一个元素
    1 r; E' t6 S4 `" B, ~9 o! d
  365. / E/ H; R8 z& e8 V9 t
  366. sRandMember, ?+ s! K6 O3 i. {0 @7 m
  367. 随机返回名称为key的set中一个元素,不删除
    # }! W+ ^) I" b8 a1 _/ B
  368. $ o) x7 N% ?/ F* z) W' ?& P$ i0 Q
  369. sInter
    8 D3 y. F4 j5 y/ y2 J
  370. 求交集& {. R1 T, D* ]8 V: T

  371. ' T' ^. L& x7 n, s
  372. sInterStore
    ! a8 [7 E$ x1 b5 Y/ M
  373. 求交集并将交集保存到output的集合
    & Y$ U! P- C1 i* w+ j1 @# q7 _
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    0 w1 \( ^' Y0 k: X2 {; k
  375. . A/ F# R" M+ W+ \5 v' p0 c
  376. sUnion
    1 Z# K  l+ I/ d7 n' b8 |. I( U+ w
  377. 求并集1 j( X# t6 @2 \; W" O! u0 t4 z
  378. $redis->sUnion('s0', 's1', 's2');# H5 E+ ^) ^( q% [7 ?! x
  379. s0,s1,s2 同时求并集( j9 j  w* \: D9 z; ^
  380. 9 s) L4 s" T6 {6 i5 S5 v+ n* L
  381. sUnionStore
    2 t% o3 [3 a8 w4 p
  382. 求并集并将并集保存到output的集合& ?, @0 s7 L9 b/ E2 ~
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');0 c4 ^% j& @# w2 o$ w3 [4 A. V

  384. - s6 r3 \, Z7 U" M# k: Q
  385. sDiff  j: n. P% M3 t6 }5 l6 d
  386. 求差集% q3 H0 }- Y: `  A4 k

  387. ; U% V4 [+ i9 q' c3 o
  388. sDiffStore$ p# R( z* d( Z( U2 [, h5 V
  389. 求差集并将差集保存到output的集合
    ) {/ i- q* D  i& K
  390. 4 L3 D. c' D, c: W3 U  S0 t
  391. sMembers, sGetMembers/ }$ R9 [2 }8 l9 E' K, v5 ^
  392. 返回名称为key的set的所有元素, m$ t, d. F9 O. B

  393. # ?, L* N2 t6 o7 R5 g4 z
  394. sort0 n* T: a+ x* ~* b
  395. 排序,分页等
    # @$ {9 y" \( {. S- A5 W, |6 e! ]1 ]
  396. 参数
    2 D) x6 Z, u- _
  397. 'by' => 'some_pattern_*',
    - S, z; k0 z- y2 e3 l! V1 ?
  398. 'limit' => array(0, 1),+ {( ]( t5 e) F' E; T
  399. 'get' => 'some_other_pattern_*' or an array of patterns,1 w  f. h# p3 c2 g( N
  400. 'sort' => 'asc' or 'desc',
    ' l4 p1 s! d- w$ ]2 A8 E
  401. 'alpha' => TRUE,
    ' D, m! V# |- \( L& W
  402. 'store' => 'external-key'
    * A6 x, w' P0 D  w6 X- Z
  403. 例子
    2 N4 i2 u9 Y  F9 i' h, 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);
    9 c. S4 K, b+ ]- |$ V. Q3 o" s
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    ) @6 X3 }# \; N4 v, g6 ]- J- s! {- f
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
      @" C4 D) F& D$ H) j) e
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    / ~* @* j  ~. l' d' Y

  408. - h2 G* M8 {+ _0 l4 [2 i) }; l
  409. string命令& t+ @6 g" K; t1 X
  410. getSet
    ! Z# ]7 S# Y/ }) {! v: m
  411. 返回原来key中的值,并将value写入key% V8 K# |5 T4 T1 y0 c; H% b
  412. $redis->set('x', '42');
    ) p' O7 {! I0 a8 o$ q9 j( f$ C
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'# t7 O  n% s  `2 ~3 `: c
  414. $newValue = $redis->get('x')' // return 'lol'
    # N' U* B2 c% g' J
  415. 5 K1 y: E( }$ N# N7 K
  416. append
    " }' N) P+ K" f$ k! U
  417. string,名称为key的string的值在后面加上value* ^4 g0 e& @! }( d; I  u* D0 e1 ?: q
  418. $redis->set('key', 'value1');# j6 H" @* M! X) E
  419. $redis->append('key', 'value2');- Y' {# f# G: N% F8 Q; {
  420. $redis->get('key');
    4 M: W- H+ N$ x9 X3 b# y$ R5 _

  421. % l6 X) @) p# h5 \5 Y
  422. getRange (方法不存在)( L  @/ p7 Z$ Y; y3 i+ Y0 k
  423. 返回名称为key的string中start至end之间的字符6 ]6 O( k; ~6 u2 `$ I
  424. $redis->set('key', 'string value');
    2 o+ O& s0 _6 O  M9 H" \0 |
  425. $redis->getRange('key', 0, 5);. `' f; H9 J7 ]6 x0 U1 S
  426. $redis->getRange('key', -5, -1);
    / E; \8 o3 e$ S. t3 Y1 S

  427. " _, |& K1 o' T% X7 t% U
  428. setRange (方法不存在)
    4 \; l0 w5 q1 [7 c. O  o& C( p
  429. 改变key的string中start至end之间的字符为value
    ' [! u: J0 |7 B! A
  430. $redis->set('key', 'Hello world');
    , E" V: X. ]" Y( x% L1 ]+ p, r
  431. $redis->setRange('key', 6, "redis");
    ' K/ S1 [/ h! \6 v0 J8 R
  432. $redis->get('key');
    6 P. z9 k) d/ p+ {

  433. 8 p8 x/ n" F' C* x7 e
  434. strlen
    " I2 F2 p4 [) _! U
  435. 得到key的string的长度
    : O0 }3 h, U: U5 F  \
  436. $redis->strlen('key');. i9 P8 ], }9 h6 R) I: R
  437. 8 k+ E; P3 ~' J6 V! w
  438. getBit/setBit5 l( T& R! [9 Q" n, E
  439. 返回2进制信息) S7 H& B8 X# d7 B

  440. 3 b' E' y. p8 O
  441. zset(sorted set)操作相关
    , p  J  a9 J1 g
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    ; ]9 Y$ _! B& [7 u8 M! o) W
  443. $redis->zAdd('key', 1, 'val1');$ D! u' D' ]" N, t! h6 i0 U' A
  444. $redis->zAdd('key', 0, 'val0');
    . A% R5 r7 S8 [( c
  445. $redis->zAdd('key', 5, 'val5');
    ! t8 U. Z+ O; |* X: R$ V6 H
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    % n* Q! \. ^7 ~+ t; R! y( _5 D
  447. 0 F) h* Q, t  Y
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素% i! b( M7 Z8 w: m7 t. N# u  Z8 n
  449. $redis->zAdd('key1', 0, 'val0');
    5 j* F' d$ I. \
  450. $redis->zAdd('key1', 2, 'val2');
    6 }6 v; }8 t% o6 c8 l* y% H. i( T3 a
  451. $redis->zAdd('key1', 10, 'val10');
    . J& D5 x; r9 a
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    : `! T' \1 `( K- t

  453. ! e; K; [) o5 R( u4 n
  454. zDelete, zRem
    # J  B2 X, N. W8 q9 s
  455. zRem(key, member) :删除名称为key的zset中的元素member
    3 u' [3 _( I7 T$ W( Y3 r8 I
  456. $redis->zAdd('key', 0, 'val0');
    " z, n8 H4 t0 O% Z+ e  \3 z  \
  457. $redis->zAdd('key', 2, 'val2');
    ( k6 s7 Q0 ^" G$ Z- F& m+ u- ~
  458. $redis->zAdd('key', 10, 'val10');
    . g. o& L/ q6 J$ f) H, }% Z& t7 B
  459. $redis->zDelete('key', 'val2');
    " l7 E% S4 L- ?. `# i4 N
  460. $redis->zRange('key', 0, -1); & k6 K/ x5 H8 U! @0 L

  461. ; u+ S  F( O1 z& a  }5 Z
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出, f7 a5 v: b  h
  463. $redis->zAdd('key', 0, 'val0');
    0 N  M1 l, }0 ^
  464. $redis->zAdd('key', 2, 'val2');3 K$ P7 M  {( J' t* X
  465. $redis->zAdd('key', 10, 'val10');
    , d! A5 v) T8 r5 ^$ S; |
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    2 M6 Q* k. O2 X- H) p  U

  467. 9 J( g2 @) P/ ~8 j
  468. zRangeByScore, zRevRangeByScore/ Z; S5 J9 R; H, C4 ]5 a0 p5 s
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));+ Z/ t1 f" T0 P/ C5 y
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    8 D2 c* l" J5 W& ^' g% \

  471. 5 }( ~" T  }0 s9 o6 q' K
  472. zCount% |! p2 p0 I9 g& L( {9 h: R; j
  473. $redis->zCount(key, star, end);/ O5 U" ^0 M5 K; w) O8 b! Q
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数- K' g  |" V' s, l) P
  475. # C% H4 Y/ p& C; F$ i, E- ^) s
  476. zRemRangeByScore, zDeleteRangeByScore
    9 C$ @; x; P8 J8 `- H5 g+ w
  477. $redis->zRemRangeByScore('key', star, end);! Y3 t0 J+ P% S& i9 h) d
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    + x9 w. M$ p3 O  }; H+ \9 ]9 P
  479. 1 N) l4 B' F! f$ |' F8 Y
  480. zSize, zCard# S  [, i$ W+ {; E8 ~* N
  481. 返回名称为key的zset的所有元素的个数. ^4 ]8 K# F1 l$ }- s
  482. - v; \: u" t6 |: K' _/ J1 D# P
  483. zScore; \/ b( R: [6 n) `( z/ A
  484. $redis->zScore(key, val2);4 J( @2 p9 N4 O) n' ]0 B  v2 p% m
  485. 返回名称为key的zset中元素val2的score
    3 W8 G7 p# A2 y9 C  }* e' H

  486. 4 x' P' U" c  k8 E- U8 W. u, {  _9 M
  487. zRank, zRevRank  \! L" ^: S% X8 o, {
  488. $redis->zRevRank(key, val);( Q$ W2 K4 Y, u4 ~+ M9 d
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序9 e5 `; z, Y6 T6 o% I2 G

  490. . H! H* p" a9 A2 U' J
  491. zIncrBy
    ) X! ^, y1 l0 K, U) _1 `
  492. $redis->zIncrBy('key', increment, 'member');) x: m- O" D' K
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment" n( j) z1 Z( n" d

  494. 2 A. d3 }) Q( _& {- P$ G( [
  495. zUnion/zInter8 @. o) U1 g9 E9 q
  496. 参数: K: q3 ]' B+ [' a0 |; e
  497. keyOutput9 D3 \' _. n0 M& v4 a& M/ _1 L
  498. arrayZSetKeys
    3 w0 v, T/ |" {) o2 Z' r
  499. arrayWeights- V; h6 s2 w% z% {+ w
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    1 ]! r+ v" I3 h( T
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。4 B: z. j2 Q$ W: ^2 r, r
复制代码
* H4 p2 [: U) ^. ~4 y

; o& ^( a* R# r
) b$ @" o& t2 u' h' M! c; L; F# w$ P* ?0 r9 E2 z. e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    ( b: h% @$ A) v! x$ ^1 T
  2. //连接redis服务器
    ! L# ?$ B6 z* i- ^  Y$ N
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-10-18 22:31 , Processed in 0.110238 second(s), 19 queries .

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