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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    ) U5 C7 @8 H; Q) Q' ?/ G3 p
  2. $redis = new Redis();  ( D% }5 {) W0 b; ?  z2 |
  3. $redis->connect('127.0.0.1', 6379);//serverip port' b0 l  [: D. Y4 S  y3 c
  4. $redis->auth('mypassword');//my redis password
    ! O3 d; c) B7 }5 f# n& y1 ~
  5. $redis ->set( "test" , "Hello World");  8 P; l' O2 r2 u, [
  6. echo $redis ->get( "test");) J& @, o4 g- l/ {6 D1 h
复制代码
php操作redis函数封装
  1. /**2 }4 ^' h3 N, s7 b4 o3 |. l0 f
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数1 H0 ]; {& n% a: B$ {$ I
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi8 g& o  ?: u1 I- t
  4. */8 V0 ^8 N" _+ Q; E# L( L1 H
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    5 |) L5 F4 r# X: M
  6.     if(!$key||!$value) return false;
    + R% c7 u  F& Q6 X$ Q/ I/ f
  7.     $host = $host?$host:getenv('REDIS_HOST');
      L2 N7 W9 n  V
  8.     $port = $port?$port:getenv('REDIS_PORT');
    ! k7 N5 n, m/ O: b7 b3 A5 |# U' M
  9.     $redis = new Redis();/ z' l( D* R5 Y! G$ @& S
  10.     $redis->connect($host, $port);
    4 Z& o" v' k# D) g/ U( w3 T
  11.     $value = is_array($value)?json_encode($value):$value;
    * P" Y. H& t$ T2 V+ H7 N  C+ y
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);" j* y! ?. k  q$ E0 t' \: P) Q
  13. }7 V# S0 u! v, \$ b# h  p
  14. /**
      M6 e( ^. l3 o! R
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    % }3 f8 {0 t9 o8 R7 x& j, r
  16. *// [9 `+ K, z8 H* ]# W3 @
  17. function RedisGet($key,$host='',$port=''){5 C# m, n& `  y( U  P! }0 h  U
  18.     $redis = new Redis();
    ; n0 m! L2 Y2 }/ {
  19.     $host = $host?$host:getenv('REDIS_HOST');8 {* S, M: |. n  d: K1 Y+ p
  20.     $port = $port?$port:getenv('REDIS_PORT');, s7 D" Q! C; z% x8 q
  21.     $redis->connect($host, $port);
    ( b( j1 G7 ^' s, U7 D1 n( g6 P- z+ j
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);! a1 p) P1 z2 ^/ Z9 E5 i
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);5 e$ m9 }) s; s- M  a9 C, K
  24. }
    0 g& G# V" i7 S( q
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
5 o$ ]: R* T7 u& N, B7 o* _# h0 }( y
  1. setex 带生存时间的写入值
    - p& x, ~- s5 X) `- x* F
  2. $redis->setex('key', 3600, 'value');
    1 S& f2 J( a7 S" E# v6 z
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1) O  r6 M* P* ~  B, Y$ q! ^, h
  4. $redis->setnx('key', 'value');
    1 ]$ L1 t" b- O$ Z% ~1 Q
  5. 返回已经删除key
    1 q8 A2 A% N$ ^9 s2 J; u, Q
  6. $redis->delete('key1'); 成功返回1失败返回00 ~2 @/ F) X, U/ f3 u8 Q& q( W* a4 e, J
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回05 g5 q5 O! @/ m$ W9 s1 t
  8. 查询生存时间
    6 c2 c, ~1 n) V  f
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    - s1 Z+ s: L( r& s
  10. 同时给多个key赋值,同时设置key0和key1
    & s& X" o. f7 F' Q' p
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    + c3 h  _. `' ]% U0 B: J+ i* R  q
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值! n: Y5 t% F* x' @0 y4 m' {
  13. $redis->incr('key1');+ D" d# Q. r' E( F
  14. $redis->incrBy('key1', 10);) Z- X7 A' I0 c% A2 e  j; h
  15. 减法跟加法一样
    $ Q: `0 D3 K& g0 j$ P
  16. $redis->decr("key1"); 减少1* F0 y) [6 _. X2 b, B7 R- F
  17. $redis->decrBy("key1",5) 减少5% j/ d9 `( e' j0 y% w" m) [
  18. ) x3 |5 f& K( W. d' j
  19. list相关操作,连表操作* ~' n4 `/ x! r7 R' U! p
  20. lPush
    9 V9 Y; f; v; o
  21. $redis->lPush("list", "888");: l( f- u5 U& b6 D
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    + C2 u; x0 W9 k6 y& l! y& T
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    . B) ?: B1 E, U" j2 v# u( m5 A0 x
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素, j" f9 G& G$ e& f0 J5 e
  25. lPushx/rPushx& V! h' ?3 D- L; [2 t
  26. $redis->lPushx(key, value);2 y7 E+ ]$ m8 h! H0 L1 @; A# J( z
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加, b% C6 S: J$ R  Z: w. T

  28. ) Y- n0 b+ N6 A4 c
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key! _: X3 d2 U, \: B. B/ k" [
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key& S( h9 c; Z' Z3 [
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    & Z, ], J, P3 @) C" U/ O$ p
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    4 V+ u; M$ b; J6 c, j
  33. sadd s1 zhangsan4 d. F% f6 F% j' x! [. r: m4 D7 T
  34. sadd s1 lisi
    3 N: i! T3 h6 f5 V" F$ O% b
  35. sadd s1 wangwu6 Q. A' U4 R# l0 y/ ?
  36. sadd t1 yangxingyi! z/ ?4 y6 P! [4 u- X, M5 a
  37. sadd t1 lilei
    3 J9 \' ]# C# _
  38. sadd t1 zhangsan
    2 ^0 f/ W1 [' R# S+ {
  39. smembers s1 s1的所有集合内容
    3 L( Q0 x2 C8 O6 R5 B0 S1 s! x9 D
  40. sdiff s1 t1 s1有的,t1没有的,差集
    * P5 n5 C4 N6 S2 y. `6 f' J* n
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ' o, `- A$ L1 X3 X3 {0 @3 f
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的4 S7 ]) J& h+ g; X! O% Q# k
  43. spop抽奖场景,返回集合里面随机的数7 ^$ T: N/ v% w5 |5 G) d2 p
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    - q: u4 `3 A$ J: o" b
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    3 X. M: C8 |# |( Y5 I0 R
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    % w4 {# A' _" b, w/ l) P8 M1 j
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    * w3 g5 {4 [8 Q8 B8 l0 a% z
  48. $i = $redis->srandmember('s1');echo $i;; ]8 Z/ l; }  W4 M
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    % i( v( g) I; ~
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false/ U6 I  J) o+ w
  51. : p. q0 A9 ^6 d: g7 Z
  52. zadd key 2 value 有序集合" m+ O" k2 A; p* D
  53. zadd y1 1 zhangsan;
    ' \/ g& z- y# _# R3 y) @
  54. zadd y1 3 lisi;  b  b9 A$ `& J$ ^
  55. zadd y1 2 wangwu;( Z+ Y7 V7 d4 y% d6 [8 C
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    / v0 l! K' Y2 @5 G+ H
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    ) D. F# }) e2 a& ^& X0 w
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键# f6 K- E( d$ g2 D# z
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    # N( m7 A- |1 O/ o. r( C$ _
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    8 E+ D: N3 r  @5 w8 k( s
  61. 无序就scard,有序就zcard,有z没有s
    4 [; S! Y# B+ B, n& u8 V5 w- B, v
  62. sInterStore! |# P% f" w7 s6 d2 S- a  U( S# a
  63. 求交集并将交集保存到output的集合2 V9 x' r- Y( G
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
      ~, O* H' f4 c! {* D: {

  65. 3 s( F+ z: V' K7 s( f$ V
  66. Hash操作
      m( b$ E+ B1 R8 G! q) ^5 }
  67. hSet
    ( q, M. c: W1 P; P1 {" n6 }
  68. $redis->hSet('h', 'key1', 'hello');
    . Q& v& G" T1 Q. d% O, W+ L
  69. 向名称为h的hash中添加元素key1—>hello
    2 t- U& p3 h$ g& i( O4 U
  70. - \& N7 z# Q4 P  Q
  71. hGet! Q6 N3 R7 D/ g  O& \; R9 V4 d. `
  72. $redis->hGet('h', 'key1');  ]6 ^4 w4 N1 \
  73. 返回名称为h的hash中key1对应的value(hello)( L6 M; T. }9 \% T6 n
  74. * k* K2 _& q* ~, m
  75. hLen2 s7 N. Z+ y# R
  76. $redis->hLen('h');
    4 k$ Y# M+ z4 U: P0 ]$ K$ T; ]
  77. 返回名称为h的hash中元素个数' E$ y" W1 z$ [4 W

  78. 1 v9 J4 m  T7 m) h' v/ j0 l
  79. hDel- ?' u, C( U# w$ {! X! V. e
  80. $redis->hDel('h', 'key1');
    8 o, N, @* @) V5 j( {$ A6 j
  81. 删除名称为h的hash中键为key1的域. G% R* G# f+ c" _3 Z2 x

  82. 5 G% [4 L* @6 L' J3 T( m
  83. hKeys- T1 m' V9 @  K: {  T
  84. $redis->hKeys('h');
    . w  B! `% r$ }6 G
  85. 返回名称为key的hash中所有键
    2 j. K/ A) m  X4 h
  86. 4 B( W5 d3 V: w* S
  87. hVals
    + k' N3 |$ |0 }; f8 m% @
  88. $redis->hVals('h')
    ( e  w2 r" N* x% r. a$ A
  89. 返回名称为h的hash中所有键对应的value
    9 S+ Y' ^# x1 n) K7 y# e* ~
  90. / T4 H, ~* r, f/ \' o3 w
  91. hGetAll
    # `8 H, l( ^( {1 N6 i
  92. $redis->hGetAll('h');/ l7 o( J6 I! l2 e- H/ G
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    5 I- v3 z/ O1 f
  94. 3 f* y2 ~* M' ^; v+ b, k
  95. hExists# D) O4 s8 y* o# f, {
  96. $redis->hExists('h', 'a');. r! I  F. {# c
  97. 名称为h的hash中是否存在键名字为a的域
    " i- V, Y9 _1 n% y" o) V4 Y

  98. , K- W: q( h8 a2 V  e
  99. hIncrBy
    2 ]5 T- F1 K8 F$ Z' l6 b
  100. $redis->hIncrBy('h', 'x', 2);. G- v$ f6 g. B% b
  101. 将名称为h的hash中x的value增加2- D- c/ S1 b* S3 x4 Y
  102. - w  P, e, L" A- t' I. V5 S6 K
  103. hMset$ y. D5 F1 h2 B, T/ w+ R
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));8 d9 E3 }# b0 f
  105. 向名称为key的hash中批量添加元素
    $ |2 d8 u# v$ F2 @3 \
  106. 0 @% v1 z% y9 ~5 k# P
  107. hMGet- ]. `# v0 B2 `$ d6 n0 v3 Y2 U
  108. $redis->hmGet('h', array('field1', 'field2'));: o; g# Q! o) A2 \
  109. 返回名称为h的hash中field1,field2对应的value3 c) H) l0 ^1 a

  110. $ A: U3 {/ y& d* d) o# s& p, ?
  111. redis 操作相关& e( P( o. S0 Z. c7 e5 b& e
  112. flushDB1 n& p  f" h! t* ^3 B! R
  113. 清空当前数据库
      Z& B* w6 ^% H
  114. 9 I& }' b, M8 t2 ^$ r
  115. flushAll
      t, M/ p# B/ S; ^- Q% L
  116. 清空所有数据库8 I  h8 |% e7 S7 Q  M
  117. & x3 y, k1 H- j9 U8 S6 X/ n, M
  118. randomKey! x/ l, W) d" x8 a! c0 U& O
  119. 随机返回key空间的一个key
    ) }4 H, d% ~2 m
  120. $key = $redis->randomKey();
    8 h, T( s) C9 i8 t

  121. , f7 m5 X! H6 d
  122. select
    0 q( k* N5 V! [4 W) S
  123. 选择一个数据库; ]8 t$ p) [3 v
  124. move, Y) q9 X+ g4 B: e6 H
  125. 转移一个key到另外一个数据库
    3 _6 ~, C; Q1 [$ V% n; e* I9 n  H
  126. $redis->select(0); // switch to DB 02 l, T, G! i* m8 m! J$ ^
  127. $redis->set('x', '42'); // write 42 to x
    " J: W$ F9 \0 C% f% K7 N% n
  128. $redis->move('x', 1); // move to DB 1
    2 T9 ]+ s4 |/ O' z
  129. $redis->select(1); // switch to DB 1
    2 Y  k/ Y+ J) j# p$ E. i9 W( J! x
  130. $redis->get('x'); // will return 42, V( Q7 }- Y- ~8 x$ \( c( ~8 U7 [/ ?
  131. ) [' Z4 B8 v" w* {8 A% N
  132. rename, renameKey5 [0 P, L" e0 I6 n+ w
  133. 给key重命名
    , P1 d; J: O$ l& F0 L: v( Z" q1 j
  134. $redis->set('x', '42');
    8 |5 Z2 B% A8 S4 c  W; m3 L
  135. $redis->rename('x', 'y');) f  D$ _% y# j5 b' y3 j
  136. $redis->get('y'); // → 42
    % t1 D1 ~1 h! Z
  137. $redis->get('x'); // → `FALSE`
    # y: T$ B9 \9 b8 d# C
  138. . r4 X- [( x; O/ e, j
  139. renameNx
    + D% ~  L/ g6 H2 a/ T
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    9 e& ^3 B7 @% ?2 T3 N! v7 L

  141. " k% o' \) J; G. R* H
  142. setTimeout, expire9 O8 G( W/ f( r- M4 F  i- ~# ?
  143. 设定一个key的活动时间(s)7 j, H0 s4 d$ R. l
  144. $redis->setTimeout('x', 3);: ~) ~0 h& V4 o0 p) N
  145. + [! o* m2 k: ?+ S; n. v
  146. expireAt$ x/ q$ ^4 M" s: Z) J$ i
  147. key存活到一个unix时间戳时间' u0 @  t* O# ~, [: |2 k
  148. $redis->expireAt('x', time() + 3);2 g# F1 [9 m2 J8 u+ z/ j
  149. 3 j3 C& ~% z; c
  150. keys, getKeys8 `: D0 w! W3 i* h
  151. 返回满足给定pattern的所有key$ o  G/ O( S( s7 l7 C
  152. $keyWithUserPrefix = $redis->keys('user*');
    7 M; n1 ?8 A% N4 w( h, Z, S

  153. # z3 E) p- C3 Q) d
  154. dbSize
    ) j8 q+ B9 Y$ r# p
  155. 查看现在数据库有多少key) l  C3 h2 q2 _, o- B
  156. $count = $redis->dbSize();6 u! B7 m9 G% c7 b# e* x5 v

  157. 3 o  {3 \; j% }" p2 Y
  158. auth9 ^; J9 g/ {. y# U' ^
  159. 密码认证
    6 }0 O* c3 C1 q6 G% {
  160. $redis->auth('foobared');
    . B8 V! V& Q% ]5 T
  161. - c! ]; `& d  y
  162. bgrewriteaof+ I  J1 |) Y8 h, y/ T$ u. o
  163. 使用aof来进行数据库持久化0 I) D, s9 U5 u  \/ |4 \6 L8 M
  164. $redis->bgrewriteaof();" B- w, J: L5 J1 h) p0 F

  165. 1 |5 v* X7 ]/ J" @) \  s2 `
  166. slaveof
    * v( U% |+ k- Z; J' ~
  167. 选择从服务器: z3 }6 ?" |: Z8 _8 U
  168. $redis->slaveof('10.0.1.7', 6379);/ i/ F7 g% o. z  u8 t: @) u

  169. / X; ^* z6 C5 L) q
  170. save5 k' U  e. s" Q8 e
  171. 将数据同步保存到磁盘
    / E6 m* K' v  k5 r7 V& n8 X) O+ u% L

  172. 7 E+ g% D% {* [& k  P
  173. bgsave
    1 H9 d( K1 D2 j0 n2 o' n3 N' O9 j
  174. 将数据异步保存到磁盘
    1 s5 o8 t! W. t3 Z. z* Q
  175. : a: S. _7 A; S/ m" R% D! t
  176. lastSave
    ( n. m. o8 C% L0 q  [+ y
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    8 j" z* z4 u$ I. T9 _
  178. ' P% Z6 a2 j0 v
  179. info
    ' E/ F. F- y; A  Q- u# x3 z, B
  180. 返回redis的版本信息等详情7 L2 H# C1 f+ }" H

  181. ( v. x6 k4 v; U2 }1 i
  182. Redis::__construct构造函数
    7 g1 \1 p/ n3 C. |7 U. _4 y
  183. $redis = new Redis();  Q& R0 x1 w" i7 A4 @/ M
  184. 6 W* R  o# _# O( R( `9 v3 w
  185. connect, open 链接redis服务
    * {2 ]4 v3 _, G* O. D
  186. 参数
      C' w- D7 H  {
  187. host: string,服务地址/ C1 x# x4 G3 ]+ M, H0 G* c7 V+ o
  188. port: int,端口号; T; _4 h! j. \5 o% W9 g% y8 e1 l: X
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    8 V' q9 g$ Z( B4 |3 D! K& u
  190. 注: 在redis.conf中也有时间,默认为300
    2 y* p) w1 R8 ^
  191. 5 [+ j# O4 F/ P( d+ Z
  192. pconnect, popen 不会主动关闭的链接+ `* {* z  m; c1 s
  193. 参考上面9 k' r' S: t$ l8 b0 o% C
  194. $ @; `2 H) F8 m0 m( f
  195. setOption 设置redis模式' O' R  f7 l3 `7 J* R6 h

  196. : }8 Q. U$ W# B0 t, G* O) H# ]8 s
  197. getOption 查看redis设置的模式
    2 s  w8 i1 f) j( R6 C  @9 g

  198. + J4 j% g5 y, U5 v1 a* w: ~! l' L
  199. ping 查看连接状态7 E# y* o. _6 T) ?+ U

  200. & W! ^' ]4 [& u! J9 y8 w
  201. get 得到某个key的值(string值); x( {, Q5 }. t* b$ c
  202. 如果该key不存在,return false
    ( q9 e5 k8 p- @
  203. . {  i+ C4 l" s! D% p4 y! p; G
  204. set 写入key 和 value(string值). Q# v& K& h: a( l, a! x
  205. 如果写入成功,return ture
    $ h, f2 ^( r8 [5 k* ^: d# m
  206. - j! y# n% Y7 c5 R" {, j: l* R/ w8 j
  207. setex 带生存时间的写入值
    ; H3 a6 W, n  {( m9 ^  g' E
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    0 Z( Z1 O' w- T6 V9 T
  209. $ s3 D" ?( }" X. t5 f2 ~$ V
  210. setnx 判断是否重复的,写入值
    + b/ W: B* K+ U( G" \; [4 q
  211. $redis->setnx('key', 'value');' w6 U* w9 d1 x+ B2 U1 e! [) H
  212. $redis->setnx('key', 'value');; s3 D: \1 j' U0 S
  213. % f* a# ~# O) o3 M2 V
  214. delete  删除指定key的值
    : ?8 m1 U: o: `+ K. K9 U7 i
  215. 返回已经删除key的个数(长整数)
    ; ~4 t& u8 ?! Y
  216. $redis->delete('key1', 'key2');; V7 D8 p7 d+ J! U% i; @9 V# P: @; M
  217. $redis->delete(array('key3', 'key4', 'key5'));5 V( g  H' Q) {

  218. / {8 l  J# ~6 W* r  u' v
  219. ttl3 X4 E# n% [  h% C1 c* \; B
  220. 得到一个key的生存时间
    5 a! B  s. Q- n0 L. D

  221. 7 |- S  b' |+ ~7 T7 V' n4 O: g
  222. persist# [; ~) ]8 d, `. r7 J0 \
  223. 移除生存时间到期的key
    ! N# U* A9 l* e/ ~
  224. 如果key到期 true 如果不到期 false% D6 {' j" f& e
  225. ! p0 k6 Z9 R! k# ^" l$ R
  226. mset (redis版本1.1以上才可以用)
    ; v% L7 i. J8 S
  227. 同时给多个key赋值
    7 i6 g+ X+ I7 Y( x
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ) a+ _" X8 t1 E/ r
  229. 5 }4 F6 R5 s, `, c0 q7 ^

  230. % g- j* k9 \$ Q+ l3 }* b, Q

  231. , |( ]5 q7 Z" P/ D
  232. multi, exec, discard' e8 `' G9 s5 ]% g; H: h
  233. 进入或者退出事务模式
    ; S6 w9 h2 n* i7 ^% [1 a! r
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI8 P1 A$ [2 R. F8 W- m1 Y
  235. Redis::MULTI:将多个操作当成一个事务执行# A" [: `0 f- O- ~1 u& w/ X
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证; S6 f; o+ c: d7 `1 O) D% ?
  237. discard:删除一个事务
    & Y& H* {0 ?0 k
  238. 返回值: [2 E3 M0 x5 w3 Y! n" H
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    % X- h) |! r# @

  240. : [  r0 Z4 d" R" L
  241. watch, unwatch (代码测试后,不能达到所说的效果)
      O& [/ {& x8 T. Q; o" J, A) H
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)4 A- N: I; d" h# Y0 J! p1 ^+ [
  243. unwatch  取消被这个程序监测的所有key
    ( F1 D* R( q. ^5 T1 {  C
  244. 参数,一对key的列表1 B# N3 D/ w* S' j6 c5 i  S
  245. $redis->watch('x');
    4 d; q* @! }$ m. F8 Z5 s
  246.   O. K, I4 w' O0 y
  247. $ret = $redis->multi() ->incr('x') ->exec();/ z$ z  W! ^% D0 B

  248. 3 o/ ?# B# D& P4 S4 A
  249. # n2 ~# v) C' m$ D" ~6 v9 g
  250. subscribe *: q4 S9 `: A/ W% C
  251. 方法回调。注意,该方法可能在未来里发生改变2 J6 G6 k  x  L+ x# g3 j
  252. + n5 j" U6 @- f) p! w
  253. publish *& Z8 B4 X$ e/ d" i4 R- W
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变: ?3 Z$ u4 k5 a0 H% k4 P
  255. ; x4 {* c6 q# z4 S4 y* d
  256. exists, L. [/ ~* d8 W" o* F5 n3 l; l
  257. 判断key是否存在。存在 true 不在 false. D, n; T# Z: O2 O

  258. 4 J" B% \# S$ z# v
  259. incr, incrBy9 f$ W$ y0 ?* p3 T# r1 s
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值6 O! b2 X( u$ @2 A' g. L6 h
  261. $redis->incr('key1');# ^9 V. y9 I& J$ |1 H
  262. $redis->incrBy('key1', 10);
    ! d7 Z& I9 [0 N) J$ G3 s6 a) }- L) A
  263. 5 l3 t  ]6 \5 z/ _
  264. decr, decrBy% v: [% L2 L3 x3 c7 {
  265. 做减法,使用方法同incr
    2 a4 c: Q& d4 M  `: }2 {, f

  266. 3 n# _( T" g* a1 Y
  267. getMultiple& c% G- A9 `3 e- W4 z7 ]1 h
  268. 传参
      D% g6 i# k) ^( e) X" Q% C
  269. 由key组成的数组$ a- B- }8 J$ b" G
  270. 返回参数6 b& j6 r. h( s4 m* G
  271. 如果key存在返回value,不存在返回false( n+ ~  B0 R0 l1 u# U( j- |
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    8 J) ^, I: v8 T
  273. $redis->lRem('key1', 'A', 2);8 g: n9 ^7 n% ~
  274. $redis->lRange('key1', 0, -1);* ]9 |  Q4 v/ h( E

  275. 7 v& b2 j1 `; w3 z
  276. list相关操作
    2 n6 W4 d/ r' M7 }  M3 }4 N5 a
  277. lPush
    , K; c* d9 n1 R$ Y( W3 J7 e
  278. $redis->lPush(key, value);
    & j( @' W9 R( X) I/ _1 P
  279. 在名称为key的list左边(头)添加一个值为value的 元素5 t7 X& n' m! B. F$ m9 f

  280. * j$ g# S! p# o% ]. u
  281. rPush& Y6 q3 Z9 n5 w# G1 b/ q% ]- T3 F
  282. $redis->rPush(key, value);
    ( s- X$ T; A: }* ^2 |
  283. 在名称为key的list右边(尾)添加一个值为value的 元素% x# b8 t4 |, A& n. L3 G
  284. ( ~7 h5 U* U2 h* b% E! Z1 g& e
  285. lPushx/rPushx* P" |  w( K9 {$ s' E0 g- f1 e& J8 a
  286. $redis->lPushx(key, value);
    * |8 U8 M/ Y7 ~) d; J1 T8 P; i- V
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加4 i. I$ F9 i8 c3 ~7 F* n
  288. ! K; P, U) g8 m. M# e3 G
  289. lPop/rPop/ g' x$ q. F& c- `
  290. $redis->lPop('key');
    9 s) d7 ~7 e* L
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素, ?& y' I8 p/ T8 k2 Z

  292. ' y5 i( O+ b' e9 a
  293. blPop/brPop
    ) ^7 Q  H) Y4 H& t: ~
  294. $redis->blPop('key1', 'key2', 10);
    0 a. o+ y4 G2 O1 _4 T# B. T
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    7 e& P) ?& M' M) A2 {, ]' C

  296. + _3 V, F* R, x* U( n$ {
  297. lSize
    $ Q: G" ^2 u  ?% O* J+ b
  298. $redis->lSize('key');8 Q; n( o) y0 i& z( k# ]
  299. 返回名称为key的list有多少个元素7 a$ v8 m5 e; \
  300. ! P8 Y1 ~, C( I) D
  301. lIndex, lGet
    ; l2 ]1 e3 z9 l3 ^( u
  302. $redis->lGet('key', 0);
    * h/ W& R- q. o( x
  303. 返回名称为key的list中index位置的元素& s- E. a2 h0 `

  304. 0 k. x  A! q8 p' M' v8 Q
  305. lSet
    2 F, \  F9 R: I, d" S" x* o
  306. $redis->lSet('key', 0, 'X');/ f$ _) j% Q) H9 n: b
  307. 给名称为key的list中index位置的元素赋值为value
    $ X  D0 v7 B/ ^6 u1 z
  308. & X4 H8 m/ x; o: z
  309. lRange, lGetRange
    8 _$ g% ^& D, ^4 g7 E" F8 s
  310. $redis->lRange('key1', 0, -1);
    2 @* v* o" M6 Y
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)5 Y, d( L4 E* |, s  f3 {
  312. * @* ~0 j5 H* ]  V& ~& s
  313. lTrim, listTrim5 c$ [2 O' Y! k
  314. $redis->lTrim('key', start, end);5 U5 L  _6 e# b6 w; O
  315. 截取名称为key的list,保留start至end之间的元素/ S8 H* I$ ?" @! f
  316.   t" h4 O6 A  w3 l
  317. lRem, lRemove& K9 D" x. _% o; n8 H
  318. $redis->lRem('key', 'A', 2);
    / n3 H3 N. [2 M# a! h# A2 e
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    3 U1 t3 M1 @# W+ M3 x" B

  320. ) S& [* X! T6 W/ z
  321. lInsert
    6 d& a' a6 `% W# j+ {2 O/ v+ c
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    6 d" p' ?8 m& q
  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 e. S4 U+ z6 i4 e! Q) q
  324. $redis->lRange('key1', 0, -1);
    . N) V$ v: }8 @' q5 }( ?$ `% O
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    1 ?3 R0 x2 z# R% y: H
  326. $redis->lRange('key1', 0, -1);+ q2 ~4 {- O- A7 [) W3 t3 W
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    1 }& d+ }9 M2 h- O  E
  328. $ {! g7 n8 u  G4 M' F
  329. rpoplpush
    / l. d5 E. X0 ?/ T1 Y2 ^. e
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    , g, o! G0 n: F: Z( o# B/ J
  331. $redis->delete('x', 'y');
    7 f, h3 m" S' |) I0 {
  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'));# [1 E. {/ v# Z$ a$ e" V! r  q
  333. var_dump($redis->lRange('x', 0, -1));
    ( h' h& d1 C6 u+ @( ?
  334. var_dump($redis->lRange('y', 0, -1)); 3 Q) R- _8 k" c; ]. O
  335. % B" O1 o! a0 F* f- P8 q8 V2 S
  336. string(3) "abc" ' k! I6 G: G4 z- ?" Q; T* p0 g4 o
  337. array(1) { [0]=> string(3) "def" }
    3 y; h9 e# }5 O9 \' I
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }* J8 ]' j# G" r' Z4 Z

  339. ! @4 o# S' H. {/ K
  340. SET操作相关
    , Z- T; h4 A" O) z/ t2 V
  341. sAdd
    . h$ h  _/ q/ k7 j
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    8 v% N/ L: L" Z+ P
  343. $redis->sAdd(key , value);
    6 m' K# x9 n2 M5 d

  344. 6 H0 x, S/ W% `0 b+ c
  345. sRem, sRemove$ [1 o. M5 R, Q" W- T* @$ J/ r
  346. 删除名称为key的set中的元素value; e  {0 F2 x8 v1 h  a
  347. $redis->sAdd('key1' , 'set1');
    . a, o7 G8 v" S! g
  348. $redis->sAdd('key1' , 'set2');  J& |# ^  [6 }
  349. $redis->sAdd('key1' , 'set3');
    * G" u/ G- A' W0 {* X( }
  350. $redis->sRem('key1', 'set2');
    , A  H1 I5 n; @: P. i

  351. * L" E) n9 g. g
  352. sMove
    8 m$ y1 V2 v: ]' ^' L
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合7 D& ]  m- i, `- [8 h4 o
  354. $redis->sMove(seckey, dstkey, value);
    " u8 x* A6 A3 O& J) ?1 q+ T
  355. , v  Q$ c) F: }9 N0 f; x1 }4 T
  356. sIsMember, sContains
    7 N+ j+ f/ |! K' \  T
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false, \2 e4 v& ^% ~( i9 B2 `0 t
  358. $redis->sIsMember(key, value);* L  F' o) ~8 `! l) {* m

  359. ; x" b& ?' f' {  n! n
  360. sCard, sSize
    5 V6 r$ P7 T" p" Z" Z
  361. 返回名称为key的set的元素个数& Q, E5 h9 a( N. U  y
  362. & w& u* k7 w1 \2 X7 o6 x; V  y
  363. sPop, S9 u3 N+ q$ X; t, O# s7 o
  364. 随机返回并删除名称为key的set中一个元素" G+ |% }3 i. w5 ]7 M$ g4 P4 i0 @

  365. 3 i- Z& U8 w8 I! u1 D
  366. sRandMember
    , A$ h, R' L* D3 N1 P) X
  367. 随机返回名称为key的set中一个元素,不删除
    9 s4 c& t; p: G, |* z, N* w. C. ^

  368. 7 c4 I+ r. m8 p
  369. sInter5 n: I5 v* J! Y
  370. 求交集: D' b: `5 V: |1 X3 F$ B) Z
  371. - `* h' c  o6 G
  372. sInterStore
    7 O8 @9 a! a: M2 l8 \
  373. 求交集并将交集保存到output的集合
    & l& i% y& y8 l8 K+ K5 @! o
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')% a7 W' K& S1 Q) g" A3 _; q

  375.   d# T3 B4 B6 S  [" o0 Y* A
  376. sUnion
    9 T$ d. N. v' ~5 ]  T( v$ @$ I& K
  377. 求并集
    ' s8 E( Y8 B1 V4 \, l* u7 i5 ^
  378. $redis->sUnion('s0', 's1', 's2');
    % g+ R4 K7 [* u  H3 f0 v
  379. s0,s1,s2 同时求并集; v* v! K  [* B9 y' b

  380. , w& C2 k4 G* w$ Y
  381. sUnionStore- z% P7 h$ {2 B/ P* [
  382. 求并集并将并集保存到output的集合
    , a- q- @$ p! q4 R4 b( d" f
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    . T' s) Q4 U9 p

  384. " Y% ~* h3 ?3 A8 ?* h0 a
  385. sDiff
    # v9 K" Y! r9 K8 q' H  n
  386. 求差集3 F" F( H, `& }4 n! h! y

  387. / S7 F  J( X! S# h  {* ?  u% u: q
  388. sDiffStore
    & x$ g& l  f: ~1 u: W
  389. 求差集并将差集保存到output的集合. X; n9 d- Q- g
  390. 7 J3 ?, t' d" r/ w3 R4 D5 T; Y9 z: v1 t
  391. sMembers, sGetMembers
    % H$ U! C) G! o' G: n. h; E$ U
  392. 返回名称为key的set的所有元素
    ! U4 ]+ Y7 [* o) x
  393. . F- b6 [2 B' n& L! n
  394. sort0 G& ~& Z4 O. N5 l
  395. 排序,分页等# m. X# f* W" ]0 r4 W! a' c
  396. 参数8 n! e* x4 V6 l
  397. 'by' => 'some_pattern_*',
    ! Q5 ]" ?! o* L
  398. 'limit' => array(0, 1),3 m- s/ e7 w+ N# s& Q
  399. 'get' => 'some_other_pattern_*' or an array of patterns,! l8 G& h' R: ^. i
  400. 'sort' => 'asc' or 'desc'," a" W  L  S6 ~  J1 ~( H: I
  401. 'alpha' => TRUE,
    , g7 T6 B8 L1 d2 B3 ?  |& p0 Y0 B
  402. 'store' => 'external-key': F2 s- N9 o6 a- u. G5 _! x5 h
  403. 例子
    : |, r0 g4 j+ _" w9 m, Y, [# w
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    & _! l4 @- v- e8 _
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    4 o6 M' m7 y: f9 m/ C& N6 ^" S
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    $ S' \# E4 L" I. c" m4 V% x
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    3 W( S1 i5 k, H% i0 B& V" j  h
  408. ! x) G- B- {. w, m4 n( c0 {& c% |6 {
  409. string命令0 w. @7 e' F0 x7 |, r3 [% [; }) \
  410. getSet% x7 _0 D6 N8 Z4 t
  411. 返回原来key中的值,并将value写入key
    ) h( S4 W+ u, q% h! o
  412. $redis->set('x', '42');* ~2 P0 |9 o2 Z  n5 V
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    + F7 r8 F; v% Z( x
  414. $newValue = $redis->get('x')' // return 'lol'
    . V* M3 T5 Y+ V* f

  415. 5 D8 S$ K* k5 \% t; \
  416. append
    - o% V" }" K9 {& K
  417. string,名称为key的string的值在后面加上value
    " h" Q$ D3 w3 _  D: G
  418. $redis->set('key', 'value1');" {  l  ]/ w7 y( W# d
  419. $redis->append('key', 'value2');/ `. R+ x. L* |
  420. $redis->get('key');
    1 _7 R3 L, z3 [, H2 G/ Z1 o

  421. ' R. E7 ~- H3 o3 {7 D
  422. getRange (方法不存在)" t$ Z: t9 O& |4 K/ K
  423. 返回名称为key的string中start至end之间的字符9 y( \1 u) Q' E' I4 B  V8 N7 U
  424. $redis->set('key', 'string value');2 J" g# r+ S3 t( F0 y! }
  425. $redis->getRange('key', 0, 5);" q  U! y, H( q1 c6 `8 ?2 c5 _! u
  426. $redis->getRange('key', -5, -1);
    3 _% c3 G" S; Y! A6 o

  427. 8 [8 {7 s& }. Z% X8 S6 S/ b
  428. setRange (方法不存在)
    1 d5 f- x; ]( f2 Z- j
  429. 改变key的string中start至end之间的字符为value
    ( R: W! x! V( n! c5 I5 P7 V
  430. $redis->set('key', 'Hello world');6 O/ f& m* k8 W9 `
  431. $redis->setRange('key', 6, "redis");
    " b+ |7 P' @6 e. A
  432. $redis->get('key');$ ?9 p; |7 J3 r/ y

  433. 9 C4 J( p( M% B/ w3 F) `
  434. strlen
    , F% ~) n  V) R+ U
  435. 得到key的string的长度% a( y; L, y/ d; @3 ]9 U; F
  436. $redis->strlen('key');
    3 m# J3 O/ [( [3 V6 n! i" D% r
  437. % h: I2 W2 t5 ^8 a' O3 ?% J
  438. getBit/setBit" R, d: F) h6 o
  439. 返回2进制信息. Y6 S5 [5 p# @' S, \
  440. " E- J7 ]' b' T: z& S
  441. zset(sorted set)操作相关* R& }# X: |; J6 C8 d9 I
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。% ], a& }% o+ ?$ }
  443. $redis->zAdd('key', 1, 'val1');) a" d& G! x+ `) r$ v
  444. $redis->zAdd('key', 0, 'val0');
    2 u' l8 {4 ?1 o
  445. $redis->zAdd('key', 5, 'val5');1 {5 x  k# J4 M# e' \
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)! T5 C. l! u# y7 a4 |) g% K
  447. " i) `3 d) u2 M; B- U3 \, H' ]
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    7 C) L  w4 A! }6 P  a% z6 a3 X
  449. $redis->zAdd('key1', 0, 'val0');
    6 @. @0 g6 }3 m6 F; d  B5 g& ~
  450. $redis->zAdd('key1', 2, 'val2');
    + _8 s7 @% G* r' I, L
  451. $redis->zAdd('key1', 10, 'val10');
    3 a7 x- c, H& A8 y0 V. }8 G( P
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);& ]0 W$ v7 F! A- o

  453. $ P& e! u; _3 O) |
  454. zDelete, zRem' E5 a  V- ?9 j+ p# Q
  455. zRem(key, member) :删除名称为key的zset中的元素member6 z4 d) b- o" p7 s$ J3 B4 }# @
  456. $redis->zAdd('key', 0, 'val0');
    & V) _* M7 l' X; v4 M
  457. $redis->zAdd('key', 2, 'val2');) {$ Z0 H8 `8 g% f* x) d& C2 O
  458. $redis->zAdd('key', 10, 'val10');
    . C2 r0 R3 A: j8 m) n
  459. $redis->zDelete('key', 'val2');
    & y% P+ ^. k: C2 Q. s
  460. $redis->zRange('key', 0, -1);
    ) s5 T( [- y% O: [6 v" [" W

  461. 2 D% l$ f5 n# I4 N
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出! e7 w2 T5 q+ r: G& z7 C# |
  463. $redis->zAdd('key', 0, 'val0');
    6 v% f! D  g6 k. ~$ F
  464. $redis->zAdd('key', 2, 'val2');
      P: |/ s! t3 z5 _7 D. j6 B
  465. $redis->zAdd('key', 10, 'val10');
    $ ~# A9 ~3 X5 J; F
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    # b; r/ ]) h1 W2 [$ N
  467. ( Q5 [: s$ b3 Z9 F
  468. zRangeByScore, zRevRangeByScore
    " b) Z$ B( I, Q' d" D( ]' q8 g
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));, u# {- V6 W3 T0 J8 M- M+ h
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    2 F' Y1 y( O# a. y3 ]* B9 }) g

  471. 5 I2 k6 S' k0 Q' Q- ^
  472. zCount* q0 O9 O, `$ Q( A# H5 Q9 N! L* f
  473. $redis->zCount(key, star, end);! S9 j/ \( n" ^$ ]
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    5 V  k9 J3 ~% a% N& W
  475. : a  J+ M1 c- I; ^: @
  476. zRemRangeByScore, zDeleteRangeByScore
    $ x) h- Q% s. s3 l+ a( ~& Z
  477. $redis->zRemRangeByScore('key', star, end);
    , h8 |; j# b% X, G
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    * k. T* h( m5 S! g; s
  479. 7 w. @% \9 z9 k
  480. zSize, zCard% B) d$ X% Q' b
  481. 返回名称为key的zset的所有元素的个数* R  R4 O: L- O* d+ p  F
  482. + |% G" v- F3 Q
  483. zScore
    + S# @( \/ k; F. V
  484. $redis->zScore(key, val2);
    3 e* U: c, N7 O9 q
  485. 返回名称为key的zset中元素val2的score
    ' `, ^( Q7 P7 Z% f5 m! ]
  486. . [( q1 S& P* t" M
  487. zRank, zRevRank9 k4 M: {  Q1 J0 E
  488. $redis->zRevRank(key, val);
    % r% t( w) E7 \' x7 J6 w  l6 G
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    . ^) i% h' x4 N/ N! n

  490. 1 Z0 I7 k! c4 D2 ], a" T! v
  491. zIncrBy, I  x6 F& P. w: @+ m
  492. $redis->zIncrBy('key', increment, 'member');
    5 c5 g: }# t+ y! L- m/ K; o; D
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment& t: ~$ {7 ?# J* s# d
  494. # S3 j" l* y- b% v) }" o% |
  495. zUnion/zInter
    / o0 {4 z4 i1 h* G4 N5 H
  496. 参数* l. r' B" Y4 {8 {* O+ Z5 T
  497. keyOutput2 O/ w$ W& {* D. H
  498. arrayZSetKeys
    1 G, \- N: ~! t' V9 y
  499. arrayWeights
    ( Z# D* a. G7 ]
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    ; s9 k  g6 f6 w) y/ Z
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。' E5 w3 ]# O+ V1 o. I  ^& g9 |3 u
复制代码

' y$ O" F8 n" [4 w# n
( F% f: x# R3 n0 l2 v  Y+ {; p& K" v$ t; f# K, h
, I1 J/ M' P$ ^/ t  b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); - W8 F  ~8 H8 n* t4 T6 G8 j
  2. //连接redis服务器
    + \1 {+ P& |# b7 [, a! a
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 10:51 , Processed in 0.089425 second(s), 19 queries .

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