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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    3 ^2 L# L. O( w3 i' d2 a& F3 q# v, ]
  2. $redis = new Redis();  0 G( e- J5 Y( x& U
  3. $redis->connect('127.0.0.1', 6379);//serverip port5 U  b; Q3 z& v$ e2 Q9 q! w# d5 q
  4. $redis->auth('mypassword');//my redis password
    + l( b6 C! Q; _, x0 I
  5. $redis ->set( "test" , "Hello World");  % n0 H5 o. _; D! g  Z7 h
  6. echo $redis ->get( "test");, |% X  z) i1 ?
复制代码
php操作redis函数封装
  1. /**! z% z( Y7 U" K( b) m* g0 l9 Z7 e: p
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数% f8 ]( H) k0 T+ \
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi# [2 u) f& C* H1 M! V+ ?8 C8 y  F
  4. */
    ' r8 E# z: a/ P5 G" s8 Z0 D4 q
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){$ Z2 P) E0 C  j9 y7 f4 g  G- h
  6.     if(!$key||!$value) return false;4 G4 ^% u1 A) m+ ~' Q
  7.     $host = $host?$host:getenv('REDIS_HOST');* l. V6 M. J. u, Y
  8.     $port = $port?$port:getenv('REDIS_PORT');' E* E, Z% k+ D, U
  9.     $redis = new Redis();; K4 ]1 o1 [$ K( m0 O
  10.     $redis->connect($host, $port);, V1 }% L, x. i! V) V, d
  11.     $value = is_array($value)?json_encode($value):$value;( C! U( C- q9 ^$ M' |
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);% [; t8 E- S$ T6 C$ Q9 I  {
  13. }
    " N4 d# K% Z/ p7 D8 L% O$ S
  14. /**
    2 }& F: u. U2 \6 ]2 m6 E# R- n5 A  ]
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi4 O$ I, L3 r5 o  {# v! b4 Q
  16. */* U0 ]  a" p0 T! ?6 ~
  17. function RedisGet($key,$host='',$port=''){
    / ?$ ]3 P( k% I2 R
  18.     $redis = new Redis();6 a# ?/ v; C5 Z% C# L
  19.     $host = $host?$host:getenv('REDIS_HOST');
      _9 z3 S/ u) S* l3 A0 f4 z/ x$ Y
  20.     $port = $port?$port:getenv('REDIS_PORT');
    2 S2 r" `# U$ o' b
  21.     $redis->connect($host, $port);
    ) t9 ~' k( F# o$ j7 _* t
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    $ g2 Q# W& c8 @, G: w/ d
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);  m1 Q  [1 m/ ~* f
  24. }8 _3 _: e4 }, Z4 M3 V. U
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了8 d; T  o! H7 J! u% D2 q) B
  1. setex 带生存时间的写入值
    . ~' M9 l/ M6 C2 C$ T
  2. $redis->setex('key', 3600, 'value');
    ' I* q% r& ]' L
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1& P$ G! u) i# F" p0 s6 S+ U  @5 e
  4. $redis->setnx('key', 'value');
    8 ~$ ^6 g1 B1 }$ b
  5. 返回已经删除key  V9 P- x; {) b/ \- z% f
  6. $redis->delete('key1'); 成功返回1失败返回08 U) p9 j4 |5 f/ M* Y
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    . Q3 p5 v, S" U) }% S$ T
  8. 查询生存时间/ {- r* b9 E8 `3 W  O" \
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    ! _- H0 p+ }8 E  K
  10. 同时给多个key赋值,同时设置key0和key1; ]8 I$ c, J* O. T$ _& a
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));" t5 R$ w$ I( F
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值7 p* p0 g0 c$ A$ _) ]. `
  13. $redis->incr('key1');7 r! J3 m' {) h* b  ^% c& E) Q
  14. $redis->incrBy('key1', 10);5 Z% f8 b) g+ @* x" L: o5 i4 d
  15. 减法跟加法一样
    5 j/ b! S8 r5 Z5 @
  16. $redis->decr("key1"); 减少14 Q. W8 U+ Y& S% r5 o( Z
  17. $redis->decrBy("key1",5) 减少59 O8 a. \8 m) Y

  18. . t: [4 Z1 l' ?. r
  19. list相关操作,连表操作
    ; T8 t' k' F& o* }9 p% p+ `
  20. lPush5 u0 ?* H, B' G; ^, S- p
  21. $redis->lPush("list", "888");3 R- ~9 F2 c( |. d2 e% i& s
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
      e. h: T7 P4 M. G+ i; g+ C
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式9 c9 \6 ^4 W( l' o
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素( P0 G  x" a# e. ]5 R+ m# L: [. v
  25. lPushx/rPushx6 j3 s6 M" D% S/ L+ K
  26. $redis->lPushx(key, value);
    0 r& R# W; m! M
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加! ]9 K+ e9 k" i: F7 _1 d4 b9 O

  28. 8 m8 Q7 R/ `8 L% }* N2 F1 f
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key9 w  Z3 \0 V: l( @5 E" h
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key' ^# p0 Q3 `, i9 N
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    6 q8 x, H5 _' v
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    ) o1 J& [# C2 @$ A* A. a) G6 U/ Z
  33. sadd s1 zhangsan: B+ ]2 w7 r% ]: w6 A3 n+ ~
  34. sadd s1 lisi+ C. I9 P) Q, M: y9 \" n/ E* A
  35. sadd s1 wangwu
    2 i2 w" F- [' ?5 J. I1 F" v
  36. sadd t1 yangxingyi& F# ]2 E( f  \, H& S) d
  37. sadd t1 lilei% V0 E$ K& q5 A  S6 S- h0 I
  38. sadd t1 zhangsan2 z9 k9 I1 M. A0 v# ]* F6 l
  39. smembers s1 s1的所有集合内容
    ( O5 X: J# W6 C5 x% I9 R
  40. sdiff s1 t1 s1有的,t1没有的,差集. \6 R+ _% H/ c4 S, W  w9 [
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    $ n, H  O2 z, K+ _+ k3 Z' G
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的$ x- ]6 l/ W  l/ N% L
  43. spop抽奖场景,返回集合里面随机的数$ S  W8 I8 s) A) h( C2 A
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    $ L" a7 S3 N% e& t
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数3 Q1 F& a% n; K6 S
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的! L  ^! \9 O+ J' I& e9 z1 {! n
  47. 随机返回集合里面的一个元素,但不删除,重复中奖7 k& m5 e. t3 B3 g9 R; z1 I
  48. $i = $redis->srandmember('s1');echo $i;, u2 i) i3 A* \
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    ! f( }& @- ]& u: G
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
      [! K  S4 G. A# r( Z
  51. " Q6 @' M5 q! x( J7 }+ V, Z
  52. zadd key 2 value 有序集合
    8 q/ |7 r6 D8 n
  53. zadd y1 1 zhangsan;% L; ~( Y9 k: N- I: t
  54. zadd y1 3 lisi;* i, [' ]: c$ b9 u+ {/ @2 J
  55. zadd y1 2 wangwu;
      `. w9 r5 ^9 x" _8 A" @6 C/ X# ?
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi6 E2 J) A! w, y% ^
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    9 ^4 P, ]5 Q5 [" N' d
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    3 l! B& p7 s& D1 M% ^* H# \
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    3 y, x6 ~( ^1 g4 |! j
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的( B1 `$ m) d! B+ a9 g
  61. 无序就scard,有序就zcard,有z没有s1 @2 [' W9 K) x- Z
  62. sInterStore. z7 Z  Q# }6 Q& n- x) g
  63. 求交集并将交集保存到output的集合5 x% w! e% Q9 a0 G! ]2 R1 q
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    / X: W* L9 [& ^( ?( h5 |% ?/ o
  65.   \$ z+ R' Z, Z, A# a9 S% b
  66. Hash操作% w* u! Y. @( J3 d7 h5 `
  67. hSet+ f6 ~" t+ r9 w
  68. $redis->hSet('h', 'key1', 'hello');% c; M6 ]- Z+ U( _9 q
  69. 向名称为h的hash中添加元素key1—>hello
    ) ^- g$ d  v- \1 r2 _7 F. \

  70. $ t3 u  H4 d/ `+ `7 P- T+ V
  71. hGet
    % q9 p4 @: ?' y2 [
  72. $redis->hGet('h', 'key1');5 E0 Y! ]0 m% v" M6 F
  73. 返回名称为h的hash中key1对应的value(hello)
    ) C$ ]& F* a! T% `. {+ h" i7 T
  74. + I( Q0 L. l/ W: c2 X+ Q
  75. hLen4 G" E" }  @% \5 p: p
  76. $redis->hLen('h');4 k7 k8 C( f; M' P1 ]
  77. 返回名称为h的hash中元素个数
    4 ^# C' k. A" ?8 Q
  78. & e8 T) J2 o; L/ }7 Y
  79. hDel
    ; M( z# A( a0 C
  80. $redis->hDel('h', 'key1');
    , k3 G' C2 ^1 u  D
  81. 删除名称为h的hash中键为key1的域+ F) f# U3 J4 c$ p3 c0 f# d
  82. 4 g1 y+ c7 D0 ]# X
  83. hKeys, b& W/ t, |! H
  84. $redis->hKeys('h');
    6 I  y% s9 s  V8 ]
  85. 返回名称为key的hash中所有键4 h5 h% ^7 N3 e+ V! R2 g. M
  86. 8 h; m9 _) E6 v/ ^" P, P5 h
  87. hVals
      ~* B0 K& R" D8 u
  88. $redis->hVals('h')" i2 ^/ P  S  W/ C' R! H
  89. 返回名称为h的hash中所有键对应的value  g! V  Y$ j; F7 W
  90.   Y5 x& e* I% |6 M# x9 `+ ]" K
  91. hGetAll  w: I9 l8 `( e9 W6 ]  h! B$ y
  92. $redis->hGetAll('h');& v  @( U& W* i4 V& q1 F6 P
  93. 返回名称为h的hash中所有的键(field)及其对应的value% A3 z8 y0 P0 @. a$ ]" L( r$ k) b- R
  94. - t9 y# I$ B  U/ U
  95. hExists
    1 ]  t- A" x4 _& U
  96. $redis->hExists('h', 'a');+ q/ [6 g/ P( s8 f3 `
  97. 名称为h的hash中是否存在键名字为a的域& O/ s9 p6 M5 X
  98. ) `& q" T! q1 ~
  99. hIncrBy
    9 ^, n" K; V% f& A8 \! n" K
  100. $redis->hIncrBy('h', 'x', 2);
    " {' P9 a$ c, q  W' P3 D3 K
  101. 将名称为h的hash中x的value增加2& _* P# K$ I: S- E4 Z

  102. : ]8 E4 b) t$ V' ?' O0 e
  103. hMset
    / Z4 g# s4 U5 Z8 T
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    9 A' G# z+ s8 }6 p9 w+ X
  105. 向名称为key的hash中批量添加元素* |/ t9 q; N4 }; T
  106. 6 o' K4 t$ @# J4 ^& @1 c
  107. hMGet
    1 d" J, ^/ A) ~5 r
  108. $redis->hmGet('h', array('field1', 'field2'));
    ' n+ W3 |0 i8 z, {  E+ n
  109. 返回名称为h的hash中field1,field2对应的value' L$ T$ F( w- N% }% j5 m
  110. 7 f& f* r0 ~: z, b. |
  111. redis 操作相关
    , d; o* x7 t3 g' f) r
  112. flushDB
    0 e# ~0 W' C0 H& x9 c
  113. 清空当前数据库/ b4 j8 Q+ @3 j0 n- X# ]3 W: [# u
  114. % Z) `5 s8 }# i2 b
  115. flushAll; W% [1 z' J3 \3 F& k# L" R* F2 L
  116. 清空所有数据库
    " B# [, I' n6 A' ~9 C
  117. ' D- ^* X6 d7 Z& K2 i2 F3 R
  118. randomKey! N0 _# d1 p: O* D1 Z" }
  119. 随机返回key空间的一个key9 M  A; k) P9 X/ l( x5 T
  120. $key = $redis->randomKey();
    # U) G- K- n3 G7 U' e
  121. 1 @+ Q' v' K5 q& D. }6 i. @
  122. select
      r* q/ \' k! Z
  123. 选择一个数据库
    / D% p$ v, y* v& n& p' o4 w
  124. move3 R3 r* u. e5 j# r1 y, Z
  125. 转移一个key到另外一个数据库& o9 Z7 [; h' Z% e: K' s7 j% d, `
  126. $redis->select(0); // switch to DB 0
    # ?- |$ w* @0 i: B8 K% A. M
  127. $redis->set('x', '42'); // write 42 to x5 }! S5 W* Q5 j! R, P2 p
  128. $redis->move('x', 1); // move to DB 1% Z3 J0 D: a" z; W- q
  129. $redis->select(1); // switch to DB 1
    3 v4 ~, E* E% g+ [2 [
  130. $redis->get('x'); // will return 42; ~9 \% S  o2 \+ a* S

  131.   n" F, S- x0 F: M! ], b
  132. rename, renameKey
    + n  o' _: w8 g9 v8 ~
  133. 给key重命名) v  _$ s- `( p) m1 u
  134. $redis->set('x', '42');
    ( ?* Q& d$ ]% {
  135. $redis->rename('x', 'y');1 a% N; X) f# u4 O0 @
  136. $redis->get('y'); // → 42
    . \6 S  m# e1 y, `5 C- Y
  137. $redis->get('x'); // → `FALSE`
    / A0 p; `  i1 N: e9 b
  138. ; ]# x+ G5 X5 o& U
  139. renameNx
    $ {4 c( L( K' C9 s
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功- \4 f. S  n+ R0 {3 b
  141. - z5 q9 J2 M) N  @/ P
  142. setTimeout, expire. f0 ]0 f' `  E; S, S- r
  143. 设定一个key的活动时间(s)& A. s& w5 w+ b' s% s
  144. $redis->setTimeout('x', 3);
    % Q, [/ K2 A8 G5 R

  145. 0 H1 F4 Q0 }8 a
  146. expireAt+ _. E3 a1 n0 K! P. ]- J) Z
  147. key存活到一个unix时间戳时间6 `( b1 o- r0 J
  148. $redis->expireAt('x', time() + 3);
    5 H8 ?! @; Y: j  t: x# F
  149. & m$ d& I& _8 `' c/ F% @0 |) X
  150. keys, getKeys
    $ F+ j0 C" t# X" K9 y+ M: I& e
  151. 返回满足给定pattern的所有key
      L8 d5 S; [" H2 X9 B
  152. $keyWithUserPrefix = $redis->keys('user*');! f7 d& [, R3 w7 q

  153. ) v( S9 X( E1 b* L- W6 W
  154. dbSize1 d( P9 `1 r! P1 q
  155. 查看现在数据库有多少key( D4 G1 Y, D  H3 M
  156. $count = $redis->dbSize();8 x: u1 H& |$ c( H6 [* L2 d
  157. 1 C2 J( B7 G/ s& g
  158. auth8 Q1 W. l6 |+ `6 T% y0 E( N' Y
  159. 密码认证
    3 p9 {( {9 Z0 U1 L
  160. $redis->auth('foobared');! D1 }) z* K3 |4 Z& s; b% B/ S0 P

  161. ! B" E6 A( b0 {9 t7 F
  162. bgrewriteaof0 e, B1 H2 B% ~& H" i
  163. 使用aof来进行数据库持久化
    5 P8 d; ]# P" l
  164. $redis->bgrewriteaof();
    ' b! t" s& F3 d! ?
  165. ; R% P/ w& q3 ?4 _
  166. slaveof
    - c6 w& N& T; b
  167. 选择从服务器: j% w( j( \0 G: V- Y" N
  168. $redis->slaveof('10.0.1.7', 6379);: o6 a( Y) f; w

  169. ; t3 {% v5 M4 W( }& @: H6 M( ]
  170. save
    / ]* q9 c6 c( H9 F* b
  171. 将数据同步保存到磁盘$ W" O: t' J! Z2 P, R$ x9 T
  172. 0 w& f+ U! m; h  m3 h8 q! k
  173. bgsave
    3 g  d; N. S0 o$ \
  174. 将数据异步保存到磁盘
    * {5 r6 D' f  Q. o
  175. ) q* u# r& o0 ~( [0 D" S# A9 e
  176. lastSave7 z! a6 `! L( Q% S% r% C
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    / N. n: W, B. z/ m# w" U1 y1 q3 u! G

  178. , q# ?6 p0 ~% ^7 i* F% z7 T+ S
  179. info- ]; j/ C. p& H
  180. 返回redis的版本信息等详情
    , r0 k- }, j& I0 c( k8 C
  181. , `. t% J0 o4 ~; @# ?
  182. Redis::__construct构造函数
    , d/ s: S  ?3 b2 N* t( d% S* ^
  183. $redis = new Redis();0 G3 c- k! p9 ?: t+ G
  184. * k2 {) N" `- w+ W$ o9 J  `
  185. connect, open 链接redis服务
    ( @/ C% E- G# k3 `8 }  T( |2 U2 @
  186. 参数" a+ M( J3 x. z( y' P3 i; Y; ]
  187. host: string,服务地址! d- R* N" l; K' `% M$ B* l
  188. port: int,端口号: b: j* j% j: z4 ~- Q+ J" H
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)' X0 t+ B2 K9 H" T
  190. 注: 在redis.conf中也有时间,默认为3000 D( S  Z6 S8 y$ y: y
  191. ! q. F" ^. n! G. B5 w5 }
  192. pconnect, popen 不会主动关闭的链接& ], ~7 f- J3 T7 O
  193. 参考上面" W7 K5 N) A2 {( o

  194. 7 J! C7 E& a+ H  g# }
  195. setOption 设置redis模式
    9 h* B$ T0 O/ h5 T& M3 P; J! ]
  196. ' {9 C  I  Y, E0 h: A  i) f/ Q
  197. getOption 查看redis设置的模式
    , K8 T! k: p; M  J2 }3 Y2 n
  198. $ `5 u! D+ e+ @* D! D8 U' k$ \9 d5 A
  199. ping 查看连接状态, z- ?& \- W- d$ H5 _8 ]

  200. % H. S, s0 t! L5 g
  201. get 得到某个key的值(string值)9 e6 S) i! o: n' i! c" A( s- B
  202. 如果该key不存在,return false% g0 z7 j3 q% y# R0 `# }! g2 |7 D
  203. 7 N* G1 o6 n: V+ `, ^" q
  204. set 写入key 和 value(string值); w) ?7 Q/ m& }+ |5 d
  205. 如果写入成功,return ture
    4 q& l7 {2 P7 D9 ]' Y

  206. : H; ~  M: ]8 O; }  o3 w! ]
  207. setex 带生存时间的写入值- I% ~" d: a' Z" g/ X: r' I
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
      H" w, q0 T! ?

  209. 4 F* ?! A0 |* c" S
  210. setnx 判断是否重复的,写入值' @! S7 o* H0 T8 Q
  211. $redis->setnx('key', 'value');3 d3 p9 o  ]$ U! y3 B! D4 B8 q
  212. $redis->setnx('key', 'value');: B7 m8 n2 e8 e! c, R
  213. ' {1 H3 n( d2 t6 o
  214. delete  删除指定key的值
    7 ]1 K- w2 g% d
  215. 返回已经删除key的个数(长整数)
    + x! K; {# R' i' _6 X/ M# T" a
  216. $redis->delete('key1', 'key2');1 J% |" ~( `5 v# N
  217. $redis->delete(array('key3', 'key4', 'key5'));
    : m  F4 w; A0 x2 @0 ?3 k! J; Z) c

  218. 6 j9 @2 Z( u* g
  219. ttl
    8 y% q# E7 B8 Q! W% n3 c" Z% V1 k
  220. 得到一个key的生存时间
    - G1 F" s( p. l7 O+ s+ l# `
  221. + c- q  m$ ~- i! n- l; A' ^
  222. persist' ?! ?- f8 e( f2 o  E
  223. 移除生存时间到期的key/ s2 d% Z3 z3 Z* |- F2 X" Q& C/ O' }
  224. 如果key到期 true 如果不到期 false
    - y6 R- k' ]8 ~+ Q4 c8 C% u, \

  225. 2 B, _9 h( p- T" r
  226. mset (redis版本1.1以上才可以用)6 p  z& E1 {8 `/ j  s% v" L
  227. 同时给多个key赋值# i: j# x' [+ y# c8 k  L
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));& d: Y( t/ v2 M- ^  @
  229. $ @8 T' y5 s5 C2 k$ ^

  230. ! A  [6 _* w. `5 X. E

  231. . f% E0 i3 {0 ]) ?
  232. multi, exec, discard; z0 M8 n4 x8 [$ M# T
  233. 进入或者退出事务模式) N% q3 F, ?, x1 I" W8 P
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI, h3 e; g( N4 Y  N/ b9 V
  235. Redis::MULTI:将多个操作当成一个事务执行
    + p, |5 K" d& Z, j' F! m+ ^: ?% ~
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证7 E4 ?9 p$ W. S" k) {6 P1 [$ a
  237. discard:删除一个事务
    / z: ~2 G9 ^6 e. r. a8 i+ d6 j
  238. 返回值
    $ y+ ]9 C9 K& @) `' J9 t
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。) B6 L; ^) y( r* [$ @2 W
  240. . ?/ T3 d1 S8 N8 Z
  241. watch, unwatch (代码测试后,不能达到所说的效果)/ S, X0 n  I/ G" G0 J! L/ P
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    $ r7 O, X$ o' _
  243. unwatch  取消被这个程序监测的所有key# K3 h* r6 o6 |/ x5 c& f
  244. 参数,一对key的列表
    % H7 M  `7 a. V7 W! E0 P
  245. $redis->watch('x');
    6 O* U! u8 D6 _
  246. ' x8 |# L$ C% g6 f7 C2 o
  247. $ret = $redis->multi() ->incr('x') ->exec();& T! k. ]2 Y7 D! S7 B/ a5 d, w6 K

  248. / d: s5 B2 N* B# j0 }; [

  249. 4 q; P* L7 p& M) e2 ?) t  w) E
  250. subscribe *" F% Q7 Q! f! t+ M
  251. 方法回调。注意,该方法可能在未来里发生改变
    & r, t% J6 P( a+ G9 f5 ?; y  h
  252. 2 O- B; f7 A! T9 }- M6 {+ H! ^
  253. publish *7 B  R# F/ b# ~+ S& s# Q
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    1 J4 B1 }" B% N3 W

  255. " H# f1 Y  \- R" e, r
  256. exists) \; C2 e& T1 y! Q! @8 T, w4 J! J
  257. 判断key是否存在。存在 true 不在 false# L2 w; n# B9 s9 S

  258. , P/ F  M* P$ B" {8 V
  259. incr, incrBy3 R. _! r) @$ Z
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值5 I: E+ b! \% F8 x1 \, C! l/ W$ P
  261. $redis->incr('key1');% t0 A: m; V  j' _
  262. $redis->incrBy('key1', 10);+ j" T  e& K* t  p* i3 f- a
  263. . C; e% d& _- I0 x! o1 [
  264. decr, decrBy+ h! u: I! U3 L' M/ Y
  265. 做减法,使用方法同incr
    + O6 n1 w, E- d% {% z

  266. - x- Z5 q* }% H' b# \
  267. getMultiple3 q5 Q+ f( H- Z
  268. 传参
    " p, {/ W1 h6 q# G1 k- m( T( k2 f; o
  269. 由key组成的数组2 {% v+ R" Q* @+ e& U- N8 h, a  I
  270. 返回参数
    + L* Y% ]* h8 B; k
  271. 如果key存在返回value,不存在返回false
    ! t$ F) h8 f7 t& r
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    " D1 ^' ^' ~$ u
  273. $redis->lRem('key1', 'A', 2);
    + Q9 v' l: F, Y/ O
  274. $redis->lRange('key1', 0, -1);
    2 j+ X9 p' u! a& A/ w/ N

  275. 5 {% ]' i, u0 _9 v* ~) i
  276. list相关操作) p/ \3 e3 o; D# d' e! J7 @; f" a
  277. lPush% j" k, v/ z5 h
  278. $redis->lPush(key, value);
    ! y1 K" T* h* [* V" N9 z+ U
  279. 在名称为key的list左边(头)添加一个值为value的 元素) _! I2 z% @( ~0 f
  280. 3 j9 l7 Y7 ?0 |% j
  281. rPush
    . \7 {1 `9 A: S+ I* I+ |
  282. $redis->rPush(key, value);
    ' g+ z# \$ k' q& E$ f# }( Q
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    0 I7 l" }. a; b% G1 ?* |( d8 ?

  284. 1 g% P) V  p+ U. ~& Q
  285. lPushx/rPushx9 o9 J- E; t# }4 E
  286. $redis->lPushx(key, value);: d/ q4 V# E% b9 ?9 g
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加& T# B4 L4 p! R9 ?$ o
  288. , z* A1 `1 C0 l* @, d. J0 n
  289. lPop/rPop% O( l% K$ i$ c
  290. $redis->lPop('key');
    9 E6 N/ ?! \, ^3 ]( c: Q
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素% x! C1 I. q# t: G) }' H

  292. + o# {9 b. e' w* _, u$ w
  293. blPop/brPop2 O4 W' m; P8 x, v# y
  294. $redis->blPop('key1', 'key2', 10);( ^6 J  s8 I/ ~6 I" w4 [
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    " h, h+ @" ^- F( ?
  296. 8 b0 N2 I6 B/ n  s; k
  297. lSize8 X4 N# w) @* F
  298. $redis->lSize('key');. x1 B, z$ r2 ^: P2 |
  299. 返回名称为key的list有多少个元素, f, B0 g9 ], i( }2 a! F
  300. ! }: q5 Y* U2 j+ u5 x3 I8 |9 c
  301. lIndex, lGet
    9 o7 l3 H) B* B. s
  302. $redis->lGet('key', 0);6 t1 f0 u; ~8 \+ p6 G
  303. 返回名称为key的list中index位置的元素
    " M/ y% M: w! W
  304. ( X' v6 o; [3 l: i7 M* w2 q% R
  305. lSet
    4 P' r) ~7 D$ E8 X+ F7 `
  306. $redis->lSet('key', 0, 'X');
    / t+ n% Z6 R! ~+ ~& f
  307. 给名称为key的list中index位置的元素赋值为value
    ) J& g; W( K3 ~
  308. / w$ V- y8 a  v
  309. lRange, lGetRange
    6 b/ R0 l" x. k4 F- R0 e- @0 q1 e
  310. $redis->lRange('key1', 0, -1);
    . Q6 ~  M: j- G' Y  d9 b
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    3 S" K2 a5 M+ u$ _4 S

  312. ; ~9 r6 d/ T  Y
  313. lTrim, listTrim& ^) Z. J' ^, e! @1 e1 [2 V3 q7 Y
  314. $redis->lTrim('key', start, end);
    0 P( {0 Z, j: p8 k& C! f
  315. 截取名称为key的list,保留start至end之间的元素) ]5 g+ Q  u. ^! V" N+ X1 a% o

  316. , w" k4 r3 x% [+ k' L2 O$ V6 B
  317. lRem, lRemove
    % ]! A0 @3 l, P$ }; m
  318. $redis->lRem('key', 'A', 2);
      {, h1 r) l: f. L1 ]  C
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素0 x8 X' p7 p8 ?/ o5 `& P, Y
  320. 8 h4 I7 j" L) E3 U' O# R
  321. lInsert
    # \1 ?/ c9 m* t( l0 C
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1- W7 |! S1 c- g7 E3 C4 Y1 R
  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');' c7 X9 |- z% \% x( p) v! o
  324. $redis->lRange('key1', 0, -1);+ {. q" f7 v5 m! \6 m
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    % N+ H4 ?" T; o  {9 i/ |  M
  326. $redis->lRange('key1', 0, -1);2 n3 Y% W1 t4 A; e9 T" ^
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');( ^' \; p( a9 `" r) q3 R- v) u

  328. - S$ M5 r0 w$ t2 ?; e, R' B
  329. rpoplpush
    ' Y: q; u4 S1 O7 z3 ^  l
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    9 T; P) g  k# E" w- H: U4 b3 W2 ]
  331. $redis->delete('x', 'y');
    " e1 y/ H1 W' f% h  M1 S
  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'));
    ( u! J8 J: f- p& J0 C0 [/ v4 J8 Q0 z2 @
  333. var_dump($redis->lRange('x', 0, -1));
    ' }, M$ p) X3 S/ s5 J% V+ t& O; G4 ^. M1 ~
  334. var_dump($redis->lRange('y', 0, -1));
    . g! p) b* R0 O1 t4 d3 p$ V

  335. / B2 Z6 F- q& O! v! D* q
  336. string(3) "abc" 0 o* R" K& g7 x1 W% d) |( q
  337. array(1) { [0]=> string(3) "def" }
    0 z, k. G* m! J0 n& [
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }! M; h  B# M, y" I

  339. 6 @) H- p* w. L3 a9 m1 K9 U6 `8 @
  340. SET操作相关
    * ^3 R4 g: H. {  _( Z& ~0 l: {
  341. sAdd
    + a- i' t; x, y3 v) _" m, ^9 s
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false  ]) a. W7 \: K
  343. $redis->sAdd(key , value);
    5 P: R- V: ], O# w8 ?! |

  344. : E. H2 s. |3 R' j8 X0 A4 N0 ~" k
  345. sRem, sRemove
    " W9 J% c- S$ U: u
  346. 删除名称为key的set中的元素value
    $ c% S4 q. e, j) z7 ~: I# O# r' C
  347. $redis->sAdd('key1' , 'set1');6 Q" }  I5 H) h" c0 R
  348. $redis->sAdd('key1' , 'set2');
    3 Z! v& @/ T5 L# ]* m
  349. $redis->sAdd('key1' , 'set3');
    * R- {) T& b# [' c# {
  350. $redis->sRem('key1', 'set2');8 A+ {$ i0 T% Y) M) [0 }/ ~6 g9 P: H1 L

  351. 1 |' o( R3 V: @6 |% w- y# B
  352. sMove- V+ V* c) V& o: C
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合" O/ C. l3 {9 z: G
  354. $redis->sMove(seckey, dstkey, value);6 w4 G; \/ b- V' j# Y/ X- a& F

  355. 6 T( B$ E) s& M9 R0 t
  356. sIsMember, sContains) M7 `9 a% p) R3 r
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false; ?6 d- Z9 |' a# C
  358. $redis->sIsMember(key, value);" U" t3 ^" r3 R+ a5 \

  359. * s5 i  r6 K( Q
  360. sCard, sSize! L$ [3 c1 k& y3 H/ D6 X" t+ F$ n$ Q
  361. 返回名称为key的set的元素个数
    9 Q; Z, g5 X+ e  G4 t, o3 _

  362. ) x0 I$ I* I* |5 v9 A- t
  363. sPop
    & Y' H8 J& I' X
  364. 随机返回并删除名称为key的set中一个元素8 p* O$ P/ H( h- a

  365. + k) v4 S7 v3 l: a' {
  366. sRandMember
    * b  n4 Y7 ?6 d( ]3 \" c& O
  367. 随机返回名称为key的set中一个元素,不删除, V' G6 K+ H; R3 v1 B

  368. 6 \  w0 I3 w9 y. X
  369. sInter
    / O! c) X0 V' o, U, O7 X
  370. 求交集5 l# `) l; M7 E) c

  371.   l! G# E$ c9 k# g0 p. h9 Y$ H; @6 T9 m
  372. sInterStore! z) P1 u2 T7 e* O+ B9 `# V
  373. 求交集并将交集保存到output的集合
    : m$ M. c' H1 j- V+ F  {- Q
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    8 [' R( M' A1 u3 H! g& m! ~/ ]

  375. ' U7 x- j1 [* {0 J7 x
  376. sUnion8 F/ ]* j4 p. m! I: c% F
  377. 求并集
    1 v+ ~) g: Q& p
  378. $redis->sUnion('s0', 's1', 's2');
    * x% V2 Z; ]- [, W* [
  379. s0,s1,s2 同时求并集: _  T5 q* k$ Q
  380. + f( W$ u, ]- h. x5 F; q
  381. sUnionStore7 U5 p+ [2 \8 E" `
  382. 求并集并将并集保存到output的集合2 P( u) R4 ~0 V( b! C# X
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    : ]# j" G1 n. i: `4 I+ T

  384. 5 u2 z9 `, T$ b6 A; \1 {* S; x- [
  385. sDiff
    & o% i5 G; m# `0 u
  386. 求差集
    0 p/ X! r+ N8 {1 ?) b6 Z# r& |  R

  387. * i0 Z2 Z% b/ r& [/ G0 q* t
  388. sDiffStore
    0 L6 G6 ?3 i, H# `! S+ b3 a+ x6 v
  389. 求差集并将差集保存到output的集合3 s+ ]6 Q- N$ X( y/ S! i" w  t9 H$ g* g
  390. 8 V2 Q; ~8 T8 I" }; M6 }
  391. sMembers, sGetMembers
    : W1 H4 p1 y+ n  v8 G/ s4 {
  392. 返回名称为key的set的所有元素
    0 l( |" r6 m& @# f, A& F4 O" h
  393. 9 B* n" F1 ^0 T& E, o" q+ }
  394. sort" G9 q* y+ Q( L. X7 e' F. X% \
  395. 排序,分页等9 S3 W/ R4 c! x5 l( V; V
  396. 参数
    7 t* [3 c; T% ?" G
  397. 'by' => 'some_pattern_*',( A+ m# X9 n& c# w' t3 Y
  398. 'limit' => array(0, 1),
    5 f7 @+ n$ M2 X5 d5 A6 a! b
  399. 'get' => 'some_other_pattern_*' or an array of patterns,6 _3 I! \. u7 l9 `/ m
  400. 'sort' => 'asc' or 'desc',
    $ d* o1 z) H; x. @
  401. 'alpha' => TRUE,
    : Z5 P; r0 o, O/ U
  402. 'store' => 'external-key'! E5 y0 }* f5 T6 q5 m1 L  w! D
  403. 例子
    " i) u% i: t- Q6 V% ~3 C6 L
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    & O8 `2 q) R) x( }1 p- ]
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    * Z3 n  T5 R5 T
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1- p+ R. p2 |; Q" U  i/ c  M
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5' s& e* W3 w1 P1 O% {" }( N! _" X2 c
  408. # d3 D: ~) |/ H- u' z2 u
  409. string命令
    7 X* U( A4 N  e# S
  410. getSet. K  s( p/ `, A+ D9 D8 ]
  411. 返回原来key中的值,并将value写入key5 M" v: \. q4 Y* Q
  412. $redis->set('x', '42');
    + Y8 d& u2 \' w: g. U, E
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    3 r* L+ E5 I1 f( n0 D4 ~
  414. $newValue = $redis->get('x')' // return 'lol'
    & H! T; D1 c5 M
  415. , x8 p) x1 p  S. ^  h
  416. append
    : P( a3 H$ u) u3 _6 x
  417. string,名称为key的string的值在后面加上value  g1 i' j7 v. m
  418. $redis->set('key', 'value1');
    * |: `' {5 S" B
  419. $redis->append('key', 'value2');9 Z; @8 t# |9 t5 j
  420. $redis->get('key');
    0 @4 a( {, P$ k

  421. + R+ [: A/ d0 q8 F. d1 Q
  422. getRange (方法不存在), Y3 Z0 B/ I- i: c$ V
  423. 返回名称为key的string中start至end之间的字符
    5 ]/ v, ]) S0 ?  C1 t
  424. $redis->set('key', 'string value');* Y/ t! l: N1 _; x8 A
  425. $redis->getRange('key', 0, 5);
    2 M# x9 d- I8 r: T3 T5 ?" _5 O& K
  426. $redis->getRange('key', -5, -1);
    , D  C8 v  w# ]& X$ V2 _
  427. + b6 T+ ^4 z4 h8 e# j8 l1 [) V
  428. setRange (方法不存在)4 K- B( C1 h. b/ T9 [  ]
  429. 改变key的string中start至end之间的字符为value; k& |, D3 B0 O' t3 v' t) ^# x
  430. $redis->set('key', 'Hello world');1 |% b% Q5 e0 }2 b
  431. $redis->setRange('key', 6, "redis");
    ! n. a! w( l2 x7 O$ }! g
  432. $redis->get('key');
    % J* J+ s/ U" t; S- ?: p7 y# ^) H

  433. 7 d) F1 l* f6 v, {; H% t6 G
  434. strlen
    * J7 z1 s, g9 M) T4 w, K
  435. 得到key的string的长度
    - J4 u% |$ P( M0 n/ h
  436. $redis->strlen('key');
    5 R, ?7 }, c% M: S% }' @
  437. * K# n# G8 ?4 v7 G  v8 o
  438. getBit/setBit, Q6 K/ p% r& e; G( v$ Y; h
  439. 返回2进制信息
    * a0 k) w5 h  ?1 l3 o

  440. % I) a0 ^- I5 C# r! z
  441. zset(sorted set)操作相关2 u' Y" @  [5 J% b2 M( P' ^5 J) n
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。$ [: c! q* @9 r6 p7 r
  443. $redis->zAdd('key', 1, 'val1');
    8 H% e, P3 ~& B5 u. p
  444. $redis->zAdd('key', 0, 'val0');
    : b- M7 n- q' C1 ]' @/ {
  445. $redis->zAdd('key', 5, 'val5');3 G+ @$ g4 c0 ]; a5 X: X
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)) M! `0 z% \" _- o6 C6 p: U6 y2 [' w. {

  447. + T' s4 B9 |% [" k
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素& O/ d" g  ^# f  H# u3 z' O0 A
  449. $redis->zAdd('key1', 0, 'val0');$ B4 G8 W5 @* L* L( x+ c# b) Z
  450. $redis->zAdd('key1', 2, 'val2');
    ! K+ U$ q3 T# {! l8 \( q
  451. $redis->zAdd('key1', 10, 'val10');  b! k5 O7 d/ B1 T; V" l1 }
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);5 V1 L6 d$ k; V* A! F1 U
  453. 2 n/ v) f- }4 b5 \3 p
  454. zDelete, zRem
    : n/ A  _  x4 s0 b6 G% v# X3 `  r5 P
  455. zRem(key, member) :删除名称为key的zset中的元素member
    ; l9 ^) \# b7 x; M9 s8 l& Q
  456. $redis->zAdd('key', 0, 'val0');! h& ?& C, a& B
  457. $redis->zAdd('key', 2, 'val2');
    3 S! e! T4 b2 i+ [! a
  458. $redis->zAdd('key', 10, 'val10');+ q; B5 a2 y% G+ |9 F( o$ C
  459. $redis->zDelete('key', 'val2');
    5 B, f/ @! N# p5 b/ m$ R
  460. $redis->zRange('key', 0, -1); + m/ ^$ S' A" P4 h. c3 Q
  461. + \7 L8 O3 {0 o6 Z6 _% l
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出# _0 C( U( D: R
  463. $redis->zAdd('key', 0, 'val0');
    % u+ g; l$ J6 H- B! s5 y' ^. p
  464. $redis->zAdd('key', 2, 'val2');
    ; |$ o" W4 d9 v5 u, u9 n( q) q0 s
  465. $redis->zAdd('key', 10, 'val10');
    " R: U; S- _7 ?9 e. m; z5 A
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    & I/ G; `, Z3 C0 j
  467.   @! O/ Y4 S( |  y. Z
  468. zRangeByScore, zRevRangeByScore
    ' `* X, j7 _1 M% Z1 J9 {
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));  y" S' X6 l- z
  470. 返回名称为key的zset中score >= star且score <= end的所有元素7 C( T" Q4 E5 @2 F

  471.   h8 h: \+ _, m
  472. zCount
    1 e! P# ~- B. Y; N) |. K9 u
  473. $redis->zCount(key, star, end);( ^& G5 z, R  f
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    # m5 y4 {, \6 R. q( Y
  475. : A; M$ l& @; c' Z" T
  476. zRemRangeByScore, zDeleteRangeByScore4 v% {/ ^0 b( N
  477. $redis->zRemRangeByScore('key', star, end);
    ) }4 O8 W' s2 U+ J/ ]
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数- B( f$ P% J. p5 L' W
  479. 3 K+ Y% ]4 f  F# P$ r# P
  480. zSize, zCard
    * F" k# i- [5 j0 [6 H" O* `
  481. 返回名称为key的zset的所有元素的个数
    9 c; Q: y4 @) E, x; W3 l1 _. |

  482. , T+ v, I6 P2 u: C; q* N
  483. zScore
    $ e, ^+ U5 k! `0 S# \" M( j
  484. $redis->zScore(key, val2);" U# r; Q$ y3 p3 o/ i% t, {
  485. 返回名称为key的zset中元素val2的score
    3 K+ Y7 o9 Q7 M. E8 W$ Z3 @
  486. # R; f2 y  X6 Z, p
  487. zRank, zRevRank
    1 S" |' G6 y- ]" V
  488. $redis->zRevRank(key, val);) u  ?" |/ E9 a  S# v# a$ k% f
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序3 k% U  k$ h2 u% e" K

  490. ' P3 Z+ W" k$ v' G
  491. zIncrBy3 M6 t, v  Z  |; y" q, |# V7 \
  492. $redis->zIncrBy('key', increment, 'member');
    " U5 g% B8 `6 p
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    # ?( p2 m+ w, F( h4 f
  494. ! D$ L4 J1 |+ B) a# N
  495. zUnion/zInter
    9 ^* W, W( e8 x$ o0 E1 n
  496. 参数
    3 e1 X/ P9 T! V, V5 O" S5 h$ Q
  497. keyOutput" e# V, l& a1 z. k& U
  498. arrayZSetKeys
    9 f* B% p& G$ U  n4 S8 v) @
  499. arrayWeights
    , g" U1 \+ t& h8 P2 l
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.  P7 ], {3 ]2 n! k
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。5 c, i  g5 B0 `  i& Q5 M
复制代码
' f7 j% ~, u4 w* [+ D& c+ n2 f1 F
3 y: r% Q# r6 B8 Q, f

  u( \: A  {& o8 Y1 S& V
0 e. r. I% s) O/ L# \4 I( e' a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    . @2 Z) c: ?& y1 g& |
  2. //连接redis服务器 ( n8 w# M- J- ?. H& E
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 18:59 , Processed in 0.081342 second(s), 18 queries .

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