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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php! b4 D& K1 U) `: l# w
  2. $redis = new Redis();  
    4 ^+ f+ |, ~* p0 D  j% Q
  3. $redis->connect('127.0.0.1', 6379);//serverip port( u! v" _  e( ?- t9 b
  4. $redis->auth('mypassword');//my redis password
    / K/ t/ A; V" U! b4 m0 s  u
  5. $redis ->set( "test" , "Hello World");  
    0 c  T- C; v+ S1 t
  6. echo $redis ->get( "test");( x3 j& |0 u& K, ?$ P
复制代码
php操作redis函数封装
  1. /**
    6 ]$ L$ @2 p3 |
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数+ A7 u$ Q7 d0 s4 n7 b
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    ) n* c& a% }# s. t6 x" w
  4. */
    , y' @/ U# G& S: F% y: B
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){- W0 |  \8 l' }! D* `2 j2 T4 ]
  6.     if(!$key||!$value) return false;
    0 L+ O% f& z! V. L& V3 u. h: M
  7.     $host = $host?$host:getenv('REDIS_HOST');) n. e" n9 }1 f$ e# b8 j% D* ^
  8.     $port = $port?$port:getenv('REDIS_PORT');
    ( Z$ l, [4 [; d1 c
  9.     $redis = new Redis();
    / j9 Z, g8 D/ ^; k8 |
  10.     $redis->connect($host, $port);4 `9 |, f0 D9 z$ Y& T/ \! [7 C, b
  11.     $value = is_array($value)?json_encode($value):$value;
    % j- q" ]& ^3 ?4 k4 ~
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);$ ?: l5 C1 f9 s! d5 l
  13. }
    1 y5 ]: Q) e( N3 g
  14. /**- \4 r9 d" I" Q% `4 B/ Q
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi( \% P$ Z. k" b
  16. */9 r2 h7 U/ H8 P- h6 @
  17. function RedisGet($key,$host='',$port=''){8 U$ v2 s& k$ [. W* _2 f% e. }
  18.     $redis = new Redis();, x$ m1 l0 S" s2 [" f9 H! n. l
  19.     $host = $host?$host:getenv('REDIS_HOST');! a, M  d$ v3 W* F: h
  20.     $port = $port?$port:getenv('REDIS_PORT');, W/ G& {& G' z# _7 _
  21.     $redis->connect($host, $port);$ V! b9 n/ u1 h) N; K
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    8 V# W& M! y7 h  Q" p
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    6 [: t) `- t$ t% u% D* s
  24. }! e( C& _7 M- p! F  Z
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
0 Z  D* z# [  k4 P: i
  1. setex 带生存时间的写入值# E: q7 h! v' X4 h; o/ o
  2. $redis->setex('key', 3600, 'value');
    ( |1 ^# ]/ D3 Q" k; g1 }
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    , {4 i2 m: j. i. Z
  4. $redis->setnx('key', 'value');
    9 z9 b; g# _; g" V: Z
  5. 返回已经删除key4 z. v' g$ {) p6 ?( \- ^
  6. $redis->delete('key1'); 成功返回1失败返回0
    . u% O) ]3 ]3 N
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    6 m; j1 }1 C1 F. Z3 z8 K; H% S6 o- s: b
  8. 查询生存时间
    1 [6 ]4 i" Y" @: k: A
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)9 W/ N. c3 z& v& m
  10. 同时给多个key赋值,同时设置key0和key1" o" J1 p3 U: v6 f
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));' N! C! k4 _$ M& `" Q0 P+ k4 F
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
      C4 m7 p5 ?! T
  13. $redis->incr('key1');
    # X; t% V( E8 H! ~
  14. $redis->incrBy('key1', 10);
    # u# g% p/ n+ F( Y4 b1 c5 J
  15. 减法跟加法一样" f0 x) l% p) D, b& R2 u
  16. $redis->decr("key1"); 减少1
    8 u7 _7 {( d* I! e* t
  17. $redis->decrBy("key1",5) 减少5
    0 X1 K/ t: M' _

  18. 8 G* o" M: a) I8 o9 M6 J
  19. list相关操作,连表操作
    8 b; ~0 }9 B. [; u9 Y
  20. lPush3 H2 ~# S9 o4 u8 z$ r/ v: W
  21. $redis->lPush("list", "888");
    0 B" ^! ?0 I5 T, T
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    0 R+ I* X$ Q0 w/ x9 Y0 y1 C. W. a
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式  ?% C6 i! F$ n$ A) T
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    7 Z* I; ?9 F) \" U4 a
  25. lPushx/rPushx& R$ V4 W9 @+ w- b2 ~
  26. $redis->lPushx(key, value);
    * x# H, `* h$ h
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加! A7 s* m  d2 D7 k" D6 C( _
  28. 9 \$ n4 j/ O/ f( E
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key' x# r: {0 j8 ~/ s% y& N) {; a
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key) Q, J3 g* z: ^; }
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1/ v7 B3 M  z# F' R
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序. U+ r: \/ O; k3 y" H, D, S9 v
  33. sadd s1 zhangsan
    % P8 A5 @( m# l# L1 m+ W
  34. sadd s1 lisi
    8 T+ b0 S+ C  w. e+ R4 {/ u
  35. sadd s1 wangwu$ i" J3 w7 M4 b
  36. sadd t1 yangxingyi% \; c6 \& _) _: w  X1 Q$ R4 S8 o% [$ @
  37. sadd t1 lilei* w4 N' c1 s$ N" T2 U/ @# A9 D  i$ V
  38. sadd t1 zhangsan
    + u0 P; c! W3 o: X: |# t- a
  39. smembers s1 s1的所有集合内容- L' ~* a3 o) Z. i# o
  40. sdiff s1 t1 s1有的,t1没有的,差集
    4 t. v$ k/ z/ ?
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式# z. `; p8 z2 H, t
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的" i6 h$ p& N4 H8 Z8 u) G! }3 W
  43. spop抽奖场景,返回集合里面随机的数
    - y; z# }9 t4 z' ~# }9 R
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了2 H4 R9 ~1 x9 m
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数5 k6 D$ ^  @8 b
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的1 B" J5 ~2 t7 b. e  L7 N
  47. 随机返回集合里面的一个元素,但不删除,重复中奖8 r' ]7 w7 g2 g  O* Y& e
  48. $i = $redis->srandmember('s1');echo $i;
    ( r  C' ~' T  E9 n- a! U% _; F
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    0 T% a3 z# Q/ v; h* X  i
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    0 ], Q, r9 L& q$ Q0 ^

  51. 0 I4 P% I$ u- H' {
  52. zadd key 2 value 有序集合
    $ H8 t3 H* k# T5 f* j9 @3 f  z
  53. zadd y1 1 zhangsan;3 h0 P; J6 v% c* c6 g; Q5 r; i, C
  54. zadd y1 3 lisi;% x2 `2 u4 f1 F! E9 y6 d" A
  55. zadd y1 2 wangwu;$ v4 I  Z+ M" n$ G( Z0 p( u
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi* |+ z1 X9 r7 _$ H
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    0 t; u; v$ p- j
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    " A- o3 t) w# G. z- M9 i3 |: j  a
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先3 A  [& a3 d0 S
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的0 }9 O( j& p  }- U
  61. 无序就scard,有序就zcard,有z没有s
    1 i7 `- N4 h/ [( U2 p% _$ P
  62. sInterStore
    3 H, V4 f/ A# h. W& F6 t7 P: p' S
  63. 求交集并将交集保存到output的集合
    : w8 ]; }0 w# n! S- {+ G7 j
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')3 `: A# |0 d- e4 [( [; q2 K

  65. ) L/ a! Q0 _1 D* i9 c& c/ J
  66. Hash操作# h5 l9 _1 `, M7 S; y
  67. hSet
    : ?. f6 v& p- u  O1 g
  68. $redis->hSet('h', 'key1', 'hello');( t8 i  x) u# }6 t3 G  p. Y
  69. 向名称为h的hash中添加元素key1—>hello
    8 O, ]+ Z% _% `/ v/ E
  70. % z, L. z) S: z4 ?4 L9 n
  71. hGet
    7 N, o5 p! ^" e7 @$ D( L" D! X8 S
  72. $redis->hGet('h', 'key1');2 m( s' d. F. I, n# Q: X
  73. 返回名称为h的hash中key1对应的value(hello)
    7 s$ l3 j6 ^' d' n; J. n6 T' _

  74. 5 s; c1 ~# F, L
  75. hLen
    1 U$ o2 F, \' A0 G$ ~" D
  76. $redis->hLen('h');
    ; L% K% `0 l4 C/ }
  77. 返回名称为h的hash中元素个数. p' t6 o* w3 [+ Z  k

  78. + h- i; b# M- |
  79. hDel
    9 D, d1 l7 H9 U! `, a
  80. $redis->hDel('h', 'key1');- `' V$ n" t. O' e2 Q! u
  81. 删除名称为h的hash中键为key1的域
    $ I$ N4 A+ w& q# i

  82. + C  u1 L- g5 K$ v$ w1 _
  83. hKeys/ i7 s# n/ h8 J  K
  84. $redis->hKeys('h');
    1 o! o4 n: L- z; G0 j1 G( w8 B
  85. 返回名称为key的hash中所有键
    3 L5 T5 `  J* J5 c4 H! v3 o

  86. / Y/ J/ @: C: T" a4 O# g4 n
  87. hVals+ Y1 g# u1 ]; e+ w/ X* b
  88. $redis->hVals('h')" I; p9 B+ ~$ F+ O4 k4 i
  89. 返回名称为h的hash中所有键对应的value2 A) j9 S/ a3 [2 x4 ]8 ~* s

  90. - s: l4 Q: `5 f" u, t
  91. hGetAll  e/ |% y" m7 g/ h
  92. $redis->hGetAll('h');
    2 {  F' B* j; g
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    9 n8 y4 g/ h3 n0 [# M' j

  94. 2 l! M! ?; H' y6 b' N3 ~/ H) R9 A
  95. hExists0 c+ U$ `5 T: M: Q
  96. $redis->hExists('h', 'a');
    ) l( S! I0 F% k5 U$ ~' [  T4 L
  97. 名称为h的hash中是否存在键名字为a的域. D; h" {* W: h9 ~. m7 U
  98. 0 [7 D4 [& Y. H1 A- {
  99. hIncrBy3 _: b2 A' k! a. U, @
  100. $redis->hIncrBy('h', 'x', 2);4 [, K1 Z8 ~* g# g# s, g
  101. 将名称为h的hash中x的value增加2
    9 }0 p4 V# _2 M

  102. ' U' T. L) i6 S
  103. hMset
      e. U0 r# V* L! t
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    % v. y/ ^. }* A
  105. 向名称为key的hash中批量添加元素
    3 a+ D+ ~# d+ A0 D0 c8 i- ~5 Y
  106. 3 ]& a: v; D% `) P2 h( n  c6 d+ R
  107. hMGet; c+ c  d8 u8 V
  108. $redis->hmGet('h', array('field1', 'field2'));
    ) H0 n5 P' _7 a* Q
  109. 返回名称为h的hash中field1,field2对应的value
    $ [+ L7 L" ]: u

  110. ( B3 R  \) J2 \
  111. redis 操作相关9 O" o4 S: `* P, a/ p
  112. flushDB
    ) _& K' v- q' ]
  113. 清空当前数据库% ~! W/ t) ]/ `  W
  114. % h+ s5 [6 q1 u6 ]% X- O
  115. flushAll# h2 o* S; }5 R9 `
  116. 清空所有数据库+ ]$ U1 w  O( o3 r  i6 E

  117. " h: g' l% m+ O8 k* Z/ `
  118. randomKey1 i" s$ V8 a4 r  S. g$ P6 z
  119. 随机返回key空间的一个key
    , u% v7 f9 i- i( M
  120. $key = $redis->randomKey();
    2 Y1 f) h2 \. N) Z6 v  ]  I: O+ V. s
  121. ' V0 L; d0 @1 i4 p: w
  122. select( }0 J* c( p5 m5 E0 A4 l; M9 r/ g
  123. 选择一个数据库. V2 u8 p# U7 {6 k
  124. move
    # o$ N& `8 m9 H* G0 A
  125. 转移一个key到另外一个数据库
    # [# q' R0 F  ~. l
  126. $redis->select(0); // switch to DB 0) W3 v' ]& e8 g$ I* I" i. O/ X6 S: s9 A
  127. $redis->set('x', '42'); // write 42 to x
    # C* S! Q- R2 ^5 E3 R% C
  128. $redis->move('x', 1); // move to DB 1
    * O" i5 d7 U" j3 O6 J2 H+ G+ g
  129. $redis->select(1); // switch to DB 1
    ! |3 ?5 z: ^& F" U  a5 i6 l$ v
  130. $redis->get('x'); // will return 42
    2 u# p" I- d; E/ V9 p* }6 p- A

  131. 6 o8 h( r2 _8 p$ ~3 ?9 W3 x
  132. rename, renameKey
    6 e# e& E5 k6 Q3 g+ Y: K" f0 A
  133. 给key重命名' ?. B5 R2 w3 ~3 @4 E
  134. $redis->set('x', '42');& l5 ?6 y! j% q1 ~
  135. $redis->rename('x', 'y');
    2 W$ X. c0 W( z  r% c
  136. $redis->get('y'); // → 42
    / t; Z/ J) q. K: x- n$ F
  137. $redis->get('x'); // → `FALSE`9 A( w. O* u: x8 M
  138. 0 m; q; G, f0 J* z$ z# A/ M
  139. renameNx4 l8 {  `( Z+ P0 ~" L* ~% E, z
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功8 e/ f3 T% O0 A! _
  141. + M9 a5 Z9 F1 y# ^5 {" m2 `
  142. setTimeout, expire+ g* f: B; S) u( |  l
  143. 设定一个key的活动时间(s)
    ( L  r8 C6 u" z5 y4 E
  144. $redis->setTimeout('x', 3);
    , J+ t, B' U& O; @/ l4 w  M5 h" L

  145. , N( \2 G- x, h$ r
  146. expireAt
    $ G+ f  i* ^' T* \
  147. key存活到一个unix时间戳时间# m4 Y1 Y' A* _: n5 Z# Q
  148. $redis->expireAt('x', time() + 3);
    - B/ [0 D5 Q( g  f" J% |
  149. $ b$ n7 @# [$ o4 q, ^
  150. keys, getKeys
    + z( ?6 H) \8 ^5 K
  151. 返回满足给定pattern的所有key
    2 `& G' F* \- ?* K: V6 s
  152. $keyWithUserPrefix = $redis->keys('user*');
    * Z8 _4 |& _' {# v- I
  153. # }! A7 s5 v) e
  154. dbSize5 m/ x/ A: `# G# G  O0 T
  155. 查看现在数据库有多少key, H" {- n& A3 j  D
  156. $count = $redis->dbSize();
    $ K0 W7 I8 n' ^* G; U3 j
  157. + a! B- A6 w& M
  158. auth
    2 N; w' ?+ t  G+ D' L/ W& T
  159. 密码认证3 |" }$ q7 T0 d; N9 M6 {
  160. $redis->auth('foobared');
    8 Y' i/ `0 C$ e7 R4 _9 N
  161. ; m5 a3 Q3 K& p5 m
  162. bgrewriteaof
    " E+ J# v' {& P7 S+ a! j
  163. 使用aof来进行数据库持久化1 h8 Q3 u' `2 L& G4 V, ~3 F+ A
  164. $redis->bgrewriteaof();
    ' W0 S9 ~7 W( K) n( C
  165. 5 k/ a2 a& o9 R6 ]/ t+ _+ O8 a7 K! [
  166. slaveof
    & O; \+ ?7 k8 `/ h+ n
  167. 选择从服务器# i5 U% M7 `& T' z/ b! ~
  168. $redis->slaveof('10.0.1.7', 6379);$ I/ V5 w4 B2 I1 Q4 M4 F

  169. " [& d) m# R1 k9 M; U
  170. save2 r: ?7 R( K  T3 i  S8 T+ q* r4 z2 k
  171. 将数据同步保存到磁盘, p# i# \1 e0 m6 J+ a0 u

  172. ) E# W0 q! m% q  g& X8 ~9 G
  173. bgsave
    3 o% y& _; l7 @% U- f. s7 Y/ l
  174. 将数据异步保存到磁盘
    8 l% I5 B! K3 F8 t8 t% l
  175.   i5 D( s- h; ^/ y1 z% ?
  176. lastSave/ `! `2 P2 `0 \- H3 y- g  @
  177. 返回上次成功将数据保存到磁盘的Unix时戳) e, N/ `, k% r' |& O
  178. ( }7 I' E: l2 @# e$ [) v* {
  179. info; i6 S4 h- A8 }# a3 q
  180. 返回redis的版本信息等详情& ?, [  h2 r' M+ G$ @
  181. ( v( v2 O' F9 T  k' x) {) H" P1 h
  182. Redis::__construct构造函数" [  Z' u# F6 V+ N% ]
  183. $redis = new Redis();  \& c3 j, q& z# J/ U  A5 F
  184. % s. V  l+ B% H" M
  185. connect, open 链接redis服务; [* b# G" L1 C9 J
  186. 参数
    & Z7 }, S1 n" _) w- {" G
  187. host: string,服务地址. L9 r  W* A0 M0 G; I0 D
  188. port: int,端口号" Z# E+ B( r) W% C+ d" }
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    & A0 Z, g" o# }) |: {  b
  190. 注: 在redis.conf中也有时间,默认为3008 }' q$ o# ~+ Q7 Q- I" ^
  191. 9 M& O8 b4 J$ J0 y; d
  192. pconnect, popen 不会主动关闭的链接
    ( E+ ~; \/ d- P
  193. 参考上面
    ! g# s, }0 |$ C" t" [% W
  194. 1 x' x4 |0 u& @7 z) s+ a
  195. setOption 设置redis模式( |  E% d: v. ~. K

  196. 5 U! O6 w$ z" n2 W0 @6 z" Y0 H1 \) K
  197. getOption 查看redis设置的模式& y; j+ G5 Z1 I% t9 i' n# g2 I: R0 d9 g

  198. 8 g3 [# i" e+ k7 _+ W4 g
  199. ping 查看连接状态
    * I9 M9 S. b/ {, y5 N7 [

  200. ; h; z% t9 Q3 M$ ?
  201. get 得到某个key的值(string值)' F, q# Y8 G2 a, G/ \4 M4 W
  202. 如果该key不存在,return false1 d2 H2 u. e* c* P) F
  203. 6 f  X$ U9 ]3 P% v6 w; [& X
  204. set 写入key 和 value(string值)$ p% C5 q: c5 q- [
  205. 如果写入成功,return ture) n. f- {6 c" `) r! c3 D( t( z
  206. 2 Y* w7 i) B6 i1 ~+ T  W/ m8 a7 X
  207. setex 带生存时间的写入值+ c* p3 L& _! {
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    7 r) q# a7 ^2 J. F3 B& L

  209.   F% H! g" X' o: f+ G7 D. g
  210. setnx 判断是否重复的,写入值
    + s8 L$ X( m7 A
  211. $redis->setnx('key', 'value');5 R* |) W; w; @/ I: O# {( l7 c
  212. $redis->setnx('key', 'value');1 g6 e' b" i" f% ?+ n4 g4 t* W2 c( s

  213. . J/ Z' s! j8 E9 f
  214. delete  删除指定key的值
    + F: o9 k* D# J; N. S+ Q# A; u# J9 u
  215. 返回已经删除key的个数(长整数). c& c8 ?, Q3 T4 W  N
  216. $redis->delete('key1', 'key2');- N' B; I+ r' H  V& K. ]
  217. $redis->delete(array('key3', 'key4', 'key5'));
    4 i/ o+ d( K% u/ [+ y
  218. & F0 q! _* `8 U( g) R
  219. ttl2 L# P! }( R( i1 [
  220. 得到一个key的生存时间
    ! O$ h% N+ R- K5 Y7 C; j  G

  221.   I1 m" u2 ^5 ~) f" ?
  222. persist
    * r* R3 A; D9 a0 a1 J2 ?6 O
  223. 移除生存时间到期的key9 d( a# w' R1 ?' {- j
  224. 如果key到期 true 如果不到期 false
    : q" G$ i) r" y
  225. . r8 I$ S3 j7 z% h, d
  226. mset (redis版本1.1以上才可以用)
    : P! d% D6 c0 x6 F+ T# K- S
  227. 同时给多个key赋值
    ; ^. X8 C, F/ R3 h: ~
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    9 j5 a4 g& k, @* n1 N1 r# U3 ]
  229. % }. x/ G3 {# C6 V  r
  230. & r# T: Z4 Z8 I- G  B
  231.   W" ?& i4 S3 v# k! U$ U
  232. multi, exec, discard
    ! H7 A$ J6 l+ N/ W
  233. 进入或者退出事务模式
    $ p7 O5 ?8 M# J
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    - y$ L8 Q7 w+ }- Y
  235. Redis::MULTI:将多个操作当成一个事务执行
    % v3 M* v8 J1 R. j
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    0 E! {* _6 }, w0 z9 q& e
  237. discard:删除一个事务
    ; ^! G8 D+ v+ X
  238. 返回值1 H4 y  @5 k  X
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    / x1 S4 _' q. d6 F5 B- q

  240. ) T7 L3 _. ]& s" i
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    7 l/ n$ n" Y: d% g; I& P* i/ N: u
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    + F9 i" j# r8 h' A# W! c3 j5 d
  243. unwatch  取消被这个程序监测的所有key' @; R& L* t4 K1 E7 D
  244. 参数,一对key的列表& ~2 Q4 |8 n$ j0 Y
  245. $redis->watch('x');, l% U6 C' [/ k. K/ ^! t

  246. 2 Q0 r! A5 J: m6 k5 o! y
  247. $ret = $redis->multi() ->incr('x') ->exec();
    1 s9 D, K7 |0 N7 Q4 N* z$ h
  248. 8 F1 w' ~3 w% @$ H# a3 ^* f, `- T
  249. & |* c1 y/ k( I: Q5 B0 }, A1 C
  250. subscribe *
    3 u, L- e8 Z9 {6 {/ N0 s9 c
  251. 方法回调。注意,该方法可能在未来里发生改变
    : {; |( |4 t7 ~) M- b, z

  252. , j! o/ n* l  @; V5 g. Y0 ?
  253. publish *
    * [: i* |  h1 T# n; F- i' N" Q
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变* ^2 B' ^( P9 g7 M( t/ L4 ]$ k

  255. + }. I( C, n) Y5 t4 }$ u. P% A) B
  256. exists  Y7 V/ V+ ^5 Y$ v! N1 o" k
  257. 判断key是否存在。存在 true 不在 false
    " w) g% b- f- z8 r0 |( t
  258. " E0 |% _5 ^% @7 g$ R$ f, s
  259. incr, incrBy
    1 C5 b# s; ]& W. J+ j: F5 O
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    & ~9 d; f7 m. I2 Z9 q% s
  261. $redis->incr('key1');
    + m/ f8 N1 s! F! I: n4 A/ o/ `0 ?2 X
  262. $redis->incrBy('key1', 10);9 t4 C, t6 F  u. T& y

  263. # S& I( k' [: E( U1 a
  264. decr, decrBy
    5 q! H# z' Q* i- r1 X
  265. 做减法,使用方法同incr7 _7 r% Q+ B+ t
  266. " A: z8 O- F/ p% H% _
  267. getMultiple6 E* J' K6 h& n5 L# j( q8 W9 c
  268. 传参
    : U+ l+ o1 P+ {
  269. 由key组成的数组
    7 S: e) ^4 R6 C" D3 Z
  270. 返回参数
    4 |) Q$ M' W( W3 T" U) Y* |! l% Y: p
  271. 如果key存在返回value,不存在返回false# B8 E4 H$ K3 b' ^3 a
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    % `6 i; y' z4 r
  273. $redis->lRem('key1', 'A', 2);3 C& c$ n* b9 N
  274. $redis->lRange('key1', 0, -1);
    $ c$ o: |5 F& r
  275. * z( j. X: ~' J5 D  X8 S) |
  276. list相关操作
    3 N3 y  m+ v4 c& x# N, ^  N
  277. lPush2 U4 \+ k  c+ _- f, m7 z/ }" d( X& U
  278. $redis->lPush(key, value);( |- g: L. s" n5 @; e
  279. 在名称为key的list左边(头)添加一个值为value的 元素. {+ q* ~4 }$ C% S' `" {

  280.   X7 ~6 a5 F; y) k  H
  281. rPush
    0 Z, S  W* U  g$ Q, E- ^
  282. $redis->rPush(key, value);' I8 R3 |; s" T8 z  i/ }3 i+ V( D
  283. 在名称为key的list右边(尾)添加一个值为value的 元素8 y* b) u6 X+ G2 R
  284. & h5 l3 m* j* z) K8 \
  285. lPushx/rPushx. d. O0 o# a0 f; I
  286. $redis->lPushx(key, value);- Y, {6 D# u8 Q/ V$ M
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加4 N3 y2 c' D; r+ g6 S
  288. 2 H) L( P) T' n% A' {  R
  289. lPop/rPop
    " W6 N: E: c" W9 P
  290. $redis->lPop('key');
    0 \  Y; N+ s. n
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    7 M9 `# h. t0 h( b

  292. 4 j$ O) g/ G) r) ~3 V' |; p% v
  293. blPop/brPop
    7 o5 b4 V7 |" ~* }  l0 d% s
  294. $redis->blPop('key1', 'key2', 10);. o# l/ t8 j* U' l' y7 p
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作5 Q' z3 f# z3 l0 t* ]3 E
  296. # Z+ S/ ?/ v: J. q5 l: O$ G# ]( p
  297. lSize
    : n" w) Q' t$ v, w: q9 C
  298. $redis->lSize('key');- |8 b: t5 R" m8 C- d1 @
  299. 返回名称为key的list有多少个元素
    7 x; t4 t" O; I
  300. : B7 d6 ?" {9 Y% k* G
  301. lIndex, lGet
    & ~% J7 d1 m/ K$ O4 f  z  W
  302. $redis->lGet('key', 0);  b9 X4 Q3 X/ I
  303. 返回名称为key的list中index位置的元素
    - F/ [, @. O& H% u- Y* Z! P
  304.   E8 ]4 Z) K/ o
  305. lSet. k! a+ T- C' f( ]- h' Z0 \
  306. $redis->lSet('key', 0, 'X');! F+ O) ^, L. g1 Q, u
  307. 给名称为key的list中index位置的元素赋值为value' B' x6 C2 T2 [& v; P
  308. # m: V- R5 @2 k( Y
  309. lRange, lGetRange+ w6 x; H; u. C$ j! a: @' |
  310. $redis->lRange('key1', 0, -1);
    & n) c; K0 O& q- E/ E  Z' S5 N
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)" t7 u: B, \% e7 c& Q, D
  312. & y% G- ?/ E' p# m. _% _1 X
  313. lTrim, listTrim
    4 N/ ?, F* a" k$ Y& y. }  e" |
  314. $redis->lTrim('key', start, end);! V6 B  m  o4 ^3 w% K
  315. 截取名称为key的list,保留start至end之间的元素# c- F8 D* m. h
  316. . u0 n6 c/ b6 Q+ i9 ~$ j
  317. lRem, lRemove
    4 }& [1 g4 a: D
  318. $redis->lRem('key', 'A', 2);
    5 }8 a3 T5 Y6 x' x/ o: u7 W7 E
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素- S% Q3 e4 ^+ E
  320. ( m! P" K3 H& }# G) ?) u
  321. lInsert
    " d- l) |7 @! p* e$ t( P; W
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    : k3 Q$ h" x3 [% C
  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');
      M( a" y  I, i2 K& G+ X# Z0 e. g5 h' r
  324. $redis->lRange('key1', 0, -1);( c3 ]; F8 ~. X$ w6 J' u& a
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');& n" A2 e2 F8 ?) y
  326. $redis->lRange('key1', 0, -1);
    2 v7 s& L& @" |
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');! Z8 m/ `( z1 Y1 e6 I

  328. * G5 f  h9 B- K* h7 }! d7 t
  329. rpoplpush* o7 c: t( N/ ?% Z
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    ) I- e8 D! z# v5 `. a/ m
  331. $redis->delete('x', 'y');
    9 n7 _3 r$ }8 ?
  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'));
    # n/ E, H% ?: ]$ f# L& @
  333. var_dump($redis->lRange('x', 0, -1));
    " z, ^" q4 T8 [4 R
  334. var_dump($redis->lRange('y', 0, -1));
      ~( o3 Z; e8 E1 F+ J1 _' }0 T
  335. # V  L. Z+ A) F# L& @" R/ b
  336. string(3) "abc" " t  U+ R7 W$ ~5 K" |6 _) B" f
  337. array(1) { [0]=> string(3) "def" } 4 S  s4 X1 X7 L/ c% I4 p- ]
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }; l7 S+ b& p5 W9 J
  339. 8 \$ l, N4 F; [8 K8 M! ]
  340. SET操作相关1 i5 N0 `9 ]' A7 M. t. T4 F
  341. sAdd6 T/ `  [" y2 e. A
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false; r) t& k3 L8 F  R  b4 R5 y
  343. $redis->sAdd(key , value);+ ^# k' e0 R1 }% x# ?
  344. , z% H2 N! ?' z& M) j
  345. sRem, sRemove
    - Y( C! l6 ?# C; b; [! C4 H# y) s$ J
  346. 删除名称为key的set中的元素value
    $ t5 F# X) S  A
  347. $redis->sAdd('key1' , 'set1');
    ' R  c3 P1 @1 K( z7 j  o5 E
  348. $redis->sAdd('key1' , 'set2');
    2 w: B( t3 I1 X2 B* U2 z
  349. $redis->sAdd('key1' , 'set3');
    " s' v( c3 ?% E- ?+ m
  350. $redis->sRem('key1', 'set2');; e9 o0 n0 S, n! o2 T( T6 h" w
  351. 4 @' d- t4 D7 S3 Z+ A& m8 x
  352. sMove
    1 C; F  y1 N) N4 X8 c
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    % K% Q9 `7 _( n8 N. s
  354. $redis->sMove(seckey, dstkey, value);
    6 W5 w! q/ s  ~
  355. / i- Z( d( n( s8 K! }; ]
  356. sIsMember, sContains- L. Z: `2 d+ N2 A6 M* u
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false2 a6 }) G$ F5 C; j
  358. $redis->sIsMember(key, value);
    4 ~7 P# f* W: D# w; ^4 D( \

  359. 2 A" M" O& M0 a; i& g! A
  360. sCard, sSize
    $ e# E  z9 ~0 a7 a
  361. 返回名称为key的set的元素个数' p) g3 Z; ~6 v- w5 O

  362. 9 x9 S/ c- b' N; K4 S4 ]
  363. sPop
    , g* p/ I: x' u
  364. 随机返回并删除名称为key的set中一个元素
    8 C: ]. }, S1 v" h

  365. 1 u, G$ X) y! L1 M0 X; {2 T
  366. sRandMember
    2 f- H8 m4 e+ N
  367. 随机返回名称为key的set中一个元素,不删除
    4 {# l4 o1 l8 J+ E
  368. % n$ _& c; T& d, I" D" J9 c% v) p: Y
  369. sInter2 t% z) U' q4 [7 [% }# J* s% H
  370. 求交集1 a- T: m4 k) P9 F7 p) [  T
  371. * F4 T6 Q6 D& q( c8 b2 t+ A
  372. sInterStore' w1 A1 E" Z* B/ g- d
  373. 求交集并将交集保存到output的集合1 a+ [/ T; ]3 ~, J. Z/ B, e& J0 T0 m
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')% w3 u) K6 Y' r2 c9 _3 K5 s
  375. / [8 Q+ Y4 \; h2 n& |8 g
  376. sUnion
    # q4 B; B$ S  @8 F+ M  v# Q
  377. 求并集' b% U- j' b. f& N# i' T1 i
  378. $redis->sUnion('s0', 's1', 's2');
    0 R6 {0 }0 j/ V% c- E5 L1 e
  379. s0,s1,s2 同时求并集
    5 j. r  i+ d$ A" C: ]- O
  380. : g9 ^- x# S! j% P( s) l( Z9 k
  381. sUnionStore
    4 ~; D6 |! {% \4 E' [4 X+ i
  382. 求并集并将并集保存到output的集合% Q3 Z' l" Q: u* }
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    ; j  H( R, r2 [) _9 r
  384. , {9 [: l7 p( R0 T$ m; j6 X
  385. sDiff& I8 z7 G5 ~6 K1 U9 [' s
  386. 求差集+ x' G8 \. N. I" [+ W
  387. % W  I5 }7 j% j: g# m! z7 F
  388. sDiffStore8 x" S- i* @6 F, W! Q# w
  389. 求差集并将差集保存到output的集合! T/ U$ C8 }( t) T
  390. . _  _5 m7 r" `; F
  391. sMembers, sGetMembers( `" r9 [  \% ?0 ~1 @* p
  392. 返回名称为key的set的所有元素( ~$ W# B8 N0 Q: E4 F5 h. j
  393. ' E8 i0 m  P2 a- }& J
  394. sort7 v! D$ [9 M+ L) P; a. u; \! x
  395. 排序,分页等2 P$ O, D9 ?8 [6 h8 n2 ]
  396. 参数- C: h, ?5 p  C4 F: s
  397. 'by' => 'some_pattern_*',
    3 _+ L% q( V! Z
  398. 'limit' => array(0, 1),( U0 b0 C$ @8 x" s
  399. 'get' => 'some_other_pattern_*' or an array of patterns,) ^8 b9 X2 s+ @/ W
  400. 'sort' => 'asc' or 'desc',' Y+ K( }4 u" F1 V5 g5 K3 k
  401. 'alpha' => TRUE,) o3 [. M: I) z
  402. 'store' => 'external-key') e" x/ I  m2 \  M$ f4 U
  403. 例子3 z. `% L0 m/ F5 f
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    ( D4 P3 Q, R* t' o9 r
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    % D/ u$ L- k$ p8 e/ O  \, h
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1* ~; |, B: O& d$ T- T  H6 z. y
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)55 |! C3 [& X! `0 d

  408. $ Z$ j5 w1 T6 Z8 j* T/ q# M
  409. string命令
    7 }5 I* B: E6 M( Y
  410. getSet
    ; [; o1 ]% C. Y- o
  411. 返回原来key中的值,并将value写入key
    3 p8 [; R2 Z6 _5 T! F2 v$ ^6 O
  412. $redis->set('x', '42');
    ' G7 c6 P  b8 g! S+ p/ k- c( U
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    % N4 ^, u( {% f5 B; E
  414. $newValue = $redis->get('x')' // return 'lol'
    - I. i% L3 y" K/ I! ~

  415. # j2 p. p! o  v2 I# w; @
  416. append8 ^3 I# a( J; U3 g
  417. string,名称为key的string的值在后面加上value$ d$ D; Z" S3 K2 s
  418. $redis->set('key', 'value1');2 f- m- k& X# U5 N! P' x  R1 |9 c
  419. $redis->append('key', 'value2');
    / P) {% i. ^( r( a: \  @2 m
  420. $redis->get('key');
    5 y* {* O( W3 O- v: |9 t& d
  421. $ [7 ^2 v) T0 K0 ^  H
  422. getRange (方法不存在)- [( d6 |9 U/ h+ t& q5 _' x
  423. 返回名称为key的string中start至end之间的字符
    " f$ K- s, T" d
  424. $redis->set('key', 'string value');" B. w3 w, h2 y2 C
  425. $redis->getRange('key', 0, 5);/ j$ z. U! ?' E
  426. $redis->getRange('key', -5, -1);
    4 J* ^6 u+ S* w
  427. 7 T  z( l( [$ z% s
  428. setRange (方法不存在)
    0 a+ T" L+ t8 J+ t2 m& |
  429. 改变key的string中start至end之间的字符为value( ^% Z3 d' F6 k3 r( _! C! H% `" k1 k
  430. $redis->set('key', 'Hello world');8 s' j: l# K5 I5 A) C0 x
  431. $redis->setRange('key', 6, "redis");2 t, Z. z: u6 @
  432. $redis->get('key');
    ! }% o) H4 ?% ?8 g+ h

  433. $ h' u, _6 r# e) y
  434. strlen
    ; Y% ]7 ]8 P/ b! Z; @
  435. 得到key的string的长度# \! z% P& m! r9 |0 u) c" H* _: A' }
  436. $redis->strlen('key');
    7 q# C8 a! X6 C' E
  437.   |" ^' t% D- r0 p  t8 n% a1 @
  438. getBit/setBit
    9 O* M& x) Y2 `2 A+ t3 ?+ i
  439. 返回2进制信息
    ) m' s, S( i7 O7 X3 _5 t1 ^& F
  440. + d6 L! A1 K/ g" Z& J8 [
  441. zset(sorted set)操作相关6 N4 q4 n( }3 {
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。/ v; \+ U! O3 w" T0 G+ D2 y
  443. $redis->zAdd('key', 1, 'val1');
    - K, W( [( @) p* R  t' e
  444. $redis->zAdd('key', 0, 'val0');6 v# w0 U1 y4 g/ D4 Y; W% d
  445. $redis->zAdd('key', 5, 'val5');5 Y2 G# `& I/ B' d9 E; J
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    ; }. M! v  n( y; x* a1 o
  447. 3 H) z9 x& i5 [9 Z: [0 ~4 O
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素, }- G& a5 G' |' K$ X% [5 f
  449. $redis->zAdd('key1', 0, 'val0');
    $ ^1 j$ T& ?2 R' [/ l* Z
  450. $redis->zAdd('key1', 2, 'val2');$ j" A2 u# v+ F9 q
  451. $redis->zAdd('key1', 10, 'val10');
    : c: U3 P# _4 u. J& s  E2 a6 @
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);; |& z% k. }: e; V: l( {

  453. 3 C  t1 o% W/ _3 g3 s+ \  t; K
  454. zDelete, zRem/ L1 N, `; r7 ^. s
  455. zRem(key, member) :删除名称为key的zset中的元素member
    # r2 K/ ?% X; `+ Y5 L& q
  456. $redis->zAdd('key', 0, 'val0');
    ; |$ k4 X. T, M2 q5 m
  457. $redis->zAdd('key', 2, 'val2');/ }- g4 I6 \7 l" d" [$ ?$ u
  458. $redis->zAdd('key', 10, 'val10');
    " i) f  Y. z$ G
  459. $redis->zDelete('key', 'val2');
    4 d. A/ X3 L/ M7 c, P8 u# O1 u( n
  460. $redis->zRange('key', 0, -1); : H; K6 A7 Y3 K

  461. / a% B# R8 \8 H
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    - a6 p7 k" h/ W% s# D$ T8 h6 U9 d
  463. $redis->zAdd('key', 0, 'val0');9 j& b5 g% \1 ]5 k, g" f& z. D0 `; _
  464. $redis->zAdd('key', 2, 'val2');
    2 H$ s* g& Y5 k7 ^
  465. $redis->zAdd('key', 10, 'val10');  _8 n) I% }/ k3 e6 |
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    " R3 g4 a' [0 y1 D0 p
  467. : {0 |% O' S& n' D- h
  468. zRangeByScore, zRevRangeByScore% q: m2 |) G4 q, W9 H
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    + @) U0 G4 d/ R2 v7 M6 T
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    " f# W% T' Y1 R( _* k
  471. 6 [. b4 @" l- w  r
  472. zCount+ N8 Z# G& I  p) i) h0 F
  473. $redis->zCount(key, star, end);
    ( [' B0 l1 T/ Y
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    ( W- ^& Y- g. F9 `
  475. 6 P% d1 v( g( M6 Y! w+ n+ O2 h
  476. zRemRangeByScore, zDeleteRangeByScore
    4 B& j8 {) K  P8 i  z% j- K
  477. $redis->zRemRangeByScore('key', star, end);
    ( S  ?6 t  g1 b' ]& C& c
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    ' g3 T7 Q# @$ L5 c7 r

  479. 2 w/ _( E9 z% ~2 e! t
  480. zSize, zCard1 p; T" n. B% l  n
  481. 返回名称为key的zset的所有元素的个数' M4 l$ W# \3 i

  482. 1 t2 C' }8 T$ f- s0 S0 ~7 \
  483. zScore/ o$ H5 v$ M* Z1 |) E( q: S0 Q
  484. $redis->zScore(key, val2);
    : Y2 s! R# b9 \, I+ C% _) \" e$ U
  485. 返回名称为key的zset中元素val2的score
    . U% P; T. L4 N4 i. \" G' f
  486. 9 h! g- X: N' L- j; t. u
  487. zRank, zRevRank6 e8 U4 j. H- v5 d
  488. $redis->zRevRank(key, val);7 g' O( O2 ^/ J- B% n, U
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序7 e* V0 J4 K$ [6 Z8 _9 h

  490. 5 ^0 `" O! w2 }/ b4 B; }  t: B
  491. zIncrBy
    8 X! N% V" I/ \6 V7 F
  492. $redis->zIncrBy('key', increment, 'member');
    & Y0 I7 Q* z4 [& \) r7 l' C
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment9 U+ a& W  R7 s
  494. 5 p; A# j5 a) _  L3 z1 _
  495. zUnion/zInter% d7 X2 }! Y* z
  496. 参数
    # O1 }' C% s# b9 Q# Y# |
  497. keyOutput
    " N4 `" x2 V* E, J6 L  V
  498. arrayZSetKeys' R) G2 w8 s4 c/ [9 R
  499. arrayWeights
    " u, K% y. u1 S$ z  u- a. L; |
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    9 W0 P8 X+ R' B  `0 k0 G* u
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。" x* k% k# o* m$ u" b# W: e+ o
复制代码
4 {& ?# C  G9 G0 Z; Q) ]1 {; d1 w

8 k8 l  I8 B8 v( D/ e2 t: U) {
6 C6 c0 }$ Z4 n. K0 {6 O: g4 o6 j) l) P/ a2 @. b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    ( E6 f7 o# S/ v' t% ?  k
  2. //连接redis服务器
    4 c8 F8 w  U  _0 B- a7 X/ w
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 21:47 , Processed in 0.073932 second(s), 19 queries .

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