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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    ' k8 G) u0 l$ G- R* n* ?
  2. $redis = new Redis();  
    6 F2 D5 Q2 b% W1 n, A2 z2 Y. Z
  3. $redis->connect('127.0.0.1', 6379);//serverip port0 N( Y4 Z0 }0 X4 V  C
  4. $redis->auth('mypassword');//my redis password 4 @6 y  C/ i# G' A
  5. $redis ->set( "test" , "Hello World");  
    . e2 {# I1 U. G1 L" \; S
  6. echo $redis ->get( "test");
    5 {/ p. }+ Q7 y- R
复制代码
php操作redis函数封装
  1. /**( R+ y- A6 R9 B
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数/ n; D: N; Y: D* M  p7 D1 l
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    # l9 S. z# C4 U+ w1 N% F: L
  4. */
    ; `9 a2 Z0 ?8 d" f" s! _- Z4 r
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    - u8 w0 r& G# Q, D8 n& H
  6.     if(!$key||!$value) return false;" I6 y# B6 X7 O6 v- Y
  7.     $host = $host?$host:getenv('REDIS_HOST');- H" @3 _! P- l5 Q
  8.     $port = $port?$port:getenv('REDIS_PORT');# T, V- p2 [5 E) v" K3 b
  9.     $redis = new Redis();
    5 s' p2 |; y/ j5 N" s2 F, E% T# t
  10.     $redis->connect($host, $port);5 C7 G- f# n, I0 [5 I
  11.     $value = is_array($value)?json_encode($value):$value;
    " ]% R2 i0 `7 ^: L' p
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);/ G( O4 C9 f7 V, _/ v6 u0 s
  13. }
    7 Z3 v7 P& O+ g* o" l$ R( u7 p, e
  14. /**) z$ [! I. [) P2 V/ r5 j
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi9 A( f, Z7 H2 r. ~
  16. */
    9 N1 ?3 `& f3 s  U/ I
  17. function RedisGet($key,$host='',$port=''){
    - g6 b8 [3 ]5 y5 P2 M
  18.     $redis = new Redis();( z# a, _3 ~) y7 H' f4 E- p, P
  19.     $host = $host?$host:getenv('REDIS_HOST');( j+ c8 |$ [2 y# M" I
  20.     $port = $port?$port:getenv('REDIS_PORT');
    ) e: C0 t1 v4 L1 B
  21.     $redis->connect($host, $port);
    2 ?* w* O; z' G
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    4 g' I7 f* p4 h
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);8 j, n: K) U' z+ C( P3 _2 {4 a6 K
  24. }
    # @+ m0 N9 q  ?" H+ V
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了$ W% S5 H# V) u! I* _* N
  1. setex 带生存时间的写入值
    # k0 @) n# t4 r# i9 h
  2. $redis->setex('key', 3600, 'value');
    6 N* v! Z/ @; Z3 r) E# X- U
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1; W7 [0 P4 I% B9 y6 C$ j
  4. $redis->setnx('key', 'value');
    ) z! _5 h" S7 }! t
  5. 返回已经删除key
    + H4 Q$ M3 i) t; x. K) K+ [
  6. $redis->delete('key1'); 成功返回1失败返回0
    8 z3 C/ I, O- E0 y2 T
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0$ Z/ _2 |' q- E9 n# y4 d, r2 v4 Z
  8. 查询生存时间
    ' F: p1 G8 l8 q8 @4 R
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    , e4 Z( O( p0 U0 K
  10. 同时给多个key赋值,同时设置key0和key1
    " Q" t- C+ I/ H2 S' n( Z
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    6 }6 C# N' L* }% t5 _
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    * {7 X* N2 d  l, v5 Q3 h
  13. $redis->incr('key1');& C6 v2 q! E# }# j
  14. $redis->incrBy('key1', 10);
    3 b" g: r6 l' f! `( r  I2 r2 F
  15. 减法跟加法一样
    3 O, h) F( l; I2 s' c
  16. $redis->decr("key1"); 减少1" x5 M" o" X+ O1 x6 r
  17. $redis->decrBy("key1",5) 减少50 V$ D6 e+ {8 ?$ o6 y6 y2 y
  18.   M4 O0 Y/ `! [- N( B! p5 i: }; \
  19. list相关操作,连表操作/ h2 B4 b% J, ~+ @) m- f8 p, n
  20. lPush3 o' d6 G' x8 P; O2 i0 s1 r8 w
  21. $redis->lPush("list", "888");
    - w2 G. B' x. z9 V. W6 F
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数% R$ w9 z: ]- H7 O+ `! ^' V
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式+ `7 g7 b) v* p, C' A% }
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素+ T8 |2 Z; Z& x0 V
  25. lPushx/rPushx
      ^  G7 s8 b, O7 m  U) u
  26. $redis->lPushx(key, value);
    ; j8 l/ l& v6 j2 s
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加. @8 s% ?# p; z( f  Z
  28. $ L* Z% i2 I; r8 V, T5 u" E# ~
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    + O6 L% A9 m; |" n% |. y5 r- v
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    . c' s- P+ ?6 i: u
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1: t$ p3 Y' N. {! \  f
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序5 v5 F% _. Y3 S/ r
  33. sadd s1 zhangsan
    ) H( ]; ^0 d1 _0 `9 R
  34. sadd s1 lisi
    $ m& F5 }" R/ t, Z) J8 d6 I
  35. sadd s1 wangwu
    4 e1 b" N  `, B1 w4 O  i
  36. sadd t1 yangxingyi
    / l, c; z. m, I0 f0 ]1 J
  37. sadd t1 lilei
    ! _( k3 u0 ~" A- N0 ]; x8 \5 U9 o
  38. sadd t1 zhangsan; ~6 X' D8 |& n
  39. smembers s1 s1的所有集合内容# k# D1 s6 i% ]0 B$ V
  40. sdiff s1 t1 s1有的,t1没有的,差集% X" o) ^& C4 f" @7 y4 c( }
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    2 W& T% z+ L, Z' L, O/ N& M
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    0 z: @, P3 b; W8 _
  43. spop抽奖场景,返回集合里面随机的数
    ) L/ G; s+ z* E2 ]3 i
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了/ u6 a/ s" P4 E0 ?
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数# N! f% ?3 X- D) f& B* F9 _' x5 i
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    & o, e# [4 v" S
  47. 随机返回集合里面的一个元素,但不删除,重复中奖$ \1 }9 K. M0 H, Q) E- s
  48. $i = $redis->srandmember('s1');echo $i;
    0 P; ~: }4 k" r" g& }, O
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    " b# T1 X7 w% r, ^/ J, r3 ~5 {: N
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false1 E$ N" U" F- e& q. b  m  i

  51. ! D/ I+ B9 A0 `5 s* s
  52. zadd key 2 value 有序集合
    0 l+ m. n* m0 L! W$ K' J
  53. zadd y1 1 zhangsan;
    4 S* d4 i7 `- Y' z
  54. zadd y1 3 lisi;
    0 o8 @9 Z: i, w5 t, ?7 O* d) D5 H
  55. zadd y1 2 wangwu;3 e, Y# Q1 f; ~
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi) l; Z% p0 O; }" J( w0 T9 H
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);+ G* ~& p" d; u* z+ i
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    $ {# x2 N  _: Q$ |# v
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先1 G  [/ O% o# h# J( ]
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的* j* S# r7 d4 f9 _
  61. 无序就scard,有序就zcard,有z没有s7 V5 e; v8 ]) \" _2 g) @4 s2 }6 v
  62. sInterStore" f- C0 Z& ^: u$ J5 H! m! b; ^' N
  63. 求交集并将交集保存到output的集合9 X7 k3 ^. e2 a8 j3 T
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    4 N' e2 N6 E7 o  F- \8 }

  65. , N0 t0 f1 v5 X# ?5 T; l0 W! H6 ^
  66. Hash操作8 N2 R" p+ {3 t
  67. hSet1 f0 P8 _& P, \
  68. $redis->hSet('h', 'key1', 'hello');
    7 X8 D9 q5 }4 w" o$ j
  69. 向名称为h的hash中添加元素key1—>hello
    0 F6 i  ]5 |7 J% G( ]! Z

  70. 9 Q' K* ~0 w1 F& s, Q1 }: G  `
  71. hGet
    $ u! Q: a7 x: q. U5 u( H
  72. $redis->hGet('h', 'key1');
      u2 I" V, N. l; |  Q
  73. 返回名称为h的hash中key1对应的value(hello)
    ' }5 G, C9 ~2 d" }  j6 \! Z

  74. % ~& h1 h6 v3 O  W4 ^: Z' U& c
  75. hLen5 ~: [0 g; C7 g: ?) w9 t
  76. $redis->hLen('h');# Z6 N5 t2 t, ?. u9 j
  77. 返回名称为h的hash中元素个数( E$ I" R  P' r1 v/ O, A
  78. ( `2 k" ?8 w+ i! E; f1 h
  79. hDel
    9 }& S' t6 g3 F- }" a9 w1 ?# g
  80. $redis->hDel('h', 'key1');- z) y8 {" c6 v; r. e# R
  81. 删除名称为h的hash中键为key1的域
    + E; {5 y* Y4 e0 q' W+ e
  82. 5 p% B- L- t8 m: {- V( i2 m3 R
  83. hKeys
    " r* m6 {& k2 o4 x5 M* D, R' K( n' W8 U
  84. $redis->hKeys('h');
    % ?; H, t% A; F# p4 k
  85. 返回名称为key的hash中所有键
    # P; Z/ @1 ~# h' w+ I/ m" J: w
  86. 8 v0 {! E! G& v
  87. hVals
    $ b/ f5 p* _9 k
  88. $redis->hVals('h')
    5 u4 ^2 R  }3 J
  89. 返回名称为h的hash中所有键对应的value
    ) |4 }8 _% J9 a8 A3 Q( i+ r0 z
  90. % H0 t! v7 y/ ~$ J7 ?8 w' y& {
  91. hGetAll( G7 L, M" s! q4 d. N: M: w
  92. $redis->hGetAll('h');
    / n7 x9 h/ L: h- d
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    ( d3 s$ X  b* d
  94. & H% o1 h- f; n) r: Q
  95. hExists" E5 [  y0 Y# y, G
  96. $redis->hExists('h', 'a');
    $ P- {/ O! @4 n0 m; W, H/ V
  97. 名称为h的hash中是否存在键名字为a的域, f* D/ ]+ y9 h( }; J

  98. , L/ P- Y; ?) |0 L6 b
  99. hIncrBy$ I, b' O, J# W3 o; X" }4 y3 C
  100. $redis->hIncrBy('h', 'x', 2);* A( i) G8 i4 E( S2 Y0 J
  101. 将名称为h的hash中x的value增加22 [# L3 x6 g0 }, V- ^* {: W
  102. , w/ x5 g- E9 i3 `8 j6 R
  103. hMset
    7 F/ M2 [% ~% c7 K6 t. O
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    / J+ ^% f3 L$ ~# _- U3 C! l: m
  105. 向名称为key的hash中批量添加元素4 O5 @8 x; `6 a
  106. ! c7 [) m) e0 V5 S# ?
  107. hMGet
    ( x7 u. O# ~, J2 ^: T  \: a! p
  108. $redis->hmGet('h', array('field1', 'field2'));7 W' E3 {; l* u& v
  109. 返回名称为h的hash中field1,field2对应的value! }$ b0 s% V! M0 t6 l6 C
  110. . B8 t" K  Q2 W4 I2 I
  111. redis 操作相关
    ( G) g0 Y5 U* Z) t* F% Q
  112. flushDB
    1 X) g) @8 ]! v, }3 c4 l
  113. 清空当前数据库: I8 `# L+ c! K. r- x% v* u

  114. 3 \& k- z3 g# [! m
  115. flushAll
    6 \) Y6 N; m& }( P- _5 K
  116. 清空所有数据库' N* c; k+ A1 E7 k# m, ]  M" w
  117. ! |( u3 S6 U& i$ u4 t
  118. randomKey9 V' B: U$ D5 P; j2 G% s
  119. 随机返回key空间的一个key
    5 I, \8 A" g1 y
  120. $key = $redis->randomKey();" P) p1 U7 `9 V
  121. ) e" v4 @* f5 }
  122. select1 \) B6 ^2 Y! D, a( ]8 j" C
  123. 选择一个数据库
    / X! q* P$ n0 e
  124. move
    ' |1 l6 @$ j* k
  125. 转移一个key到另外一个数据库
    : K& P! A" ~1 W4 ^$ M! l6 h2 f
  126. $redis->select(0); // switch to DB 0: e  G: G- R  p3 q2 v8 z' s
  127. $redis->set('x', '42'); // write 42 to x
    / c: S& \+ S# q2 ^4 t' e$ q
  128. $redis->move('x', 1); // move to DB 1
    . d- o- z5 X( e! B
  129. $redis->select(1); // switch to DB 1+ G$ R7 A& V. x# L# G& p! ]; C; P: E) v
  130. $redis->get('x'); // will return 42
    + P# w6 e/ ^0 V2 p5 `6 m9 t0 G

  131. & T/ T+ q/ \, N% j5 |4 Z5 J4 B
  132. rename, renameKey
    % e1 B: t% O4 G1 S7 r  x. M
  133. 给key重命名
    7 Z( r6 g( K7 D% P! ?1 s, g# a
  134. $redis->set('x', '42');3 x3 @8 z" i' L3 V- k
  135. $redis->rename('x', 'y');: D1 \8 @( \* c
  136. $redis->get('y'); // → 42- O- t6 ^+ h: A8 S, N6 o6 Z
  137. $redis->get('x'); // → `FALSE`
    5 A) [/ D3 X% @2 W$ J% {" ?. |
  138. . t. Y8 z3 \, a" _+ b9 A
  139. renameNx
    8 s1 j: Q+ I/ b4 \- s0 W% U. s6 Z1 ~
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功) C$ f- C4 I/ j2 s: s, f

  141.   \$ n8 `' [4 U6 ?
  142. setTimeout, expire
    0 N8 [+ q2 e( e' _( q' E
  143. 设定一个key的活动时间(s)
    ! l& _2 O% B( L( B' p: \
  144. $redis->setTimeout('x', 3);
    5 t! M" }1 Y' j' H: R/ k2 N
  145. 6 U3 A( n2 Q* x  H7 i  t: Q
  146. expireAt2 R, j9 x  t7 D% W: g
  147. key存活到一个unix时间戳时间
    ( q5 v' u5 [6 x/ ]/ I' I
  148. $redis->expireAt('x', time() + 3);3 C; Z* |5 G' Y9 s5 O7 Y  T8 E' D
  149. ! u2 [1 p0 s" m1 e* M1 W
  150. keys, getKeys
    $ L% V0 [# V7 F2 F6 N( M6 ^
  151. 返回满足给定pattern的所有key# N0 r) u% \2 ]: v; G) z
  152. $keyWithUserPrefix = $redis->keys('user*');
    . M+ X; n# h7 X: e% s1 b- \
  153. % U6 T  Y: \9 w5 ?
  154. dbSize0 M7 O' w9 |# U/ r! q8 \6 M
  155. 查看现在数据库有多少key
    - x% U  ~' h1 w7 M) D! h
  156. $count = $redis->dbSize();
    . }, v, S& ?2 q& |0 _5 m
  157. , |$ C5 Y) m5 q
  158. auth
    * [+ u9 o/ f& C
  159. 密码认证
    # n9 X5 E$ s; U& L( {
  160. $redis->auth('foobared');% Z* ~9 k8 `8 l& l1 H' E

  161. * U. ^: }: {' l: Y! f7 @
  162. bgrewriteaof* f, b6 l% c% V" T; f$ d
  163. 使用aof来进行数据库持久化/ t! ?$ r( V% N6 P. @
  164. $redis->bgrewriteaof();
    % X* o% C/ D# B4 J/ ~: L

  165. # A# T/ {; J5 h9 {9 C
  166. slaveof8 ]$ e6 z6 p8 U2 t# X
  167. 选择从服务器
    $ T. o4 w& X+ s( E3 `4 A7 O* E# {
  168. $redis->slaveof('10.0.1.7', 6379);4 v( Y- e. S4 N) ~7 G

  169. 7 C+ _# s  U& P) q7 [9 I
  170. save
    ! |- }0 L1 n, f0 k. j
  171. 将数据同步保存到磁盘
    9 S; ?2 p% W1 Q- G" g7 X9 C" `9 V
  172. 5 ]5 H; ?8 J; N1 `  N0 y
  173. bgsave
      O! H9 f5 G6 g9 n* n, f% Q
  174. 将数据异步保存到磁盘
    ( y, p# ]9 I/ I% a) c
  175. 5 S6 S+ I( k2 _1 l% z. y
  176. lastSave( x  S5 P# }5 @3 U
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    1 Z' [. J! [( u1 f3 v

  178. 9 L7 v3 m5 A' k
  179. info
    8 |; O1 a- M- c; b  F& E0 ]
  180. 返回redis的版本信息等详情. \  U. _6 \5 N8 U2 t" K) m
  181. & D4 o) _9 Y6 S9 I) e6 b* F9 ]
  182. Redis::__construct构造函数
    ( k" S% K: Z9 L! }' ^
  183. $redis = new Redis();
    ' P  x! q& x5 i+ o6 c6 C2 _3 A/ u

  184. 2 f# S4 j; k* m
  185. connect, open 链接redis服务+ s8 G8 i7 D% b& W0 m6 Z
  186. 参数  T: j! D3 k4 |+ G, T
  187. host: string,服务地址
    0 t7 z( m8 j% N! o8 i  l
  188. port: int,端口号7 k7 F  `  F3 Z* o1 J: a
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    , T, M9 v/ Q0 }: I- Y0 U
  190. 注: 在redis.conf中也有时间,默认为300  G' P6 N$ C7 |/ Q
  191. , T9 F9 z% N' w6 m
  192. pconnect, popen 不会主动关闭的链接* D$ m% G* a. Z# ]
  193. 参考上面2 Q0 L9 x: G1 r# r
  194. 6 b" D. b- x  P" k
  195. setOption 设置redis模式" a/ [! G* @( A* a0 e! ]  [2 X
  196. 0 z& K1 s. b3 u7 n  E! Y5 U8 ~
  197. getOption 查看redis设置的模式0 l+ w' M% U1 E9 e% e
  198. # s! t5 p- s, b: b2 D
  199. ping 查看连接状态
    4 r8 v9 |; z0 r, S6 C

  200. , L: R8 c0 Z! t- p; V& ^
  201. get 得到某个key的值(string值)
    4 f3 f0 G( e' Z( @
  202. 如果该key不存在,return false$ v5 J. `8 D0 Z) Z6 g
  203. 7 e: @6 M: B& J# U) `
  204. set 写入key 和 value(string值)+ U: V: ?' J& O1 h' B
  205. 如果写入成功,return ture
    " U: q+ A4 x* x+ z

  206. . L: x( j3 |9 z
  207. setex 带生存时间的写入值
    3 m% A8 \/ }6 C) m
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.) Y3 Y3 q" g" _; U8 _

  209. 2 Y1 N7 l7 M2 {5 q% M, k8 a2 l0 o
  210. setnx 判断是否重复的,写入值
    7 z" N% ]6 N3 `8 _! D3 F
  211. $redis->setnx('key', 'value');
    9 r3 Z" n( P$ W- ^
  212. $redis->setnx('key', 'value');( x- D% h. G$ s* W. _
  213. 2 G$ Y1 v3 Z8 e8 Z- e/ Y3 u& g- x
  214. delete  删除指定key的值
    : G# x+ J" f$ K
  215. 返回已经删除key的个数(长整数)
    ; _. E0 w) k% s* o* H/ b/ U; e+ _, X
  216. $redis->delete('key1', 'key2');* V, H6 t0 m' U" m
  217. $redis->delete(array('key3', 'key4', 'key5'));
    : x% S9 H- `; ]

  218.   V+ X8 W) V4 Y! R& s8 m
  219. ttl! Z4 C/ O$ M5 `$ z- a. J3 C$ K
  220. 得到一个key的生存时间
    ( w8 Z* S9 x+ V0 J# w
  221. 0 X5 X: R) \# ~! m- u
  222. persist
      m# H6 {) t/ f0 @7 s
  223. 移除生存时间到期的key
    , c- ]! F- n  _- l+ V/ D% y
  224. 如果key到期 true 如果不到期 false* Y7 h/ x- C6 p9 z" E# P4 ]6 _
  225. $ q8 i8 R, k' W; l7 @% k
  226. mset (redis版本1.1以上才可以用)
    : ?7 b! F6 E. M1 H0 O* X' x# H
  227. 同时给多个key赋值* k' L* l, g) @5 W' w9 J9 w
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));& Y# M  y6 f# ~; ^

  229. / J6 b% h7 z& `9 H
  230. ' N" w4 k, K4 i

  231. 2 y' B6 T  y& R1 V2 [7 |. y
  232. multi, exec, discard5 j! j7 I6 N. K: n6 C" u3 _# ?, [, `
  233. 进入或者退出事务模式
    % Q! j* d5 g# I  E
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI" \, J2 `% [% H. }' N
  235. Redis::MULTI:将多个操作当成一个事务执行  M9 k7 v0 ~- W. o1 A
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    # o. g; D3 T/ v7 a$ S
  237. discard:删除一个事务# }2 H. V# l( l6 ?6 v
  238. 返回值* y' G) Q; m/ H+ Y8 Y3 ?# j5 L* ]
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    * f: M) j: S% u- g: h

  240. . n5 ?3 W2 p- e
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    + g9 [3 E$ S4 ]/ y
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    # F1 ^2 Z, u5 F
  243. unwatch  取消被这个程序监测的所有key! P) \0 P. w' N2 l( `1 d
  244. 参数,一对key的列表
    1 V% \  p8 [" U3 [
  245. $redis->watch('x');
    2 c/ z7 u+ }+ o5 i3 S/ G/ r* C
  246. - G: S$ j7 k1 e
  247. $ret = $redis->multi() ->incr('x') ->exec();  S2 i0 F9 z0 Y4 b7 j* b* |& u
  248. 2 z0 ^( M' m' s6 {' i
  249. + H$ l8 Q+ ~- G" E5 N+ s4 w
  250. subscribe *
    1 e% Q. s" Q8 U. D; h! l
  251. 方法回调。注意,该方法可能在未来里发生改变: D4 z! I) `5 R" g$ E0 n0 r
  252. : s, p: y. {) u- L
  253. publish *( g  k- z- g( [# y
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变2 c0 i& _; F8 q) G
  255. 5 r( E6 D; k4 P: r
  256. exists# q: t7 m# t0 u5 A8 S6 ^
  257. 判断key是否存在。存在 true 不在 false
    " m' g, Y. ]! b6 m/ F6 U- P

  258. # W8 u$ }6 w1 f0 {8 N- Q9 z
  259. incr, incrBy
    " f! b7 \6 X! L- h  e# R
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值4 }, u+ Q# c( y9 E
  261. $redis->incr('key1');
    6 a. q; K0 H. A$ F! k; q
  262. $redis->incrBy('key1', 10);
    0 w7 Y. V* o, e+ P  `, r; B
  263. $ D# d/ f2 c4 m+ Q! ]% {9 D' Q
  264. decr, decrBy6 X- ^* p$ l2 a4 t5 w+ w5 i
  265. 做减法,使用方法同incr
    - a9 N' U% K7 Z3 B
  266. / K: F; o! |' r# ]) `, @, V: k1 L
  267. getMultiple
    9 O2 b7 {( f$ |& ?' u3 {8 {
  268. 传参( `0 p: u( j$ Y! Z3 A
  269. 由key组成的数组
    . J2 Z  L# \( X0 h* v7 \; Y: i
  270. 返回参数
    0 V, s2 _5 i* u+ V' F/ Z
  271. 如果key存在返回value,不存在返回false
    - T, f/ Y4 u( o' O( M1 J
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));2 x. S  s8 {+ }
  273. $redis->lRem('key1', 'A', 2);
    / x: ?& Z5 S  }% M; R  j9 s3 w2 e& P1 o1 t
  274. $redis->lRange('key1', 0, -1);" l) d  h% h/ Q1 d& j  N
  275. - E: i1 ]8 _4 T4 s$ Z
  276. list相关操作
    : A" w5 U8 `* j
  277. lPush' c5 k' U9 V% r" J3 y8 Z0 E
  278. $redis->lPush(key, value);
    7 g6 u7 n3 @( h9 S) G
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    ! m6 Q5 ^. j7 `6 @# A, J9 l

  280. : |3 }. ?! F8 w( O
  281. rPush
    8 ]4 d7 a8 n; t
  282. $redis->rPush(key, value);% p/ J5 u7 f+ }+ i8 B
  283. 在名称为key的list右边(尾)添加一个值为value的 元素8 y9 ^4 _2 [/ D/ y& o; b5 n$ g
  284. - B& b- A' D4 {8 m/ l
  285. lPushx/rPushx
    % V* ]; _- u' c8 Y/ ~; a5 i
  286. $redis->lPushx(key, value);
    0 F: V* C1 W: E2 ^* h1 s0 f
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加- B3 f# a( k. s

  288. 1 O8 J* R1 P1 t: p- X/ k2 E
  289. lPop/rPop
    ) k7 F) V4 Z& U7 h1 g5 D6 ~
  290. $redis->lPop('key');! C' Y) G% p9 o5 ~  ~* G* l
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素% x/ O9 A0 j  }
  292. " z: t$ ?! C2 D3 N8 l
  293. blPop/brPop  o4 p( {2 l6 J) O5 v, B/ n# E- [" m
  294. $redis->blPop('key1', 'key2', 10);
    0 k; w! I9 f( ]+ q0 `9 a: [' V' b
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    $ O4 a& B3 O3 u7 J

  296. ) T: F* h; A" L8 ]) S
  297. lSize
    : D( _5 y: ~6 S  K# ^4 z% L( }
  298. $redis->lSize('key');
    + M) C9 q3 K- M9 Q( j
  299. 返回名称为key的list有多少个元素
    , Q9 K2 [% }" {7 {8 R, V
  300. $ m  U* `3 s1 k: r
  301. lIndex, lGet" O; X+ ]$ C2 J% w( p. ^3 i" I
  302. $redis->lGet('key', 0);
    & b) V: @. J9 E
  303. 返回名称为key的list中index位置的元素+ R9 \9 \8 p: B# L! h1 l' x" k- d

  304. * J( d+ Z3 U; }8 `' O8 y
  305. lSet
    5 n5 l! ?9 J4 Z
  306. $redis->lSet('key', 0, 'X');2 y. a/ a! f* |; i. s
  307. 给名称为key的list中index位置的元素赋值为value
    9 Q% T8 a; v3 H8 T

  308. & F$ |9 W0 M1 X1 O
  309. lRange, lGetRange
    . R" b' Z. p4 N3 o: |# b
  310. $redis->lRange('key1', 0, -1);
      t, m" Z6 q) M' S
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    ' r6 K( W& O, w

  312. 8 R, A6 b6 ~1 m
  313. lTrim, listTrim' Z: d# W" H7 Z/ R5 C, P7 q( g3 b
  314. $redis->lTrim('key', start, end);
    - x6 @5 _) }& S7 a5 U+ I
  315. 截取名称为key的list,保留start至end之间的元素
    + q+ R7 M2 v8 Y. w+ Q( l- ]* Y+ ^+ g8 e9 ?
  316. : q* z$ g$ A! x- p5 n
  317. lRem, lRemove* C: q$ x# a$ J
  318. $redis->lRem('key', 'A', 2);- A! o2 D1 h* V- p$ \3 s
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    1 z/ j& Y8 M' `( l$ y

  320. 5 x, f, W/ t6 |% L* A5 M8 l
  321. lInsert
    6 s$ J/ K! Q6 t6 b
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    $ b& ?- Y  m5 z- C3 j- D+ o
  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');
    2 P0 ~; Q' g5 `; F
  324. $redis->lRange('key1', 0, -1);
    6 z9 c/ F6 q. _( u
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');; W& e8 w( ?. A  n0 l0 i
  326. $redis->lRange('key1', 0, -1);
    ! K6 a; K) z# D# e& r2 _; s
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    . f/ }6 u: P& B

  328. ; U3 {/ K0 @( y4 M5 ~# t: n8 D
  329. rpoplpush& S) m3 s. M0 G* h& {
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    ( y) @4 C; z8 S8 K6 y; k
  331. $redis->delete('x', 'y');
    4 i9 A9 \5 G+ 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'));
    & F% j, v0 c1 K& D& |
  333. var_dump($redis->lRange('x', 0, -1));$ {7 R, K! ^& c2 i
  334. var_dump($redis->lRange('y', 0, -1));
    5 @) N9 p+ N+ w) Z: t9 {$ _
  335. / s3 W; f/ X( U  U, @* \/ P
  336. string(3) "abc" ) Q; O4 `# R4 }% N# N
  337. array(1) { [0]=> string(3) "def" }   q. w) v: x3 ?+ \. D
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    9 h3 l1 B: g; O: |% i

  339. 1 r9 T6 n  p7 Y; |6 d! @
  340. SET操作相关+ P" z+ p2 P, v: w3 E. L: F
  341. sAdd
    2 t  s& g' r* k+ P/ u
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false2 ^! X) j3 Q) M( Y  |' q
  343. $redis->sAdd(key , value);
    6 @0 d8 e7 |7 i3 K7 h

  344. + ~8 w' D) d# a# S( X0 U8 W
  345. sRem, sRemove
    3 g% J) a# Z: `9 A! Q
  346. 删除名称为key的set中的元素value
    / c- u( ]" i" d- z2 g( `
  347. $redis->sAdd('key1' , 'set1');5 e1 c; ~6 Y, ?9 t0 s* q- i
  348. $redis->sAdd('key1' , 'set2');
    $ y: _" `1 I0 B) j; Z, T
  349. $redis->sAdd('key1' , 'set3');
    0 D9 H' x% l. C( _6 M
  350. $redis->sRem('key1', 'set2');, q8 ^! Q: n4 u# Q  Q- j% q

  351. , R' k0 H- H8 Y/ A3 p
  352. sMove- M% o: b) a, Y6 I
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    . x3 e% S5 ?8 A  ?7 f! K
  354. $redis->sMove(seckey, dstkey, value);
    # T' m. B0 B# |# d# l, ]
  355. $ y7 t7 O, [! d" a
  356. sIsMember, sContains
    / I4 A; ?. v- d+ V4 p$ n
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    6 |, l# J: D/ |/ {# k
  358. $redis->sIsMember(key, value);6 c) U; j# ?$ I. b; o6 n

  359. 8 s4 b5 \. b: L. |% F5 q5 X6 c6 W/ s
  360. sCard, sSize
    # C$ n3 x) x' r6 O, a# Y8 R4 k5 o- q
  361. 返回名称为key的set的元素个数& Y8 e3 ~8 f& r) g+ o4 h
  362. # P% j, d2 Y3 K' a4 @
  363. sPop6 d# a* E  p7 n; O. p$ x# G# B
  364. 随机返回并删除名称为key的set中一个元素1 v, |: m+ w, H* r) K9 X. H
  365. & T$ d. ^" O0 M4 W2 D
  366. sRandMember0 Q) H. o- k: q
  367. 随机返回名称为key的set中一个元素,不删除
    , \, |( d2 h6 g* f6 z
  368. 3 V' }: a# O. T/ W
  369. sInter- Z, D! |; R9 _( {- j, m
  370. 求交集
    5 M- u1 v( ~! S. Q  u3 t* s4 s( k

  371. / k; P0 M/ n- U/ j* G9 l, U
  372. sInterStore# n0 l$ J: A6 J
  373. 求交集并将交集保存到output的集合
    : G8 D2 \: T7 z' q. u; U
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    " {  U. L% F3 o
  375. 9 `* x7 k* u* M3 Z% o
  376. sUnion
    & a6 l0 @) a( ]8 J
  377. 求并集6 R: f1 _8 Q, [- \
  378. $redis->sUnion('s0', 's1', 's2');$ o+ U! }! J% s3 ]) Q: X
  379. s0,s1,s2 同时求并集: s, U* p- Q  w5 `
  380. ) \5 U/ @, ~) `/ a1 r" x2 O
  381. sUnionStore
    0 ^8 {5 O- F/ c0 R9 b8 I
  382. 求并集并将并集保存到output的集合( @  ]. v( F2 o, N) @
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    ; k; Z% q5 w; ~9 R1 \5 K
  384. / J# z7 W, D# l
  385. sDiff/ z) r! F0 s4 ~- D  z" \9 n' b+ B
  386. 求差集. {* R) V4 e0 x( X7 f- v+ |6 E

  387. 0 p$ s* P; e) U7 ~8 w8 w: A' M
  388. sDiffStore
    ' T4 Y* a( K  w9 ]9 i
  389. 求差集并将差集保存到output的集合
    $ O. [6 L, r3 O6 \5 r6 C

  390. % ~. V+ g0 @2 j8 }  V0 e' r
  391. sMembers, sGetMembers+ ]* G) V( Q2 w: e5 L
  392. 返回名称为key的set的所有元素# H, s" c: l9 f5 S: W! F

  393. - g) T( n* d/ h! r; A; j
  394. sort
    ; b# B! J) [6 s
  395. 排序,分页等" g9 a, T8 T: z  n, X
  396. 参数, r: m8 `7 b( I5 V- I
  397. 'by' => 'some_pattern_*',
    / w3 c. k- B5 G3 B
  398. 'limit' => array(0, 1),
    ( B. D# f6 c% l3 O: l2 j
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    . |; z+ e% Q( n. V- I
  400. 'sort' => 'asc' or 'desc',
    % t) h9 i, J5 _9 d( x1 ]
  401. 'alpha' => TRUE,: A/ O4 p) O; S+ e
  402. 'store' => 'external-key'
    3 u  ]4 g  Z' i' N  y- I0 b: S
  403. 例子
    ; Z6 I# c! e# Z: ^$ T1 V) ~1 g
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    " x, F  L# t$ }" o! F
  405. var_dump($redis->sort('s')); // 1,2,3,4,5! Q# ?; E! V# n) P) v
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    6 O' \9 [* w7 |' S% I: y$ E
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    : _; T/ B* ^1 M2 n* \

  408. 5 N: d! P1 r1 `% H& x9 u! v) B) E
  409. string命令
    9 }3 E0 g% j% e% e$ p& m. [
  410. getSet) M7 @! _6 Q+ j+ x1 b* \& o
  411. 返回原来key中的值,并将value写入key
    - }" k- ?: j. m: _" Z+ _
  412. $redis->set('x', '42');
      G4 E. _. V9 e# y! T2 H
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    7 V* \" _) v* ?8 d& F; W% x
  414. $newValue = $redis->get('x')' // return 'lol'
    2 Z* s$ `+ ]5 F/ T( p$ G: }' D- Q( O' y

  415. + R" J0 p! j- o/ _- U$ r( f
  416. append
    & a# i& O8 b9 w% C. \0 M
  417. string,名称为key的string的值在后面加上value
    # ]. ], f. L8 a: O6 D0 ]
  418. $redis->set('key', 'value1');+ F% q4 c* K5 n. d, A, X
  419. $redis->append('key', 'value2');
    . b  _. y. R) N& ?: w5 j
  420. $redis->get('key');
    ) X6 E0 N# R8 Y0 \, S3 a8 q  D
  421. 6 H0 ~( J# L# V# G/ ~
  422. getRange (方法不存在)
    9 y* H+ K4 c. e6 s
  423. 返回名称为key的string中start至end之间的字符
    3 v! g* s* V( g# c2 D
  424. $redis->set('key', 'string value');
    3 m8 `2 x! w/ V: B. b
  425. $redis->getRange('key', 0, 5);
    * C( Y6 K* U7 U7 b
  426. $redis->getRange('key', -5, -1);; b) p' U" ^0 n& f: N. W
  427. . L# W( G$ \8 o7 S& p; A% Y
  428. setRange (方法不存在)$ o" `1 F6 D: p% S! B
  429. 改变key的string中start至end之间的字符为value& g% |# `+ t4 g: D/ {
  430. $redis->set('key', 'Hello world');
    ' ^3 E. I9 ]3 A1 D" K* j& o
  431. $redis->setRange('key', 6, "redis");
    ) [: Y$ s/ m) p/ o
  432. $redis->get('key');! m  [8 V/ Y/ ^/ s& E! y) M7 `2 w

  433. 9 X6 V5 Q! m0 K$ x
  434. strlen
    % [/ k( A1 M  z" N/ t8 h
  435. 得到key的string的长度" m+ {- C, F9 B" K3 J& w, o5 u: Y  T
  436. $redis->strlen('key');& _. u" J) u, ?: p+ @  i

  437. # a3 Z' P2 a8 h! g) m2 ~; [( t4 T' ]0 T
  438. getBit/setBit3 h2 R5 y) A1 y
  439. 返回2进制信息
    ) [- \' L( d1 r6 N" i9 b! a6 j

  440. 2 V; J  g( g9 _; Y- [0 z, H
  441. zset(sorted set)操作相关# w8 y7 e# G) z8 z( P# \3 ~( Q5 T
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。7 t5 y( g3 F- P" N) e) M/ X
  443. $redis->zAdd('key', 1, 'val1');
    ; t9 n, V0 F* m* Y
  444. $redis->zAdd('key', 0, 'val0');- i8 t% a( R. f9 d
  445. $redis->zAdd('key', 5, 'val5');
    " r, w* q6 I) e2 P  H+ D
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)/ ~% |! U: w! v( c

  447. 5 y( N5 w$ H' c  f
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    + ~* t8 i/ n# l/ ^1 w! ~& J
  449. $redis->zAdd('key1', 0, 'val0');- c* z6 u( y' _9 u' u
  450. $redis->zAdd('key1', 2, 'val2');
      O& R7 Y$ c( `- P
  451. $redis->zAdd('key1', 10, 'val10');8 ^: t$ W9 l6 u3 L* P
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    # M9 U. z& @' M1 I

  453. , J1 Y& T# _  s% m" J8 _5 ?
  454. zDelete, zRem' J1 C6 g/ g/ A$ T& N6 l
  455. zRem(key, member) :删除名称为key的zset中的元素member+ u+ F" \" j( W$ T
  456. $redis->zAdd('key', 0, 'val0');; A4 u/ }3 h3 C9 m0 [; I8 _/ x, N# C
  457. $redis->zAdd('key', 2, 'val2');
    - c8 E' v  n6 d# w1 P( \
  458. $redis->zAdd('key', 10, 'val10');
      R5 b- q7 N6 Q+ D& \+ J6 p
  459. $redis->zDelete('key', 'val2');7 D: ?4 r$ W& ~) w; B
  460. $redis->zRange('key', 0, -1); 7 g* J" U7 D4 T2 C8 t, ~0 B
  461. ) Y" D8 m" E) }
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    5 o$ A, {4 b' s- j+ U
  463. $redis->zAdd('key', 0, 'val0');
    7 V) ^# s* U6 g8 X" `  k/ n$ b
  464. $redis->zAdd('key', 2, 'val2');
    6 b' o9 T0 c( U8 |! R  f
  465. $redis->zAdd('key', 10, 'val10');
    8 f. Z5 m( e2 R  S, y* M
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);) t% ], Y: f7 A4 _) X( R- j) C# @

  467. 1 i( n' Q# t& e' N) C. O
  468. zRangeByScore, zRevRangeByScore
    : s5 G' Z; }5 h0 a( K
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));! u6 J8 v& z2 V( j: `# S7 c& q
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    % f/ I0 _4 R. i& o

  471. 0 Z, m+ M% K0 ]" ]  t
  472. zCount
    ' t/ r& z3 P; f8 l0 S
  473. $redis->zCount(key, star, end);6 p6 g( A2 P% ~9 I+ n2 n0 g# i( Q+ Z
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    * S+ w0 h; T' ^6 g! {( t
  475. % c+ H, a* g9 D
  476. zRemRangeByScore, zDeleteRangeByScore2 k; ?/ \3 b/ N
  477. $redis->zRemRangeByScore('key', star, end);8 [! d$ \; d- U
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    , ^' z3 P1 U; m3 A) g2 S* O5 _: v

  479. 5 w9 H3 E6 W+ n6 Q- b. r( p
  480. zSize, zCard
    . `: Y6 ?5 L# B4 m
  481. 返回名称为key的zset的所有元素的个数
    $ m6 ^8 Z3 X% {- `$ R. I5 u) E

  482. * P& [' d+ J& s( {# u3 v7 P; q
  483. zScore
    . R  E, i1 }# k! q4 f1 y2 U! U
  484. $redis->zScore(key, val2);
    ) b$ b) t) W5 x$ T* Y+ ?
  485. 返回名称为key的zset中元素val2的score3 r8 b) G* p- \1 B3 j  q$ h
  486. * }& O6 L. S2 P' p7 w4 ^5 t  j
  487. zRank, zRevRank5 Q2 r) o! ^- ]- ]! t$ s9 }5 y
  488. $redis->zRevRank(key, val);
    1 V/ g" P  {$ Y/ _8 e
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    5 P, H, h9 w" O" B

  490. & Y7 {. J4 L: @$ k( G
  491. zIncrBy: n8 y3 a6 Q) k5 c2 S& [
  492. $redis->zIncrBy('key', increment, 'member');7 m3 k- k% @& }- r% S1 g, \$ V, Z
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    , ^6 H" @4 r& s, l# G  a; B! U

  494. $ t, a0 U8 `1 k
  495. zUnion/zInter
    ! \9 k  r: {$ \5 T! D% c
  496. 参数* W" ?: d8 t& ?8 A  n( N! ^
  497. keyOutput) }3 u; W. F: m. s9 Z; a; F7 \/ ]
  498. arrayZSetKeys
    + ?: M0 A$ L9 v: x
  499. arrayWeights* m. Y9 {) e+ Z  v2 M
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.$ b6 i/ @2 d0 d( N" ^
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    # I- |0 i- W7 l: s2 L, s( p
复制代码
+ T( {0 t0 A& t6 {- V8 A

/ `5 D# I: l. s+ Y# @6 S& j& h1 x. I# C* I9 i, W& h
$ J7 \0 Q  i* q, e( b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 8 h- I) J: E0 S9 l8 x2 p8 y) t# f
  2. //连接redis服务器
      d7 z# }, T& u
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 20:18 , Processed in 0.061794 second(s), 18 queries .

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