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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    & }8 s$ B( D! _2 H7 S
  2. $redis = new Redis();  
    : A5 t3 @+ I6 {2 u
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    " k4 x0 F9 }% W" Z$ `- C0 l0 T  y
  4. $redis->auth('mypassword');//my redis password
    / _$ ?7 m' h1 k( X* w
  5. $redis ->set( "test" , "Hello World");  0 ?. X' U- i8 ~. u- X
  6. echo $redis ->get( "test");
    7 E  D  Y% g' b+ A
复制代码
php操作redis函数封装
  1. /**
    4 @4 U; e* H# y3 s( x
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    , Z+ u* a2 m6 x
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi8 J5 X# \8 Y; S" B  m$ A$ O# ?# a
  4. */2 t5 t( ]0 v# E) G9 U$ z% t
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    4 K* I8 N# A9 O, i, n# G
  6.     if(!$key||!$value) return false;
      [( O& D# w4 O' [
  7.     $host = $host?$host:getenv('REDIS_HOST');
    $ `7 N2 d/ r, r# V+ i. K
  8.     $port = $port?$port:getenv('REDIS_PORT');# S" k# x$ C* r0 b5 i8 |7 ?5 }" V
  9.     $redis = new Redis();
    ' L( b2 d$ _) O# G
  10.     $redis->connect($host, $port);
    . G! D) w0 y& l! Y6 e1 c7 h7 l3 F
  11.     $value = is_array($value)?json_encode($value):$value;
    2 E5 G8 F+ l1 I" V) u! h
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    * e/ U" E4 b( ~* Z$ Q+ m5 |- n# A
  13. }* {8 q: Q; q# x# \+ l- {( \+ v
  14. /**
    9 q% E1 c" D3 B, R: m! b9 U) ^
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi5 i0 S8 s, O9 C4 a& v6 w; S4 |
  16. */; c$ W& b! F% G; A( z) J* x: `: h
  17. function RedisGet($key,$host='',$port=''){' v6 ]8 I0 {  K  b/ ?2 O
  18.     $redis = new Redis();
    4 ?7 F: s7 @1 P7 O  i
  19.     $host = $host?$host:getenv('REDIS_HOST');! l$ {+ j& L( A5 o; V* K
  20.     $port = $port?$port:getenv('REDIS_PORT');- P/ j! D9 r6 f; k' o
  21.     $redis->connect($host, $port);) b9 v* K' E- w
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);# M6 e  B$ J  F. d+ v! C; z+ I1 F
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    1 z0 ]# C2 L5 A5 {" b
  24. }
    $ k' e- h4 G# c6 a& Q' A
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了9 w- M9 E! u) l9 x( Y
  1. setex 带生存时间的写入值
    - g$ X8 v  F. y1 d' |
  2. $redis->setex('key', 3600, 'value'); % l' {" @; r1 x1 ?
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1/ b0 g1 F  r" c2 }2 P2 L
  4. $redis->setnx('key', 'value');: J5 ^, ~6 O3 f# z
  5. 返回已经删除key" F  s+ ]% g: Q; r
  6. $redis->delete('key1'); 成功返回1失败返回0
    1 b/ p! a; B0 ~% Z
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0! ?' \9 Z$ O5 u1 Z( G/ U  ?/ [
  8. 查询生存时间4 D9 w. @: r3 Q$ s
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    % W+ ~9 T0 _" w' A
  10. 同时给多个key赋值,同时设置key0和key11 p& i% H5 M+ V+ P4 k, G+ O
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    8 k% ]) b# S6 `( Y
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
      {& U0 m. e. g" ~
  13. $redis->incr('key1');& ?* K2 U/ _( e! r  {  M4 U  q" \
  14. $redis->incrBy('key1', 10);+ z) O; [) P, [1 g1 k4 {1 t
  15. 减法跟加法一样
    4 N6 W$ N- ]2 X) Q( U0 Z3 x* w
  16. $redis->decr("key1"); 减少1
    0 r9 V3 R1 X! K  i! }8 W
  17. $redis->decrBy("key1",5) 减少5) F7 Q$ i/ d6 n  H0 Z2 U5 l7 q
  18. 3 f! T' F. T& T8 [/ k! K
  19. list相关操作,连表操作( g( R/ s( q+ H9 V+ `
  20. lPush6 t6 d! d; c8 [( y! x& `
  21. $redis->lPush("list", "888");: b* F, F4 P  W
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数- U/ g" d& [7 {) a$ q
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式( z0 d  A# Z7 t1 D' j7 G+ a
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素8 O! I3 q9 L9 u. M. C
  25. lPushx/rPushx
    * d& P/ j1 E" M1 {8 v1 F
  26. $redis->lPushx(key, value);
    1 q" c; g/ y$ {$ S
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    / Q% j, C3 D5 Q, R8 e

  28. * r6 M! M& p. f1 s9 D: p
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    $ V" x: a# d5 @7 a4 ]* P8 W2 M
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key+ P8 u: Y9 s( _3 f  Z" y0 d( F- ]
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1: ~+ i1 |4 u6 d5 o3 H7 J- A" X/ K; d
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序6 T* w0 U- C- m$ n# E1 Z! K% X
  33. sadd s1 zhangsan
    0 Q- y, Q6 O9 ]
  34. sadd s1 lisi
    9 w- ]. q3 n% |
  35. sadd s1 wangwu  Z# s3 p% C+ `/ Q. F
  36. sadd t1 yangxingyi6 {: s/ W2 |% l3 x! N6 w
  37. sadd t1 lilei! M5 O0 A" @3 o, }, t
  38. sadd t1 zhangsan1 p$ U; t" x6 q5 p% B
  39. smembers s1 s1的所有集合内容
    $ X: G! I) q# q; K
  40. sdiff s1 t1 s1有的,t1没有的,差集$ g! i8 f2 _' g: c  X
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式, y; i& `# C( |
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    4 z! E3 U* y  K4 n
  43. spop抽奖场景,返回集合里面随机的数' k0 c0 q5 H3 D8 g  t0 J
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    ( ]# H" [; F! D2 }5 ~
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    $ y$ p5 w4 F0 a) U; A. g: i
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    6 L; `1 X! c: X, M, V0 b; Q
  47. 随机返回集合里面的一个元素,但不删除,重复中奖" z/ D4 e# q$ H% ]
  48. $i = $redis->srandmember('s1');echo $i;
    / j6 c% t  p& C% K! s
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false7 p3 N% C: t, {: a/ M' S8 c
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false% B7 H! y5 D& @1 l: N* Z
  51. , o0 C& F* h4 m& V# V  P
  52. zadd key 2 value 有序集合
    - L+ l5 n7 K& z! J/ C( T
  53. zadd y1 1 zhangsan;
    & x7 h- g. Q5 d4 p! C
  54. zadd y1 3 lisi;7 C3 Q0 e* p# `  m
  55. zadd y1 2 wangwu;6 p( V" d1 {! m% v) D9 R: H
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    / U+ `; @& b- P
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    * m$ j% n9 v! A) W/ n
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键: L* X! V% J/ y
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先! O* B9 j% \  V! {+ t2 ~0 [* z
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    + m+ a0 M% r5 i
  61. 无序就scard,有序就zcard,有z没有s. y( S1 }! |1 {* \
  62. sInterStore6 C* U/ v( \- G
  63. 求交集并将交集保存到output的集合
    " m$ j* Y0 L* K4 F( U2 X0 B
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')! v) Z& e$ U3 Y4 M+ Z% h& q. h$ q! ]
  65. + a5 n- ?. h' M4 v
  66. Hash操作0 B8 w1 [; R+ r1 X, c/ e
  67. hSet; @" P: S* e- @4 ]# z9 Y
  68. $redis->hSet('h', 'key1', 'hello');' Y! V- u: U& k% V% t& {
  69. 向名称为h的hash中添加元素key1—>hello% B1 |( E, t( x1 v4 U

  70. 3 u" w  m7 T+ c0 L
  71. hGet, U1 s/ S; c  l% T/ x1 d0 I
  72. $redis->hGet('h', 'key1');, [# o4 ?8 _* K* Y$ _8 N  h
  73. 返回名称为h的hash中key1对应的value(hello)7 o3 s7 \; d, }! c2 a
  74. 4 L; M" L- [8 s7 ]$ f1 J8 S. Q$ o
  75. hLen* u$ D2 e  S/ v" X& W$ p; k2 a4 e
  76. $redis->hLen('h');# l5 a' K$ u' [" I" b5 r6 u/ O, ?
  77. 返回名称为h的hash中元素个数
    . `; H, u2 F! ^. a
  78. - b2 h! L5 K0 M$ W9 p; I
  79. hDel
    2 C2 ~, ?5 d6 h' l3 Z4 u5 T4 B) M
  80. $redis->hDel('h', 'key1');
    ) _, e$ ~7 N. u8 w
  81. 删除名称为h的hash中键为key1的域/ H* _/ c; t/ W$ W, {& W
  82. 5 ]9 Z$ s2 p) J9 m8 S
  83. hKeys( V, X- N9 O) O. ^
  84. $redis->hKeys('h');( b4 Q' x5 n. o- S
  85. 返回名称为key的hash中所有键
      [; H- W1 v: [5 m* F3 ?" d

  86. / n' k9 A1 Z  z/ _0 A: U' \6 k: t; B3 d
  87. hVals/ }4 v( Z9 z, D. c9 u! b
  88. $redis->hVals('h')+ v- }* C/ k* D1 D5 H% i
  89. 返回名称为h的hash中所有键对应的value, \! r/ \8 J0 Z% y5 Y+ L

  90. 9 }2 C9 Y8 f8 ]) B! D, R7 b
  91. hGetAll( V& N7 t6 \6 F4 z/ u2 |
  92. $redis->hGetAll('h');& e) q4 b- @! K/ B
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    2 D9 g7 Z9 B5 p' M. X
  94. + G5 C+ Z" t' x8 l5 p  D4 W4 y
  95. hExists. p  c& W5 y% F% I* j% m
  96. $redis->hExists('h', 'a');+ |! @  |7 k4 R6 S; v. K) W6 v7 c
  97. 名称为h的hash中是否存在键名字为a的域  f* ~4 m: l& [# p$ s8 \

  98. 1 i2 p% L6 \5 U
  99. hIncrBy% P9 Q  P* l7 p
  100. $redis->hIncrBy('h', 'x', 2);0 O# B& d7 g: @3 m6 h% y: D5 V
  101. 将名称为h的hash中x的value增加2
    . `/ E' H. f1 Y/ p" Y" V* Y

  102. 0 |. ]( W4 t/ E1 c& |9 Q
  103. hMset2 ~. h7 a& ^; r/ r& A
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));. E4 D2 ]- ]7 `2 T
  105. 向名称为key的hash中批量添加元素- y# Y5 v& s( c( D4 A: y# Q5 O/ r

  106. # m7 J6 \$ G+ \/ t3 a
  107. hMGet
    2 X( J0 v3 K* d, w8 t
  108. $redis->hmGet('h', array('field1', 'field2'));
    9 f1 ~0 H7 y4 i( |' _/ }% _2 E
  109. 返回名称为h的hash中field1,field2对应的value+ z% a' y; V5 v9 E! B
  110. 4 C4 U) \5 S5 e8 Z( ]" z* N
  111. redis 操作相关
    0 R' A7 ^8 k* g. X" M
  112. flushDB. D* {3 Z* F1 }7 v8 N5 C( v
  113. 清空当前数据库
    ( Y( m" G  `1 t3 n
  114. ' t/ \; L3 T! R+ ]' G6 @, y5 S3 [
  115. flushAll
    ( V# Z" ?, g2 J# c& i% f, l5 G
  116. 清空所有数据库
      Q9 B- |+ y2 F( O& q

  117. + ]" B8 `  ?% L& w3 H
  118. randomKey
    . T: G; R0 k2 x0 W+ b( w
  119. 随机返回key空间的一个key( |% S9 U2 T5 x0 @+ d9 [
  120. $key = $redis->randomKey();: d$ p; ^% r* f; g" d! H4 ^

  121. - k3 z; \$ d% F; C6 v
  122. select1 |  U7 E; m  `
  123. 选择一个数据库) C/ q! \% A1 E8 ^8 J! a/ L7 {
  124. move
    , m$ C3 a$ v" z/ D( x0 G
  125. 转移一个key到另外一个数据库
    , E8 _; s( R/ r4 `  l. P- o' N& ]* q: M
  126. $redis->select(0); // switch to DB 0: n6 n3 T( d" H/ Y
  127. $redis->set('x', '42'); // write 42 to x8 t+ p& R# q3 b7 g, m
  128. $redis->move('x', 1); // move to DB 1& g: G+ G8 K4 H: o  d( j
  129. $redis->select(1); // switch to DB 1! Q# H% \; R) q" ?/ }; i* S7 R/ A  K
  130. $redis->get('x'); // will return 42
    5 m  c2 p5 Q/ A

  131. 1 k0 u" _6 B' v6 |
  132. rename, renameKey
    9 f* g$ @4 c/ s, q* {" E- W
  133. 给key重命名
    + J* Q4 n3 @3 |2 S
  134. $redis->set('x', '42');
    9 B' @# Z: Z: \9 @7 A- M) G( z
  135. $redis->rename('x', 'y');
    4 m9 i& I. }% L# @7 K  ~- S4 }7 E
  136. $redis->get('y'); // → 420 P( ]. F2 @: q4 q( H4 v
  137. $redis->get('x'); // → `FALSE`
    3 S, P/ R% u5 q$ C4 H
  138. $ S8 l! B7 G8 L( N9 D5 ^  V
  139. renameNx
    8 x" O3 s" g6 |$ t' _" ]* m3 b( v) |
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    5 x/ u$ X8 O5 U6 G% h

  141. ( W1 ]# T! N4 s% ~1 y
  142. setTimeout, expire
    / J9 T/ k# h/ u8 l
  143. 设定一个key的活动时间(s)
    + w4 X6 T- l" H- @2 x) w. T; f) R! s
  144. $redis->setTimeout('x', 3);/ U7 k% {8 f2 G6 t8 i9 o( J
  145. " `: |! n$ J6 I- m! b3 H
  146. expireAt2 v7 L: v: `. v) |& c4 C5 a
  147. key存活到一个unix时间戳时间5 _6 }  S# m6 _/ M2 I
  148. $redis->expireAt('x', time() + 3);
    9 @, P9 E1 x. |4 q7 r% S

  149. , @" b7 b3 u* A4 O( [. ?+ {
  150. keys, getKeys
    2 y+ l9 I6 r( _$ T' I& t
  151. 返回满足给定pattern的所有key
    / p0 L! z, u2 Q9 R9 z, L7 i7 t& {! r
  152. $keyWithUserPrefix = $redis->keys('user*');
    $ |$ m4 r! w" J

  153. 2 B/ x! H- ]) g  d+ a: M
  154. dbSize3 P0 P8 u& j2 j" k& `
  155. 查看现在数据库有多少key
    5 F" \, W+ Y' l) a2 c' n
  156. $count = $redis->dbSize();" r7 v* X5 M& q; ]* y# m: n& c

  157. 5 i- l9 l3 N: l  ?2 @! D
  158. auth+ Z, T/ o) h6 f8 R
  159. 密码认证
    0 A* l+ F  w6 u! L
  160. $redis->auth('foobared');/ V  P( ?' w% A8 E3 g5 a

  161. ' ]* M$ U& w" ]- s
  162. bgrewriteaof5 g! ?& o/ E% H( F0 N, F
  163. 使用aof来进行数据库持久化" z* H+ |6 I8 a, |" Y& t$ Y
  164. $redis->bgrewriteaof();
    + q6 _" n% m, p* y
  165. $ D. `8 q; a# I# y( j$ f1 O; F
  166. slaveof/ B2 ?) _& [# Z3 k. N- T3 T
  167. 选择从服务器
    0 o8 K8 a1 i4 [
  168. $redis->slaveof('10.0.1.7', 6379);- V+ v7 q  O0 A" d  i1 |! A* l4 B; w
  169. ) U7 o2 h, n$ _# s& ?
  170. save
    4 \2 D5 H& H# X! x: A: o
  171. 将数据同步保存到磁盘
    ; R$ b) \  j( q2 W

  172.   L6 q7 o2 _5 F
  173. bgsave
    ! A" }" o  y5 ?" x2 P* P$ p
  174. 将数据异步保存到磁盘
    * {! n4 l5 p8 z- {* K4 {
  175.   t& A, o4 y) J, U. B
  176. lastSave
    9 J# e" \( y! i5 |- A" X0 B. {) m0 {
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    ! ~: y0 Y1 e( Y% V1 X) p  y& N; b0 Q
  178. ; j8 |3 D3 W* o' K$ {
  179. info
    ' t* i$ L( t$ K
  180. 返回redis的版本信息等详情0 \6 k1 `7 [: r! k3 H
  181. ( Z- ^. n4 L+ t2 {, ?
  182. Redis::__construct构造函数% C; C2 m2 [1 r. s, u
  183. $redis = new Redis();
    9 @/ L# D8 ^; {/ _

  184. & j# G" V& q/ X5 [" c
  185. connect, open 链接redis服务
    4 w8 u, h5 l% Y7 V5 q; K# K
  186. 参数5 U+ _: @7 I' L+ a+ V# n0 n
  187. host: string,服务地址
    7 {! V" `: F! B5 X8 [$ i- Y* y
  188. port: int,端口号
    + U) V, j) o8 E  {8 Q3 P% J* N
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ) S2 I& F3 B0 V+ r6 e) L
  190. 注: 在redis.conf中也有时间,默认为3002 O# P8 W; r/ p. C3 t
  191. 4 ?, i; {& _5 v* y, u# [- V6 F
  192. pconnect, popen 不会主动关闭的链接
    . i% E6 c4 E5 z
  193. 参考上面
    . S1 S% B9 x7 |1 A3 d. I' j

  194. * i/ i- f. u: w% z! x# b; o) C! B
  195. setOption 设置redis模式
    " N) W4 h3 I5 x

  196. ( U( V) T+ }" n
  197. getOption 查看redis设置的模式
    6 m$ s7 t2 c. G7 _& J1 f/ i- _8 ?
  198. * |# `, ?* M, p7 P+ T+ r9 J& t! y
  199. ping 查看连接状态3 W" Y1 p6 k9 i% ]* a4 w
  200. * Y( a& ?2 G7 b. L- b! L0 k
  201. get 得到某个key的值(string值)
    1 L# ^1 m* L% c$ T) D
  202. 如果该key不存在,return false
    . }, j/ u( H& ?% x/ G

  203. 6 h1 |+ H6 x8 S5 `
  204. set 写入key 和 value(string值)
    : C- N( e- W9 W& m
  205. 如果写入成功,return ture, g2 o2 _* r6 J/ \) W
  206. * D, O; N3 w3 j) B
  207. setex 带生存时间的写入值
    3 t5 k- [3 O( X! h+ U" ~) \
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    9 T& [3 n, i  D! P  K% v

  209. " s  _5 {6 X% |: e- m
  210. setnx 判断是否重复的,写入值* e. S6 f3 k- _
  211. $redis->setnx('key', 'value');/ P/ u0 P7 D( l  X! Q8 r
  212. $redis->setnx('key', 'value');
    5 d' w3 e1 I3 y( o
  213. : j; B; k+ |6 _
  214. delete  删除指定key的值
    " @: e. z% @6 D' m' [4 b* a5 l/ a
  215. 返回已经删除key的个数(长整数)
    6 C+ E# j% `* z3 o2 w- }/ O+ `
  216. $redis->delete('key1', 'key2');
    6 e3 T0 X0 T" Z# r
  217. $redis->delete(array('key3', 'key4', 'key5'));
    # f9 O0 ^9 }6 Y$ h; @

  218. " V4 W' D9 c; H& _  O
  219. ttl
    ' b7 y# Z# I( }& ^# N6 o2 x  {
  220. 得到一个key的生存时间* B  |) K  k: j! u
  221. & w5 d- E! O( L5 G$ a
  222. persist9 I7 k' E, H/ S; g9 p  x* A
  223. 移除生存时间到期的key
    0 o9 b& r  {. e, U- N, Y
  224. 如果key到期 true 如果不到期 false) }! W( U' L) P8 l) L8 c' p# c8 R
  225. + c) I- N: _: a) r3 c( g* }8 k1 q
  226. mset (redis版本1.1以上才可以用)0 e! G# O1 r6 A
  227. 同时给多个key赋值& b6 h: F: v! t7 x. C
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));4 _, P4 K. u! f( r. k! |5 M

  229. ! X8 }0 Y/ n- C. N  {
  230. # g5 V1 N1 _3 ?$ O) h
  231. 6 `0 ~% \5 R9 m
  232. multi, exec, discard
    $ @; l1 A$ a. O7 h$ X- b( A. r  I
  233. 进入或者退出事务模式
    ' Y- @/ v. ?! c& L4 p
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI) p/ ^+ q' |6 l1 x; J: {7 z
  235. Redis::MULTI:将多个操作当成一个事务执行
    ' b$ d/ e' k# ~
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证8 W# m5 |) V5 c  U- H& U
  237. discard:删除一个事务
    " p# y/ d8 K- ~8 z5 L- h# C
  238. 返回值
    - }' b( Q7 a. U% O0 b. S0 @
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。' x3 V% w6 z7 {6 @. \
  240. 9 K3 p9 {0 D8 X1 k  L
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    + z5 m2 ^* g+ T) C% f1 o# ?
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)" F6 ?( j# j" W5 R4 B* R+ f  K8 g' C8 c
  243. unwatch  取消被这个程序监测的所有key/ _- h. U3 U6 `8 M( b' Y, z- g, S
  244. 参数,一对key的列表
    4 a9 G; r. F$ E: Y9 x
  245. $redis->watch('x');
    5 j( N7 O& T3 ?  r

  246. ! H$ d8 |: w- p! D% e. `7 `
  247. $ret = $redis->multi() ->incr('x') ->exec();
    3 x! i  i* J* T) K3 J
  248. # [: k; y$ J! H, f/ w) g1 V. N
  249. $ ^0 |0 N7 M6 V( |
  250. subscribe *
    ) x* i* g0 Y$ s8 q% ^5 Y
  251. 方法回调。注意,该方法可能在未来里发生改变; b. r4 f& r3 P1 i% V! o5 B
  252. & s# j' r2 A) w
  253. publish *
    / M4 u6 I8 x% W  F0 s! \- z
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    ! ~9 ^& P$ m9 Q. k! E0 o

  255. $ S( K. W+ o' f$ i" q5 z
  256. exists( ^% C8 V- l: h; M& W
  257. 判断key是否存在。存在 true 不在 false( k7 N" n4 P, ~$ Y& z
  258. 2 k7 W4 y# Z7 k! E; ^
  259. incr, incrBy
    5 h; {6 @! p5 N& `
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值: f" Y* u1 ]1 E$ O! ~9 x' R$ {
  261. $redis->incr('key1');* u* P2 V% K$ Z( {. K
  262. $redis->incrBy('key1', 10);4 Z$ @, V( U  P  z. T9 b

  263. 4 g$ O. d# s2 T( o6 X
  264. decr, decrBy
    ; Z% r. C% Q' `* B
  265. 做减法,使用方法同incr
    # y0 y# W3 G" z+ @5 `, ~; T" r

  266. 0 i& a* D) n5 Z9 l1 L' ^2 e/ Y
  267. getMultiple4 D# Z7 J* y- z2 i& `
  268. 传参/ H4 p$ d; r" @# N+ L2 [" m2 E
  269. 由key组成的数组
    0 `+ a; l, v+ g5 x, ]
  270. 返回参数
    8 X+ c" k+ }! B! r( G% w; |% G% l2 M
  271. 如果key存在返回value,不存在返回false
    : Y0 p/ J; p0 h4 r9 @% T
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    1 g' \5 O8 l4 P. O( _7 e1 @" f
  273. $redis->lRem('key1', 'A', 2);* p6 w3 ?: H3 B7 h! _4 O
  274. $redis->lRange('key1', 0, -1);
    ' O/ @4 @* t6 }% C4 f
  275. # q5 h' Q- T0 q: H! h' Z* h
  276. list相关操作
    # i$ y1 h/ i, q5 W7 L. p. U" _+ h
  277. lPush
    . ]7 K5 ~" X) A+ a( u3 N" V
  278. $redis->lPush(key, value);4 E' U0 _2 `  P+ j; @
  279. 在名称为key的list左边(头)添加一个值为value的 元素3 O# C: V# ]2 B# I) P% h
  280. ) J; G$ m  K; m3 B9 {
  281. rPush" r5 O; L0 j4 D" R
  282. $redis->rPush(key, value);% i( x1 A8 ~# ]. [0 S! \% u
  283. 在名称为key的list右边(尾)添加一个值为value的 元素' L4 B/ F# a: G3 b" J4 u4 J
  284. . h+ F9 d2 _7 C, ~+ P* D8 |
  285. lPushx/rPushx4 G8 F# u- f1 T3 g: G5 e
  286. $redis->lPushx(key, value);: z( ]& Y( ~( B" W2 ^: D
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加6 d2 D7 ?8 d$ e5 ^$ e* K
  288. ' ~  Q* @6 e# W0 p# u, O& q* g: N, K
  289. lPop/rPop0 |- [, G2 R" x* Y# F3 u  a* _
  290. $redis->lPop('key');
    ) C/ \; @' k6 ]2 D* F9 @' @( B- V
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素; w3 x6 v- b! y/ O; G2 M
  292. 7 e6 ~2 d' R! m) @( Y  `
  293. blPop/brPop
    : }" x) z% B) T) b; O- }
  294. $redis->blPop('key1', 'key2', 10);1 O; b" L: V( ^! t5 M* c
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    $ ?8 t5 P) ]$ a: P8 n

  296. 2 m+ H  |* g+ Z* }5 P
  297. lSize( D* O. g  \' h
  298. $redis->lSize('key');/ H( l0 b0 B! c2 D
  299. 返回名称为key的list有多少个元素3 q+ v. W. N. [9 z
  300. . E; ?: |" D. j" x4 y: B
  301. lIndex, lGet+ H7 o4 U: Y; F0 ?- |4 i
  302. $redis->lGet('key', 0);
    - y# @4 q* k  D' I" M* x- }; R
  303. 返回名称为key的list中index位置的元素# i% @2 e7 |! C/ G1 L- }/ l  o7 t

  304. $ \$ F6 T- M) @  i5 |) S2 V
  305. lSet. y9 P7 P- W) R6 z
  306. $redis->lSet('key', 0, 'X');
    1 f; ?2 Q, l, B5 G' P6 U
  307. 给名称为key的list中index位置的元素赋值为value
    2 M& U" |2 K: }( \- J

  308. . K, l  z9 v0 Q' w
  309. lRange, lGetRange8 a2 F& ]2 b$ _  c1 F9 G  n: E
  310. $redis->lRange('key1', 0, -1);) o& z7 H+ c% b- k. C8 c
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    0 @( c8 d! _& [( }

  312. " q1 c7 X* e* o* }
  313. lTrim, listTrim& j- G4 g  a2 l+ \7 ~2 q
  314. $redis->lTrim('key', start, end);
    + L$ q8 P1 u4 `6 x
  315. 截取名称为key的list,保留start至end之间的元素1 ]3 ?! w- x! Y# _
  316. ; s* n: h0 S7 c' c" L# j  G
  317. lRem, lRemove
    . Y$ s6 G) k' Q% _9 \1 g
  318. $redis->lRem('key', 'A', 2);
    6 Q+ E- O7 H1 A' m% v( P2 z& c' H( S
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素- W( ~% |1 [6 O, Z7 g1 ]* N0 _

  320. * U% b  w/ v# X$ U6 \
  321. lInsert
    8 Q7 I; a9 a% I: R$ a
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ; R( D$ [, B( f2 L. p0 `
  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');
    % {, G: i% y9 H. ^
  324. $redis->lRange('key1', 0, -1);
    2 ?- a& `. P0 r5 e- B8 h* H
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    2 A3 f' v4 X- c: y. R$ k: \
  326. $redis->lRange('key1', 0, -1);' A: @( f' c, R% j* p  s
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    4 ~7 a* v# F% }; j- i
  328. 3 }$ }6 ^+ E+ g/ t$ _$ {4 c
  329. rpoplpush1 x" ~, b& d3 @" Y9 N% g
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    " A, T7 a2 h- `+ [, w: S) f
  331. $redis->delete('x', 'y');
    5 v- A4 ]) ]3 E% e, y9 g
  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'));
    ' D7 G2 G  ~+ ~: ^6 `0 Q
  333. var_dump($redis->lRange('x', 0, -1));
    % d! H- |6 [) y; C2 H5 K' N
  334. var_dump($redis->lRange('y', 0, -1));
    7 {' l8 b( ^. G: ^( W/ Y, a

  335. 8 I; T% G  ?  P+ s; A
  336. string(3) "abc" " B. N- s- G  M; i
  337. array(1) { [0]=> string(3) "def" }
    3 ^$ l* B6 e( I# V9 r
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }; A8 M# b: T% G0 ?0 Y5 F6 F

  339. 4 r* s- d( d. H5 N& ^
  340. SET操作相关6 r1 ]/ Q+ m+ s" A* t+ H- ]/ t
  341. sAdd' J! n; @+ _3 H6 U; W  F
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    / o5 j- W, G0 i  H1 e: {
  343. $redis->sAdd(key , value);  b4 q2 I* W! P: h4 _4 y0 u

  344. * [5 _9 @2 x. A8 @
  345. sRem, sRemove7 K' U. U% N1 P
  346. 删除名称为key的set中的元素value
    ( M8 f' N/ g/ H  O: B
  347. $redis->sAdd('key1' , 'set1');+ c- W) q" ~  }) p( O3 b
  348. $redis->sAdd('key1' , 'set2');+ V( U/ x2 O- P5 {) j$ q" P- O; a
  349. $redis->sAdd('key1' , 'set3');6 _5 v: j. }$ C( R9 J
  350. $redis->sRem('key1', 'set2');9 d) A& ~8 }. s4 ]; g6 H

  351. 7 r7 I3 d, o2 ]# y
  352. sMove
    + f. R  s) C4 B' F
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    & F4 C! y! @/ |
  354. $redis->sMove(seckey, dstkey, value);
    6 F% b$ q" H+ Y( S, B$ ?2 Y+ _

  355. 8 \- G4 B1 n( f/ v) I! D0 J
  356. sIsMember, sContains
    1 G1 r/ ?+ @9 [$ p3 n3 }
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    , a# \* g* @  L
  358. $redis->sIsMember(key, value);
    . Z: F$ O) j; l# s/ B

  359. 9 o1 {# T/ v% _7 t  T4 r% l
  360. sCard, sSize
    5 o& r# ]& h' s) f  d  O, d
  361. 返回名称为key的set的元素个数% D7 R6 y& F2 n2 f

  362. 3 Z) {7 Q3 V2 \( l( |' _) E
  363. sPop
    ' V$ `! ]0 D, O" L2 f" E1 P
  364. 随机返回并删除名称为key的set中一个元素
    ( x+ y+ S2 n( y! i
  365. ' J$ ~" ~+ s9 I: X0 _
  366. sRandMember
    , p' A, Q7 y6 z6 P3 g
  367. 随机返回名称为key的set中一个元素,不删除
    1 k2 I1 `5 b' I: y9 ]& N

  368. ; U9 q3 L: F& F/ o1 u* z
  369. sInter
    7 l, c0 l1 X  ]1 B. d4 G
  370. 求交集
    ' K5 R4 }2 `' j

  371. 8 W' f: n' Z) [
  372. sInterStore
    ) X; K" Y3 \1 ^+ J
  373. 求交集并将交集保存到output的集合
    5 {. K+ k# H- p! q
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    2 W6 ?& w: q) \8 g
  375. + }! p% s( P8 q0 h
  376. sUnion
    1 V' _( q; A. X
  377. 求并集
    : n+ N+ D/ z8 J" Z( _# N8 J
  378. $redis->sUnion('s0', 's1', 's2');' B0 z# b( c" e0 @3 ]/ R7 m5 \
  379. s0,s1,s2 同时求并集  y3 V/ x+ c1 j

  380. & Y% [1 B* ]0 n9 b7 v$ A, m, X
  381. sUnionStore
    ; a+ e' [/ @* l3 x: B4 `
  382. 求并集并将并集保存到output的集合
    5 i- P6 b: z  N* k- A9 Z1 x
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');: D- T( m# s  S& V( P

  384. 7 S& h. f3 x7 `: N
  385. sDiff  N$ h8 T9 O+ j6 L) s
  386. 求差集0 L6 Q# X6 T2 E% X

  387. + m. I8 d% @# u# i% n- k: i( Z! B$ g
  388. sDiffStore/ [; G- I" Y- I3 w; G1 ~* c  F5 y
  389. 求差集并将差集保存到output的集合8 F4 M0 K5 W6 X( Z
  390. % k6 c7 ^% M2 L; Z7 n% W
  391. sMembers, sGetMembers
    1 E8 R/ N" q) m3 E
  392. 返回名称为key的set的所有元素
    " r$ W  [" O6 i6 _1 {8 k
  393. : o7 V( j7 \# {5 w. O; w
  394. sort
    * `1 B- k# i2 ], T# K/ ?
  395. 排序,分页等
    + `" C4 m, l! U3 u! [' @# w: m
  396. 参数- n& E' F/ k) P0 o& X! D" Q; x
  397. 'by' => 'some_pattern_*',% j1 _9 _# x0 \
  398. 'limit' => array(0, 1),
    5 q' s5 H" F" W; F, _; O. X6 l: O0 K
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    9 @- ]! e8 D! f: E, @
  400. 'sort' => 'asc' or 'desc',
    9 ^' n  Z8 t) m! k1 d4 R; |) C
  401. 'alpha' => TRUE,
    ; z/ ], C+ ?; o/ Z+ o0 E% P
  402. 'store' => 'external-key'
    3 V9 O& }# V' I$ o# d* s
  403. 例子" H1 V* m) h6 z& ^9 V
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    # l# D8 `' }! {' L# M! ]; V
  405. var_dump($redis->sort('s')); // 1,2,3,4,5% a$ j& _7 [2 |
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1$ Z. o; Y9 X+ T5 q
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5, L% _2 X$ T6 |' M8 V0 U% a
  408.   w6 t4 Z( [; a5 W: J
  409. string命令
    6 s2 ~) m0 T# M& O4 x4 l* M
  410. getSet# E& x: n! T9 S' B
  411. 返回原来key中的值,并将value写入key0 q+ d& n' ~; |, j0 |
  412. $redis->set('x', '42');
    3 W9 m$ u/ x; ~- p
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'# d$ g) F  }/ \$ o4 ^
  414. $newValue = $redis->get('x')' // return 'lol'" P! f, l" t! {) |7 P3 k

  415. : C; N1 [' ], s, b' d
  416. append
    + _6 B+ G8 V3 B$ @! D- Y8 i
  417. string,名称为key的string的值在后面加上value
    4 O: b; x& H3 X) M
  418. $redis->set('key', 'value1');
    # t! n' _+ Y# k. m' h4 P
  419. $redis->append('key', 'value2');
    3 J1 O$ l. N$ j; i( F! Y; M; Q
  420. $redis->get('key');
    1 E* ?! H3 H8 N. j" J( w

  421. 8 R2 }( E5 W! i4 ?- R( M0 h
  422. getRange (方法不存在)5 O2 H  T* e8 f0 I1 s
  423. 返回名称为key的string中start至end之间的字符
    ) p: A2 l. E1 t% }4 O# v. z
  424. $redis->set('key', 'string value');
    5 P7 s  @7 H' B& @( i3 x/ ^1 b
  425. $redis->getRange('key', 0, 5);* R. c' k; a/ \$ k" E( y
  426. $redis->getRange('key', -5, -1);
      a5 |4 a8 O. \; i) h
  427. , y1 C! D4 C% [  K. L
  428. setRange (方法不存在)
      M9 K* K3 X% E' R( q2 k2 a+ F& b
  429. 改变key的string中start至end之间的字符为value0 h6 m; t" ^$ A: Z4 s
  430. $redis->set('key', 'Hello world');% W, s7 K2 r) O  T; Y
  431. $redis->setRange('key', 6, "redis");
    1 a6 O8 M# O& \5 O6 @
  432. $redis->get('key');
    - h% g  u( ~; E$ a5 O3 p9 H
  433. $ h1 H9 A8 u8 V% h# l- j: m
  434. strlen
    # S7 S! N9 }! l& l
  435. 得到key的string的长度9 Z& T4 ^- F. r8 i7 x1 t1 S
  436. $redis->strlen('key');
    ! K  \: U$ G/ Y& X

  437. 1 G+ B, R* Q7 t2 o' G# e  _# L
  438. getBit/setBit- l+ j+ n5 c9 O! K" ]/ Q4 Z$ X
  439. 返回2进制信息
    6 w" u3 i. z: R4 W# s& K- c

  440. % _8 W8 ?4 x% Y1 a0 @
  441. zset(sorted set)操作相关  E: J, I. u) X+ \
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。7 {, ?1 d" n. t; i( c
  443. $redis->zAdd('key', 1, 'val1');, t1 e& n. W* I8 s
  444. $redis->zAdd('key', 0, 'val0');+ }8 g1 M8 x& v
  445. $redis->zAdd('key', 5, 'val5');( x4 a# u' j1 q
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    4 ?  C, a$ Y. D5 U1 p- x

  447. ( B5 f/ ]% X" _6 j$ q. \2 `
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    " A- C) y1 c0 d0 F, W  ^: H$ S
  449. $redis->zAdd('key1', 0, 'val0');$ |. N7 b- v6 R
  450. $redis->zAdd('key1', 2, 'val2');' k5 T7 \8 f8 H! C% u* Y/ I
  451. $redis->zAdd('key1', 10, 'val10');' K; \9 C5 |  z8 J
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);2 ?4 r7 Y" H0 P% L; w) a

  453. - o) ]+ f$ b9 ?- W! Y' J. U
  454. zDelete, zRem
    - v: c* h, M! _. W
  455. zRem(key, member) :删除名称为key的zset中的元素member0 z' a0 i0 O$ f
  456. $redis->zAdd('key', 0, 'val0');5 L* ]+ u2 l6 A1 x1 R" l
  457. $redis->zAdd('key', 2, 'val2');" B* |+ m- _# W7 `7 M8 A7 [
  458. $redis->zAdd('key', 10, 'val10');8 [) T/ ^  C2 X8 |& T( @' V
  459. $redis->zDelete('key', 'val2');$ N7 C: _9 @: t" v! M
  460. $redis->zRange('key', 0, -1);
    & K; ]: T0 V  o0 k
  461. . u/ e( h% M6 k
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出- P# x! L, q0 s. ?8 c) R; w% @
  463. $redis->zAdd('key', 0, 'val0');
    ) `* u# }/ l- M, B/ D) L
  464. $redis->zAdd('key', 2, 'val2');
    ! i6 t. k- P9 r, W+ [
  465. $redis->zAdd('key', 10, 'val10');, ?! ^, e5 q& @5 g6 x, F
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);9 P- H& r2 i) N' ]
  467. * i0 k; R- S" b2 t  j& m' V
  468. zRangeByScore, zRevRangeByScore
    ; ]* _6 q1 R! D
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));: S: A0 m4 _8 B  d" K+ M, {3 m5 }
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    : b; J  j( J# W. N6 ?
  471. 1 B7 T/ b6 W) X& |
  472. zCount6 C$ Z* ~1 q' g, L
  473. $redis->zCount(key, star, end);( k4 C- w* G9 e' `, M8 |# a, ~
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    5 n7 j3 g8 N6 [# X% X! B

  475. 8 ^/ U5 p% O4 N5 z, I; ^
  476. zRemRangeByScore, zDeleteRangeByScore
    5 E' t5 {5 b7 q4 |, A# ?4 ^
  477. $redis->zRemRangeByScore('key', star, end);$ X2 _3 O& _( x" T: B
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    ! i1 r: w8 F8 K- T; I4 [2 p
  479. 4 [( v7 L2 e4 B1 }* J
  480. zSize, zCard8 N% K% ]& s& S$ t3 d
  481. 返回名称为key的zset的所有元素的个数4 ]( l: w/ y: Z: E* G9 ^
  482. / ]8 m) S) f- u
  483. zScore& W4 Z" t; g. A; Y" X& R1 G- _5 z( z
  484. $redis->zScore(key, val2);
    5 N' k( b- P0 I, S
  485. 返回名称为key的zset中元素val2的score. F- |- `3 _. u5 ^8 p- o

  486. 0 H: V# `7 U" w* |! X) P. Y7 q1 a
  487. zRank, zRevRank: q8 L% ]% a, Z
  488. $redis->zRevRank(key, val);/ p4 s( \# ?" A* R  }
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序! n1 D6 s' N! h5 m. P6 q
  490. * H/ u/ y7 [0 ^3 X+ V4 V
  491. zIncrBy
    ( t4 l2 X& ~+ |% R1 Q# q
  492. $redis->zIncrBy('key', increment, 'member');
    0 _* \$ y: w" `- u
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    ( [( u1 W$ _* m
  494. 6 Z$ k' g. I/ G2 S. l, e
  495. zUnion/zInter
    2 t  z9 N, D+ ~, _6 G/ W+ e+ _- X3 f
  496. 参数
    1 H5 }$ U; |5 b8 j* U7 z
  497. keyOutput
      [: b% I$ W9 [: u, m* O
  498. arrayZSetKeys* C! H1 S& ?9 u' U7 \
  499. arrayWeights
    / U, ^& a- x2 t' E
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.3 D5 j. B# U+ O# j& p
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。& [, S7 m' m. C* C
复制代码

9 z  s- q7 v2 g+ I( R
# z3 y% Z* x( p/ a8 V, z/ d% b# R7 n* W- M2 k

: A/ M) W) t0 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    4 F3 z( ]6 Y" Z$ S9 [8 ?9 H
  2. //连接redis服务器
    # Z% [3 z/ K% m4 G, E: j% j
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 16:00 , Processed in 0.085264 second(s), 29 queries .

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