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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php2 a+ D4 K. F, v
  2. $redis = new Redis();  1 P  U  V5 u* b  p' U
  3. $redis->connect('127.0.0.1', 6379);//serverip port1 R9 r# B+ T1 [/ i
  4. $redis->auth('mypassword');//my redis password
    ! P6 [5 m" A" c% ]4 F4 h2 ?; K6 ^" S! U
  5. $redis ->set( "test" , "Hello World");  
    3 v1 {1 z$ M8 |4 _/ u  V  g& f
  6. echo $redis ->get( "test");
    ( P. l  k' M% S5 E6 k2 w! ^6 s/ _
复制代码
php操作redis函数封装
  1. /**
    ( F7 X) w2 u4 u$ B, J  q$ O% g9 H! U
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数5 J1 x6 m' a$ X: U" H) j! x
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi7 ^% R2 A! f2 s7 p# h1 H' ]
  4. */
    $ r. t' i  z* i1 U. Z7 G1 H
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    9 R+ B, D% J" V# j# G0 w+ l
  6.     if(!$key||!$value) return false;
    # u. E# W. k, z
  7.     $host = $host?$host:getenv('REDIS_HOST');; b! e  q: v4 ^7 O1 H% }( ^
  8.     $port = $port?$port:getenv('REDIS_PORT');( _: j  d  m4 K4 q
  9.     $redis = new Redis();8 X* J6 k+ [6 z8 e
  10.     $redis->connect($host, $port);
    & V" x% g( r/ p5 G$ ~
  11.     $value = is_array($value)?json_encode($value):$value;! B: a  l0 ~4 g6 h" t
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    2 T+ H4 }# ~" J0 f
  13. }
    2 c( x& F& V2 `, ?+ A
  14. /**
    $ K7 X# `* L" o
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    " I: [0 X2 y) P9 F
  16. */. k1 C: U0 }9 b
  17. function RedisGet($key,$host='',$port=''){, J" k& T6 y4 j9 |$ k3 {  ]
  18.     $redis = new Redis();* A* ^6 d+ y) O8 D1 Z
  19.     $host = $host?$host:getenv('REDIS_HOST');1 S: C& n  q2 h
  20.     $port = $port?$port:getenv('REDIS_PORT');& b4 {& u# R* Z) M- h
  21.     $redis->connect($host, $port);" D* r. [. `3 _0 l5 X1 f
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);6 S6 j8 k5 n9 V( j' z
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    ( u  D5 H' t1 G3 C* {2 x' ]
  24. }
    6 D5 I& Q+ E- `. R4 o  w& N# g
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
: Q6 u5 B" q" q- d
  1. setex 带生存时间的写入值
    1 g3 G0 [( p! }8 n1 k# I6 D0 w
  2. $redis->setex('key', 3600, 'value'); 2 H# V* N$ f4 P5 m
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    5 y1 A5 y8 V9 O
  4. $redis->setnx('key', 'value');
    ; a  K/ O: z+ K( ]! J
  5. 返回已经删除key
    % S# ]4 V8 @, O& d& R* {% q
  6. $redis->delete('key1'); 成功返回1失败返回0
    0 h+ K4 T0 w  T4 V) A) f4 Q: I
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0. [/ }* L( x3 N% j2 ]' K+ u: X
  8. 查询生存时间
    9 H: m. h/ g6 P) c: a$ U
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)2 c% Y% M. M# i5 G
  10. 同时给多个key赋值,同时设置key0和key1( B. A/ o, _0 L/ @. l
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ( I( `4 j; [- _$ p6 @  W& s
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值7 I# Y6 u# M& ]) G) k8 {" t
  13. $redis->incr('key1');/ Z( n: ^% y1 X* a7 n
  14. $redis->incrBy('key1', 10);2 T) F6 \. a3 j" E& Z; |
  15. 减法跟加法一样
    9 Q/ C4 e3 p+ s% G1 a2 @
  16. $redis->decr("key1"); 减少1
    - S  Z! ^7 h% O2 s! C' B( E2 O- b) a
  17. $redis->decrBy("key1",5) 减少54 V- V, R$ a6 ?! ^7 Z) ?9 Q/ s

  18. # C) @5 [* h4 q9 ?# y  S
  19. list相关操作,连表操作
    ; B1 o/ x) X& k) l- n9 U1 D
  20. lPush
    0 C$ \2 k3 o  l
  21. $redis->lPush("list", "888");
    6 ]. w8 q+ @2 K! `! m
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    ) e7 r2 g  G$ d5 m
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式; ^# {9 T1 b$ k* N, z1 a
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素0 z5 p9 N; i  K8 H/ Y! i! ^+ L0 U: T
  25. lPushx/rPushx
    ( o$ p6 f/ n& K" u: \! C* D
  26. $redis->lPushx(key, value);2 E, w$ e' q5 Q! _
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加$ Q5 Z: o4 G5 R8 R5 C# u- C! U

  28. ' l+ g: W  z/ S; V. k6 R) r, O
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    , A% e! [+ p! Z7 c$ q
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key( s) H0 B: d2 d( x
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    - {& I. N  m% |! Z/ ]
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    & m6 v8 d' G5 b
  33. sadd s1 zhangsan
    ' p1 Q% R8 i2 B2 \
  34. sadd s1 lisi
    7 b# Q6 ?  h- b' g
  35. sadd s1 wangwu
    3 y1 U& ]. `8 S# f9 \- B
  36. sadd t1 yangxingyi
    ) C# |9 J; G- P- Z$ G1 B' w( h
  37. sadd t1 lilei
    : @3 a; a/ Z, Z
  38. sadd t1 zhangsan, ]; S0 O4 @; v9 z0 D
  39. smembers s1 s1的所有集合内容
    9 X8 ~: z# X' w3 x! W/ R) f
  40. sdiff s1 t1 s1有的,t1没有的,差集
    6 u$ W  k" S8 I2 d% ~) Q/ }
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    $ A7 t; n/ b( `) A1 i  N4 E
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ' |. r/ D/ k- d" T2 D
  43. spop抽奖场景,返回集合里面随机的数
    7 w# ?, K3 k. Z/ E8 m! p! f2 N
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了# d- l- {. f7 |4 X# i' J( _
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数3 [& |4 ?' U+ N0 U
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    5 C( V- f7 `  @9 k7 R
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    6 Q/ r( v5 w  K3 W2 n
  48. $i = $redis->srandmember('s1');echo $i;9 }3 I, r1 K& w7 L+ c
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    # l6 g9 [& O+ R0 O5 X" c. i
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false& h$ c- C$ M0 u! [3 b0 \& G
  51. + c& H  R. _% n% c8 S( g
  52. zadd key 2 value 有序集合
    ! T/ t4 P, I: W) S+ x
  53. zadd y1 1 zhangsan;
    ! q- i6 `' w# o, s5 ]
  54. zadd y1 3 lisi;
    & H* J* a: o4 m9 P1 u
  55. zadd y1 2 wangwu;
    * e5 E  u- P+ z3 ^/ J6 X6 n1 |
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    & \( e' v2 W  s- M+ w) @1 H& S) [( J
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    3 ^. d" t1 _$ \" ?7 L3 e
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键9 T' U( c  {0 M  Y
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    " ^5 d1 h4 H8 G( A  l1 w
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    3 y% P) C& q) s3 ~, N
  61. 无序就scard,有序就zcard,有z没有s' b5 U. C" z2 ?* V* T- \( T$ V6 d
  62. sInterStore
    " k; M$ K1 g, R" M
  63. 求交集并将交集保存到output的集合" W* }" \* \2 o& X% }
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')# s- U) `, \  D; E

  65. 2 [' Y$ {$ P( N) Q% |! ^
  66. Hash操作% F6 R/ a( J4 B, Y0 ~1 _, I4 u
  67. hSet( t2 U. h, X0 ^
  68. $redis->hSet('h', 'key1', 'hello');. a7 F9 E; g% d# Y4 D9 W
  69. 向名称为h的hash中添加元素key1—>hello
    # F. j1 r  C% \/ X

  70. . ?" h4 ~  |7 f. B  U5 O
  71. hGet6 j" G0 t/ w5 N
  72. $redis->hGet('h', 'key1');
    # h4 I  N) C( d2 J* P- M9 A
  73. 返回名称为h的hash中key1对应的value(hello)+ l# b( f: }) W$ v; o. m
  74. 4 w6 Y1 J3 c" \; a) u& t' D
  75. hLen& I0 d$ N" D6 I* y' \% B2 \
  76. $redis->hLen('h');
    : Z- O# I# L. e$ K5 ^4 H- I2 I
  77. 返回名称为h的hash中元素个数
    % A, }2 ^8 R0 o$ ]. Q! D: V

  78. ; J, {! c& m1 [$ X
  79. hDel
    / N  [% X/ s4 E
  80. $redis->hDel('h', 'key1');
    ! a, c4 w6 [6 a
  81. 删除名称为h的hash中键为key1的域, b* l/ i6 }& f

  82. / t( W8 B+ s% j
  83. hKeys6 M  m1 |! ]5 Y
  84. $redis->hKeys('h');
    4 H' m% x$ R" M- k9 n, r
  85. 返回名称为key的hash中所有键
    3 `6 r# L- @# s# i- a- P: p$ R' J, I/ u
  86. ( |  A( ?+ X1 s$ l! ?* R9 g
  87. hVals1 Z' a/ C5 v: M- ~+ Z7 w. h: j
  88. $redis->hVals('h')
    & r( \- t. @2 B; c) j
  89. 返回名称为h的hash中所有键对应的value5 @5 p) |# P8 @. R3 |: ]6 g) s

  90. 1 c* |' g% E; z6 `. D" M9 c
  91. hGetAll
    # r! h( l& w/ o1 D7 x
  92. $redis->hGetAll('h');
    : j# o  W- f& z) {. \: K9 S7 p, q& ?* X
  93. 返回名称为h的hash中所有的键(field)及其对应的value5 X8 [% C; j# s! M- j/ ~8 L! [5 {

  94. ' j8 s. ?( q: Z
  95. hExists
    / }; s7 H# Z' f
  96. $redis->hExists('h', 'a');& W/ S% L. U; \8 }) i' b
  97. 名称为h的hash中是否存在键名字为a的域
    8 `2 J8 W+ P- L$ ^( u
  98. " X& c- O& n, g6 q+ K$ g
  99. hIncrBy* E9 E4 M: _0 Q4 Z+ G; c/ I
  100. $redis->hIncrBy('h', 'x', 2);
    8 W' L+ u* [1 M% z
  101. 将名称为h的hash中x的value增加2
    2 b6 V4 V! B9 {9 e9 z& y1 G  ~2 e- \" {
  102. ; F6 }  Q1 M; U$ }& A* r7 [: [& E
  103. hMset
    : S+ |9 v4 I; x1 C/ E2 C
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));8 U8 {) p( c; X6 q
  105. 向名称为key的hash中批量添加元素
    9 z. p8 f, n) F% R
  106. : f+ _" J: C; S% Z; j
  107. hMGet3 l* \) u, {* |5 W$ [
  108. $redis->hmGet('h', array('field1', 'field2'));
    ! C+ I1 q, w* f! f
  109. 返回名称为h的hash中field1,field2对应的value
    3 o! ?' H) ~. J2 A5 K

  110. , f( f  o4 G0 @: L) }. ?
  111. redis 操作相关/ }2 c& ]$ V/ q8 K* e+ i8 r, \# ?
  112. flushDB7 z6 z. ]4 H* O$ |) S
  113. 清空当前数据库
    ; Q! S# Z1 ?; Y: G- G% _

  114. * e' }% D$ Q/ s$ ^0 T1 n
  115. flushAll% d! _9 a3 ~& n8 e) J, X
  116. 清空所有数据库$ l! B) U7 i$ Y7 X. r0 d

  117. 0 x9 ~4 W$ g8 ^6 W9 P9 U, A
  118. randomKey
    % x5 b/ Z6 L% e8 M4 @' F- D
  119. 随机返回key空间的一个key; ^8 K2 Q8 O6 e
  120. $key = $redis->randomKey();$ |2 I' Y/ A& k# A
  121. : Y1 o& r1 r3 S' a9 B* R
  122. select
    + {5 A% o2 C; N  D" _) V
  123. 选择一个数据库
    - {2 Z! F- z2 K  O0 N
  124. move
    8 r/ s9 a8 l5 E
  125. 转移一个key到另外一个数据库4 D" ^3 T/ T  Z0 i2 N
  126. $redis->select(0); // switch to DB 0
    ; L* C* p) {/ s  T) R
  127. $redis->set('x', '42'); // write 42 to x  J% n' g: s$ S4 d4 {+ k* X
  128. $redis->move('x', 1); // move to DB 1
    * q3 }0 @4 J4 ]
  129. $redis->select(1); // switch to DB 1/ E# a* r, \# J2 x& u( C& A( @
  130. $redis->get('x'); // will return 42- x6 \7 M8 M5 u5 `, `7 q! w
  131. 8 w& I5 e* F/ E6 ]
  132. rename, renameKey1 ]3 X& B$ s# q3 Q9 N( s0 C
  133. 给key重命名0 G/ L  n0 s# q6 y9 o4 ?  ~; R. M
  134. $redis->set('x', '42');* n: s+ `9 l; ~& d
  135. $redis->rename('x', 'y');
    3 a! A1 p6 J: c7 N3 U" q# x! A, S5 c! t
  136. $redis->get('y'); // → 42
    - t5 {6 ]8 U+ ?1 }/ t
  137. $redis->get('x'); // → `FALSE`; Q. L9 k2 n# ~8 P, E5 i% {, ]$ O
  138. ' I, z; `4 s. w/ \9 P+ s
  139. renameNx
      T  a0 |; o3 p- a5 @
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    7 z! p- }1 p. M1 i1 a: T. G9 h
  141. , H, ~  L; f. H- y: T
  142. setTimeout, expire
    . R9 B4 z, _! [0 v9 q2 {7 J4 i
  143. 设定一个key的活动时间(s)& U0 W1 x! Z& d
  144. $redis->setTimeout('x', 3);
    8 |% s, R0 T* a5 z

  145. / Q- u+ D2 @& z) b2 U* t5 I
  146. expireAt
    % p$ Z) W) F, L# s2 a0 A
  147. key存活到一个unix时间戳时间
    2 N/ w0 M0 V7 y# M' j4 p! f* e
  148. $redis->expireAt('x', time() + 3);
    0 |( W+ Q1 T, h1 I

  149. ) s# i; m/ L6 O2 \6 u7 N# G" o" f
  150. keys, getKeys, c" d$ U2 \& d2 g
  151. 返回满足给定pattern的所有key% F$ P0 [, q( J0 Q! F: P
  152. $keyWithUserPrefix = $redis->keys('user*');) d+ p0 Z( O* E' n" ?, Z) V! u/ O8 W

  153. " r+ L! e; }( e9 T' u& f0 L
  154. dbSize( g* r; c. f8 C  U
  155. 查看现在数据库有多少key
    ) M6 D" h# H8 I& K* a4 j
  156. $count = $redis->dbSize();4 x. q" p/ ^% j

  157. 0 s- T# o! f% {. f
  158. auth
    ' W, G1 ^% K. ~$ g$ K/ V' r; c' I
  159. 密码认证
    . E. h$ m4 C- K4 {" B8 d8 _4 _
  160. $redis->auth('foobared');: S& A  Y: V  D/ E0 n
  161. + ~6 t  X4 ?# p' r7 Q# x0 D0 |
  162. bgrewriteaof
    , E* z4 A* V5 j. t- P% m/ {
  163. 使用aof来进行数据库持久化7 V! X: T7 I7 l6 [# Q( o
  164. $redis->bgrewriteaof();
    ' _% s' Z! e$ k+ I  {* s
  165. : U" d, T/ _  S: s4 y
  166. slaveof8 |9 r" n! ^. o
  167. 选择从服务器
    0 L0 K1 _8 x: k9 D9 ^
  168. $redis->slaveof('10.0.1.7', 6379);( G; l: K! `6 c
  169. . U5 ?$ q/ A" H; ~4 D9 N
  170. save
    6 D4 N7 O& }8 I5 g
  171. 将数据同步保存到磁盘! H8 ?8 I. I  g8 j
  172. - q9 u* V+ m7 [9 g1 _
  173. bgsave
    ( W: t) g+ ]4 w
  174. 将数据异步保存到磁盘2 H/ F7 K  H5 `

  175. 1 Q- O9 d+ ~% v3 W
  176. lastSave, L0 A, j- I' a7 V2 U
  177. 返回上次成功将数据保存到磁盘的Unix时戳, J; y$ W2 e* v* m3 g# g, s8 _

  178. ' o0 S9 b5 U1 E  d
  179. info, h( s) R6 F0 F2 N0 q3 u- Z
  180. 返回redis的版本信息等详情
    # y5 i! o$ k" B0 J
  181. ; k! }! r( @: J' |  j0 {
  182. Redis::__construct构造函数
    * U  J3 o+ ]' k, j8 ?1 g9 T
  183. $redis = new Redis();5 _5 `3 t0 {- {6 z% Z% h1 a

  184. # f- X+ X2 q9 i& T+ a) k
  185. connect, open 链接redis服务
    # Y6 H9 ~. O5 x+ A$ Z, U
  186. 参数
    - {0 S( c) k$ {; t
  187. host: string,服务地址2 b) Z6 Q5 W- N1 a  c) F4 q+ e( h& [
  188. port: int,端口号- [8 i! I9 Z7 M. U
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ) O: K+ K% n. g
  190. 注: 在redis.conf中也有时间,默认为300
    4 B9 N/ Y% S4 \" ~1 L
  191. ; B  e3 d5 m  x' Y% r/ Z. P
  192. pconnect, popen 不会主动关闭的链接
    3 o) M* B' D1 B, e; _
  193. 参考上面
    1 f& F! ?( S' w3 |

  194. 6 {3 t! d8 m& s
  195. setOption 设置redis模式
    . n: G7 U# f: J" t) {, X
  196. - ]5 @9 v! U1 P1 h+ h6 [# W
  197. getOption 查看redis设置的模式2 R1 ]' z7 x' V

  198. : h9 L# e' u! ?1 R. d
  199. ping 查看连接状态
    4 V5 N. u- u' T% w5 p* E5 q

  200. ' A" [1 q. Q" R* }0 S# l; Z
  201. get 得到某个key的值(string值)
    / K1 o' X  E5 T+ s7 T6 {
  202. 如果该key不存在,return false
    0 N) ]* q8 H: V  s3 j3 X

  203. 3 n9 l5 z$ W& S& u% q$ q% x
  204. set 写入key 和 value(string值)
    9 u) |6 `# ~+ o7 u, C
  205. 如果写入成功,return ture
    . @- n/ x1 u! E% o, U$ ]: y0 U/ D9 I7 W

  206. : ^0 V8 N3 n- E+ X3 p$ Y9 c/ i
  207. setex 带生存时间的写入值
    " i( m/ ^. Z0 z7 y& V3 t
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    6 P  n- d) ]6 H4 y5 L

  209. ) f* m  R* S9 O* F+ v( j
  210. setnx 判断是否重复的,写入值
    % Z4 W( I9 c9 H% j7 {
  211. $redis->setnx('key', 'value');4 e7 Q' e# y; h% A$ I, W) |' A; n1 w
  212. $redis->setnx('key', 'value');
    9 [2 S  p5 {2 P8 c7 B0 |* a

  213. . ?& M8 _" l8 P
  214. delete  删除指定key的值
    , _6 [  q  e! B6 s# W) P
  215. 返回已经删除key的个数(长整数)$ j& b) C6 R: l6 \
  216. $redis->delete('key1', 'key2');6 W3 D3 W* ~$ Z! N
  217. $redis->delete(array('key3', 'key4', 'key5'));
    . i: h) y; q9 A0 `
  218. 1 ^5 [0 A  X$ |3 ^7 {
  219. ttl
    1 o5 f1 q& p* `% |
  220. 得到一个key的生存时间5 q' R' W. p8 F

  221. # A0 a. T8 F, [4 h7 c9 l2 `
  222. persist
    , n  i  ~: l$ N+ X
  223. 移除生存时间到期的key
    & W, V% S( R8 s  r' N. L2 W! B% Z
  224. 如果key到期 true 如果不到期 false0 ]1 ?) x% r5 M6 z# d8 c. }

  225. 9 {( M6 @4 H( w2 M. s
  226. mset (redis版本1.1以上才可以用)3 ^4 M$ i* O1 _
  227. 同时给多个key赋值' [& n( i! j, @: p) G5 H
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    % c. H2 {4 d) H& Q* T5 W
  229. ; |' ^7 {9 V! O. ?1 K* O

  230. ) J( N8 y& }% d3 H$ j

  231. + l$ b$ p0 s; y+ q
  232. multi, exec, discard7 O) t3 Z* m4 \2 K7 s3 Z/ W
  233. 进入或者退出事务模式- R# {: E2 d: G3 F% @% y
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI1 C0 e' r* y. \) {
  235. Redis::MULTI:将多个操作当成一个事务执行+ e7 ~- Z; O, F' B; T# l3 `5 T
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证7 r2 I0 M! q% g
  237. discard:删除一个事务, t/ V: z: D  s: h" J$ S9 E/ e
  238. 返回值
    5 ?/ N1 ~  J, Y/ j9 d; f$ J! x8 {; ?
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    : p% s$ b0 D# }7 d" Y0 U0 L
  240. 4 s) \! \/ x8 `5 k" B
  241. watch, unwatch (代码测试后,不能达到所说的效果)! f, s9 q  q, v9 D6 P3 ~( r
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    ' z$ A4 H6 }4 v/ ]% W$ r+ V
  243. unwatch  取消被这个程序监测的所有key. W2 i8 s5 D6 C9 h
  244. 参数,一对key的列表) V$ z8 E! A6 }4 S% E; d! ~/ L
  245. $redis->watch('x');- D4 W0 v& e$ Y+ K' d1 `" f$ h+ N

  246. 2 n8 g6 L' K6 r" \; f# k: N
  247. $ret = $redis->multi() ->incr('x') ->exec();
    ; [6 {! Z, U' ?' O% K3 Q: w. m3 L6 s; S

  248. 6 l5 Z' k! c3 C6 I! I
  249. ( p4 K; n  w2 X& l1 H: p2 ~
  250. subscribe *# I( j$ H8 y1 {
  251. 方法回调。注意,该方法可能在未来里发生改变
    6 b8 m: C! v6 V% {+ }6 s* p; O; m

  252. 0 {4 W5 j' g. K9 Q. _+ G
  253. publish *
    $ K3 c1 B- _; O" S: t& B% F
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    / g) C( `9 `! @# V' y3 F* e
  255. & `2 @, `. E3 O: {: n& t3 Y
  256. exists+ U7 w- B7 T! `$ }7 I7 ?; [0 O' F. a
  257. 判断key是否存在。存在 true 不在 false1 }+ d1 y% G% v: P8 d6 A& ], N; z
  258. : i  i! r# ^, ~5 b- e% K
  259. incr, incrBy
    + F& h4 D4 l8 _  \# i5 w
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值; d9 F# F' k7 O" c/ B( f
  261. $redis->incr('key1');
    ( n8 r, s/ H8 T9 ~5 D) I& e
  262. $redis->incrBy('key1', 10);
    ' y: R. e- N) b0 a. @2 l) B  M+ C

  263. 7 z1 L$ O  p/ n
  264. decr, decrBy
      x' b( h6 E" l- t3 L
  265. 做减法,使用方法同incr; ~5 A* y/ Z( X7 |
  266. + D/ Z: w7 s* M+ {3 t
  267. getMultiple
    $ q1 V1 g, n* v+ A: h2 P1 G3 {  ]! }' ~
  268. 传参
    ! n3 t& r. ]/ W+ m3 l0 j
  269. 由key组成的数组
    2 x. h8 T; ~- D# i/ K- @
  270. 返回参数4 ]* V: O1 }. \! n3 g/ u
  271. 如果key存在返回value,不存在返回false
    " g8 [" `% f; }4 M: v, B
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    - W5 R4 R( v2 y; S4 y
  273. $redis->lRem('key1', 'A', 2);$ x" }; b* |& s+ `/ p( J5 P
  274. $redis->lRange('key1', 0, -1);0 u, i3 I' |9 N' L

  275. 9 w& ]6 A5 }! j' P4 Q- i& P
  276. list相关操作2 b4 S; r8 w8 l4 \# n( b
  277. lPush1 Y! B3 |4 x- d
  278. $redis->lPush(key, value);# O: T; `; B% Z$ q3 I2 q
  279. 在名称为key的list左边(头)添加一个值为value的 元素. f5 {9 ]4 I7 m4 c# n7 F$ ~1 B5 T

  280. % R% d9 o0 R+ T, ^
  281. rPush
    6 S5 r6 [- ]7 x; T
  282. $redis->rPush(key, value);
    / R5 A% o/ I+ z) J+ V+ C0 J; I
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    9 b/ u6 B* @% V* ?+ T' o7 V

  284. / P3 M6 F$ |+ C3 e7 y, I) J) f9 u
  285. lPushx/rPushx( Q$ d( g  ]& L: f) ]. C
  286. $redis->lPushx(key, value);* F+ o2 ~, i7 J3 g$ G
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加4 n% y3 H2 b: X3 w4 f  g( S! ]

  288. - k* G9 n4 D4 |- M
  289. lPop/rPop
    # g7 k7 a- O; `+ p( A4 u
  290. $redis->lPop('key');9 H. C" w( r4 x7 T$ O* c# O$ ]
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素: w# ]( h# t, _

  292. ' X7 b( E7 `, M( I; D% U
  293. blPop/brPop( m8 V, F0 C# O4 g7 s
  294. $redis->blPop('key1', 'key2', 10);
    - ]6 J( Z* B* w) w
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作2 O! u+ I5 h6 n! ?( ~" L

  296. 9 d1 K& l& R, I' E
  297. lSize0 y+ G7 M" |- P  Q
  298. $redis->lSize('key');3 s6 Z$ _2 o0 r. K$ y( }7 _
  299. 返回名称为key的list有多少个元素- E  s; K+ t1 a2 I* I( s: x
  300. 1 n, L( ^+ ]0 e/ {. h! N
  301. lIndex, lGet& j* l* L2 Q( ^7 {# L+ o; _& v$ Q
  302. $redis->lGet('key', 0);
    5 |: ~# x7 [# N, L  P
  303. 返回名称为key的list中index位置的元素9 B* z$ n) m7 C, i
  304. % ^* G1 r; N. A1 Q# ]8 y2 N, e3 c1 M
  305. lSet
    # H% ?) w, R# h$ d1 }
  306. $redis->lSet('key', 0, 'X');
    - I- d2 U, B2 ?  i) \6 K) j
  307. 给名称为key的list中index位置的元素赋值为value& W- s+ F4 [9 F% J; p/ c: R

  308. $ w% o: v/ C/ c: p' M$ {
  309. lRange, lGetRange
    % c( o( i  G, U" N+ O1 q* g
  310. $redis->lRange('key1', 0, -1);
    $ J3 r& Y! H8 C+ t5 x
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    9 t0 o! j' a( t. ^# h1 d. q
  312. $ s+ w% R: P% o: {- i: ~/ ~
  313. lTrim, listTrim3 V& i. _5 W6 Z0 L$ B- n4 v3 u
  314. $redis->lTrim('key', start, end);
    # q; y6 J' C' d# ~& m
  315. 截取名称为key的list,保留start至end之间的元素/ ?/ c; U5 z) j5 A3 U# N6 _! b
  316. % @# h% k; k- h0 Q1 X( A/ d
  317. lRem, lRemove
    # w7 H, {$ f" q6 r" _, c
  318. $redis->lRem('key', 'A', 2);& b& b; t0 c* h3 P5 j! E& v
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ! }4 B+ _& l7 h
  320. 0 P6 c8 |2 T/ s/ ^+ M+ X6 J4 {
  321. lInsert6 E* H1 k5 Y; O4 B& C
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ' O) P- c6 T0 W& [
  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');
    1 k: t9 l- j! W+ d2 g1 t7 M' U
  324. $redis->lRange('key1', 0, -1);
    ' E- N' G! n6 B1 a, C9 \6 i
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');: R+ _0 l; ^! e: g; D# c( @7 U7 S
  326. $redis->lRange('key1', 0, -1);/ w/ v+ z! g8 D) Y% N
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    * k7 s8 \/ J4 w
  328. 1 X; X" c) k/ P1 R! M- u" C
  329. rpoplpush
    : e4 W2 n3 {  Q: P) Y
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    2 Q+ m  [' U9 j* h4 E9 W
  331. $redis->delete('x', 'y');
    / o1 z2 P/ d' ~! C
  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'));
    " W4 o. K7 U; d  G
  333. var_dump($redis->lRange('x', 0, -1));
    * R6 o5 p3 m! S& d0 B2 g5 {2 D
  334. var_dump($redis->lRange('y', 0, -1)); ) b) u. j( U- ~
  335. 7 J) F& @8 a( s2 j
  336. string(3) "abc"
    0 s; _$ _$ y6 G6 v
  337. array(1) { [0]=> string(3) "def" }
      A, q; C$ r7 S4 a$ u! Q1 R/ \7 ~0 G' R! T
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    3 {1 m* r" G" R, M5 e1 o

  339. , ~- }8 q) T% g) @) q
  340. SET操作相关
    3 s% F! @% v  m& @) a) u
  341. sAdd8 L2 w- g4 Q6 r/ K6 @  h& h8 x2 S
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false# ?& T* u9 m) U3 n2 H
  343. $redis->sAdd(key , value);. O3 u% }, p4 @& |9 @1 Q
  344. ' B) ^1 e" m2 `# M, M0 k" t
  345. sRem, sRemove8 r7 t) |; t: n: `+ J7 @
  346. 删除名称为key的set中的元素value" l% r1 @4 ^2 K& z& Z
  347. $redis->sAdd('key1' , 'set1');. V4 B! e  f9 n) x2 v
  348. $redis->sAdd('key1' , 'set2');0 v2 c9 E* A* [1 w( W
  349. $redis->sAdd('key1' , 'set3');$ d$ f- j# O, f8 K2 E4 x
  350. $redis->sRem('key1', 'set2');1 b5 [  k, Y' q. i, \

  351. * @2 a4 R6 n& V; o' k. U+ y4 r
  352. sMove; ?# U" A) l- y$ O& Y
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    & B8 c+ Q& y" u% C9 J- C
  354. $redis->sMove(seckey, dstkey, value);5 |* r& o2 W& i) k- G3 X& \$ y$ Z- U

  355. 6 b! p& \2 L9 R& o. R
  356. sIsMember, sContains. E. J: K1 \3 S+ a; `# n! d
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false( P+ |5 ^2 m7 v
  358. $redis->sIsMember(key, value);
    " {; M& b6 A) {0 p/ X6 K$ W# k% J

  359. & d+ f' a. ]. M
  360. sCard, sSize* c: ]( X1 T5 M, X
  361. 返回名称为key的set的元素个数$ s* ~" |) y2 D$ U
  362. 7 v/ q8 ?& [( J
  363. sPop: d: ^3 W. P5 V
  364. 随机返回并删除名称为key的set中一个元素
    $ l" B3 R' g) ^( ~. w

  365. 0 U: X# D- `+ |. g+ D; ]1 d
  366. sRandMember
    4 W- `3 u5 A/ c5 N
  367. 随机返回名称为key的set中一个元素,不删除
    6 D6 i/ R. O9 e8 c1 C2 q$ C. o+ z

  368. 7 E. x& L$ ]; l, ]2 o& ]9 _
  369. sInter
      @. M1 D. Q/ I/ y
  370. 求交集  q3 L9 o! Z8 w( d' b
  371. & W/ S1 v" q& ~
  372. sInterStore
    $ I4 g2 E7 q+ Q# P+ h7 p
  373. 求交集并将交集保存到output的集合
    . V% {* A1 i& R% M
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ! e/ X7 a6 p! r7 q- t4 m) j- i

  375. 3 b7 W" ^/ p! H; E$ q
  376. sUnion
    + X" U9 T% G4 |. h+ T8 x& [
  377. 求并集* v: |& K7 a0 ]9 |+ k2 n3 ~
  378. $redis->sUnion('s0', 's1', 's2');
    9 M2 s0 Z( j# z$ s8 o6 a  B
  379. s0,s1,s2 同时求并集
    , S8 m2 H2 K' S; \* C
  380. ; V, K5 L& h* L9 N) _4 H
  381. sUnionStore9 f) `( B% X  C0 O; k
  382. 求并集并将并集保存到output的集合5 [) }7 u8 n) G8 U
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    8 w5 |9 S  B# C

  384. ' g: f* Y) K( J
  385. sDiff* E8 N. b* @: ^" E
  386. 求差集2 w8 `1 S' J3 w$ j: B

  387. 5 h$ a( g% Q$ ]+ z# i4 \( q# \
  388. sDiffStore( N* x! ~% ?  S1 _* \7 |8 z
  389. 求差集并将差集保存到output的集合# R: r" c; i  _1 c
  390. ' S+ Y; v( ]8 |, a2 L
  391. sMembers, sGetMembers
    # g+ i% A* n* C  q
  392. 返回名称为key的set的所有元素  L* \- N. V. r3 H) F4 G/ v8 n

  393. ( t2 U  o, a/ P. A. {. L( m0 J
  394. sort
    ' R( d2 E) D+ H- F) P7 o
  395. 排序,分页等0 E0 t. S# z! K# X9 T" |! V
  396. 参数+ P! V! w9 c+ N& n; s) r) T% m* E/ `" c
  397. 'by' => 'some_pattern_*',! ~& I; O* D* a2 d1 M
  398. 'limit' => array(0, 1),
    9 N9 \% ^0 c# s% [. b# J: {  N
  399. 'get' => 'some_other_pattern_*' or an array of patterns,5 K5 I% B, h3 T- d0 d/ e1 F* H2 G
  400. 'sort' => 'asc' or 'desc',
    5 `4 U2 S) z6 [' h2 w+ k$ S
  401. 'alpha' => TRUE,
    " s7 N: O: ^/ q
  402. 'store' => 'external-key'
    4 P3 o6 v  U5 t' L* j- ~
  403. 例子
      s, m5 Y/ }& X1 B! @
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    ) l3 f0 b: K1 E# r& Z8 w& w
  405. var_dump($redis->sort('s')); // 1,2,3,4,5: }8 V, O1 H( F+ m8 B* a9 F
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,11 w' _8 U7 I/ z
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5& z# N3 P  y$ i, S  Y

  408. 8 e: {6 d4 n5 g+ O0 D
  409. string命令. y! J( A3 R, U
  410. getSet, q7 l& U' p0 |! N! X$ e8 b4 M; V
  411. 返回原来key中的值,并将value写入key! D$ `9 N3 W2 R' m0 _
  412. $redis->set('x', '42');
    + Y1 a- G1 A0 N: A, ^, V( S
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    + H- j7 Y8 ^! A# N/ y. {/ H
  414. $newValue = $redis->get('x')' // return 'lol'
    * f: F6 v) T4 [6 m& N. u' B
  415. 1 i. u' Y4 v$ y% |8 L9 Q  `
  416. append. M9 c& \1 l" @$ G" i8 w. @
  417. string,名称为key的string的值在后面加上value, s- z# ^; l6 d/ ^+ u7 H( J! U
  418. $redis->set('key', 'value1');' _% r/ u6 U* q0 S* `& A2 B/ b
  419. $redis->append('key', 'value2');
    9 o! K7 y6 y5 r& G7 L6 H2 ~
  420. $redis->get('key');% W$ l! B. A8 h" N3 E7 Y7 h
  421. % U( {) e3 `* y6 f
  422. getRange (方法不存在)# O  y6 R' {! L! r- ~# Q% F
  423. 返回名称为key的string中start至end之间的字符
    " x# g% }! ?* b( g3 w( R  ?) c
  424. $redis->set('key', 'string value');% H# s% n/ |) ^
  425. $redis->getRange('key', 0, 5);) f, l# E/ [- b# r3 `2 Z, L
  426. $redis->getRange('key', -5, -1);
    7 j# @( l' h# N9 H
  427. " j4 m% w% x: T1 c
  428. setRange (方法不存在)0 Z" v6 |: f, A( {- Q: Z
  429. 改变key的string中start至end之间的字符为value
    ; r5 o" d( q$ [- f
  430. $redis->set('key', 'Hello world');
    5 d( z) x$ c& W: g8 G6 C$ J! }
  431. $redis->setRange('key', 6, "redis");4 a9 D3 _( W* S- M' L0 D/ b+ F
  432. $redis->get('key');
    ) o3 Y- I( L% V7 ]0 R

  433. * Y$ n+ W" |* M: N  s5 E
  434. strlen
    ) B+ \3 n/ {) q3 Y4 s7 v
  435. 得到key的string的长度  u7 C. g7 {, J0 j( j1 B
  436. $redis->strlen('key');
    - q8 I, o( b5 R4 A

  437. 1 k/ i3 _; N2 m* x8 H8 r
  438. getBit/setBit
    8 s  T: G; M/ E' {8 k% U
  439. 返回2进制信息' \6 M8 |! V' L- L. M

  440. 2 p! y% e7 N" g- g" m
  441. zset(sorted set)操作相关
    3 V* b- o- }* _: h1 Y- Y/ F+ d+ R
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。/ m$ _5 q7 H6 ~0 G
  443. $redis->zAdd('key', 1, 'val1');
    : x3 \5 [4 I" i/ X) U
  444. $redis->zAdd('key', 0, 'val0');" l* b+ T2 u+ Q4 y5 {6 k
  445. $redis->zAdd('key', 5, 'val5');
    $ x: e1 e+ @( a8 ~4 ]
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)" L) o- E. R; ^+ p

  447. ) I; k% K3 R$ i. A7 P
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    # ^5 ?& c+ s, I, e
  449. $redis->zAdd('key1', 0, 'val0');; |: k8 Y' \. G, y5 A
  450. $redis->zAdd('key1', 2, 'val2');2 w1 A. K" M1 t" I" q# K5 `: W
  451. $redis->zAdd('key1', 10, 'val10');
    . R6 e$ [) r8 H# x
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);4 |% w; N# E! P9 H- [" i9 W- X! ]
  453. / m9 R  M% T7 ~2 {% P: O
  454. zDelete, zRem; H7 S0 U( P, o0 |7 A
  455. zRem(key, member) :删除名称为key的zset中的元素member! N* f1 w& z' N3 K, Y( \" I7 x( N/ E+ z
  456. $redis->zAdd('key', 0, 'val0');: C9 ~6 B1 o) {% E$ n  F4 I. b
  457. $redis->zAdd('key', 2, 'val2');2 |: H- L8 M( ^% M: b
  458. $redis->zAdd('key', 10, 'val10');8 u& D& i! Y- R. v- b0 M
  459. $redis->zDelete('key', 'val2');( n$ B9 @1 v% h2 A- e8 V
  460. $redis->zRange('key', 0, -1); % C/ i( @9 b8 |, O1 d( {$ a( g3 n' P
  461. + J0 B, N" C  s7 j. ~& ]  c; s' g& @
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    : m; r7 I% ]: ?
  463. $redis->zAdd('key', 0, 'val0');
    9 s% V- I- s7 U  B8 g4 U8 d. c
  464. $redis->zAdd('key', 2, 'val2');
    : H8 C+ L7 r# ?, F
  465. $redis->zAdd('key', 10, 'val10');
    / h9 o5 [* B/ m! K( q, F9 b1 I6 K
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    6 H& q& z) j+ H6 ]/ p2 e

  467. 3 ~/ y3 O, ~. w" g
  468. zRangeByScore, zRevRangeByScore
    * h( z- }* P7 A( [
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    2 q& Y: @/ ^% [) q0 s0 E  @" y
  470. 返回名称为key的zset中score >= star且score <= end的所有元素& t# ^" n: O. ^& N* ]3 G
  471. 7 {1 c# x2 X& D# G0 b3 |& A! j  ~
  472. zCount- E! h$ ^# Q* f! H( I! C' i; ]0 @: P
  473. $redis->zCount(key, star, end);4 K3 \" h8 y4 k
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数# }# q% \  `5 u

  475. 8 K$ f% M! ^7 b$ k4 y, h- ^
  476. zRemRangeByScore, zDeleteRangeByScore! w! C* O, x  Z
  477. $redis->zRemRangeByScore('key', star, end);, P8 [. Q! T( N# ?- [' c
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    - i0 j% B7 }' ^4 X% d; M- U
  479. 8 H- {; |6 H! E5 L
  480. zSize, zCard
    5 ^7 L/ c, N" Y3 ~
  481. 返回名称为key的zset的所有元素的个数2 n/ n5 R/ K: J( C( C6 U' K9 e3 D2 ^, A

  482. / T6 L, W- |, g3 ?2 r
  483. zScore% N  r) o  {; \! P; V; x
  484. $redis->zScore(key, val2);! r7 B1 W2 Q  ^" r. t+ m4 I+ q2 @
  485. 返回名称为key的zset中元素val2的score4 n5 S$ O( r4 C! `

  486. * Z% X5 Y* h5 T8 |$ M
  487. zRank, zRevRank2 E$ y# ?7 q' L, H+ R0 [2 o  V9 H
  488. $redis->zRevRank(key, val);5 z" q8 `7 \9 v
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    0 U8 w2 y$ C+ A, h: B4 |4 y
  490. 7 j3 F$ {! l* |9 `  K/ J
  491. zIncrBy( y- e0 s. m5 G( r& ]8 C
  492. $redis->zIncrBy('key', increment, 'member');9 z  R( E- i( D6 C1 o
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    & h, S- ~( e9 L

  494. % ?" {( N' G8 R8 Y; _
  495. zUnion/zInter
    4 j5 F; {- Q# f3 z8 f
  496. 参数
      A0 {$ X  `) W0 Y5 V; Q
  497. keyOutput3 n$ v" x/ K7 F, \6 n0 g- C9 m; V
  498. arrayZSetKeys
    0 X" r+ d  }9 `+ a$ A* k9 A
  499. arrayWeights+ }; v' W, t+ S0 e( v4 H
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion." N% L* y0 I; ?
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。4 M* o6 Q$ m  x8 {: k, b! k6 L
复制代码

: `# `( u/ t3 }
, w! u8 i: S8 ^) q! h9 j% D6 q2 u; D  Z
# a, I0 ?+ n  B# K4 \0 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 显示全部楼层
  1. $redis = new Redis();
    ) g5 x$ A& q) m
  2. //连接redis服务器   ~9 ]/ H. k# a" Y; l$ f; _
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-8 09:33 , Processed in 0.164846 second(s), 20 queries .

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