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
    5 G6 L6 f; [! {
  2. $redis = new Redis();  
    $ w) j' ^( \& t( [
  3. $redis->connect('127.0.0.1', 6379);//serverip port; h2 _8 f+ M9 }6 [4 [8 N+ e
  4. $redis->auth('mypassword');//my redis password 6 [0 E3 y5 U$ g& }' J
  5. $redis ->set( "test" , "Hello World");  " @+ k& B* W* L4 V
  6. echo $redis ->get( "test");9 z) S: Y; ]/ _! J5 r* t. u# w9 v1 `7 C
复制代码
php操作redis函数封装
  1. /**
    2 |! V9 @3 z# X7 m, |/ U* M
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    1 D3 `0 X) q0 X
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi- \1 g+ u5 N! ^' K. `
  4. */  m% A% d2 S8 s/ T6 l& g0 {
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){8 m0 n& g9 E2 T  F# R0 s
  6.     if(!$key||!$value) return false;
    ) C: l& e2 r& b( t
  7.     $host = $host?$host:getenv('REDIS_HOST');5 G. T# L6 e- V) A
  8.     $port = $port?$port:getenv('REDIS_PORT');' S6 F% l2 t# }7 a% U4 r
  9.     $redis = new Redis();6 J, b' i  p. a+ `% _( C7 ?+ h1 a
  10.     $redis->connect($host, $port);
    4 l# w* V& ]; H. T  ~
  11.     $value = is_array($value)?json_encode($value):$value;
    , u) F' A" ]% ~2 K4 o4 {* T
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    . G# @- v+ U+ j% q
  13. }
    3 ^. l3 h* N; O# m8 ]8 Z
  14. /**
    2 H  a$ e2 b2 _+ ?7 A  ~
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    8 O, u4 e8 ~  L5 Y0 M+ X/ X
  16. */% D" i0 P0 L. X( Q7 R7 \4 r
  17. function RedisGet($key,$host='',$port=''){5 P& k' A4 }4 R  n! G3 t" i8 p; j
  18.     $redis = new Redis();
    * @: K$ o: G) N& ~1 N
  19.     $host = $host?$host:getenv('REDIS_HOST');1 U( m/ {9 n8 i# o% l
  20.     $port = $port?$port:getenv('REDIS_PORT');
    # |2 [( y* G$ p4 Z8 ^4 [
  21.     $redis->connect($host, $port);
    3 c3 ~3 [2 }& \0 V; C
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    " {9 E$ T# ?  j" f3 D' {
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    3 v) A  E2 q7 a
  24. }
    1 \- T8 {% ]$ u( W- I3 m
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了3 }5 H1 Z/ {# J8 ^0 h
  1. setex 带生存时间的写入值
      z( Y# C! z. L2 A: y6 x8 _0 S
  2. $redis->setex('key', 3600, 'value');
    3 b6 r$ m5 d" ?4 U, S' n
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    9 W" c3 e. ~2 t9 S7 A5 g& ]4 m
  4. $redis->setnx('key', 'value');- [4 \8 f/ ?8 I) r6 n
  5. 返回已经删除key
    " k) P6 n& R+ l4 \
  6. $redis->delete('key1'); 成功返回1失败返回0
    9 `' z; e$ r: i& Q( x
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回02 {$ `! v9 U" t. k/ x
  8. 查询生存时间
    1 S* ]! I7 `5 t) ~3 s$ ?6 F
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)  r" T+ Q0 x& v$ d+ d, s
  10. 同时给多个key赋值,同时设置key0和key1
    9 ?, w; Q' \$ r0 t% c) }/ e* ~
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));: V; h1 N0 X6 ^$ K9 D! X
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值" L& B/ H2 b. D7 p) v5 d
  13. $redis->incr('key1');
    ; Y& |; J2 Q" S  f- f& ?7 v
  14. $redis->incrBy('key1', 10);
    4 v" ~' Z# l9 n* c; }8 ]- C4 S
  15. 减法跟加法一样
    " A: S0 b( c; r$ B* G
  16. $redis->decr("key1"); 减少1
    9 v8 O7 y) Y' F# ?# p
  17. $redis->decrBy("key1",5) 减少5, D. m: \# Q/ U& C
  18. , K+ P  N8 z2 h
  19. list相关操作,连表操作
    ) e7 _4 H8 Y  d* W" [, a
  20. lPush* J9 V7 z2 X8 \0 R0 \' A7 |. s
  21. $redis->lPush("list", "888");
    % T* r* j' S5 K) R
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数) {4 [8 B$ x' q" k8 C
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    5 }+ A( u# N# U3 S. F# g: P" r
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    3 k- c( j3 k* R( W
  25. lPushx/rPushx& ^8 z' Y$ q+ a3 w: e2 |
  26. $redis->lPushx(key, value);
    " j) e2 L- h# P# P
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加5 `6 P' r$ U+ u( S; g( V

  28. + S+ S; {! S+ S; T/ i
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    ' s2 b  l8 w& a. u
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    $ n1 e+ I+ h. }4 H2 j  i; e
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    9 c# x8 T! a) i. A
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序% D2 j. c: w9 ]/ H
  33. sadd s1 zhangsan& C' W/ I; l- d: h9 k
  34. sadd s1 lisi: S2 a8 K/ ^7 j) r0 {
  35. sadd s1 wangwu/ M8 c$ w+ |+ c3 D( q# e& h6 S
  36. sadd t1 yangxingyi9 G1 Z7 f/ k9 g
  37. sadd t1 lilei, l3 @+ r( M* {2 Z  q& a
  38. sadd t1 zhangsan/ w5 X5 |" Y4 h' v
  39. smembers s1 s1的所有集合内容2 O6 N; W$ d0 P6 Y, G
  40. sdiff s1 t1 s1有的,t1没有的,差集
    : p5 k) }# Z) H$ R% f! c
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    & g! D; U- v  S0 e
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    1 G$ |( o+ X( v# o# ?7 S
  43. spop抽奖场景,返回集合里面随机的数
    & H7 \/ g! n+ C5 h# ~/ s0 S
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    4 b+ P5 o" w) V  X
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数# [6 x. _6 J0 L" q; ~
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的9 H( H9 X' L& b( m- v% c: R2 d- }
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    0 q7 L( X" _0 w& ^2 B. t; n% y
  48. $i = $redis->srandmember('s1');echo $i;$ ^  }3 l( g1 \* Y
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    * o  E! X2 s/ `- K, r
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    - x" T. w/ F) g/ I" G

  51. 0 O6 {- [) w: I; I6 q9 Y
  52. zadd key 2 value 有序集合
    9 m- I6 ?# O! V8 K3 O: y, L6 d. h/ T
  53. zadd y1 1 zhangsan;
    6 J$ H/ [! k2 L4 v' g% s4 b
  54. zadd y1 3 lisi;1 O, o5 z, u6 H, B- z
  55. zadd y1 2 wangwu;
    ; Y4 h0 W+ Y0 w' I5 L" ?! @- b. @
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi( R) H) N- g/ l. Z. n2 r
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);% F; p# N. g' W( I) K
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    4 T: ^+ _0 n2 [8 c1 O
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    - D1 w" M# p% H% r1 H
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的8 a% b- u% h* y. O9 ~! B
  61. 无序就scard,有序就zcard,有z没有s/ A* X8 p6 ?6 t
  62. sInterStore! O0 x' p5 F( r0 c' C5 v
  63. 求交集并将交集保存到output的集合
    . Q. H' J4 W4 P! L+ R. k: l
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    6 g- x* R5 z7 s4 K- M! g4 v
  65. ( G/ a% l) }7 E2 G5 v
  66. Hash操作
      E$ D( A$ B" J6 k% q5 B' G
  67. hSet0 j7 M0 C- ~5 B* X; b1 z/ \8 F! h
  68. $redis->hSet('h', 'key1', 'hello');6 f0 {' B, I/ m/ `; \
  69. 向名称为h的hash中添加元素key1—>hello
    ( T; B% f  [# x. G2 D- l

  70. 4 D' m* v5 n3 c: F% S# Z1 E
  71. hGet! z/ J! w( x) J
  72. $redis->hGet('h', 'key1');
    6 P4 L) G8 c& T6 t6 e4 J/ q% k
  73. 返回名称为h的hash中key1对应的value(hello)
    , k4 Q* L- S+ ?" a
  74. - w. R8 c  e, M( p. h. r) t6 a
  75. hLen
    ( L5 I/ E0 c  m$ n$ J, b- x
  76. $redis->hLen('h');
    8 a4 K: N( Q, v3 z. K) l) k0 S
  77. 返回名称为h的hash中元素个数
    * s& K+ _0 h0 m: q8 a; f

  78. 0 Z* ]8 n' W* K
  79. hDel
    8 ?7 ~1 I7 A) |& t! z, A
  80. $redis->hDel('h', 'key1');
    $ j; P3 J& a' o# ]
  81. 删除名称为h的hash中键为key1的域! U8 ^4 E. ~$ K
  82. & b0 o: ]9 K, r% ?# I$ Q5 {  g
  83. hKeys3 {) i0 _2 R& d) W( D2 n6 c
  84. $redis->hKeys('h');7 t1 ~5 X/ e' B9 H/ B! P, W# Y
  85. 返回名称为key的hash中所有键. l2 ?" ^6 E# f
  86. 2 K! b9 r' }3 t; o* K2 b
  87. hVals
    0 c# E2 \& [8 y/ J$ P
  88. $redis->hVals('h')
    4 `- i4 e- z' W" b# B7 V+ l# b
  89. 返回名称为h的hash中所有键对应的value
    + Z7 u4 y3 a! h% |5 ?
  90. 7 p( I) U8 g  M# D5 ]! B2 [
  91. hGetAll* e, D: v: u3 Y
  92. $redis->hGetAll('h');
    & R% \" y  Z1 B% C( C) n) |) _
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    + E; Z7 \$ Q+ r) E7 a' ~% m( F$ w
  94.   J+ \6 d! a- h0 m0 n& J
  95. hExists5 F# y, ^$ r0 Q( L6 O# A7 K7 w
  96. $redis->hExists('h', 'a');
    $ u' T) U$ s3 E8 Q7 r  z
  97. 名称为h的hash中是否存在键名字为a的域6 M5 P  ^# h$ A$ M6 F) N, T! R( u4 D

  98. . O. H& B2 m6 H8 t
  99. hIncrBy
    7 L) l% g2 |( J. }) `
  100. $redis->hIncrBy('h', 'x', 2);
    8 v1 H6 b" [4 {; K! W
  101. 将名称为h的hash中x的value增加25 f$ H4 V% `; w- p# Z% h

  102. % z( j; p8 E! u" G. P0 P) J0 i
  103. hMset
    * R% f1 y) F/ \
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    $ H1 p1 u7 _- ]+ i5 `0 K6 j
  105. 向名称为key的hash中批量添加元素
    7 M) N. A$ H) Z: [7 H% D6 L9 p6 K- o2 e
  106.   Z# z5 v4 U$ ^) K  \
  107. hMGet
    " @: u4 E3 f! a( K/ U# c
  108. $redis->hmGet('h', array('field1', 'field2'));
    ) y+ [. u3 X# [7 w+ t
  109. 返回名称为h的hash中field1,field2对应的value
    4 X3 o' c0 E1 N' `

  110. + H* V; H1 p8 u7 Q/ p4 {+ K
  111. redis 操作相关. T2 G$ v# J, P" y# l0 {0 h* m
  112. flushDB) P0 z2 F7 W0 R3 a6 j$ |% U5 ^$ r
  113. 清空当前数据库7 P0 \9 k. n! R1 _' J( h3 W

  114. " b8 F' Z5 q- E  {
  115. flushAll
    : v' r. ^4 ?# L# S2 R5 J6 q9 ~
  116. 清空所有数据库
    2 u' l8 J) x2 a0 _
  117. ) Q9 Z9 B& T+ r3 n! O5 N
  118. randomKey1 n  C4 E3 ^' }
  119. 随机返回key空间的一个key
    ) \* I3 _: I: D8 I
  120. $key = $redis->randomKey();
    ! [! b* K* e9 m' s
  121. & U+ l$ u, a1 }& S- Y& g
  122. select
    0 M9 `9 J. F" E; M
  123. 选择一个数据库  g: j' c4 e. D3 d6 o
  124. move
    . `8 P9 e; x  ^* Q
  125. 转移一个key到另外一个数据库6 k( T/ q% x; D2 I& l
  126. $redis->select(0); // switch to DB 0
    ( }) ]4 V/ P4 u, |- o2 ]
  127. $redis->set('x', '42'); // write 42 to x: o- \, M) [; q9 g: X5 G. R
  128. $redis->move('x', 1); // move to DB 1
    2 b5 N  P9 q$ k3 c/ _: z* P4 g
  129. $redis->select(1); // switch to DB 1
    - c3 {! D; Q9 W5 D$ C  \2 E
  130. $redis->get('x'); // will return 42
    ) ~6 l" h5 U$ S

  131. : z" D" @+ O2 ^% t2 m7 r
  132. rename, renameKey
    + [) `) n5 B% ]0 T8 `& n2 O
  133. 给key重命名9 g6 W1 R2 h7 ]8 r6 s8 O  ^8 C
  134. $redis->set('x', '42');
    7 g8 n2 h6 e& s6 p$ p1 w2 K  Y
  135. $redis->rename('x', 'y');7 Q8 q, o# S- R1 `$ T7 V& s& T
  136. $redis->get('y'); // → 42. `1 [1 A- h) Q: N; _
  137. $redis->get('x'); // → `FALSE`0 [" R9 o0 @* Q2 [0 S4 ~1 Y3 U

  138. , \% N/ v& u, O( G" V% h
  139. renameNx' V4 V! K: p% Q2 }( g
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功, `7 U4 u0 J- j* Z$ b- u% y4 S+ z: S

  141. 8 u6 i1 P7 H5 G: C) x; I
  142. setTimeout, expire+ `8 T. }5 z: m6 _! T
  143. 设定一个key的活动时间(s)" y/ A! G8 T  o, I' X* q8 S
  144. $redis->setTimeout('x', 3);: m+ |0 _" l" s3 ?

  145. " l8 j7 O' }0 i
  146. expireAt
    ; v: Q8 j: X' N: M2 P  G" c
  147. key存活到一个unix时间戳时间( C+ b9 F: S8 W# E( L* J
  148. $redis->expireAt('x', time() + 3);
    : D+ z8 \6 L7 V$ H7 \& w
  149. 6 m$ y; Y* _  z, V( d1 i- S7 e
  150. keys, getKeys/ s7 S. G2 Y9 y! v( w4 u8 P
  151. 返回满足给定pattern的所有key
    & b  v% K; d9 U( i) S$ b* m
  152. $keyWithUserPrefix = $redis->keys('user*');
    : b' E7 l  \2 s2 z, P
  153. 3 `' L* ]" Q: p6 V
  154. dbSize
      a1 _2 j# q7 X5 H0 b
  155. 查看现在数据库有多少key5 _% i* P: _' f0 {
  156. $count = $redis->dbSize();  A7 p, f( l3 h" U) I

  157. - S2 K3 w- g: w) H# f
  158. auth$ }, J# F& e) O( q) h
  159. 密码认证' ^: m- l# u. |
  160. $redis->auth('foobared');
    4 y  i$ d1 R" \$ n
  161. 7 ^- L  M8 V8 X+ K7 s/ m# p
  162. bgrewriteaof) S4 y! Y) v& k# O
  163. 使用aof来进行数据库持久化: k( d7 O! A" ~- Q# X7 n. K0 e4 s
  164. $redis->bgrewriteaof();) m! }+ P4 }" w* @6 k
  165. - M3 V  r$ J0 \. p
  166. slaveof" K( e- o, N! ^3 h8 `9 G
  167. 选择从服务器! @  H' T( j6 P/ k) p
  168. $redis->slaveof('10.0.1.7', 6379);
    1 h( q0 |) L, z, o! X

  169. # N! }, r" J4 I% H3 z2 S
  170. save4 m9 g; q3 U. }1 _5 M, v
  171. 将数据同步保存到磁盘7 ], `. ]/ e% ?4 A
  172. ( H" n: q' `3 y0 P7 H& F
  173. bgsave9 t) ?+ f5 |  K+ ^) c
  174. 将数据异步保存到磁盘
    $ ?# z8 V) N5 _" u

  175. 5 Y+ F- s& c1 k% P( T
  176. lastSave+ _0 x5 `) j6 K% ]9 _) m
  177. 返回上次成功将数据保存到磁盘的Unix时戳5 g: A" m" s4 c" N
  178. 0 S0 Q8 R' t3 @4 D
  179. info
    + s! g2 m- `0 Z8 W1 R" Y7 ?
  180. 返回redis的版本信息等详情
    " ?1 q: P# c+ ]( E: E2 R9 c8 E
  181. - o1 ~! P) r- e( u" x) Z1 u
  182. Redis::__construct构造函数4 L" K- r5 y8 x0 T+ ~
  183. $redis = new Redis();2 G- ]' e9 j# u( D, |7 x& G
  184. ) L- P: m! {4 A" p! u8 L9 z) n
  185. connect, open 链接redis服务
    & p" |& R3 H# Y3 d/ o7 a* c
  186. 参数+ o7 W9 e0 Q# W
  187. host: string,服务地址  Q8 T( e: ^+ O2 x. ^& A/ J% I, L
  188. port: int,端口号* Y$ M5 ]& ]( n8 n! \# v0 k% o5 w
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    + l- T) y" I# y1 L
  190. 注: 在redis.conf中也有时间,默认为300
    4 P3 D. e! t* Y- L/ j+ a
  191. 5 i$ C) b! X2 r2 ~" r0 C* S
  192. pconnect, popen 不会主动关闭的链接
    / I8 ~  D6 {9 B! }8 M( A) {
  193. 参考上面
    . U9 z1 b* g! O/ M

  194. 7 }3 @8 G5 V: O8 E3 p+ c) U2 F* @
  195. setOption 设置redis模式0 v- j+ I" e/ B2 {2 t

  196. 3 Z2 D# J. K" e  |$ R
  197. getOption 查看redis设置的模式
    , i8 \' [$ y# U; L) c1 e3 v
  198. 0 d" F; |* B: z% L7 [
  199. ping 查看连接状态
    2 S; F  p6 y' O0 f8 P
  200. 7 h, W  n# M# f! U
  201. get 得到某个key的值(string值)7 i$ p+ v' a2 N- y! s- z: H
  202. 如果该key不存在,return false
    ; c4 {6 X/ z. b; A: N

  203. * Z  l1 W% ^* l9 ?9 s
  204. set 写入key 和 value(string值)5 N6 `% G3 l+ B" ]
  205. 如果写入成功,return ture
    6 _- d, Y( G6 t0 x
  206. 1 O+ q" A* s/ k) |# V
  207. setex 带生存时间的写入值
    ( K* ]% L# ?$ R
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL., j; R4 \: _1 i  K9 ]  k# A! [3 n
  209. 2 w/ C3 M' {# s& }4 _/ T+ a
  210. setnx 判断是否重复的,写入值% Z7 e% r& _9 ]( ]3 c& q
  211. $redis->setnx('key', 'value');9 o& l4 Y/ I$ J% K8 E
  212. $redis->setnx('key', 'value');1 `% `/ u2 F/ _6 B

  213. $ h% K, C% _8 d% }& J3 f0 n% V' @5 {
  214. delete  删除指定key的值
    + ~% s" R' q8 C2 ^; D. o, U$ F+ R( [
  215. 返回已经删除key的个数(长整数)  G2 x& E! P1 S' l% [
  216. $redis->delete('key1', 'key2');( u, {! B8 Q1 e" I4 ]( W" s; _
  217. $redis->delete(array('key3', 'key4', 'key5'));
    0 z: J/ C% [, ?
  218. 2 E" T) U7 e3 b$ e
  219. ttl
    " Z& D; u7 f7 y& s
  220. 得到一个key的生存时间
    : F  C! t. h: z) M: b& t
  221. 3 s* w' `6 E& m) V/ u( f: X, ]
  222. persist
    ( `2 P- ]: [5 {/ y( x
  223. 移除生存时间到期的key* }/ }4 ~6 y/ {$ B
  224. 如果key到期 true 如果不到期 false% K/ U5 h$ Y$ K; ?* R0 @4 r% w
  225. 3 V& G# P2 n9 w
  226. mset (redis版本1.1以上才可以用)
    # V, n1 y, [; p) Y+ Z
  227. 同时给多个key赋值
    8 }( ?& c% |/ v, g7 Z: ~2 o. _
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));# r% H5 ?- {" ?4 k7 C

  229. / I  E! p  u2 G" B

  230. , n8 q; c+ B: M0 ]; r5 N1 H
  231. % |7 l* m, s  v- Q# c
  232. multi, exec, discard. _! H, n# V* F. u6 l
  233. 进入或者退出事务模式( e& Y8 [, Q7 q2 W8 }, t; U
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI( m/ N5 G7 Y7 X7 C: S0 D% h3 ]
  235. Redis::MULTI:将多个操作当成一个事务执行
    ( R) u* Q7 x8 V  ]6 Z/ J+ {
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    * ~" p# Z% x. r; v) }4 [% z: {
  237. discard:删除一个事务
    $ R- @/ j. _/ v* |% N0 @( d
  238. 返回值
    . n! a5 G4 y3 I2 `
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。: c/ Q4 W+ K8 s8 F4 k6 \

  240. : R9 K, V5 e: R9 `5 b* T$ a
  241. watch, unwatch (代码测试后,不能达到所说的效果)" D8 W% n5 Y. i- I
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    . ~9 H2 `  A8 u. B2 F- K- G9 O- z
  243. unwatch  取消被这个程序监测的所有key
    + i; f: j) o3 E6 K/ x
  244. 参数,一对key的列表4 ]4 M* O3 q9 @6 A/ T8 O
  245. $redis->watch('x');$ E- D9 L1 f( g  I
  246. 8 |( |, W8 Q3 |: C; X; a. g7 ?
  247. $ret = $redis->multi() ->incr('x') ->exec();# x- T( ]! ]2 j
  248. ) L" D# s, R5 x0 S& s3 B( m- W
  249. - P# p8 t; Y% h) u6 u- h0 J# D
  250. subscribe *
    9 u, \; }: G. ~9 p: r* v
  251. 方法回调。注意,该方法可能在未来里发生改变
    - ]* L8 E, B7 B& R

  252. 2 a4 F% `( y" a) |) H1 r
  253. publish *6 P& G7 q, F3 j2 X* g% a
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    + c& L- }4 r9 D" j  j0 D* Z

  255. " {+ M; b, ?" O# v
  256. exists8 I, u% d$ [0 D8 A
  257. 判断key是否存在。存在 true 不在 false7 c4 y; \0 ~9 d4 S: S& q

  258. : q# B; t! ]+ Q' L* _  ~
  259. incr, incrBy1 F* i6 ^& t1 o! A$ H, b
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值/ n/ G- L- W, a4 s2 d& m1 V
  261. $redis->incr('key1');; c) [6 x6 }; S0 ?2 ~7 a
  262. $redis->incrBy('key1', 10);
    # R# Q  ~/ B" q9 i1 G( g! d
  263. # Y( m  L% A6 o" [: x
  264. decr, decrBy+ }& s3 d) z9 c3 J( q; a
  265. 做减法,使用方法同incr' S$ e2 a* {( k$ q8 d$ r
  266. $ \& Z' b2 q- a" r  _
  267. getMultiple
    # R8 s7 s+ X" @0 M& I
  268. 传参) @* _, O3 s# G* `  u; k2 Y3 j8 d
  269. 由key组成的数组3 I9 x  }. t5 O8 n
  270. 返回参数
    & ^" m! k7 }3 r5 F9 w+ g- \+ v- G
  271. 如果key存在返回value,不存在返回false8 l1 e" r, a6 S: A. ^! m
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    . O( P% V- P1 p$ O) t1 _7 F7 Q9 ^
  273. $redis->lRem('key1', 'A', 2);& _9 v% ^3 H$ ?& B1 D; }
  274. $redis->lRange('key1', 0, -1);
    $ [. {5 L+ A( i$ B# O. X

  275. & t+ y  h6 Q$ \/ z" G
  276. list相关操作
    ( n( I) ~$ s% F7 K$ O! W! _6 @
  277. lPush
    / z- y- x" a6 z0 q* i
  278. $redis->lPush(key, value);
    ' N4 _* C. ?6 E
  279. 在名称为key的list左边(头)添加一个值为value的 元素" ~1 \( x$ F# x
  280. & M# _" O2 Y0 q* T6 Z
  281. rPush" P" K1 T6 n2 i5 O& P$ g
  282. $redis->rPush(key, value);
    * I& f6 d# }! K; E( z8 K
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    " @0 C; D: C3 j6 Q5 B1 R, a4 y, E

  284. 8 r8 e1 h, R" U6 ~2 p5 C4 ~! f
  285. lPushx/rPushx
    $ T  z4 _! I) d
  286. $redis->lPushx(key, value);
    ) n. C6 |. x- K
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ) G. M8 P3 S8 U" n

  288. ' N) x0 g, T" J! s5 i! Q5 l3 I
  289. lPop/rPop
    , r1 n' c; L4 K
  290. $redis->lPop('key');
    4 |/ h% J& X+ P: N; L# s
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素4 y7 G7 U; Q( M! c* ?- s9 r
  292. 9 b  T6 a) s& e! o1 v
  293. blPop/brPop0 S. h  s; q! @- D; M6 p
  294. $redis->blPop('key1', 'key2', 10);
    ) x4 `& g1 Z1 ^
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作$ k  O. \2 v- b' l+ ^6 d# [

  296. 7 N! l1 a+ J" y' D
  297. lSize
    8 y0 X/ x" A! l
  298. $redis->lSize('key');9 s: E( h+ q1 O7 x1 a8 ?! \
  299. 返回名称为key的list有多少个元素) Z# w9 d6 |. v  h1 Z' z' E& K& j
  300. 8 y- v3 T0 }% d/ y
  301. lIndex, lGet
    ' O  f1 D0 P; l9 n. {! R9 d; D
  302. $redis->lGet('key', 0);% S& ^; n5 D( j" c
  303. 返回名称为key的list中index位置的元素
    " q, q# `# _. c& A  m8 z* t
  304. 4 Q+ L- I) Q4 t5 U/ {2 R
  305. lSet7 L" j2 ]7 f  [
  306. $redis->lSet('key', 0, 'X');
    # C3 ?( Y, M0 |, p6 ?6 J& }
  307. 给名称为key的list中index位置的元素赋值为value
    # L' n2 v" A" P3 I2 H) D" S, o; g
  308. 0 h1 S; a0 b5 r% I5 K2 s
  309. lRange, lGetRange  [' g' ~" t* p" ~) ]" [. @' ^
  310. $redis->lRange('key1', 0, -1);
    ( u! J: u" D' o9 [9 I* d
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    , p% A9 F  M3 Y2 K3 l4 q" p
  312. 3 W# Z1 E3 \( _$ L+ n: o
  313. lTrim, listTrim( A5 A6 {8 `! Y* b
  314. $redis->lTrim('key', start, end);- S" ^7 \5 S8 g& K3 _
  315. 截取名称为key的list,保留start至end之间的元素
    5 _- s& i' ?; }6 O  `2 o3 l

  316. / H7 o# h$ H8 G8 z
  317. lRem, lRemove
    6 a; M, n) }9 W6 r" o
  318. $redis->lRem('key', 'A', 2);4 `3 A8 b% u1 i, z! c& _. H
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    % O8 _4 p0 H, v9 `! g. x3 O& ^/ K
  320. & ~; [3 d% g9 r- f) N1 a0 f
  321. lInsert
    4 B: `* o/ a& u4 a" b& F$ _5 N2 C
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    8 }" z2 p1 S. l: R( J
  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');0 x5 }9 l" L# B- k6 C/ R- X0 @* {
  324. $redis->lRange('key1', 0, -1);) D! g( n/ d6 e  t' i
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');5 u# t$ k7 T5 @4 ^
  326. $redis->lRange('key1', 0, -1);9 W4 F2 f2 [$ g1 ?4 r
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');8 K0 W: Z( ~2 Q
  328. * O4 K" {3 T, }, Y' S' R+ P' R
  329. rpoplpush
    . P( e7 s; {& O8 e# }1 F
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    0 w" O# N; ~% w- x
  331. $redis->delete('x', 'y');# x+ i- L! r1 B6 n% \
  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'));
    2 {- ^% N8 Z. e' Z1 M
  333. var_dump($redis->lRange('x', 0, -1));
    ; F9 _: ~+ s; V7 D
  334. var_dump($redis->lRange('y', 0, -1)); " x5 u' V( l. h( U
  335. 6 R2 F: a3 T) s0 C0 @
  336. string(3) "abc"
    , a- e, @, d' ]
  337. array(1) { [0]=> string(3) "def" } ( E. {# Q" x; ]
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    6 L1 P* m. z# n/ H9 ~

  339. ' F" L4 V  m1 d0 u1 J. X
  340. SET操作相关
    $ Z3 x5 `5 f: T# U1 J. s+ v2 H
  341. sAdd
    % F+ u: n/ E) _3 D; ?2 k: f
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false, n( b3 u+ z6 W- s8 H
  343. $redis->sAdd(key , value);
    7 Y& C' x" a$ d6 W% s
  344. " {, H5 R; J7 }5 ]3 e* _' B
  345. sRem, sRemove
    2 e* d1 E. t4 x- G# t! Y. P# p
  346. 删除名称为key的set中的元素value
    / b- n( K: }( B' u- J( m6 r
  347. $redis->sAdd('key1' , 'set1');
    , E3 {: E: @) I" ~- b9 q
  348. $redis->sAdd('key1' , 'set2');8 R4 ]) y, P( A0 `6 u
  349. $redis->sAdd('key1' , 'set3');+ p& U" S! {2 C$ }5 `
  350. $redis->sRem('key1', 'set2');
    8 E' W5 V3 U  a
  351. " _- y$ |9 Z6 r0 x, c9 @) Q" p
  352. sMove
    & J. X5 q/ K$ E7 p7 ^1 Q
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合3 [: }5 }0 w$ p* T
  354. $redis->sMove(seckey, dstkey, value);% g6 f$ ]" t/ A$ u

  355. , v1 i1 L( m$ |  }" F# u& I
  356. sIsMember, sContains
    * ^, G* g' @( d/ v9 U8 ^" z
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false0 w8 u" k3 V7 q9 z* ?
  358. $redis->sIsMember(key, value);
    0 X) y0 ?7 J1 ]

  359. ) n) l0 }# u, @; w+ H' N% y8 h
  360. sCard, sSize
    & u8 S* ?' d! g, u  Y
  361. 返回名称为key的set的元素个数
    4 M4 U+ [- l- b  w+ |; B

  362. 0 b- e: w) h) {2 B  y0 C1 }! D
  363. sPop, Z; v: N9 B/ f# }$ Q" I
  364. 随机返回并删除名称为key的set中一个元素
    + s, q  S8 ?1 I2 E: ^3 p/ b6 [

  365. 3 A) z6 [% y# x, S+ v' m) z4 M
  366. sRandMember
    ! F# ^4 j3 \# J7 Y7 j
  367. 随机返回名称为key的set中一个元素,不删除' v+ @% C2 \4 m8 i. ?; ?
  368. 0 f0 _6 b" H; L0 n- r
  369. sInter
    3 ?- Q  |7 N) p, L6 s, L- N6 ^
  370. 求交集5 D- a: O1 v' H! n0 d7 I
  371. : b  f8 e( }6 w/ B
  372. sInterStore
    % a5 \3 p6 c& s; d+ \' p
  373. 求交集并将交集保存到output的集合
    / \1 C2 A/ ]2 x+ r3 z1 m4 ?
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ; ^% K* S9 S8 c& J2 t9 H) ?7 ^

  375. $ l6 V! ?" e" s# |0 P; b
  376. sUnion
    3 n  V2 ]) M) A, c# {6 W' L2 ]
  377. 求并集9 V. \! l* J! y8 l  C. A
  378. $redis->sUnion('s0', 's1', 's2');
    , h" P, b; D3 a' q6 G4 w, j
  379. s0,s1,s2 同时求并集. S9 W2 N" U' k. S  O4 q9 O: I

  380. 9 v& Q3 L+ {9 d
  381. sUnionStore
    3 c: i% l9 A/ W  C  G/ `0 b+ }5 Z
  382. 求并集并将并集保存到output的集合: Y6 L& I3 b# r$ F$ Z$ p  C5 n
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');3 D) C3 W. f2 _

  384. . y  t' m3 |1 K. \" @
  385. sDiff
    ) ^! w; s$ U" M$ @0 o2 y- {
  386. 求差集
    $ g# X6 H( D( i
  387. ! m6 d5 |. g2 {8 A. }
  388. sDiffStore
    ; U* e* e, \. k* M2 \
  389. 求差集并将差集保存到output的集合+ P1 w: d: E) y+ E$ x1 k! _

  390. 1 K2 L. |0 M' ?) {6 E' R. @' w  Q
  391. sMembers, sGetMembers
    . p' i& r6 i# D1 d1 O: L, y
  392. 返回名称为key的set的所有元素, L& @3 j" _5 |, E8 h) x7 i
  393. , h( t6 q/ ^& b
  394. sort
    6 c$ }+ ]/ h/ W% ?. [. A
  395. 排序,分页等
    ' ^$ L* _: Z% D! G
  396. 参数
    1 A/ \7 w) }) N& k* R# Z7 l
  397. 'by' => 'some_pattern_*',% B3 A) S' T2 ^7 M5 }
  398. 'limit' => array(0, 1),
    . w8 l6 j9 [5 y- }
  399. 'get' => 'some_other_pattern_*' or an array of patterns,- |8 h8 o. w; Z# Q2 r9 R
  400. 'sort' => 'asc' or 'desc',2 v! F) e0 [- v1 `6 K0 W0 O
  401. 'alpha' => TRUE,
    9 f# v1 d( V* O3 W& A) e. e
  402. 'store' => 'external-key'$ _) j; `' j: l$ Z4 X
  403. 例子
      V7 L( M. n4 k& K) H% F& v
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    0 g( W, Y. B+ w* e0 M
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    , ?, O$ }2 }( \" o0 @. B
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    8 z9 `8 w8 T' `- s9 J. ?
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)56 E5 J' p( [, s! p: v1 I: K

  408. . z  L' F) ^+ m; z& \
  409. string命令
    3 J( T/ ?7 e' ~* ?" B* }# F
  410. getSet# y8 ^- O6 I+ L  C- n4 }) S
  411. 返回原来key中的值,并将value写入key. \- z* w. n+ h$ p) p
  412. $redis->set('x', '42');
    0 V% h8 |6 h; i0 Z& A5 F: X- W
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    - J0 r* G: h9 Z7 x2 r9 \
  414. $newValue = $redis->get('x')' // return 'lol'
    2 ?7 `) ^% n9 d0 c& i7 S7 q

  415. ) q$ }& k$ _; \2 Q6 Z4 I
  416. append# o2 ^: B( Q2 J0 Q- q8 H4 n9 b
  417. string,名称为key的string的值在后面加上value
    1 J* i; K5 k$ t/ H) g
  418. $redis->set('key', 'value1');0 A3 q: Z: ^' T: I; T$ z& s
  419. $redis->append('key', 'value2');3 y7 ~$ g* N; o+ Y4 M
  420. $redis->get('key');& J# d; [+ W/ }( _
  421. ; _% [# T$ U. ]" A7 h
  422. getRange (方法不存在)
    # X" k. B' o+ I8 }' p8 E. S
  423. 返回名称为key的string中start至end之间的字符
    $ ?* Z$ v4 T' P& w: e5 D( t7 _
  424. $redis->set('key', 'string value');
    / d3 |! d1 Z2 R: @% X% S6 p. d
  425. $redis->getRange('key', 0, 5);5 y4 t& v$ u% F" r! d3 Q
  426. $redis->getRange('key', -5, -1);
    $ t) g( Y2 X! N2 R. G' S; r
  427. 8 T8 }5 Y7 ^3 h. \& x0 E8 ^
  428. setRange (方法不存在)
    & ^+ c' \( A+ R
  429. 改变key的string中start至end之间的字符为value
    7 E4 n1 E$ P: c- ]6 A3 w
  430. $redis->set('key', 'Hello world');
    8 x% ^$ P, K% Y2 x
  431. $redis->setRange('key', 6, "redis");
    1 f1 ?2 U$ n' ]  B9 f
  432. $redis->get('key');
      d3 B" p, ?, V
  433. 9 A$ Q, G6 L( R  y, L
  434. strlen. @) u% Q3 H( R1 L6 x  Y9 s( x6 P
  435. 得到key的string的长度
    ; ^" D1 r4 N( P5 K( j
  436. $redis->strlen('key');, z$ E8 G5 O) L1 |% ?- ~! t$ ]
  437. 8 h- ?0 j) J5 c5 `: W
  438. getBit/setBit) i3 \" }5 D; X0 ?
  439. 返回2进制信息
    $ o, P# [: X0 K7 i
  440. 8 J& Q0 Q. {0 G* E
  441. zset(sorted set)操作相关5 A: R* _( M" ^, d7 I7 x$ X; B7 S
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    / r( c8 Q2 K- ]$ }9 k$ L
  443. $redis->zAdd('key', 1, 'val1');+ v: n  L/ y1 @, t* g' v% M6 Z$ o
  444. $redis->zAdd('key', 0, 'val0');* O4 @' y* |4 t) L
  445. $redis->zAdd('key', 5, 'val5');
    ; l3 w7 [$ q1 m# [) l6 Z* a
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    ) [7 `& O) v  D1 E
  447. # d" A8 a, c3 y3 M+ H7 K
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素+ S( |/ `3 c" P" `8 e1 ~, Z
  449. $redis->zAdd('key1', 0, 'val0');
    + Z" `1 Y5 f' r" D
  450. $redis->zAdd('key1', 2, 'val2');
    5 y/ t0 p& W- S! n- e( z" d
  451. $redis->zAdd('key1', 10, 'val10');
    & e) P  t- b% A( x+ J
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    4 s  J6 N, T; A# l# s( M

  453. " n) f+ F& N' I$ N4 {+ u
  454. zDelete, zRem
    2 ^' a* z5 Y, u% z' ~) G
  455. zRem(key, member) :删除名称为key的zset中的元素member
    4 ~, X/ _9 `- q7 _7 H/ C( Z9 q
  456. $redis->zAdd('key', 0, 'val0');) ]* d! `- I. O# X1 _  n* h
  457. $redis->zAdd('key', 2, 'val2');! f8 p( B4 `1 K
  458. $redis->zAdd('key', 10, 'val10');6 J( F4 @/ D; y3 G( q5 z% k
  459. $redis->zDelete('key', 'val2');
    ) s3 g) Y4 F5 ~+ y3 a* O- j
  460. $redis->zRange('key', 0, -1);
    9 a& o1 s; f3 @2 y; ~
  461. 0 e6 ^$ g$ S& o3 R
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    ) G4 T0 \! M2 y0 L4 b1 t
  463. $redis->zAdd('key', 0, 'val0');
    5 T7 J* Z1 G- h5 ]  B" F4 O/ L3 _
  464. $redis->zAdd('key', 2, 'val2');0 b- O- m' a) Z* K; l: M4 x" |
  465. $redis->zAdd('key', 10, 'val10');
    " V2 M& ~( p- X! x. _
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);4 W# a9 X4 q% q- ^/ J4 T
  467. 5 j0 [6 [8 S9 u$ g
  468. zRangeByScore, zRevRangeByScore
      Z% V- }8 c4 N  a2 J: g& T/ O
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));: j2 G9 }2 \* W* a$ L3 i3 V
  470. 返回名称为key的zset中score >= star且score <= end的所有元素: l8 D2 y9 C4 ^
  471. ! \3 o6 W( W) [" c9 y. a
  472. zCount0 ?" s" }3 `+ K# F" y; \
  473. $redis->zCount(key, star, end);
    , h0 v# B4 ^4 |" H
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    % q- K$ C( o* E9 A

  475. ; e6 j% ^! z2 e% i% j3 c% O
  476. zRemRangeByScore, zDeleteRangeByScore
    5 `& f3 m0 q  N, @7 @6 k3 p
  477. $redis->zRemRangeByScore('key', star, end);
    $ u+ D/ l+ ?/ l2 x5 ~
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    $ M- [- D& R/ D

  479. . z+ }1 B8 V' g/ W& ^$ G0 L, i
  480. zSize, zCard
    5 }4 @' _* R3 h2 }+ a% K- y$ \6 t
  481. 返回名称为key的zset的所有元素的个数1 ~% I) ~) U+ e" j
  482. 6 U/ O/ B( p* ]7 x0 u4 n# p8 x
  483. zScore6 u# Q( O! R3 H
  484. $redis->zScore(key, val2);; b1 B- ?7 V2 }, @8 H5 g6 w0 ?
  485. 返回名称为key的zset中元素val2的score
    7 {8 V7 T" r! |9 x- L5 @3 O

  486. 5 A" ^4 o) q9 @' r
  487. zRank, zRevRank4 ~4 C3 R! {9 F* Y
  488. $redis->zRevRank(key, val);
    / }8 `- H% S9 Z/ t1 I
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序. f1 i% {, t) h/ Z6 p
  490. 8 H* z* s* _7 T" d+ `6 B8 ?( S7 f
  491. zIncrBy
    8 @/ N/ R# E0 q$ s( ~$ n3 N5 Z
  492. $redis->zIncrBy('key', increment, 'member');( P8 D# c/ m6 J: i
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment2 b6 p! t6 p/ v$ f

  494. - Q' o  H8 f( f" l
  495. zUnion/zInter5 S2 j$ z& p, P. J
  496. 参数6 u5 l9 E6 b6 g/ q8 ?9 g. x
  497. keyOutput
    $ C/ y  G& B* ~4 H3 i( t# }. f- b
  498. arrayZSetKeys% N' K3 h6 w; A& X$ N0 v! ]' V" m
  499. arrayWeights
    / E( v. v, ]7 E, O( U: M' b
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    : h7 s1 C5 g, N+ X
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    ! h5 X9 `* U- i3 `& X
复制代码
* Z- e3 }0 F6 O' h* _

: I' A! R  C. ~* T% r: U! h: \6 o! I
$ d  n2 R) R: G& I. A1 d7 q  [
/ K& W/ s  ~4 E/ J
作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis(); , K' g& s: i2 ?- t6 g
  2. //连接redis服务器   ~: H4 j  h' P- o
  3. $redis->connect('127.0.0.1', '6379');
复制代码





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