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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    $ R- Q) l) a: k7 {
  2. $redis = new Redis();  
    1 x8 s4 V* ^# r) x. k: B( ~
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    : {( q) T  I# ~: s, t% K
  4. $redis->auth('mypassword');//my redis password % o  q2 k6 Z$ m
  5. $redis ->set( "test" , "Hello World");  
    6 o2 a5 u0 c# F/ h' g
  6. echo $redis ->get( "test");
    " \8 z  \  H, R
复制代码
php操作redis函数封装
  1. /**
    , `) C3 H+ D, K+ x
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数. S2 ^. v6 B3 y, a# J
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi6 E+ b7 j: U' R7 t
  4. */# o( Y! q, Z. ?: a: ^- A
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){; Y6 F; k1 _1 P% D% d3 N
  6.     if(!$key||!$value) return false;
    , Y# L* g! S! W( ^1 k- R- h  G
  7.     $host = $host?$host:getenv('REDIS_HOST');
    8 V% P+ R& n+ C6 o
  8.     $port = $port?$port:getenv('REDIS_PORT');/ G& m+ ?9 P' Q
  9.     $redis = new Redis();
    1 f. x2 M- T9 T7 F3 e% j
  10.     $redis->connect($host, $port);
    , E& A6 H5 O3 T# t0 W( d
  11.     $value = is_array($value)?json_encode($value):$value;
    : d; r: j2 u  B  R; n+ W! f8 L8 q8 f4 q
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);' X1 ?$ B: f) M
  13. }
    - q! d: ]5 P8 Z; l% v
  14. /**
    6 Y' B( ~0 t1 s" x; m( h3 i
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi# A% w, U  d2 E
  16. */: d# A( ~& d- d& s$ P' i$ F
  17. function RedisGet($key,$host='',$port=''){; @1 M% Y- f% K7 U* z. f
  18.     $redis = new Redis();
      L( f" i8 c3 M' \1 T/ I
  19.     $host = $host?$host:getenv('REDIS_HOST');8 s) N# D' v& `5 P& P2 X, c, X
  20.     $port = $port?$port:getenv('REDIS_PORT');3 |. |( D- G' s$ N. U* o( q
  21.     $redis->connect($host, $port);
    8 b, z2 s$ X. Q2 ]6 n4 J" ^% s
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    8 [4 S; o( A7 Z
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    % B8 w$ A8 ~$ [8 J7 U4 \
  24. }
    0 D- |( j$ j5 Z) Q* E
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
8 Z1 g' L9 e/ o; r( ]
  1. setex 带生存时间的写入值
    ! Q' n2 ~9 {5 s6 B
  2. $redis->setex('key', 3600, 'value');
    , f7 G& B. V& ]$ Q2 W$ p8 r
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    ! o4 ~8 C8 _3 o+ n$ o  \2 R3 |& k
  4. $redis->setnx('key', 'value');" z$ U, h. V) e9 [1 b# u+ E
  5. 返回已经删除key
    * n$ D2 ^" W4 x4 E& @
  6. $redis->delete('key1'); 成功返回1失败返回0
    $ ]: R4 K) O* J
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    8 h# ~% j: u+ i2 \% g+ K& L; \
  8. 查询生存时间
    & \, g0 D) ]& S7 q' ~/ q& a  Z8 m* ~- b
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)# Z9 Z. {3 I4 T4 B+ R) d" V0 f
  10. 同时给多个key赋值,同时设置key0和key19 ]% s7 i& Z4 j/ x# t1 e
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));5 t: A& r4 z! ^/ v8 G
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值7 U; B) K$ K# t( a
  13. $redis->incr('key1');; D7 B# z0 s  P, i7 Z0 r5 W- P3 P
  14. $redis->incrBy('key1', 10);+ H  E7 P3 X5 w3 w$ H4 W* E
  15. 减法跟加法一样
    3 \. ?0 c  U" }9 |' C( R
  16. $redis->decr("key1"); 减少1
    ! Z; j) y/ A' a8 j8 V$ W+ c
  17. $redis->decrBy("key1",5) 减少56 e+ Y0 I- H( b3 ?! c4 \; l
  18. ) T/ T; F5 ^! `3 V
  19. list相关操作,连表操作
    5 S) }" G6 R8 Z8 _. c5 ]
  20. lPush
    $ [2 {1 S) F+ W8 c8 i3 L, X: S. x) N
  21. $redis->lPush("list", "888");( z2 u0 [! X3 N5 |- L
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    / w& v) L8 z6 t5 n9 ]' I' S
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    " w/ o3 z6 w4 Y) E
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
      m3 x- g( ?% z" l& u" N
  25. lPushx/rPushx
    * m0 x- }2 C4 f7 ~
  26. $redis->lPushx(key, value);; y# [, X5 r6 k' f; B2 F/ x$ @
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加' y# U& D5 s3 @7 R# U
  28. 7 e1 ^) E& B2 r, t) b; L& A# Z. x* i
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key9 [0 A. I; b7 B
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    6 Z2 r- _/ |% B6 G( T
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回14 y3 t3 b7 Z5 T9 w8 i
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序1 N" y0 H# l$ R4 W2 n* x
  33. sadd s1 zhangsan. B  Q& \% n* G) S( K3 R: M& \
  34. sadd s1 lisi$ N) `3 b% w, B$ y* C5 a
  35. sadd s1 wangwu* k* P4 o3 i9 I% T
  36. sadd t1 yangxingyi- s0 ~& f; _8 P
  37. sadd t1 lilei4 _* T: J( g1 W3 M* I: A; @
  38. sadd t1 zhangsan* }9 @' Y8 n( u% h+ [# p
  39. smembers s1 s1的所有集合内容
    0 E! n# U  B7 D# k9 B) z! p' T
  40. sdiff s1 t1 s1有的,t1没有的,差集
    * Y. t( R2 I" E0 R: k) S5 Q6 _
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ( z& t4 A0 U2 C/ I! A9 n
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的) F' C+ K0 j8 {. f1 N1 S5 T
  43. spop抽奖场景,返回集合里面随机的数
    2 u4 Z2 `- b5 x' E7 k' m
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    " g4 L  J6 Y9 R+ ~8 N$ R% N. G) Y
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数: R! F. n" _, k
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的& x) u! r0 u( Y" ~  z" R& W$ @; T
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    $ h& X% ]8 B- x6 b
  48. $i = $redis->srandmember('s1');echo $i;
    + u3 E$ |3 a  h& |, M
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    + G' @, y  h. `4 i& E3 B: ?! w% b
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false" M$ P# h6 B  y* i4 X
  51. 5 ~3 n! u4 z- x
  52. zadd key 2 value 有序集合4 S: ^2 U* U" x
  53. zadd y1 1 zhangsan;
    ' f1 p$ B* S" i
  54. zadd y1 3 lisi;- Y1 l5 O+ c; Z. k3 z
  55. zadd y1 2 wangwu;6 p2 x# V- n* i( u
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    - {4 k( b4 W; d4 l% u
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    3 L1 j4 O4 {2 \5 r0 f; T+ \" I
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    / B! ^2 @. M) v$ Y2 G. Y% k
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先; l! R# T  l5 I0 \% C4 ?% [
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    + m* Z& [" H! O
  61. 无序就scard,有序就zcard,有z没有s3 a9 t$ A% i$ w3 H) N: |  p
  62. sInterStore
    : ]" F' s0 Z! w9 `. _
  63. 求交集并将交集保存到output的集合
    * {& H6 v' T; x8 x
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3'): \+ S: J% Z. M
  65. % K4 g" @5 {+ s* F8 Z) I
  66. Hash操作
    ; z) Q0 V8 F" I1 H0 b
  67. hSet# J9 z* Z7 b, u+ G) H
  68. $redis->hSet('h', 'key1', 'hello');
    * L  I! P8 U! E7 e! s8 Y( Z
  69. 向名称为h的hash中添加元素key1—>hello4 q  S! R: C8 r- P

  70. ( h1 H0 f  U& [( ?2 z
  71. hGet6 \* T  ~$ w: H
  72. $redis->hGet('h', 'key1');5 ~$ q# S1 ^; l
  73. 返回名称为h的hash中key1对应的value(hello)% `5 F9 y) [1 I1 g9 z

  74. 8 [8 }1 a/ m. q3 p4 T% F/ x
  75. hLen: m3 w1 |; G* `0 N9 T6 u# j4 N6 B0 {
  76. $redis->hLen('h');
    # T9 e1 J. S8 S$ v+ k% U" r- w
  77. 返回名称为h的hash中元素个数
    2 q3 u* N3 R0 O' }. p1 m  _' Q

  78. 1 |2 d* f+ p4 ~2 ]  o8 z5 e5 A
  79. hDel/ K' b9 r& K5 \4 J
  80. $redis->hDel('h', 'key1');
    ) v2 K! o/ ?: Y6 S4 m: p- y
  81. 删除名称为h的hash中键为key1的域' j- F4 R8 {% c4 \$ c
  82. 4 e6 Y3 b0 P. p1 ~' B
  83. hKeys
    $ N7 P0 L6 e- ]  t* _) M9 a6 N
  84. $redis->hKeys('h');. Q) m. M$ T( n9 M8 n# ^
  85. 返回名称为key的hash中所有键7 D8 K& ^$ Q& F+ V
  86. 9 Z: o" @8 D8 @8 [0 t
  87. hVals
    4 W4 S6 S) T* E2 G6 a
  88. $redis->hVals('h')
    ' M1 Y# W) u& u* V
  89. 返回名称为h的hash中所有键对应的value
    " C6 r4 _8 y7 ?' D( M
  90. ' |( p6 B7 ?7 R; e4 F) {1 u
  91. hGetAll
    3 g9 ]3 h9 q7 t6 T0 K
  92. $redis->hGetAll('h');3 E- U6 ]9 a' _2 A& }0 I8 y
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    4 ?, X4 ]- k9 @" Z& F
  94. ! s  Y0 e* X" B' H7 |
  95. hExists
    # p. V3 [: o' O
  96. $redis->hExists('h', 'a');/ f% i0 j$ \/ o2 K
  97. 名称为h的hash中是否存在键名字为a的域" J( z- `; h; V  f( w( p

  98. ) Z. _' o8 P: w: J
  99. hIncrBy
    " i; ^" B5 X7 v# ]
  100. $redis->hIncrBy('h', 'x', 2);& s! E7 _2 x! R2 h
  101. 将名称为h的hash中x的value增加2/ [8 r% r9 O5 z3 J8 o5 q7 A! D

  102.   f" Y5 \9 R' x2 U
  103. hMset# D3 V% C+ {1 l( \1 K/ `) F
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));, i' g! {: L; u" m
  105. 向名称为key的hash中批量添加元素
    ; g5 J8 T7 I0 i1 z" n
  106. + g; t" Q$ Z2 g% K; W, G# R& T; m
  107. hMGet
    4 r. d/ d  ]1 E3 h# w( x
  108. $redis->hmGet('h', array('field1', 'field2'));) q7 b3 c  A+ _( V  A6 s& a8 j7 W9 W& X
  109. 返回名称为h的hash中field1,field2对应的value
    # d9 g8 q7 K9 \% e5 Q, {, Z

  110. * M% x1 t+ U+ U$ D  d1 ~8 k
  111. redis 操作相关
    " I, f! n- \$ _5 j6 i5 h; B
  112. flushDB" F" \) R6 |5 i! Z9 j: w
  113. 清空当前数据库
    " l; M+ R7 V6 J. j( t
  114. , j6 K% }- Z% X! E
  115. flushAll' V& i$ @1 g" g* N% H* A( G
  116. 清空所有数据库
    8 P& l5 ]9 A2 b2 k! m' u. k% x

  117. * D- [6 O) X3 ]& ?+ j2 b( n
  118. randomKey
    2 l/ ?7 j0 z% \' B; D
  119. 随机返回key空间的一个key4 \$ L$ o/ F" M' q2 ^: h
  120. $key = $redis->randomKey();% B+ l0 ?2 W* u, F$ ~( Z3 U+ @

  121. 1 ~8 d! d# j3 Q# B
  122. select$ c7 E; Q+ r7 ]& K' a9 z
  123. 选择一个数据库
    $ h( x3 T, q. b+ ]! |+ L) ]4 J
  124. move
    & x- s# t6 ^. _1 j" b0 S
  125. 转移一个key到另外一个数据库$ l+ ~1 I- U; J1 ?7 \* k
  126. $redis->select(0); // switch to DB 0) N5 i8 _$ f  V& a5 `: ]
  127. $redis->set('x', '42'); // write 42 to x  w( R  @1 X6 F% r
  128. $redis->move('x', 1); // move to DB 1
    # V$ p* w0 j; s9 d
  129. $redis->select(1); // switch to DB 1
    ( J% y3 {# o0 N# L3 b5 U( ^" L$ z
  130. $redis->get('x'); // will return 42# y" s4 g- b7 o- G+ o3 w
  131. ' `3 q- P" f/ p! i/ @. y
  132. rename, renameKey  \3 K9 P1 H2 z
  133. 给key重命名
    $ J( g: q0 b% W; E) m. i7 q, D
  134. $redis->set('x', '42');
    2 E$ v- Q/ ]/ T0 l4 w
  135. $redis->rename('x', 'y');
      d5 K& j* L8 ^
  136. $redis->get('y'); // → 42
    ; ~/ K% l, J% b7 n! Y, F0 o7 X
  137. $redis->get('x'); // → `FALSE`
    # J- b8 P. S! ~9 z9 j3 M/ s; Z
  138. ) I0 ?$ Q8 A, k7 W% `% m
  139. renameNx' t! ?" K) R' C
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功( d& r# r6 T5 f& M1 Y
  141. 5 w* p) V" T7 P+ K$ k- Y
  142. setTimeout, expire' E9 j. f+ P" P' n, S4 h, \: ]& E
  143. 设定一个key的活动时间(s)
    ' W: d3 s& g! B; l
  144. $redis->setTimeout('x', 3);1 z8 {( S$ {3 X! L/ i& M: v

  145. ! p: F7 \# ]$ X" ?8 D" ]' z/ ]# k
  146. expireAt. [+ Y# W. @* A' j5 n: Z9 c7 x
  147. key存活到一个unix时间戳时间# D- a( K, R7 `% E/ r
  148. $redis->expireAt('x', time() + 3);4 [) {7 h0 s, g1 ~6 f( T' z" B
  149. 4 ~3 ^/ k; j; O$ N+ k9 W# \; n
  150. keys, getKeys
    ! w9 l, W2 l. \3 L+ _3 M* X
  151. 返回满足给定pattern的所有key( d& n" R5 F, o1 N; o
  152. $keyWithUserPrefix = $redis->keys('user*');
      a* r8 P! L* p" m" f. G
  153. 1 e3 B2 @6 }4 q% v* M/ I, m) ?( C% C, G6 E
  154. dbSize
    2 ~/ f, l6 ^. {& D% f
  155. 查看现在数据库有多少key' @. K0 n4 v! c
  156. $count = $redis->dbSize();5 m$ l! |  h0 D: @3 g- G4 z
  157. % ?* q( N# U; u( l
  158. auth0 H; _; U0 [2 S+ }* r" L
  159. 密码认证, k* i6 B& b3 N% K$ m- h
  160. $redis->auth('foobared');
    " R+ ^( [/ V% h8 M, W5 ?

  161. & b: r% [+ Y6 X6 ]* M! n  {
  162. bgrewriteaof
    + J4 J! K7 r9 l6 k; A! ^
  163. 使用aof来进行数据库持久化* e2 X. p3 u  R
  164. $redis->bgrewriteaof();
    - c5 t9 j2 M4 n8 D
  165. . ~* a3 J! B! ^% T" h+ t( l- c
  166. slaveof* F! ^4 U3 f& J- T3 B5 c- j, V5 n
  167. 选择从服务器
    8 B# Z$ b, \" X5 F
  168. $redis->slaveof('10.0.1.7', 6379);9 h  g- V7 r4 {& k+ w, g
  169. ; w" n# B" [  ^6 T% r# m
  170. save
    0 \/ {2 @' K, M" J3 w4 W6 k
  171. 将数据同步保存到磁盘
    * b( R# x0 ], P& L
  172. 0 C2 K9 H, C" [  R
  173. bgsave
    / ]' [# N, s' H' p" N
  174. 将数据异步保存到磁盘
    ; B( H" \+ W, w3 S$ d- p6 x
  175. : l- Z# H9 K; [$ \6 y8 y* F# R
  176. lastSave/ A- m, U( i' Z: g
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    / u# M3 o7 O% B; D6 L
  178.   t% d& z1 G* c: c
  179. info
    2 t( M4 U. ^( t* D* Y& _% j
  180. 返回redis的版本信息等详情
    $ P- \, `% m+ R/ A

  181.   \7 i3 T$ t/ @, f/ g9 W) k
  182. Redis::__construct构造函数
    9 g* V6 o. @# x" m7 W# N, [9 s
  183. $redis = new Redis();1 |8 j3 e& p3 t8 g

  184. 2 v" r: p/ ?" U/ w
  185. connect, open 链接redis服务
    % j& M$ Q8 ~. N5 M
  186. 参数$ d* V: D5 b, H) [1 z
  187. host: string,服务地址0 _: G9 {1 B6 X. K+ I% }3 |
  188. port: int,端口号0 V6 a& u# j5 ]# H$ Z& i
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    . j0 U% }, U+ A, M; {# f
  190. 注: 在redis.conf中也有时间,默认为300+ ]) ?; N2 I/ j' _& X/ C0 t

  191. ' s- y) T* m* I2 u) Y
  192. pconnect, popen 不会主动关闭的链接
    * O. m7 S0 q- G2 G/ g) `) w1 A
  193. 参考上面, g6 {1 h, ^5 u
  194. ) e, Y+ C' K8 `# O
  195. setOption 设置redis模式) H" H: @4 w/ I. _/ L9 \5 {8 P
  196. ! a( C- y* D/ O3 {$ a; K$ g) \
  197. getOption 查看redis设置的模式* |, Z" q/ [) D$ A  {& w
  198. 5 [$ O* O5 R2 b5 @, \/ b+ E
  199. ping 查看连接状态
    # o! @) @* G; t  j: I3 y! m4 b& L
  200. 4 N* |1 j. z5 n! x- S+ j  w& G
  201. get 得到某个key的值(string值). j: e' W  c" |# m
  202. 如果该key不存在,return false& C6 w* ?8 Y2 X! A
  203. ! e  l8 X3 r* A) n2 B
  204. set 写入key 和 value(string值); V! ^5 f6 A: }! J  ]6 {, x
  205. 如果写入成功,return ture& H* ~: }, M( l" ~5 q7 q
  206. % [- i& D1 w: b
  207. setex 带生存时间的写入值
    ! R$ e2 t" R+ s$ F# H9 {
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.& p- X. r. I. j8 n. C2 J
  209. 3 M4 }& M& z- L
  210. setnx 判断是否重复的,写入值
    0 H+ j1 u& W6 i
  211. $redis->setnx('key', 'value');! ~/ q# [6 M) S; M6 ^$ i! q* u' ]
  212. $redis->setnx('key', 'value');
    ( ~8 h8 {/ s: p9 X7 `7 e' y

  213. ; m: G& a9 g+ J, g4 R' K
  214. delete  删除指定key的值
    + y& [: `/ p: `
  215. 返回已经删除key的个数(长整数)' \/ B' E0 U; M7 `
  216. $redis->delete('key1', 'key2');
    - r4 C' Z& u8 O/ ]7 J3 c! k* J8 u0 m1 T
  217. $redis->delete(array('key3', 'key4', 'key5'));
    , Z. H& w6 N: Y  h# ?# r

  218. " L, h& f: h/ w) Y; G& V& G/ V3 S; R8 G
  219. ttl
    * V0 R5 \2 M$ J. w
  220. 得到一个key的生存时间" v5 |5 c8 I0 ~. g. s+ X8 E

  221. * \* N* _6 a% k) W
  222. persist
    ! I6 o  c7 A5 E1 T! X6 m
  223. 移除生存时间到期的key
    . q+ g5 K+ j: K( b
  224. 如果key到期 true 如果不到期 false* _/ O8 Q! P4 L
  225. ! C$ q/ H0 B5 q5 `2 r
  226. mset (redis版本1.1以上才可以用)
    % z+ `0 J8 p9 j/ o' q6 O
  227. 同时给多个key赋值
    3 q: G+ K8 W' [. B
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));3 F$ @9 ?  g* D5 g9 j& x3 _

  229. 6 D# S9 T' A( s" z

  230. & {* m4 l& d0 y+ ?% Y" c

  231. 5 B8 [; F, |1 t* n9 L6 F
  232. multi, exec, discard. g1 x7 o" t* m) D# O
  233. 进入或者退出事务模式
    - M0 p% T& `5 x, i# o$ }
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI( i6 c8 L) ?8 a; j7 @
  235. Redis::MULTI:将多个操作当成一个事务执行6 o! ?  _8 m( [  u  D" Z0 ^6 V8 s
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    / N( @' T) h, v9 i
  237. discard:删除一个事务5 S' W: i- l2 a% Z& w! R
  238. 返回值! L1 U1 o1 C2 G( o5 p3 l! y1 x
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    3 n, v3 P+ M- G7 d% O0 }
  240. ) x( i) X1 m! @1 g0 x: v% n" a; f7 T( B
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    ( C' @5 Y' v  ?4 @0 z
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)' N  i' Z2 @7 Q
  243. unwatch  取消被这个程序监测的所有key
    % p) I7 |9 ~# D0 t/ `" \  p
  244. 参数,一对key的列表
    - S5 `4 T, p$ k# D, S3 k/ J7 a+ E
  245. $redis->watch('x');+ L: A- W$ M2 D1 r% `% V  [
  246. ' Q& a& i9 j% G% L4 W3 e- K+ C+ `
  247. $ret = $redis->multi() ->incr('x') ->exec();
    $ h  r9 Q+ Q# `' w. r
  248. " w8 }7 C0 Y, p* A
  249. / F3 B$ J7 w# t% b
  250. subscribe *8 r& l7 t: g' N) Y- c8 S
  251. 方法回调。注意,该方法可能在未来里发生改变
    ) a9 U8 j. D! b1 K- C

  252. + c! {+ O. Y4 `! H# e: }( J
  253. publish *7 _4 N" W2 J; ?  L3 z
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变$ F9 x" ~' F# r/ U  i) j
  255. 7 O/ a) Q; N# j: {* A/ f
  256. exists! j" N/ O/ _: ^
  257. 判断key是否存在。存在 true 不在 false5 d9 P7 [; c' a; c! z" {

  258. # @+ r+ A/ c! V3 t) e
  259. incr, incrBy
    , }, e" m- a+ v) D" \  ?$ C
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ; T/ q* n7 n  J% W( Q
  261. $redis->incr('key1');
    , i. U: }) w  q+ f9 S7 r# Q+ Z7 [
  262. $redis->incrBy('key1', 10);
    2 I9 ^0 f. |) |
  263. 9 J! o+ ]# k  ^! ?
  264. decr, decrBy" h* v4 U9 [! p) v# T
  265. 做减法,使用方法同incr
    4 x% ]7 C% ^4 f1 ]
  266. ! s3 q  d% J  T( R/ _* R6 B6 x
  267. getMultiple6 b+ b$ _( F2 v. J
  268. 传参
    : ?7 f2 G, |5 Y% Z! c( r& P
  269. 由key组成的数组$ G2 s, `% L" Q3 t( ~
  270. 返回参数
    9 u/ ?# l/ L8 e8 _( l3 X: e
  271. 如果key存在返回value,不存在返回false: n) j5 _* A" Y7 A
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));0 k( K* m' z6 \  H4 n7 q; J1 I# k
  273. $redis->lRem('key1', 'A', 2);
    9 ^& G, g9 Y) C$ H7 m7 g6 |* ^
  274. $redis->lRange('key1', 0, -1);
    / @, M. K# S- J) p& I& @

  275. 5 Y5 |% j# o: @+ {2 d+ F
  276. list相关操作
    % O7 e) o- t: Y8 `5 `3 B6 M9 M; d/ B
  277. lPush! N5 s) R$ H: ?8 N
  278. $redis->lPush(key, value);
    , _4 ~- o$ ~% |; S/ t9 S
  279. 在名称为key的list左边(头)添加一个值为value的 元素4 ]5 Y3 h$ v7 Q5 q; _

  280. + P% E' p' q' g) O
  281. rPush$ T( ]- N. D% u( N
  282. $redis->rPush(key, value);
    - c+ s7 [. S+ H2 [$ n
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    1 V3 M, O% y* q8 j' j

  284. 7 s6 z& P- B. l$ N( r; a1 m7 `/ J! `
  285. lPushx/rPushx
    7 `; D- i4 a: S  |9 M8 X
  286. $redis->lPushx(key, value);
    ; Z" S! l( \% e) C5 Y' |
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
      M- v" |2 C3 {3 M

  288. 0 K$ W: x  i" M( ~0 b
  289. lPop/rPop
    0 ~6 a) }& k6 J6 F) C
  290. $redis->lPop('key');
    $ c6 `; W; E9 F* F* ]6 h8 G
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素; h1 ^* t" s0 k0 Q/ ?; d/ A

  292. ; |% [6 O! {- i! r
  293. blPop/brPop$ a* K  [6 [& e: e+ }
  294. $redis->blPop('key1', 'key2', 10);
    $ E# {7 d( y( c: ~0 r
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    3 V" L: o: _# J2 A) m

  296. " K* U1 M% @" k/ Y( O
  297. lSize
    2 a- W* C: ~; R0 U- i
  298. $redis->lSize('key');
    4 p) J+ u8 a# J( p) Y" @
  299. 返回名称为key的list有多少个元素! B, {, X. m; C8 x: W5 Z4 y7 S

  300. ! U9 ^( M5 U: t* z1 L
  301. lIndex, lGet
      V. }8 n4 s9 S% ^
  302. $redis->lGet('key', 0);
      o, `/ p* x7 f7 [  R) |
  303. 返回名称为key的list中index位置的元素
    & U! g4 K% k1 d. u, \5 i

  304. 3 S/ I+ B/ {+ r1 n" W; g1 H
  305. lSet
    ' e% A- O; N1 ^* d: l% R2 q6 E
  306. $redis->lSet('key', 0, 'X');
    , ^6 g: N' E6 |. L* \6 t/ O
  307. 给名称为key的list中index位置的元素赋值为value
    + }. S. v4 p( c5 t3 H( y1 Q- M5 _

  308. 0 K1 J5 C1 l# H
  309. lRange, lGetRange( w7 ~! B/ H- \8 `1 w
  310. $redis->lRange('key1', 0, -1);
    / I3 D1 M& _+ l4 e1 L9 B+ F5 p1 M
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    + |" M% {& n) [& Y  _

  312. . @+ E+ @: @+ O6 S- C8 O
  313. lTrim, listTrim
    8 A. T9 f4 S6 C+ w+ q6 v/ D
  314. $redis->lTrim('key', start, end);
    % c6 h  l8 ]" S# C$ U
  315. 截取名称为key的list,保留start至end之间的元素
    ' J; O0 g" o8 p  `) e. G$ |

  316. 4 Y0 N3 F  n2 C
  317. lRem, lRemove+ B5 X4 V' T. [
  318. $redis->lRem('key', 'A', 2);
    * b& i+ N# [* u. Y+ q4 ]
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素. v/ y0 f  [2 @+ ?
  320. 0 T2 }/ B, ?5 n# E' Y+ S  f# I4 g
  321. lInsert
    1 a3 e# j9 a( b1 x4 d0 O1 O) F! d% l" n
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    4 P' X$ G1 k( h$ C  R0 T
  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');
    ( l/ L5 C. F9 D' B
  324. $redis->lRange('key1', 0, -1);
    1 D! e; x+ Q* h+ D' h% I) J
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');" O. \( R- o& h1 E+ o, o: Q
  326. $redis->lRange('key1', 0, -1);: L. p" {  u6 R7 Y. S  s
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    $ b& U  O# F" P2 }+ r, W+ \% m
  328. ) K8 f1 b+ |" K
  329. rpoplpush$ m/ K+ v: [1 T$ }+ K
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    7 V& g' Q# c! |- A5 b
  331. $redis->delete('x', 'y');
    $ Q2 E1 S1 w7 F# O2 z
  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'));; x+ Z  j3 y2 o
  333. var_dump($redis->lRange('x', 0, -1));
    ; T. n; Y# N# w! y
  334. var_dump($redis->lRange('y', 0, -1));   z! t4 q5 P# p8 G, j+ j0 S
  335. + k) @. k! ^+ E: {
  336. string(3) "abc"
    + Q9 ]7 n$ i- A+ c2 {
  337. array(1) { [0]=> string(3) "def" }
    ) z, S" I* t) i- Q2 D6 L! ]
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    1 B% X7 J2 L) {

  339. 6 P) c6 A& ~3 `& e1 R. x8 a3 Q
  340. SET操作相关3 k% q) H7 k8 `6 e; q. H* s
  341. sAdd
      s% S: |3 M8 t* `; }1 E6 e) D
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false& C$ d6 y- X$ y6 r: D/ M0 F, [6 r
  343. $redis->sAdd(key , value);
    # v: r' T+ s8 I* Q; a+ Z
  344. & ?3 e3 k( B7 q* C* u, d3 Z, u4 F
  345. sRem, sRemove
    : z# l! t4 z4 q& M# b- F
  346. 删除名称为key的set中的元素value
    ; f4 j7 g$ ~! J) n! Y
  347. $redis->sAdd('key1' , 'set1');
    1 m6 b! o( r4 C* T: Z
  348. $redis->sAdd('key1' , 'set2');
      s3 p& y  C6 P
  349. $redis->sAdd('key1' , 'set3');
    # I. W# S6 |, h
  350. $redis->sRem('key1', 'set2');
    " L, ~9 G0 v+ i" F) l' Y

  351. 9 C3 a+ g0 _: ^9 B1 j3 A; w' L
  352. sMove
    * C/ n0 p' R1 ]) H3 y
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合# Q3 l0 z  `7 q% J
  354. $redis->sMove(seckey, dstkey, value);& a3 Y6 a* L( k9 ?/ c" ]
  355. 7 V+ g  m, G8 h2 n' c' ]
  356. sIsMember, sContains) A# L- h# U# W' U
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false4 |0 `' p- c; s5 {1 h% _, q* J! _
  358. $redis->sIsMember(key, value);; H* X6 X$ o: H) N
  359. 9 I+ L9 Q# Y( _6 a
  360. sCard, sSize
    5 ^- [) v- P! Z* t/ Y
  361. 返回名称为key的set的元素个数
    " B2 h& x; u# v) q5 q5 l! @; ^; J4 V
  362. . Z1 I/ R  m2 r# o# P
  363. sPop
    % N' }+ b0 O7 v$ ]4 q% ?1 J
  364. 随机返回并删除名称为key的set中一个元素
    , D$ y3 D5 @, V. j- M' E

  365. " _9 R. i0 y6 a0 J* U
  366. sRandMember# q8 G! `% o1 p( I* u" @; B
  367. 随机返回名称为key的set中一个元素,不删除9 c( j$ r& L/ y: R# y3 B5 K

  368. 9 |4 }: q9 m" Y; {. [; {- M" q" w
  369. sInter$ e8 u' a3 m8 ]9 z3 q) v# L8 T
  370. 求交集& [: S* G5 ^5 b7 H; t/ l3 A: C

  371. 6 a& D# ?7 W, m  o' T
  372. sInterStore
    2 L! S1 X& [8 s% ~( w% s6 \! i
  373. 求交集并将交集保存到output的集合2 \/ X8 m. m4 }$ ?) {: t! V' t
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')% `6 h: c0 g0 B; i. g* ]; D1 \
  375. - n3 L& V. }5 u0 z. V& q- H  f
  376. sUnion  ]; k2 d" A' ^
  377. 求并集
    ) J; k5 C' P- {7 p; b- \
  378. $redis->sUnion('s0', 's1', 's2');
    : o% d5 `5 \8 O9 y& G# x
  379. s0,s1,s2 同时求并集8 {) s  @1 h& k% X

  380. - T# y( M. z3 v3 {/ n( M! j' f' p
  381. sUnionStore
    & M- r6 c% ]( [8 ]
  382. 求并集并将并集保存到output的集合% ]: m. e5 I0 ~+ E
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');% [8 k. l% |0 Y% @/ b9 T& G
  384. $ Q3 G+ q* r: H5 h6 v8 L8 h% z
  385. sDiff
    . A% J, U6 [+ |, b! v. d6 V
  386. 求差集% W" ^$ l- `8 A- ^1 b: H' A$ P$ k
  387. : M0 `+ o! ~* \- Q
  388. sDiffStore% i! ^8 F! s* A- ?
  389. 求差集并将差集保存到output的集合
    ' C( L7 Q' ]& Z5 E
  390. ; c7 `, s' L) B4 U- R; ]6 B. q7 l
  391. sMembers, sGetMembers
    " {7 R& G2 x* G; k7 Q( `6 m
  392. 返回名称为key的set的所有元素
    6 q, i$ o, e) h* y* V

  393. ' z" Q2 J0 ?0 f0 T- _
  394. sort
    - S( R  p7 A( @) }) z$ n4 h- `
  395. 排序,分页等7 J1 S& r+ K7 m" H/ F0 {3 B
  396. 参数
    ( w) @- f% q( d* u
  397. 'by' => 'some_pattern_*',
    4 ~9 I- ~3 \6 [7 x  n
  398. 'limit' => array(0, 1),
    , O" h8 W3 i. e. ?: N* Y
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    # v3 F( D. w  W8 H+ N- ^& x. }* F+ b
  400. 'sort' => 'asc' or 'desc',
    % }7 ^; E" ?6 a& G6 x5 s% U) c" b! y  K
  401. 'alpha' => TRUE,) c1 f) [$ b/ ^$ l' d: j9 ~6 p
  402. 'store' => 'external-key'# ]% L! \! K; {- q' Q: H
  403. 例子
    5 ^6 T2 E! L9 J4 x. i# G
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    ' S; M/ i, W$ e# A6 M" @
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    1 c# f. P# q3 p  [4 E+ B# S2 [% j
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1, F3 K; j! R) Z7 @
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5$ J/ u  w* v* M* F

  408. 9 T' s8 G4 n4 J: H8 |8 ]
  409. string命令
    8 V4 ]8 R# K: Q9 ~3 {& N
  410. getSet
    7 R9 l2 C0 ?' o, I6 B" |& C
  411. 返回原来key中的值,并将value写入key
    : f  Y9 f- c( y- S  ]
  412. $redis->set('x', '42');. z7 @2 R( q' _# C
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'4 p2 z/ t0 n5 @6 V  x
  414. $newValue = $redis->get('x')' // return 'lol'' L) R+ |7 O+ ~2 ~# f( P9 W1 Z! i
  415. + w4 o/ q7 W3 o, k& l  Y
  416. append$ l' m8 H. q! K
  417. string,名称为key的string的值在后面加上value
    # F- }0 A: `! ]0 a9 w$ q
  418. $redis->set('key', 'value1');
    ! G/ j/ I# k/ N2 E
  419. $redis->append('key', 'value2');
    8 h) p5 v8 b3 G5 y/ d$ ~" y
  420. $redis->get('key');
    2 {) l' t( Y" [+ \* n( m

  421. $ F4 J; Q' C5 N" z7 W
  422. getRange (方法不存在)
    % Q! |$ q& n- u2 E$ O6 o
  423. 返回名称为key的string中start至end之间的字符
    5 K8 g) F3 `$ R6 O
  424. $redis->set('key', 'string value');% P/ P9 G" B+ K. s9 u, _5 c5 ~0 d
  425. $redis->getRange('key', 0, 5);
      a( }  ?2 r4 }0 _! h1 ]& w6 j
  426. $redis->getRange('key', -5, -1);
    ! c. i& y% L- D) P' l+ ?, V" T
  427. 9 a/ V5 ^' g. q
  428. setRange (方法不存在)
    1 L/ Z# M) e, t2 v/ F/ H
  429. 改变key的string中start至end之间的字符为value2 z( |# m- I( C7 @
  430. $redis->set('key', 'Hello world');
    % U9 q! r9 Z; \1 G- M
  431. $redis->setRange('key', 6, "redis");
    % `! |+ x. P# A0 @3 O5 v4 }* r
  432. $redis->get('key');4 }/ g) i! F& u- G

  433. ; b% q$ [1 D6 b& M
  434. strlen. L  R7 J: Y' ]
  435. 得到key的string的长度* v- O7 T' o/ r9 H
  436. $redis->strlen('key');# m% S8 z4 }: v7 b* T( p" Q$ R
  437. ! w4 O8 P, q/ e& N# X6 @
  438. getBit/setBit2 w0 x0 q. W# w3 V$ X" j
  439. 返回2进制信息
    ' {4 i6 N4 M% ]- |" u

  440. 2 w+ c; [, D( s0 q; n
  441. zset(sorted set)操作相关. S3 w5 D$ M4 |! w; @; G/ Y# Y
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    1 G7 C/ ^: k# N  y# H
  443. $redis->zAdd('key', 1, 'val1');/ V7 Z" P; F" l" z2 `
  444. $redis->zAdd('key', 0, 'val0');
    ' j) ^' ~/ _' F/ z
  445. $redis->zAdd('key', 5, 'val5');5 f8 H8 J. ?( @& ]
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)& P1 q+ c' E3 P$ G( T9 y+ `6 n* y
  447. ( J3 }( y' q6 s  L7 o* m4 R; W
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素2 O( V" I+ w' k% O
  449. $redis->zAdd('key1', 0, 'val0');2 s/ q) ~3 Q& [- o. T
  450. $redis->zAdd('key1', 2, 'val2');% @1 Z$ A6 K6 j4 c( o6 ?1 v
  451. $redis->zAdd('key1', 10, 'val10');
    + ^' e- b5 u) ^& a
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ; F* s1 ]+ a) S/ ~; X0 s* ]- {

  453. 3 l7 Y# t1 S: m1 D! ]7 i" h9 n
  454. zDelete, zRem
    , _8 ?: C5 w: |, m) a
  455. zRem(key, member) :删除名称为key的zset中的元素member
    & c9 \* {" {0 x! E0 p
  456. $redis->zAdd('key', 0, 'val0');
    9 j! t" U: D0 B! X. e1 l
  457. $redis->zAdd('key', 2, 'val2');
    3 K( k- ^8 H5 a* ^+ U+ y
  458. $redis->zAdd('key', 10, 'val10');
    $ X" I- G  v) b' v" w- q
  459. $redis->zDelete('key', 'val2');( l8 y5 P( C6 w' N7 A
  460. $redis->zRange('key', 0, -1); 0 |/ T# b* P5 A6 E+ C

  461. . n6 g# x( D) H6 t# Z0 Q4 ^' T9 F
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出. i  C5 ?/ D$ s0 l' L
  463. $redis->zAdd('key', 0, 'val0');4 Y" H: A8 h: B
  464. $redis->zAdd('key', 2, 'val2');
    + ]7 _7 @! n2 p
  465. $redis->zAdd('key', 10, 'val10');: H& N8 I2 |  c7 b4 Z+ ]
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    ' L; A. t7 j& _" R

  467. 0 S0 L  R& ~- P  V8 F
  468. zRangeByScore, zRevRangeByScore: q6 c: g& E3 r& L
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));. t9 Q# q& o: K* S4 P: f5 Q
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    5 G5 \+ R+ O" \! H' @4 I# n% {
  471. 8 @6 [7 b) q( g6 O/ z& |
  472. zCount
    1 B( B8 {$ w0 z% l* t
  473. $redis->zCount(key, star, end);
    . P1 W' s1 L% u
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数/ F6 m/ U. H+ z2 T- O1 \' t: R

  475. , a6 T2 p" x( {  u4 m' _/ z
  476. zRemRangeByScore, zDeleteRangeByScore
    1 K9 D  a' p) c* N3 `, E
  477. $redis->zRemRangeByScore('key', star, end);
    , z6 a( L* O9 }- t
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    ( v0 O) ~& Z3 G8 ^8 M

  479. 0 O! D" @/ q% r- P) `
  480. zSize, zCard3 L5 z& e6 u& K! j2 F
  481. 返回名称为key的zset的所有元素的个数
    6 F! e/ U! H. U! P1 }4 O
  482. " y2 ~' p0 F* _
  483. zScore
    , E; M- P* p) n9 {" f
  484. $redis->zScore(key, val2);
    4 e9 {, U/ ?6 ]* u
  485. 返回名称为key的zset中元素val2的score; M8 X( K; I9 w% \
  486. ( w  e+ z% W* f& M
  487. zRank, zRevRank
    ; v: m* u% c+ b8 i6 B8 i: V
  488. $redis->zRevRank(key, val);
    # x4 b' `* z  O4 ?$ \5 N( b. g2 ]% M
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序; ~8 l8 c: Q& n$ v6 n5 K4 Z
  490. " T' d! x$ j( Z+ B- @: ?) ~4 h
  491. zIncrBy
    9 T1 R% d) n8 O. n* q
  492. $redis->zIncrBy('key', increment, 'member');' O) D! `# a" W1 q& s
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    * K4 P: I* i" [. `+ Z! `

  494. , A+ O/ z# S. Q  u
  495. zUnion/zInter
      `: r) Q/ L# k' c
  496. 参数) n) L5 w) X5 A& G1 w
  497. keyOutput
    . }. F5 ~) l6 J- _3 p
  498. arrayZSetKeys
    0 O$ Q6 A. r4 K
  499. arrayWeights; ^+ H4 \, n' g: i+ E* R: B
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion., o, [' [! |- I
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
      r" p. e, A4 W; e0 K  \
复制代码

* Q$ H1 t+ g" b9 f% Z) I5 q8 Y% a0 u( y

6 F, @- K, L0 h( P; t& M4 m" m6 V3 c) C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); ) W9 j- V( |2 n+ X4 c
  2. //连接redis服务器 2 [8 n7 \  k: j$ C* F
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 21:47 , Processed in 0.077226 second(s), 19 queries .

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