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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php2 z/ f# ]) h1 V# G% j1 }
  2. $redis = new Redis();  
    5 U$ \/ j& t' K4 U
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    3 H( d! S% b, j5 u5 U; |5 X% f
  4. $redis->auth('mypassword');//my redis password   w6 a5 B7 N5 Q" {
  5. $redis ->set( "test" , "Hello World");  
    ' E+ j* [1 U( p. m
  6. echo $redis ->get( "test");, A, B  w/ f7 v- E) |# z
复制代码
php操作redis函数封装
  1. /**7 O3 |0 s, n7 p( I3 A7 h; M
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    7 N6 f, k; E* A  ]+ [( X( d7 P7 d7 A
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi. x7 n' r7 e0 b
  4. */
    0 S" f, o$ z7 c
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    1 g6 q- ^3 }$ O: h, r
  6.     if(!$key||!$value) return false;7 L6 {% f* W+ d0 p% Z
  7.     $host = $host?$host:getenv('REDIS_HOST');# _5 Y. J. Y& C
  8.     $port = $port?$port:getenv('REDIS_PORT');* Z: a5 a, ~, R
  9.     $redis = new Redis();  u8 W: {& K0 }, |0 b+ Y
  10.     $redis->connect($host, $port);6 q9 \7 d5 k' F6 x3 K) e
  11.     $value = is_array($value)?json_encode($value):$value;% O# K( x: M" z6 N; {6 J4 q( h
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);2 y. A" K9 X7 A% d* ]
  13. }
    ( f3 k: {& v3 U
  14. /**! a: a  t" s/ V+ ~  o
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    : E4 y1 ?: O, |. X0 v* q
  16. */
    / u. o: `; X( `, \* c
  17. function RedisGet($key,$host='',$port=''){# m' E: s0 Z% f4 j! `7 X  @
  18.     $redis = new Redis();  d# f3 X" q4 K8 p
  19.     $host = $host?$host:getenv('REDIS_HOST');
    / o' j8 m% J0 \+ Z
  20.     $port = $port?$port:getenv('REDIS_PORT');& F5 `, D+ g. J7 D9 L+ p
  21.     $redis->connect($host, $port);
    9 \: P" J6 m) o
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    : Y' Z! u* ~) J0 X4 y* G/ T
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);% ~8 y' \7 w  S) F  z
  24. }
    . d  r$ o# B" {) J6 _6 W
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
( a" w- f% @2 z- ~5 ?1 f" b
  1. setex 带生存时间的写入值
    ) c' w) X& G9 Z( C* }3 d  _
  2. $redis->setex('key', 3600, 'value');
    6 l" L$ q: t8 ]1 ~; t' m$ {2 {) V
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1! B3 V6 K) Y' p
  4. $redis->setnx('key', 'value');) h% d" D$ T: W- c! m7 U
  5. 返回已经删除key+ I; b- M. \6 ^. `
  6. $redis->delete('key1'); 成功返回1失败返回0. I3 q' X8 M2 [
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回02 g) x6 k) }- f3 o; s
  8. 查询生存时间
    ) P: ~& K( A3 O: v% h
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)* y$ J7 U& m% [6 O6 `
  10. 同时给多个key赋值,同时设置key0和key1
    / |% \: I3 w" @) p- c0 G! w4 ~9 C
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
      N  A  P. E% ^2 N
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ! d8 Z6 K' j4 ~9 O) c
  13. $redis->incr('key1');
    1 G$ Q# {" W5 R& X; \& J+ N: K8 ^8 W
  14. $redis->incrBy('key1', 10);* J! W9 N& ?" g/ h; T/ s
  15. 减法跟加法一样$ M1 b. L3 t. M
  16. $redis->decr("key1"); 减少1+ J  k! E' }9 {1 ~! v) F
  17. $redis->decrBy("key1",5) 减少55 s+ o+ c9 r! E  x- K% F) ?3 m
  18. ; v9 V6 e( _; \+ g9 v4 Q: o
  19. list相关操作,连表操作# R( O% f1 I! I- r; I! I$ d5 W
  20. lPush
    # G9 n) ]% R* q, j4 ^
  21. $redis->lPush("list", "888");; E% A% w, p, S; {4 F: q, G
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数  a/ ]) }3 X; |% a% Z4 K
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式  t* J7 e. ^7 L, A1 X: @
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    2 z8 c/ j) N; o# {+ ^
  25. lPushx/rPushx+ Y$ }/ E7 T" w( P3 k+ E/ r. f( N
  26. $redis->lPushx(key, value);. g% K; o+ @8 g6 q- y2 l& y& T
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加3 O, v4 K" y( d% K& W

  28.   |. |1 j# y+ B  Y$ l8 p# Q/ ^
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key( Q) ^* I* Y% g" S
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
      o4 t5 C7 Q/ i" F4 A0 H& M/ D+ ?' G* {
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1. W- O4 K  f* R! l0 L  W
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序& B: _; D) ?+ p. a. _& J& `) u0 K
  33. sadd s1 zhangsan2 R3 g; P9 `2 d; k4 `
  34. sadd s1 lisi7 v* n3 C2 N# Z/ n) F+ Q
  35. sadd s1 wangwu
    1 y3 ^' d) p/ s+ n5 x) N
  36. sadd t1 yangxingyi
    % \$ b- P% W* y" z( j* E# L
  37. sadd t1 lilei$ S3 f' p6 `, y) F
  38. sadd t1 zhangsan/ B  b3 P4 W) Q
  39. smembers s1 s1的所有集合内容
    ' Q2 |* r, u" B0 n/ X  z3 c+ i
  40. sdiff s1 t1 s1有的,t1没有的,差集
    $ p. B" d3 `. g9 z
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式- I4 D' H% O5 p/ F' n* J5 F* D# d
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的1 g! Z# X2 s2 s+ G% r3 R9 v  S
  43. spop抽奖场景,返回集合里面随机的数
    / b3 i) r9 Y* B  O; W0 ^: ^6 X
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了1 o! d& b" n9 N3 e$ x; s# R
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    ' E# i( ?0 o/ h/ r6 y3 m
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的8 `- Q# r, o' ?4 S% p6 P3 C
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    $ ^4 B. _$ w1 A' E5 K: U* u1 h) ~( T
  48. $i = $redis->srandmember('s1');echo $i;
    5 y% u* l  s5 ]* |8 a
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false, ?+ \* o( Z5 `2 b
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    ; _; u* f! i- z8 a
  51. 3 Q- S5 X/ p4 J
  52. zadd key 2 value 有序集合
    " _) X' A" F& J5 J5 W; n
  53. zadd y1 1 zhangsan;
    9 |1 ?. y" W' b' [  u2 A* D
  54. zadd y1 3 lisi;
    ( f5 z! `  R6 ^4 `7 O
  55. zadd y1 2 wangwu;* t4 I5 k" Y9 Q
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi( T6 _3 g: O; ~4 \% s
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    8 i; H' N& u. `" Y3 i3 d
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键$ w; H0 {! l3 I$ d6 i/ Z$ A& G/ J
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    2 A# d$ V% t( e9 u8 k, l& d
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    + B7 U3 z3 f; R0 ^# ^
  61. 无序就scard,有序就zcard,有z没有s( J$ C# H( t) K3 C0 `! }* {& s
  62. sInterStore6 K4 Z/ @  X- S' R1 w. w
  63. 求交集并将交集保存到output的集合' H' G1 k8 C' x. {+ L3 V
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    6 G& p+ r% h" r( n( P

  65. 7 C/ J: F. t$ @0 y# K0 b
  66. Hash操作$ t, ~0 }* r9 M# C" F
  67. hSet( w" }% l% u8 r% A/ P
  68. $redis->hSet('h', 'key1', 'hello');% o* y! f) U3 }& e# Y
  69. 向名称为h的hash中添加元素key1—>hello
    9 ^( z5 x0 c: S7 Y* \

  70. $ {- Y8 O+ h* n3 Y8 ^& h
  71. hGet$ W4 D8 f% o. r7 b( m
  72. $redis->hGet('h', 'key1');
    ) U4 u: J, Z8 v+ \1 _4 J
  73. 返回名称为h的hash中key1对应的value(hello)2 f' F& [1 K0 Y
  74.   S0 o3 {+ A9 K) z( K
  75. hLen4 @; Y/ B# D1 n9 e; v$ [7 Q
  76. $redis->hLen('h');
    ( M" T/ q1 }  {
  77. 返回名称为h的hash中元素个数
    ! ~7 o/ u0 h' u& f0 x
  78. ' a1 T& V; D- }4 U
  79. hDel
    ( r$ U# w- d% S3 X. U, p8 ~# V
  80. $redis->hDel('h', 'key1');5 z  @8 `7 \* D
  81. 删除名称为h的hash中键为key1的域9 _* v! u: t% x& S
  82. . R0 d  C1 N, ^: V4 T5 ~) z3 a
  83. hKeys
    7 v9 X: L& s7 C4 U1 f
  84. $redis->hKeys('h');" E& Q! O( o4 P1 J  j' `9 @/ J8 o" }
  85. 返回名称为key的hash中所有键
    / r* ^" q2 ?; u) O9 [
  86. ) u: Z7 t, i0 L/ L2 E
  87. hVals
    3 S7 ]  {. K  V- ^! t1 Y" t
  88. $redis->hVals('h')
    # A% @7 Q8 p( F! q! E
  89. 返回名称为h的hash中所有键对应的value! M4 C! A4 f% E! \

  90. # w1 ~2 _( d3 Q' R5 X
  91. hGetAll1 p! A9 b( ]" @+ }( [) r
  92. $redis->hGetAll('h');
    * l: N- N# k& ~( _- `8 y
  93. 返回名称为h的hash中所有的键(field)及其对应的value! }9 Y! ?4 x$ O3 l* h' Z1 z

  94. ; T- u8 ~4 R9 X  w2 r
  95. hExists
    ' Q) X/ _9 \7 f+ W! `
  96. $redis->hExists('h', 'a');4 X9 z  p4 B1 S9 n4 E: I2 T
  97. 名称为h的hash中是否存在键名字为a的域
    $ G- Z( f  Q- A; z( k. H; q
  98. ! U5 w( ~9 v- N3 J2 R
  99. hIncrBy
    2 }& r3 X, h9 u' u* e- [; f) u/ w
  100. $redis->hIncrBy('h', 'x', 2);
    % ]+ ?: e$ L/ L1 n6 R
  101. 将名称为h的hash中x的value增加2
    . ]  _" w1 l( Q4 ~& @) L8 ]) T
  102. 0 j" X- X9 u7 e( X* i4 t: `- v; M
  103. hMset
    & s& K$ m% f! w; S' U
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));- F; O2 H5 t+ K& p$ e4 s
  105. 向名称为key的hash中批量添加元素
    7 o7 z8 P" ^; [5 ?

  106. ) f+ R! l. T# G0 a
  107. hMGet
    ) H# X! v- L+ Z. d3 R. J9 K' ]% B
  108. $redis->hmGet('h', array('field1', 'field2'));
    $ A6 G7 W( X# {2 U
  109. 返回名称为h的hash中field1,field2对应的value
    8 s1 u2 H& k6 M, C

  110. + Q( g( J  j3 h1 I/ D) k; k7 Q4 K% `
  111. redis 操作相关& W& y! E3 K* r2 q: Z5 B: C
  112. flushDB% I1 P- o" b6 X
  113. 清空当前数据库% s2 }! C7 u+ T/ W$ M2 O
  114. 1 x; [' o* t( Z7 e7 |  f
  115. flushAll) o  ]2 B) T- ^4 t- z7 `
  116. 清空所有数据库1 D- F4 ^/ h& R0 ?' h5 G$ \
  117. 9 k* ?! E- Y  l7 {0 A8 }2 V
  118. randomKey; e$ a, _0 [) z; H
  119. 随机返回key空间的一个key$ O2 ?3 O; T  m- [* w
  120. $key = $redis->randomKey();& z! ~, f9 `# Q. f( L9 B! B' F
  121. 5 ?* B% E9 x" h5 M
  122. select
    : P& {/ T% a- G- T9 w, T) s" A
  123. 选择一个数据库8 }! s4 P' h- f# k- Y
  124. move
    9 l8 l) ~& i! K6 [. Y; R: O- B/ w
  125. 转移一个key到另外一个数据库: j' R4 l6 H8 O, Q
  126. $redis->select(0); // switch to DB 0( g! z1 T# Z' `# L7 p
  127. $redis->set('x', '42'); // write 42 to x: E! h( K& N' P
  128. $redis->move('x', 1); // move to DB 1( y  {3 {( Y# w; |
  129. $redis->select(1); // switch to DB 1, J5 J5 l; T8 V1 ?, Q7 V1 K
  130. $redis->get('x'); // will return 424 z5 b& w, y/ G

  131. 8 K8 e2 P) U) P6 c: D2 l
  132. rename, renameKey
    5 {& Q. ?- J# f6 c
  133. 给key重命名
    2 h: Z+ ?; r( [: Q$ z1 v2 S- ?
  134. $redis->set('x', '42');
    4 S: p; q% f0 T/ k1 s7 [' \7 P& a
  135. $redis->rename('x', 'y');
    5 f& _' Q8 [" I
  136. $redis->get('y'); // → 42- M2 _! `! S2 h0 p  A" D
  137. $redis->get('x'); // → `FALSE`) ?8 f  Q% w7 H2 |+ a7 T

  138. 1 g! [  E$ e1 F0 ~! K# H
  139. renameNx
    * p5 u2 Z0 q6 k/ L
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功* t- x3 {+ ~, A8 l# [1 P5 E

  141. 5 M2 M! a4 _1 [- }% t- [
  142. setTimeout, expire8 V/ P1 B) z9 H4 P
  143. 设定一个key的活动时间(s)8 h% I. \3 l! [2 C
  144. $redis->setTimeout('x', 3);
    9 t- s  T( |/ |9 I4 W5 G1 y0 L

  145. - |) g$ n& m# K  V" O# K/ p
  146. expireAt
    5 z7 m0 P# ^' J/ W& S/ z, O
  147. key存活到一个unix时间戳时间9 Z$ j9 A  m' l. t7 k/ ~3 g
  148. $redis->expireAt('x', time() + 3);
    & M9 n2 I9 W4 F; G
  149. % c$ K' H  W9 s3 j! Z: Z$ E' N4 z
  150. keys, getKeys
    5 D9 Z# {2 W6 c/ D
  151. 返回满足给定pattern的所有key& x. @" Z; i7 r1 r7 w  X
  152. $keyWithUserPrefix = $redis->keys('user*');! O0 M$ M* K$ d+ \5 p
  153. 3 _7 O; u- w9 B4 a! R" ?9 {8 l) W! W( [" F
  154. dbSize! u( k& i8 Z: f# m
  155. 查看现在数据库有多少key
    # G) v" V4 g1 b7 u
  156. $count = $redis->dbSize();! W( q' @( |7 b3 d3 U) A
  157. 4 a: G1 s6 m  Z* X; G. Z
  158. auth
    ) h* t; r& W7 }0 a- W5 ?
  159. 密码认证# Y" L0 W+ j3 `0 |+ R
  160. $redis->auth('foobared');8 }/ |' Q; T* `; C& |1 [: f

  161. 0 b: i) y4 e/ y( V( ?& r
  162. bgrewriteaof! i; ~* ]* _9 P( e4 u! v  U
  163. 使用aof来进行数据库持久化
    0 n  Y/ [3 i5 d7 |' s$ b
  164. $redis->bgrewriteaof();6 D8 N/ C' |  P4 l. ]" Q) _

  165. : F8 ~1 L1 b9 F8 y" R: j( Q
  166. slaveof' b+ i8 T$ h" c. F5 K
  167. 选择从服务器
    ; D/ J/ O/ c: o$ X! ~% R2 F" u& T
  168. $redis->slaveof('10.0.1.7', 6379);
    1 n0 z9 ~' M7 x0 `) K

  169. 6 y% b' L* y* M. j, H3 {
  170. save9 O$ a6 E3 a# J1 {" d1 U
  171. 将数据同步保存到磁盘: X6 h) F. U  o: g
  172. 5 X8 L  q, G) t3 s3 {. e
  173. bgsave
      x% e1 z& X) n( t
  174. 将数据异步保存到磁盘7 M, ~4 K6 W( t7 p. ~2 J
  175. * j5 }+ O! I' H) \
  176. lastSave
    + p* _" m4 d* C2 {; }
  177. 返回上次成功将数据保存到磁盘的Unix时戳; e6 o! b. m. y3 Y5 R6 ^+ c/ w
  178. ' |$ N1 {/ u7 D6 h3 R: c! y
  179. info
    ( s' N3 y% I, H+ |/ f
  180. 返回redis的版本信息等详情
    2 ~" O" E4 W' O  y9 t+ ~
  181. : }/ r% ^) N! q0 B. @# W
  182. Redis::__construct构造函数
    5 U3 D, K) _7 [& P2 ]
  183. $redis = new Redis();
    9 I+ f) p8 M+ q1 @! n- ]

  184. 4 K* }% b  g# f. \7 q! A4 o$ {
  185. connect, open 链接redis服务' X! y7 {& N  g0 D; Z$ j  N, g
  186. 参数4 }/ ^' g# n& Q* [6 C* k; {
  187. host: string,服务地址* f% l2 j" y; H' F/ b( T
  188. port: int,端口号
    , X* h3 n5 _) B! p. B9 B
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间). H( h( O- }  o# `# c/ @
  190. 注: 在redis.conf中也有时间,默认为3002 k+ Z! s; x2 a8 S

  191. + t( s$ E: D! |& }: m; }
  192. pconnect, popen 不会主动关闭的链接6 f% _8 U7 l! o' s$ D3 w) i' E
  193. 参考上面
    $ w- ?# p4 i& @! j8 _4 C
  194. 9 q3 \8 w* m3 s2 ^5 o( Q6 r
  195. setOption 设置redis模式/ K! Q: d4 f" V+ S, B! B

  196. 6 e8 ~) z! T- L6 Y* [% c
  197. getOption 查看redis设置的模式3 P# x1 H$ E* e& _

  198. % o1 y. W4 N8 w' `  w5 {: d
  199. ping 查看连接状态
      ^" }$ p" y+ v4 A! B

  200. + c+ Q' E8 P$ K8 `5 H. g3 p% y! q. m
  201. get 得到某个key的值(string值)
    ) z; G4 Q' p. }8 }; d" N
  202. 如果该key不存在,return false
      P* I# T1 u& a; Z; H

  203. 4 o2 Z, E* d7 E* p+ Z! Q# s8 i
  204. set 写入key 和 value(string值)
    + Q; w, e4 l& x) f. K
  205. 如果写入成功,return ture4 J2 I# t/ l7 T, s: x
  206. , ]; X  T5 I- }& O3 l$ r3 k9 h
  207. setex 带生存时间的写入值
    # P% y7 f9 j" [0 t+ g
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
      t# I6 x3 f" N! v

  209. ; B7 {9 K& d! w4 s& z; T( |7 |
  210. setnx 判断是否重复的,写入值  ~6 x9 O: \4 H% K" |3 n( z0 B" g
  211. $redis->setnx('key', 'value');
    , e+ r: _) e# m  \& Q) L7 ~  x# F
  212. $redis->setnx('key', 'value');
    2 o" Y- |9 G6 `5 U: z% _, \
  213. : J  U- l; p! m8 r1 O* I
  214. delete  删除指定key的值
    7 x5 h, G! V4 [- ^4 N
  215. 返回已经删除key的个数(长整数)
    , |, k3 _3 @& {) N/ Y' x0 A
  216. $redis->delete('key1', 'key2');
      ]6 ^3 E9 A1 b" U/ a% P# K
  217. $redis->delete(array('key3', 'key4', 'key5'));2 v6 I/ W/ b% S+ ?: w
  218. - }+ T. E! T5 @- }" K
  219. ttl0 F; [& I& R) z/ e" H" L
  220. 得到一个key的生存时间
    3 M) y5 I/ ^3 W
  221. 9 y3 [+ w6 R. p  f
  222. persist* W2 W: y  F& s8 i$ R- \
  223. 移除生存时间到期的key
    1 ]- N' L6 D  }1 B9 M/ I. d0 U
  224. 如果key到期 true 如果不到期 false
    ' c- X! ]' E4 j0 n) i0 z. |
  225. $ J/ y! k" i* f5 W2 I
  226. mset (redis版本1.1以上才可以用)
    " T) ^, @$ {5 d+ Z3 d
  227. 同时给多个key赋值) Q. K5 B/ |3 q2 b
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ) L/ u/ [5 w0 ~1 w) l& `) \

  229. 1 p4 I6 V% t/ m

  230.   ]* b3 ]  c; L

  231. 7 M" a& \6 [4 C. N
  232. multi, exec, discard/ Q; O; W! l+ t( @; [( y5 B! ?% D
  233. 进入或者退出事务模式! y/ i: u% j: n' a
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI. r5 X. e2 _  p  [- {5 U/ H" D) [
  235. Redis::MULTI:将多个操作当成一个事务执行5 j3 B1 W) K6 c* S, m, \8 ~
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    ' B! g4 n, m% o8 \
  237. discard:删除一个事务, r0 z$ Z# D- p+ L+ ^/ l1 @5 j
  238. 返回值
    % h5 k7 _2 U+ @" m/ n, }
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。1 d; L* m5 Z4 U3 F
  240. ' C, A: ~- L  P
  241. watch, unwatch (代码测试后,不能达到所说的效果), ^5 q% o! n# m3 F/ H  ~0 H1 E3 D
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    8 a$ {2 H& X" G. O' b
  243. unwatch  取消被这个程序监测的所有key
    . `8 ^' {( p: ~. @$ B) C6 v
  244. 参数,一对key的列表
    $ m) q( e( N& [7 e8 _; e; D
  245. $redis->watch('x');
    , ~7 R- e! h+ @
  246. % ~2 O/ I; c4 S1 M
  247. $ret = $redis->multi() ->incr('x') ->exec();
    1 _: l2 Y0 s. C$ m/ h/ w
  248. 2 j- m2 X: y% h  I

  249. + ]: X7 P3 o8 w" T* W
  250. subscribe *
    3 E1 _# o! b7 I% E5 I5 A3 X$ \
  251. 方法回调。注意,该方法可能在未来里发生改变
    7 @7 O" e4 a3 L( M

  252. ; r$ |+ Q# p1 Y4 Y9 I( ]; Y
  253. publish *
    % H( _7 C: N; i7 Z! O
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变# w, b& L" @' }' d/ c
  255. # {8 G) l# O5 |7 B
  256. exists
    ; `- b& G) _- H- I* C0 ~5 Q. C
  257. 判断key是否存在。存在 true 不在 false& K6 ]  `# a4 t1 I# ~, J: u

  258. + _  r# U7 u+ S. H7 S
  259. incr, incrBy9 g! r( x; L4 f) N* X9 u
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    8 H5 u/ e/ l  ?* H4 B7 ]( p+ P
  261. $redis->incr('key1');- m5 q9 j' e/ U( [0 N
  262. $redis->incrBy('key1', 10);
    ' b+ W# |% N- l% q

  263. ( s3 {% g! a. A: S! D& C1 z
  264. decr, decrBy
    ( [- w4 E3 @2 p! D; C  y& E3 N
  265. 做减法,使用方法同incr. M3 Y  {# ^4 i8 B! W5 _

  266. 9 R0 U! F5 r9 w  o/ S% \
  267. getMultiple
    1 G. P! e9 [, x3 p
  268. 传参& L2 T7 \) g1 x8 a5 t3 R
  269. 由key组成的数组
    + m' v# h+ E5 D; w
  270. 返回参数$ W5 C  k8 D  d- A% \. x
  271. 如果key存在返回value,不存在返回false
    " K! ]: ]' o1 N; V: C; |9 R, B
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    * @8 h+ G2 c( r) @
  273. $redis->lRem('key1', 'A', 2);" z+ x- D, u0 s( e# k9 m
  274. $redis->lRange('key1', 0, -1);, [9 ]! Q% u4 a% ]% S5 B

  275. 4 U4 g/ K/ a$ f; q  V
  276. list相关操作9 K2 ?0 t: \* [2 |
  277. lPush
    , K# q+ i/ o% [9 J2 _+ Y
  278. $redis->lPush(key, value);) I/ i( z( y3 I  r; x" B) I$ ^& I( S
  279. 在名称为key的list左边(头)添加一个值为value的 元素8 P5 z* ~1 p7 i/ [! F7 Q" q

  280. * E% h  X% \3 G, E, F* p
  281. rPush
    8 [& }1 d; i1 i5 J. w
  282. $redis->rPush(key, value);8 v- |3 a8 A- T% H6 B  K& U
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    % n' r0 n% J8 U. m6 e3 |

  284. 4 [) l1 E  v3 y- I( e' [4 d' ]7 L
  285. lPushx/rPushx
    # u4 n3 z# t0 n2 k
  286. $redis->lPushx(key, value);/ p8 B; X5 _+ e8 L1 s# {; f
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加! U: D& T2 M. q/ @

  288. 1 M  ^6 _" y% ]2 Q& G% T3 t8 E5 w& V
  289. lPop/rPop
    . R8 u6 H; H, r. c0 a  K  y0 V
  290. $redis->lPop('key');. o- y3 @2 ]7 c$ C2 z
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素$ F! N  L4 E, Y5 u; `" E' j
  292. 9 \7 e" @* F! a6 w  }0 s
  293. blPop/brPop1 G: {1 m1 u; m. g
  294. $redis->blPop('key1', 'key2', 10);
    " g' K. B1 Q  l& Q2 D" F' m, k
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作, K0 f) O" G8 o! I

  296. + _6 o* n/ t8 g4 K2 w( ^
  297. lSize
    / ~2 Y) b6 l% E6 ^9 K  B
  298. $redis->lSize('key');' Y: v# p& N  r
  299. 返回名称为key的list有多少个元素
    ! j, G3 e5 d# T6 y. l7 P
  300. 2 i. w5 {* w  D1 k7 |- v) e
  301. lIndex, lGet" e0 L) p& p/ k! r
  302. $redis->lGet('key', 0);$ a) s$ X6 Z8 g5 m/ F
  303. 返回名称为key的list中index位置的元素( h' S& x. `; G9 _- l

  304. + W2 M; o: `" }1 N( Z, Q5 e" Z& a" V
  305. lSet. H; C- @: e' k+ |
  306. $redis->lSet('key', 0, 'X');% J; z4 X( f  C
  307. 给名称为key的list中index位置的元素赋值为value2 u# x& e4 H3 L2 X% e& i

  308.   m; ]/ \) S( R2 [/ u; |6 x/ N
  309. lRange, lGetRange
    / F" o# o1 M+ ~" ]  J( f2 X
  310. $redis->lRange('key1', 0, -1);
    3 M  ]. N; B' N  o3 N# d  {
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)% Z* U$ G) I; q5 V+ w0 `" k

  312. ( y; t7 I' q+ Y; W" s# N3 ~' b
  313. lTrim, listTrim. n5 b$ G1 q1 U# @$ X$ I; s
  314. $redis->lTrim('key', start, end);' `8 U6 R2 W0 W$ d
  315. 截取名称为key的list,保留start至end之间的元素: U% \/ Q0 G; ?: X

  316. 6 P4 M3 Q# F& N, j4 y- S" l
  317. lRem, lRemove4 t6 z+ d4 H1 G6 E2 W+ s+ A( P
  318. $redis->lRem('key', 'A', 2);
    ( X0 n1 q8 x) m/ {# t7 y
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素/ I, @" w/ f. ]& ]) q8 D, S# @

  320. ) }4 \2 t; q' a5 E4 q. I
  321. lInsert
    , z! S( v! u. b, i- ~+ _- I0 h
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    1 ?3 S0 H- O# v) v5 l
  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');
    5 e& z% Z8 Q* C  }# U
  324. $redis->lRange('key1', 0, -1);( X* P; f: ^. |/ B/ @
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');( C: @/ I! ]. l/ _3 Y& x
  326. $redis->lRange('key1', 0, -1);5 g1 w, V) K; @8 Y
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');- C7 B5 B7 u% G0 ^: E8 ~
  328. 1 y: u9 O$ R( q
  329. rpoplpush' s' E4 f; ]: a  G/ \
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部" R( F! M# E$ g
  331. $redis->delete('x', 'y');
    . Y1 k4 ~4 N0 ^; m4 B
  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'));
    6 M! I; {: q$ `
  333. var_dump($redis->lRange('x', 0, -1));0 C' \- s1 r/ p" X$ @
  334. var_dump($redis->lRange('y', 0, -1)); 0 ]; a8 i% {, |6 M  c

  335. - f# f4 x, Y/ D9 Z/ h, U9 }/ E
  336. string(3) "abc" : x0 n; D% N. @) D% s+ }
  337. array(1) { [0]=> string(3) "def" } " g2 k" c" x# @$ ]
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    / `* z$ A6 k% j

  339. 5 j# H8 {6 H( V) H8 B
  340. SET操作相关
    6 B" ]. k7 L$ Z! ^0 N  l  ]# w4 f& ?
  341. sAdd
    ( N" N4 l2 i  Z$ C( J" X
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    , v# {" N! ~) R8 Y, z% y
  343. $redis->sAdd(key , value);
    2 i: B/ ^1 y0 p. |
  344. 1 K( r9 }8 s) ?) D0 c# ]7 v+ |' V
  345. sRem, sRemove' z/ X! j( R' O- {$ O% n; D
  346. 删除名称为key的set中的元素value/ E, [* _0 L0 {* j( ?; q0 _, d; E3 t2 U
  347. $redis->sAdd('key1' , 'set1');/ n. T4 L" B$ G% m1 I4 p8 M
  348. $redis->sAdd('key1' , 'set2');
    - W/ y( D- m0 r3 `) [' |
  349. $redis->sAdd('key1' , 'set3');% p9 Z0 _) ~* T
  350. $redis->sRem('key1', 'set2');- K7 W. C: L5 w+ X0 d

  351. & ^# S0 b; G7 s' L% R
  352. sMove  Q2 Y4 X% U. S/ W
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合. J4 Z9 v; C- X9 Q5 I
  354. $redis->sMove(seckey, dstkey, value);: |: b0 M# x4 p

  355. ! Q" h3 ]8 n: s/ u" l
  356. sIsMember, sContains
    & R0 t! ?% ]" R
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    $ X( a6 j) `$ c: v
  358. $redis->sIsMember(key, value);" ]" g6 o/ O0 j. ?9 e
  359. ; e$ G4 a; ?% Y: P- C7 H2 S; x2 Y
  360. sCard, sSize, k' Q" c1 g3 n: T/ o* Q2 r5 D
  361. 返回名称为key的set的元素个数% y! o3 _8 b! R7 D  O
  362. ' @5 h- [  f3 q3 ]/ F# X1 q# _! Q2 o9 G
  363. sPop% F# I' d! A) F2 x9 a/ N
  364. 随机返回并删除名称为key的set中一个元素: [, F5 \3 t, c/ u, W$ s, Y

  365. 7 e) [0 m* y# _3 X# G
  366. sRandMember- \+ U* c8 o$ x$ U
  367. 随机返回名称为key的set中一个元素,不删除
    " s0 `2 o* e0 w) B4 j& G8 x  k
  368. + y5 ^6 A$ N# h. ~( E1 g
  369. sInter
    * [! t/ x* ^) H# R$ J) }
  370. 求交集
    % e4 d% h' z1 c

  371. 1 \; k4 c) x" G9 u3 Z! c
  372. sInterStore
    + k# \6 W" O0 u7 m; }+ ?- q1 A1 l
  373. 求交集并将交集保存到output的集合
    3 v8 q; P# c" x, {
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')) [' m: z* P# R8 T- h
  375. . l+ X4 S" g6 G; C1 L) j/ ?* G
  376. sUnion
    ) p( Y! {5 f0 D- ^
  377. 求并集
    7 ~* [+ @8 B# n( [& n( E
  378. $redis->sUnion('s0', 's1', 's2');2 K! t% S9 h! i
  379. s0,s1,s2 同时求并集
    . S0 I* d! X+ h3 _% V2 P  {
  380. * H7 G0 H9 J' Q6 S
  381. sUnionStore& z& Q% f8 q! q: J9 `% S* T
  382. 求并集并将并集保存到output的集合! R+ H  \* N& @; f
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    ( F# n& _7 ]  N2 ~* H0 w
  384. ( N$ R! ?, l( ^: q
  385. sDiff! J; h& R# m4 O. w2 B; i
  386. 求差集
    7 m+ M+ p) j* D! D
  387. 4 E0 q. \# x- r1 _
  388. sDiffStore+ r4 M# U: E7 u& f: x
  389. 求差集并将差集保存到output的集合
    5 ~  w! t0 G9 V8 a1 V

  390. 4 U' y# i1 b/ K
  391. sMembers, sGetMembers
    ' o' S$ Y3 y6 k. U; K
  392. 返回名称为key的set的所有元素) a7 S! m5 X  U9 V
  393. # M4 H$ X  R. T5 t9 P* d0 K5 o% j8 ]) ^
  394. sort
    7 N, J8 t, }6 ~% d* o1 W6 y
  395. 排序,分页等
    ' c9 f" B) R, z& |/ H# X1 G/ w
  396. 参数
    + k/ b" w  D) p( a* j3 L
  397. 'by' => 'some_pattern_*',& ]. k" @6 Q, R% T" X
  398. 'limit' => array(0, 1),
    ( n4 t- _: Y0 f) Q: N9 X
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    # }7 h2 j) g9 ~
  400. 'sort' => 'asc' or 'desc',
    0 I9 l% U5 W% o7 W
  401. 'alpha' => TRUE,
    ! K' z. h* G0 M6 h2 E1 O
  402. 'store' => 'external-key'. ^0 F) Z  K2 a- e
  403. 例子
    " q% b" E$ D; y: G* \9 x
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    7 a8 f8 T, a  f; `! x( B  y- v9 M
  405. var_dump($redis->sort('s')); // 1,2,3,4,5/ v$ `' i7 U" |  _  o- }# m
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1  v: _( c0 n4 P. @4 W# i  K4 T
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5" `; m. E4 M1 d$ J

  408. ( S: x3 k3 R: B1 a" P
  409. string命令
    + A$ k* D8 b/ C% W) T' g
  410. getSet  b7 y: T5 M0 E: I( ~+ t( m8 ^
  411. 返回原来key中的值,并将value写入key4 b2 c! }2 x. U# g
  412. $redis->set('x', '42');' g6 h, D( \1 \
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'# O7 X9 d8 Y7 n6 N* `* b
  414. $newValue = $redis->get('x')' // return 'lol'
    0 R8 n2 d- k6 ^: P
  415. 8 r0 G1 k. h0 i2 N" L, m0 ]" ?- n
  416. append
    2 ]6 z( f& V0 Z& r4 J1 s
  417. string,名称为key的string的值在后面加上value' d( a; s' T- G9 u5 J- F
  418. $redis->set('key', 'value1');
    $ o% u: M" z1 m  P' m
  419. $redis->append('key', 'value2');! t8 f, s! @2 c  n2 P
  420. $redis->get('key');: q; ?6 |# d. y7 W. A6 p
  421. ' D, c8 `) g/ k- V
  422. getRange (方法不存在)
    0 k) d8 `0 W- M+ D/ W+ G
  423. 返回名称为key的string中start至end之间的字符) |% e! X6 S- K4 u6 ]
  424. $redis->set('key', 'string value');
    7 T3 g  l4 z. S; p. i6 l7 e( @) }4 f
  425. $redis->getRange('key', 0, 5);
    ; I4 F" R% b8 s- b, Y7 K1 g
  426. $redis->getRange('key', -5, -1);/ I  U/ x3 L( V
  427. 4 Q0 G# e5 u$ `  ^$ M! R1 |# i
  428. setRange (方法不存在)
    ) ~  X1 ^/ B! Z# @  P$ O
  429. 改变key的string中start至end之间的字符为value6 Y) T+ `+ B" `- L) v( o# ?
  430. $redis->set('key', 'Hello world');: t5 u9 v2 D, R0 T3 R# s
  431. $redis->setRange('key', 6, "redis");4 K  Z( t/ @# K3 J
  432. $redis->get('key');
    6 W( k, k/ f' I+ {8 h8 c! ]1 s# W

  433. 8 P4 w9 {. F% v! P1 u% ~
  434. strlen+ x" Q# `% l0 `" i6 o  O
  435. 得到key的string的长度
    * Q" B6 M! H$ F3 T
  436. $redis->strlen('key');0 u6 x% a" m. |0 ~: p& Q7 `  h" \
  437. 0 G# O$ m% A& l3 U; {+ e/ E
  438. getBit/setBit
    + p  a: s0 m9 v4 S) h! @; w. x
  439. 返回2进制信息  n5 ]% b. Q1 A( J- l  B
  440. # G3 V$ O% J7 m% a
  441. zset(sorted set)操作相关
    : e  U0 x! X; T+ S0 N
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。0 o' a' S; {, H% c9 K6 m( J- ?
  443. $redis->zAdd('key', 1, 'val1');
    ) k4 Q% _" [0 t2 i
  444. $redis->zAdd('key', 0, 'val0');
    , }% G- r) _8 p1 ?# N$ c; [" V$ s- y
  445. $redis->zAdd('key', 5, 'val5');8 l2 f. F$ P5 S5 |! e5 f. g: e+ g
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    % T( n$ `3 H/ Y
  447. + d+ G# t+ J; ]# Q$ d6 t& s) y
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    , g5 w$ V# V$ V) A8 O
  449. $redis->zAdd('key1', 0, 'val0');
    / \1 O% l" a; [( @3 m
  450. $redis->zAdd('key1', 2, 'val2');
    1 i" Y8 _+ p! o( w. f
  451. $redis->zAdd('key1', 10, 'val10');3 m1 F3 M. _; {+ h' Q# s. C  K
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    * f+ P5 q/ _$ h

  453. # N7 S, k; K9 c! j& j% A( d
  454. zDelete, zRem
    : G3 S& b: V$ N+ N" H
  455. zRem(key, member) :删除名称为key的zset中的元素member
    ! l& R/ C9 U2 z+ @7 C
  456. $redis->zAdd('key', 0, 'val0');
    . B7 u( E$ Y6 W
  457. $redis->zAdd('key', 2, 'val2');' B2 Y9 `5 x6 i" t4 {- y
  458. $redis->zAdd('key', 10, 'val10');
    1 [2 ^& w0 B+ h% E5 o" o8 `
  459. $redis->zDelete('key', 'val2');( u1 m+ s# i9 N5 I- ?' s
  460. $redis->zRange('key', 0, -1);
    9 h6 _7 q% {' J- K% |/ j
  461. : B) ~1 D9 ?- K! X  }6 F) x8 g7 G) p
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出. j1 X% q, q- n: i0 A2 \) c' |
  463. $redis->zAdd('key', 0, 'val0');7 D' }( p" F& x" w0 Z4 l! O
  464. $redis->zAdd('key', 2, 'val2');
    , f2 u) N1 ~; q6 M1 [
  465. $redis->zAdd('key', 10, 'val10');5 E+ V2 f* u7 G% z7 @* P% t
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);. }, Y/ X( U" @' ~# K9 E) w# Q2 H

  467. 5 V0 x5 o/ t) d$ Y" f1 B
  468. zRangeByScore, zRevRangeByScore9 h; g3 d5 ^  q# Q
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    ) o5 k! L, `* L" c
  470. 返回名称为key的zset中score >= star且score <= end的所有元素0 p' x6 c9 e+ [# F' {2 \3 Z

  471. 1 L7 M+ g( C+ j
  472. zCount
    " j+ c* `( p: Y
  473. $redis->zCount(key, star, end);
    - D" r% K. U$ o  Y
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    0 a+ s: g9 t* B& C+ \% Q: Q
  475. & i1 R  T; Y4 x( Q4 l) @8 E
  476. zRemRangeByScore, zDeleteRangeByScore$ R6 ]2 I. w5 Q2 ]. A  v- _
  477. $redis->zRemRangeByScore('key', star, end);: l3 p4 k: ~" @$ e5 F, F8 F2 z1 f
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数9 l, v) f4 J% I5 M
  479. 6 W, s* d( \) [6 y2 S, _
  480. zSize, zCard
    ( }: o0 z$ x) l. h- B- ?
  481. 返回名称为key的zset的所有元素的个数
    / ?" k2 p# w: q% E7 c
  482. 5 F4 z! \1 X7 Y0 ~4 v1 K* w  T
  483. zScore
    5 u9 m! N7 J7 p) m) J
  484. $redis->zScore(key, val2);
    3 l6 N+ `: \" p% m/ q# t
  485. 返回名称为key的zset中元素val2的score$ e& ?; l! i: S; q+ O

  486. % N3 {1 i2 \& x+ M
  487. zRank, zRevRank' _' V. K+ i" c% t- X
  488. $redis->zRevRank(key, val);
    6 S1 s' z2 [/ D1 x2 ]) R1 c6 `
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序7 O" |! n0 g; r

  490. * T! I8 }& H- w7 ]' c
  491. zIncrBy# [6 h0 `8 q6 q! Q
  492. $redis->zIncrBy('key', increment, 'member');
    + `* t5 f4 l8 Y. N" p
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment- g; j: x8 V$ Q$ t) [0 N- ~! t1 L
  494. ! P8 w" p5 e3 m- g0 I* L
  495. zUnion/zInter5 i; R# ~4 i7 p3 T' g7 \
  496. 参数' J# U7 Y: s; R3 X
  497. keyOutput
    , {: v4 U. V/ G! n8 C
  498. arrayZSetKeys
    : r6 e4 \; A. a  x
  499. arrayWeights9 o8 x% i% K- R
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.. G5 b4 v" f- P" |/ l9 \
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    ( \& u  b3 e' M: ^( B; W# r
复制代码

, N, |0 z1 m$ z0 N: T# g6 o' D/ l, b3 H
. _, ?! n8 S" z+ ~- p! A  `1 d

: Z8 k5 J1 R' ]. r4 W: z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    + D' z5 R# F, q- `6 X5 }
  2. //连接redis服务器
    2 l0 }4 U/ n2 ?, d8 _* B9 ]/ o, B
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 23:27 , Processed in 0.061957 second(s), 20 queries .

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