cncml手绘网

标题: php操作redis大全 [打印本页]

作者: admin    时间: 2019-11-26 16:58
标题: php操作redis大全
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    8 P0 v4 P$ P0 n1 t! `+ e- d
  2. $redis = new Redis();  
    ! f6 l  Q+ `4 A  y0 T$ c) J
  3. $redis->connect('127.0.0.1', 6379);//serverip port7 ?  M2 g4 S4 L/ v1 v- K
  4. $redis->auth('mypassword');//my redis password
    * r$ `) T* Q+ }
  5. $redis ->set( "test" , "Hello World");  , g" c: h- l: m/ E6 ?! P
  6. echo $redis ->get( "test");5 `6 I, M1 E8 d0 Q
复制代码
php操作redis函数封装
  1. /**
    . S* f- \: l# h8 B6 J( R9 q4 G
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ; B$ R% X1 J5 i0 G; ^
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    3 _. O  c4 P7 S  g" n4 l' T- a
  4. */# a+ |8 y- H4 ?" f- r/ H: t; L
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    ) Q" k7 c" [$ `4 H0 b* I
  6.     if(!$key||!$value) return false;
    3 t! B, n+ S; U/ J
  7.     $host = $host?$host:getenv('REDIS_HOST');
    8 ?3 @: T7 e/ y" A7 ?& K
  8.     $port = $port?$port:getenv('REDIS_PORT');
    ; S" B8 z5 @2 _3 T% c" g) O9 v8 t/ D
  9.     $redis = new Redis();
    8 v$ C+ H0 C( ~. ]2 N( }' H
  10.     $redis->connect($host, $port);7 [4 d- R' S/ W/ Z1 R6 ~; M& i: v
  11.     $value = is_array($value)?json_encode($value):$value;
    * c4 s4 K. _; r! P
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    0 q: ]+ R/ Y3 W$ A! N5 W
  13. }2 Y2 {; c, Z: C0 ~8 ^
  14. /**; Q4 O# s4 B2 K4 I; c1 K
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    5 D7 i: z: S2 [2 @4 n
  16. */6 L$ |% C* H" G  C/ u
  17. function RedisGet($key,$host='',$port=''){6 v" Y" r1 C  C6 A9 ?2 T' ?# G- j
  18.     $redis = new Redis();7 Q/ a  T7 K! L
  19.     $host = $host?$host:getenv('REDIS_HOST');# v5 _5 Y- a! Q/ N+ k! j
  20.     $port = $port?$port:getenv('REDIS_PORT');& Y8 Y3 @" U/ R( m! ]
  21.     $redis->connect($host, $port);# b* f+ r+ j0 k; w# m& s
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    ! m( Z- h8 l3 U2 O( G0 q/ x
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    " w4 x  F: w" W( w
  24. }
    , r# K# b' F* A( \, `3 e/ {6 o
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了$ X+ W6 r& E1 l+ Q0 M1 K
  1. setex 带生存时间的写入值8 Y" t' b( s, X/ Y/ I% q
  2. $redis->setex('key', 3600, 'value');
    - l2 `0 G4 x3 V9 D# z. ~, i
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1  [5 I) p& r' ~
  4. $redis->setnx('key', 'value');! O- l  O1 N0 O6 C: Z* L0 d
  5. 返回已经删除key
    5 f# P! |) g% S5 B5 [% d4 u
  6. $redis->delete('key1'); 成功返回1失败返回0
    % O2 C5 V% G7 T0 M8 @
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0' }+ C# C6 q; O+ s, c
  8. 查询生存时间
    7 q& t/ L% a7 x/ b
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    / P! I- K1 r# Z+ F5 I' w. j/ h
  10. 同时给多个key赋值,同时设置key0和key1
    . d5 k, Z' e- v; h. u0 e
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));# D) `5 K/ w9 y, {
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值3 V& y  ]' d6 y# n$ F" e4 R/ i5 L6 o
  13. $redis->incr('key1');
    / v5 X7 y( e# X/ \1 Y
  14. $redis->incrBy('key1', 10);
    : G  J! u) u# _2 S% J
  15. 减法跟加法一样
      H% y1 ^8 x2 a; _. w# }9 c
  16. $redis->decr("key1"); 减少1* y0 `; @4 A8 T, v3 w1 b# j7 V
  17. $redis->decrBy("key1",5) 减少50 J& N9 Z5 m( {1 J* n
  18. : K% J8 c( }/ N& b
  19. list相关操作,连表操作
    . q, e4 u! k. z" A: `( P8 Y
  20. lPush6 U5 j! E  f$ t6 M6 J5 M1 k
  21. $redis->lPush("list", "888");/ @6 k- q- I7 p* Y( R
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数: E9 `0 p+ ]- ]% e1 x
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    1 L" O; f! a/ E
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素/ w0 K  o  N4 j$ R( o
  25. lPushx/rPushx4 Z& g  \' k& I1 u% X
  26. $redis->lPushx(key, value);1 F; K: E# Z# ]7 Z& `- p# o, x) R
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加/ J  y; r5 X5 Y1 C3 |* k0 M0 M

  28. # @+ b' f/ f/ r5 X5 ?9 u4 h
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    : \4 Z; @  G; j+ X6 C5 f: d7 ?
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key7 O5 K/ @$ I0 A6 H" q% y8 W
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回11 x0 ~$ y3 ]4 I; b- T" m# X1 @
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    + C: C9 e  Y0 u- `' F
  33. sadd s1 zhangsan
    7 h9 L& x) H5 G
  34. sadd s1 lisi
    5 {% m( R( ?6 g& G9 E
  35. sadd s1 wangwu4 |) `  I' q' C0 ^
  36. sadd t1 yangxingyi
    6 J1 {0 s. `; s2 J* G
  37. sadd t1 lilei
    : q1 J+ |5 H, @0 H
  38. sadd t1 zhangsan. a0 \6 y5 W$ Y/ H
  39. smembers s1 s1的所有集合内容7 `( k  `& |$ ~. d+ Q" f  F- A
  40. sdiff s1 t1 s1有的,t1没有的,差集( y8 z5 c5 J% O9 Y
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式( r+ {: C7 R: o
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    5 i9 `. W/ s0 e, q" a( g
  43. spop抽奖场景,返回集合里面随机的数% x/ F5 F. Y8 h5 _- L# C8 R7 g$ `
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了! S; k( i: L7 ~# v# ~) G/ w6 V4 F
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    / l9 t1 G3 ^2 h& T. C: ?# m
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的5 u  l/ Z- O6 i) f& I" ]
  47. 随机返回集合里面的一个元素,但不删除,重复中奖! o5 x5 B& }# a1 }4 M# Q
  48. $i = $redis->srandmember('s1');echo $i;
    1 z& S/ Y/ t/ {4 f& ^, _
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false( x9 r4 v+ `, v3 U" J8 z
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false2 S3 f: l1 v6 b7 Y2 u
  51. ! w* i3 B* D  n2 ~' {; K
  52. zadd key 2 value 有序集合  `1 M3 F2 F7 p+ a. ~; j$ ?
  53. zadd y1 1 zhangsan;7 {( b- V/ @- k+ M9 g/ b
  54. zadd y1 3 lisi;
    + @$ ]: P: U0 _$ R3 ^* L
  55. zadd y1 2 wangwu;
    % F' j, X% _0 f$ \" A9 s" }
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    $ w9 Y. O* P  _0 W2 t5 i
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    % w, u7 b- \6 `% h# J' ^6 u
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    " Q2 u6 }+ Z  p
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    & p% N0 o. T; q( C9 O
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的1 v, N( T3 [4 m# a1 f  f4 v8 `
  61. 无序就scard,有序就zcard,有z没有s8 l( s7 W/ p& h6 X) h
  62. sInterStore
    ) c- w$ G* ~" o) r" S8 b
  63. 求交集并将交集保存到output的集合
    ; Z( w7 Z" p5 X& y
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    : _( B  X7 w# H$ P9 E+ }& e

  65. * [  l7 n9 t  ?3 Q
  66. Hash操作
    & R/ o" H/ z6 m* w( Y' r
  67. hSet+ L7 q- g8 |- Y. r8 g
  68. $redis->hSet('h', 'key1', 'hello');
    3 Z+ Z+ \- a+ I* A) }; }4 X
  69. 向名称为h的hash中添加元素key1—>hello
    7 i. M" P1 S, O
  70. 5 J8 C0 v+ L+ Q0 c* A7 F
  71. hGet& |4 m" [" N! G+ z5 C
  72. $redis->hGet('h', 'key1');/ F2 {1 k7 j- I
  73. 返回名称为h的hash中key1对应的value(hello)
    4 J  `4 l9 r5 F6 J# S9 T
  74. + M& [& z1 Q$ f" I
  75. hLen& r7 w/ F5 a8 }( A6 x
  76. $redis->hLen('h');
    ; j7 i( Q9 L: l( S
  77. 返回名称为h的hash中元素个数  I$ j) X6 G" z

  78. 8 o+ G; ^) |0 K, }3 G& e9 C
  79. hDel; m6 J4 \5 W- G5 M
  80. $redis->hDel('h', 'key1');
    0 A( }8 `  {8 |' D
  81. 删除名称为h的hash中键为key1的域% R* D6 ?, g0 p2 I, Y; l3 |* H

  82. & C8 E* k; \% G0 H3 i/ ]* t0 ]8 q
  83. hKeys
    , g5 k; e3 t" \- I
  84. $redis->hKeys('h');! b8 m9 `( O" q* I. C2 N
  85. 返回名称为key的hash中所有键# O% K6 W8 C% H9 G7 B4 D/ G& p* z

  86. 4 |' s; P! m2 r* T$ L: W" j% |2 N* i
  87. hVals
    " X: ^& H' z% }6 n, b
  88. $redis->hVals('h')  v" t+ L: k. c# Y/ o8 ]6 X1 n
  89. 返回名称为h的hash中所有键对应的value
    % g# A- ?1 o% l7 E# L
  90. ( U& s& r, u! ^) l6 {' I& [
  91. hGetAll$ w. ]( ]/ c' D1 Q1 `& a
  92. $redis->hGetAll('h');3 M3 ^5 @. e) S$ S
  93. 返回名称为h的hash中所有的键(field)及其对应的value  T7 K1 U" C2 Z! k
  94. 3 ?* H+ o5 a7 T
  95. hExists
    + D+ Y4 e  l$ I/ m8 r0 v% ]0 u
  96. $redis->hExists('h', 'a');
    0 ^7 G2 p3 U  V5 Y) H+ U( o  ^
  97. 名称为h的hash中是否存在键名字为a的域
    $ C8 q. e  X$ B! s7 d2 w7 y

  98. 5 r) p3 l* _4 Q3 Q
  99. hIncrBy" ?. Y) z! E! W. K
  100. $redis->hIncrBy('h', 'x', 2);; a7 `, T6 A/ {) u
  101. 将名称为h的hash中x的value增加2
    5 M$ Y; t" N; r* i2 P2 |/ m/ q
  102. ! ]& X  y4 r, e3 V' H  s3 n5 p* K* n! Q4 c
  103. hMset
    7 J; k6 h' ^" s+ _5 x
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    # i, ?" u% [- g% u3 y% h
  105. 向名称为key的hash中批量添加元素
    * S* g* E$ A6 `: Z& i1 n
  106. 6 O: O, {3 B! F: j) U! \
  107. hMGet
      v2 ]" p$ M8 H9 N
  108. $redis->hmGet('h', array('field1', 'field2'));" G# N' K. |7 \
  109. 返回名称为h的hash中field1,field2对应的value
    2 x5 V$ Z8 Y. J# h$ f, [: o
  110. / U' T% b$ w' }2 Z
  111. redis 操作相关
    " _( @  n* g, ^8 U: P8 l: g
  112. flushDB2 w! N/ o5 G- X1 X) I8 y
  113. 清空当前数据库
    : U# u; f5 G: x

  114. ! F. P* K2 h1 P& |4 b6 m/ j
  115. flushAll
    $ X+ [" [" \: d' _) v* q
  116. 清空所有数据库
    2 g" j0 q2 J2 Y; s
  117. $ e+ ]. s# f& t7 ?, e
  118. randomKey6 ~, j* }& c9 v- ~
  119. 随机返回key空间的一个key
    $ z' x2 ?  U) n" o  m2 A' r& Y
  120. $key = $redis->randomKey();
    0 F) b0 h/ A2 U; x& m6 D  R% h  n
  121. - A, R+ I' V2 g
  122. select
    ( s+ k# {1 k9 s8 B' r$ j
  123. 选择一个数据库+ J0 j" I( }7 h5 K  M
  124. move
    7 g* q) t3 ~- W; S5 `/ J
  125. 转移一个key到另外一个数据库" R- u! z6 R7 `0 M
  126. $redis->select(0); // switch to DB 0( R7 g6 a: h6 B" S- o* C3 U$ K
  127. $redis->set('x', '42'); // write 42 to x
    2 A# B& z- E3 b2 v2 }
  128. $redis->move('x', 1); // move to DB 1" y) b# X5 e8 C( O- i
  129. $redis->select(1); // switch to DB 1/ T2 D7 W: ~* j* K% y: e+ S- l
  130. $redis->get('x'); // will return 42* i0 z( S8 G2 y0 Q" S% c& x

  131. / S1 h1 C: d% F9 I& q* J$ H. v2 S$ k6 J
  132. rename, renameKey& g( M3 `( z- ^( G
  133. 给key重命名! I: x" R& F& E# \
  134. $redis->set('x', '42');
    : a8 |  W& U3 J* F
  135. $redis->rename('x', 'y');9 \( }2 L7 ?, {5 w
  136. $redis->get('y'); // → 42
    % g$ _! E) ~" F2 \$ F: Z, g5 g
  137. $redis->get('x'); // → `FALSE`
    % N' S- P+ o# C5 Z. c

  138.   o+ a- S# U4 Z* x1 u/ l
  139. renameNx
    2 \3 f' Q0 l6 O* s+ Z- j
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功* e) S( ~/ T: L# s

  141. 5 y/ a8 b2 v# U0 }9 F
  142. setTimeout, expire3 r6 J. J) p8 P, s& K# D3 U5 c
  143. 设定一个key的活动时间(s)
    ! P% @7 `' T- y! N$ Y' A
  144. $redis->setTimeout('x', 3);5 l/ H4 z3 _' d# e/ _

  145. # y1 q* J3 I- H$ ?) H# {5 H: ^0 G
  146. expireAt
    : u7 ?" q7 G. V7 Z0 K0 T* F
  147. key存活到一个unix时间戳时间
    5 A4 P: x/ U$ R
  148. $redis->expireAt('x', time() + 3);
    0 Q2 u  ]. N9 r1 U4 S

  149. - e9 c& W" O1 P$ I# E8 [7 H
  150. keys, getKeys7 o; a# v, O2 R4 E; O! c' B0 g' J: `
  151. 返回满足给定pattern的所有key
    . e: r6 ^/ ]8 F: m" {( s4 U: Y
  152. $keyWithUserPrefix = $redis->keys('user*');
    $ R% P# w- L) {7 [' V4 K
  153. 8 |$ e3 A: x7 M) P3 h/ g
  154. dbSize5 Q( ]& d9 S5 G) \1 d
  155. 查看现在数据库有多少key
    3 h5 V) T$ o+ n6 I. s
  156. $count = $redis->dbSize();
    1 }; v& O5 `& I" c

  157. ! Z- e& o* ]* {: w0 }
  158. auth
    3 K) F. _9 q2 B) N' G
  159. 密码认证
    ! L) m, y7 V1 S' z
  160. $redis->auth('foobared');
    2 W. N! W9 O- z- ]$ g) n

  161. 7 h; v# X7 S0 k9 [7 D; e
  162. bgrewriteaof
    ; n2 N* m0 h9 ?7 T9 V
  163. 使用aof来进行数据库持久化
    , G7 P& b; d6 y- z( V
  164. $redis->bgrewriteaof();
    # c  i7 q/ F7 u5 ~& K$ k

  165. 8 l6 J& ~# K$ z) }* J0 A: h
  166. slaveof, i( s5 n: M, J# L' q$ c
  167. 选择从服务器
    5 t) R( e: M* O$ }- ~) p, N
  168. $redis->slaveof('10.0.1.7', 6379);
    , m1 N7 w6 v- Y. [3 |1 x2 U

  169. 1 u' z& x: X# c: O, D! f0 i+ G
  170. save# {: s! i5 V+ @4 I
  171. 将数据同步保存到磁盘1 y; M3 v. q% K) Q$ [
  172. ( i1 [% b1 O" V& i5 X
  173. bgsave. x% `" C" b: x% _
  174. 将数据异步保存到磁盘
    " `; B) ^+ ]& y4 H9 U4 U

  175. ; Q: b+ {& R; z9 B* |$ d
  176. lastSave2 j) Z* Z5 H4 j+ p
  177. 返回上次成功将数据保存到磁盘的Unix时戳9 h' l8 b- B& z+ F
  178. 6 m& Y9 u" f1 H: r, {) M5 Z/ ]2 s
  179. info: @+ ?! k2 l9 M/ e
  180. 返回redis的版本信息等详情3 R6 D; Z/ ]9 E
  181. 3 Z' \7 W: b% E4 R. ?1 n
  182. Redis::__construct构造函数
    6 \* }3 a2 i: `% f" x% q
  183. $redis = new Redis();
    0 H9 f! L2 Q& C
  184. ( v3 M* _) S* H/ K- C
  185. connect, open 链接redis服务
    * e; v3 q- C% Z( y# x8 x
  186. 参数. L$ Q3 T% U" x
  187. host: string,服务地址
    3 {$ c' H4 w/ I  u
  188. port: int,端口号* }( s# h9 m; ^) _7 v4 D
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    5 f3 D1 l" ^$ ]/ }3 @: \0 c
  190. 注: 在redis.conf中也有时间,默认为300
    + T' L4 l3 ^6 q
  191. - r9 ]  c" t7 J. b9 ^
  192. pconnect, popen 不会主动关闭的链接
    7 P5 Q! n. }" `- z1 |
  193. 参考上面, O8 `& @( M; D$ s! J2 q' `; a

  194. / p$ p/ l+ z5 t, }* q; F" J
  195. setOption 设置redis模式: x9 D. T' ?: S
  196. $ k: r. c1 d% j
  197. getOption 查看redis设置的模式, R8 H7 A2 H0 ?5 w& }& D& M
  198. 8 T$ |6 q/ u5 r4 M3 u# q# I4 S9 }
  199. ping 查看连接状态
    7 m* N& g) F5 z3 U8 e+ q
  200. # P) B9 J. K! K/ _
  201. get 得到某个key的值(string值)
    ' @  A: e' H/ s2 f
  202. 如果该key不存在,return false& `" i+ y9 @7 c- @$ S
  203. ( k& s- i! x0 `" c: {5 n+ N
  204. set 写入key 和 value(string值)/ j4 E  g3 w: t- m9 P2 v
  205. 如果写入成功,return ture
    1 I) l, z( X  o
  206. 8 N& i3 `7 N( A4 M; i* ?# T
  207. setex 带生存时间的写入值/ p9 Z6 P; r* r& J) |
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    / [" R7 M! i& J: m  a
  209. , S8 R0 H" L. R+ X: H5 J
  210. setnx 判断是否重复的,写入值9 h, f3 x% Y# d
  211. $redis->setnx('key', 'value');( ^0 |; n. u' ^4 f0 f1 e# F
  212. $redis->setnx('key', 'value');
    ' }+ {; |2 W# S+ u; F

  213. / ?  Z- ~3 I; a* A9 n9 W
  214. delete  删除指定key的值* R( z  z& N& P: c* Y' G  _. \
  215. 返回已经删除key的个数(长整数)
    # x0 T  I. W) K! v7 n8 y
  216. $redis->delete('key1', 'key2');# N  q2 f2 w0 G3 Y+ D4 Z7 K9 H/ Y3 R
  217. $redis->delete(array('key3', 'key4', 'key5'));) a4 |$ x' G1 E- t% L. C

  218. - j2 q; ?# F9 |% M) ~9 x8 x* Q$ A( Z* h
  219. ttl' h  s* T1 C/ ^  F- ^
  220. 得到一个key的生存时间3 P; J% @$ {+ l# `1 V9 O

  221. ; R1 I4 T# M$ o
  222. persist% A, |" C5 o' R; \
  223. 移除生存时间到期的key
    # I8 t+ |8 A" ~9 I$ E. p
  224. 如果key到期 true 如果不到期 false
    7 S5 q. ~2 B! E# g. Q9 Z% ~4 C' i/ n
  225. 9 b1 @* O, B" K9 f+ }
  226. mset (redis版本1.1以上才可以用)
    ) C6 r1 `' v& @# t1 }' r
  227. 同时给多个key赋值
    6 T' Y; [3 v: V& A- Y9 z% [7 H
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
      L, O: r: w  A+ V: p$ t3 w/ o& s

  229. 4 S6 [) R, L1 ]% L0 L# L. o

  230. 1 \( l5 E" P7 E* ?: [) r. L2 `
  231. % [% b2 @3 [% U4 k
  232. multi, exec, discard- m) d% `9 `! Y( X. R, n: T
  233. 进入或者退出事务模式
    ! J+ J/ @% F. M8 u1 d
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI2 I* M( K, U! a6 K5 v% c
  235. Redis::MULTI:将多个操作当成一个事务执行( C) v, J& B; E8 Z; h
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    . r! D; D2 o: j
  237. discard:删除一个事务
    , }' E. M" O" z/ Q7 R
  238. 返回值# G4 L6 P7 t, J: ~
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。8 E: @/ V; P: ~2 D* V& O
  240. : P2 e" x3 ?3 C$ W3 _1 b
  241. watch, unwatch (代码测试后,不能达到所说的效果)! Y. B, x/ G2 y' `" k; P4 ]
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)" M3 O2 X( q: D2 P
  243. unwatch  取消被这个程序监测的所有key  |0 F. @$ ]2 s! c
  244. 参数,一对key的列表5 `, Y8 ~" c5 S
  245. $redis->watch('x');
    - y( x  m" w% p; q. T( Z
  246. 4 I) \+ b( k* }5 O
  247. $ret = $redis->multi() ->incr('x') ->exec();
    3 O) p8 N/ y$ W/ J8 X9 |" I1 i

  248. - G' {% z+ i; ~
  249. & w3 P+ H* s* z0 A
  250. subscribe *
    7 r; W& r/ ~1 n, u( I
  251. 方法回调。注意,该方法可能在未来里发生改变
    7 X) i# Y$ w: Q# b

  252. + r; X* M7 X* u2 {2 _3 N# h
  253. publish *
    ! X- D7 Z( O' y, i) q
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    2 H, q' i4 R; k0 o
  255. 1 n9 S* I! t. R. M/ R% A: Y2 g
  256. exists
    3 j8 A3 d  N9 X
  257. 判断key是否存在。存在 true 不在 false
    " j% S4 b( ~. {1 A$ y5 Q' m8 W

  258. 2 _+ W  O: r) j: T9 _+ M
  259. incr, incrBy
    " f/ W- |2 L* y9 q* p: M" @
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值0 K* B9 E. o" }/ X; P% b% j
  261. $redis->incr('key1');% r& E: y& u( Z0 }  F* V3 F
  262. $redis->incrBy('key1', 10);' }: Z% j4 W7 Q5 ?# j
  263. , @0 V, C( p4 h
  264. decr, decrBy. R" o2 L- C, @; m. V; d- \( M
  265. 做减法,使用方法同incr
    9 U8 h1 K6 M& y0 q
  266. 9 b) S/ O' g" W+ o8 c
  267. getMultiple
    / v) x  V- ~1 |1 y' `% `5 t
  268. 传参
    6 J; h; o' @( J" \. ?! }  Q
  269. 由key组成的数组: c, E5 G' J6 S
  270. 返回参数
    8 \4 R  b- Q' {: @
  271. 如果key存在返回value,不存在返回false. D. j8 K$ U" e6 N+ v
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));4 h" x) w# u' [/ W7 s# C$ r
  273. $redis->lRem('key1', 'A', 2);+ b" T- K" M9 c4 t+ N' [8 Y
  274. $redis->lRange('key1', 0, -1);
    2 u( c  `! t2 I; n

  275. : v( [# e5 s9 ~( I# r; @
  276. list相关操作8 j5 T: i' C2 A5 R, V9 P5 F4 c+ U
  277. lPush
    9 ^8 E, s6 u# N* F" b; K5 Z
  278. $redis->lPush(key, value);4 d& J, M, @* T: c
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    + g9 a2 \* a1 I0 E, o. n2 ?/ m1 C5 C
  280. " x: W) P# J& `; M$ F
  281. rPush& U1 ]- N  ?7 t" a4 H& @1 ~8 d
  282. $redis->rPush(key, value);& N* r1 u9 c# s& W8 T
  283. 在名称为key的list右边(尾)添加一个值为value的 元素) R+ y9 |8 I  w2 p# D6 Z: b- B

  284. - Z0 @: E" [' x2 H" m
  285. lPushx/rPushx
    ) F9 Q/ T- {3 j. g0 U" E
  286. $redis->lPushx(key, value);
    9 n! f/ X. K2 d9 m7 P, I$ `7 d
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加5 T. g1 ~$ l+ F5 j- d0 z
  288. , f+ J2 y; _7 F" [4 ?9 ^- A& r
  289. lPop/rPop' W) Q- Y$ x5 f- H: ?/ W. O! {
  290. $redis->lPop('key');% _4 p$ C; T. v" M
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    & q: M5 V* @* \* _$ A
  292. # `# J; i! r$ {
  293. blPop/brPop" b0 s. A/ k5 o. y5 U# s4 l
  294. $redis->blPop('key1', 'key2', 10);4 c" o1 y9 P( S( M- I$ D% L* n" a  @
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    ( K. \- k* w4 m

  296. # J0 K) y' k" ~% J! _' d5 Q
  297. lSize
    ' y2 t3 R# ?6 K3 c- T2 B3 q
  298. $redis->lSize('key');
    - }( n5 t/ P. }+ n+ b- a/ u! l1 H1 v  p
  299. 返回名称为key的list有多少个元素+ B) H5 R# X  A

  300. ' _, X: B: l: t7 }; V6 _" h8 p( }
  301. lIndex, lGet4 _( q2 ?- _2 I% I3 V! J+ e0 l$ A2 j
  302. $redis->lGet('key', 0);8 R" v% m, Y4 N
  303. 返回名称为key的list中index位置的元素
    4 S& r8 P. j0 S4 M: R6 n

  304. * F5 y8 ?- Q  G+ M+ z
  305. lSet; B' g  d9 Q1 ]7 r) ]. r
  306. $redis->lSet('key', 0, 'X');
    7 R  `+ n, B8 c4 B0 n# x" a0 Q' X
  307. 给名称为key的list中index位置的元素赋值为value
    - f, M: `& R$ p! m+ x

  308. * H7 n0 Y0 t" C- L- w# E* o! e
  309. lRange, lGetRange- B2 J* ?* M+ v& {4 o) `
  310. $redis->lRange('key1', 0, -1);" }1 |8 F* H7 Z7 r; l$ `  W
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    7 S+ V( I3 \: t5 F

  312. ! |) b/ P6 S# s5 |2 p( v2 ^) p
  313. lTrim, listTrim& p/ K; Q" y! I: ~( N! S. k2 y! Z- s
  314. $redis->lTrim('key', start, end);6 a) ~. b/ m  g8 F  V
  315. 截取名称为key的list,保留start至end之间的元素" ], q; p2 E: V5 U' A( S; O7 n2 N
  316. " T% N. f4 F1 C
  317. lRem, lRemove5 V- `8 ^, t. z0 _
  318. $redis->lRem('key', 'A', 2);
    / b  D2 ?; ^# m  I; B+ P6 P# `
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素, q, i/ f- R+ t/ l
  320.   w8 J2 k+ v. x/ l+ ]( k5 R
  321. lInsert9 ?) v% o) l9 n) H7 W$ s
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1+ l& N1 x$ h) }" u2 l
  323. $redis->delete('key1'); $redis->lInsert('key1', Redis::AFTER, 'A', 'X'); $redis->lPush('key1', 'A'); $redis->lPush('key1', 'B'); $redis->lPush('key1', 'C'); $redis->lInsert('key1', Redis::BEFORE, 'C', 'X');
    , D- d: y* w0 I
  324. $redis->lRange('key1', 0, -1);
    - R; O" g/ k$ ~% s
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');8 k& S% H# s0 m5 o4 F, b
  326. $redis->lRange('key1', 0, -1);
    ; H( E5 L( A0 M3 Q9 X
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    $ Y. U% s' \, [6 D! |2 O) n0 N

  328. ( W- l3 W, v* [5 ^- V, R
  329. rpoplpush
    - s' B) c! i) E
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部9 G: S  R8 m! ^3 U& G) d, x
  331. $redis->delete('x', 'y');
    + A. J4 K# y5 Y2 K
  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'));
    + N4 ^- F% h3 {6 f
  333. var_dump($redis->lRange('x', 0, -1));
    ( B/ B7 K/ X+ S0 Z+ O1 f7 s5 k
  334. var_dump($redis->lRange('y', 0, -1));
      w7 a; w# i1 g  ]9 ~- ?

  335. 4 d! o* \2 m! H9 n% p" u. [
  336. string(3) "abc"
    7 b  Q: ^- B, R# N
  337. array(1) { [0]=> string(3) "def" } 8 f0 P: k: `! H& ~
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    * P$ ]* [5 Z& _2 i
  339.   g1 B0 v. r" j0 @6 ~
  340. SET操作相关& m7 \1 _# L0 R" \+ H& {( L
  341. sAdd
    & X4 {7 t3 S6 r4 Y) K5 v
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    / q* _5 b  t0 G/ d, D4 f* a* U
  343. $redis->sAdd(key , value);+ I6 l0 F  d7 j! R- Y& ~4 j
  344. 3 S9 n$ l1 F9 w" i$ @6 Y1 x& `, V7 O
  345. sRem, sRemove/ h. e* T. |0 ]9 R( a
  346. 删除名称为key的set中的元素value
    5 n% ~  k+ t/ U! \( `) N* e  p
  347. $redis->sAdd('key1' , 'set1');4 P; C$ S% p: k8 U. p& l
  348. $redis->sAdd('key1' , 'set2');- A9 A. s+ t2 L+ c- J% ?* `
  349. $redis->sAdd('key1' , 'set3');
      ]+ D  [8 ]1 G
  350. $redis->sRem('key1', 'set2');
    6 i* p+ R+ n( ~- f; v  s+ [
  351. 6 q" Z# K2 t/ n  o! a5 `" T
  352. sMove" X( X& X8 k- z0 p
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    & U4 J$ V. h- e2 v/ v
  354. $redis->sMove(seckey, dstkey, value);
    : J& ^+ Y& w9 o5 A7 K3 v

  355. 8 B+ _5 Z3 k8 r5 t2 j7 ?2 c) j, ?8 @9 x
  356. sIsMember, sContains
    " r' V3 z9 c! K- G
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    . Y) J+ v0 z5 B8 i/ s  O
  358. $redis->sIsMember(key, value);
    + R  x8 s6 V! P
  359. $ Z, A; j! y, U. p6 u2 p
  360. sCard, sSize
    ! S5 |9 ~& R/ ^- U9 E
  361. 返回名称为key的set的元素个数
    , y( f0 j8 t( ?7 `8 D6 d4 @4 [

  362. , b* x+ b8 F* e: W
  363. sPop
    * B0 Q. C2 i9 }. ?
  364. 随机返回并删除名称为key的set中一个元素) E& @5 Y2 r  k
  365. 9 {2 G- S, ^* ~& {  y, L
  366. sRandMember, L1 p6 m" T6 d# T
  367. 随机返回名称为key的set中一个元素,不删除
    6 V- \/ [" J1 b* ^) s+ F# L

  368. 7 i9 O. l6 u$ D5 p; ?& h3 @4 d. |
  369. sInter
    ' y# y) R' C: D1 l8 Q
  370. 求交集
    + r* u9 Q$ O' U2 b7 P
  371. & m5 _* C' `$ z1 A+ V" [
  372. sInterStore6 b% e  F  H5 c8 O3 c  J( O
  373. 求交集并将交集保存到output的集合
    2 l% ?3 q2 Y; ]% W
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    2 @/ Q$ b; D  u& }
  375. , |" b. V  _. U& A" J# N! a1 h0 [
  376. sUnion- v! \, J0 O! s2 s7 \# ^
  377. 求并集! ]$ H; Y: u/ [& g( ~5 g
  378. $redis->sUnion('s0', 's1', 's2');
    # \! `6 @9 o3 o: P7 [6 A
  379. s0,s1,s2 同时求并集0 l" D! _: d' @. F3 E; \! V6 o# }+ J
  380. $ V3 b; J. `' C9 E
  381. sUnionStore% J8 U2 w8 }9 M9 |! L
  382. 求并集并将并集保存到output的集合
    % ?9 q9 o9 I1 N  {0 K( j7 R
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');$ r! a* |6 }- R2 |6 f

  384. 8 p' W* S/ |, a- }+ n; {
  385. sDiff
    4 g: j" j* Y- K4 ?& F
  386. 求差集
    * F+ H3 h% Q$ b/ e% |
  387. ) p) N' _4 @# @- l  _1 U- I
  388. sDiffStore
    6 K* s0 B' Z7 T- H
  389. 求差集并将差集保存到output的集合/ B, @6 }( U: y6 c2 Y
  390. ! P- B% J% m' |( E4 B: J' a, c
  391. sMembers, sGetMembers
    : U. w6 Y5 M5 |. l" B* l
  392. 返回名称为key的set的所有元素, b) e; \6 {, ?7 N' ^( x: g6 n
  393. ' {9 A8 ~- }6 A
  394. sort$ s' \( y' _. ]. P
  395. 排序,分页等8 W/ h/ j/ R$ T9 ]
  396. 参数
    4 i$ z) W. C  D
  397. 'by' => 'some_pattern_*',
    3 `7 B& B  M- Z+ m
  398. 'limit' => array(0, 1),0 |7 b! r/ G3 ?: ~# D
  399. 'get' => 'some_other_pattern_*' or an array of patterns,6 q" J1 u$ E; v1 E8 q# [6 T
  400. 'sort' => 'asc' or 'desc',. t: J; {1 |) t% O; q5 r0 U2 }
  401. 'alpha' => TRUE,
    - ^  H4 W: U2 u* N5 d( e' `- F
  402. 'store' => 'external-key'
    $ K% a# Y/ ~( D% D# h( A# h0 t
  403. 例子1 G* T( u* W; A* D
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    - B- i' u  P4 E: W9 R$ z# B( y
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    # H  A! k5 z) m
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    7 t% W: Y* w0 b- s2 _/ U4 I# o1 A( T+ R
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    : x, }. N/ ]& J0 d" Q
  408. % M+ J! U  O/ h* S  T8 T3 q
  409. string命令
    8 a8 A$ k! i, M
  410. getSet
    , z: H) ^0 A& f( A& R
  411. 返回原来key中的值,并将value写入key
    " V$ N. z. q- k$ X
  412. $redis->set('x', '42');3 Y9 D7 G" J9 a0 ?* ]5 x
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol', }* f; s) p0 V( F
  414. $newValue = $redis->get('x')' // return 'lol'( K; r$ _& P! j" M8 q8 y) W

  415. 2 `* ~6 ?7 d+ |1 u
  416. append% L( ]/ K) S) W" b7 ^6 X
  417. string,名称为key的string的值在后面加上value
    6 v& B9 t) ^% v; U3 z
  418. $redis->set('key', 'value1');; V+ ?1 Y3 U4 R
  419. $redis->append('key', 'value2');3 q/ h0 e  j1 q
  420. $redis->get('key');
    3 ~, z6 z& d. C1 G
  421. 7 I9 P' f2 `! P% ^2 a3 i
  422. getRange (方法不存在)' _9 j8 U2 j+ W$ R
  423. 返回名称为key的string中start至end之间的字符
    # |" d) f: ]+ h9 `: V1 [
  424. $redis->set('key', 'string value');- M9 r/ F6 n) t0 V2 ~  c; u8 ]5 [* Q
  425. $redis->getRange('key', 0, 5);* {! L/ ]/ i/ q( X$ r# Z! Z
  426. $redis->getRange('key', -5, -1);
    # z2 x* e& p7 h& l( e+ Y6 J

  427. / d. q$ u$ u/ _/ g/ t
  428. setRange (方法不存在)
    / }3 _; }, d. w3 W7 o9 d0 C7 \
  429. 改变key的string中start至end之间的字符为value
    ; X. [) h5 l9 G' v2 R+ J
  430. $redis->set('key', 'Hello world');. z& r! }9 n' x; A  v' K
  431. $redis->setRange('key', 6, "redis");
    ( X1 z; v/ d. k) W
  432. $redis->get('key');% U- O  v; b$ P  g! O' K
  433. % s( m# f# e+ Z' W9 ]
  434. strlen& |) Q+ p1 _: G  p: \- U8 N
  435. 得到key的string的长度( h* `- j& k( W) E# [
  436. $redis->strlen('key');$ H# B; i3 |) f7 v! j! ]  E8 t* n
  437. 6 W2 Z5 u4 T, W3 I' i
  438. getBit/setBit1 u- P* H* K. @& K" y" b/ u! L
  439. 返回2进制信息  F/ C  {; n1 ~3 G
  440. * B4 E5 f$ t6 @7 q! o' ?
  441. zset(sorted set)操作相关1 V1 X2 i5 L0 m( ~$ v$ h
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    / j) K6 S* J: q! q# c5 K
  443. $redis->zAdd('key', 1, 'val1');9 z; V2 J5 P( _( V% Z
  444. $redis->zAdd('key', 0, 'val0');$ u4 m" b/ C; E( r
  445. $redis->zAdd('key', 5, 'val5');
    7 ~$ ~  I, T& l0 e
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    4 l$ e2 P4 @6 I* u+ X; {

  447. : r7 ]2 l9 d, k+ M0 Q% Z: v
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素! ^) n1 l2 C( H- ]
  449. $redis->zAdd('key1', 0, 'val0');$ B. ?3 w) M7 h; w; W
  450. $redis->zAdd('key1', 2, 'val2');. [3 A0 Y5 g3 `& ^" s, _7 B
  451. $redis->zAdd('key1', 10, 'val10');. q2 e% f9 I5 ?2 y7 a. e" E+ O
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);2 w8 |# y1 {! m/ i5 e

  453. / Q6 ]1 a# F4 E- E$ S
  454. zDelete, zRem9 I9 K9 o0 a' [" Y
  455. zRem(key, member) :删除名称为key的zset中的元素member  K1 P8 q3 [  ^' i9 L- X1 ]
  456. $redis->zAdd('key', 0, 'val0');
    ) Y  H  {3 R' b+ \4 q: C) r
  457. $redis->zAdd('key', 2, 'val2');  f/ @$ w/ o6 |, b% F; a, u  j
  458. $redis->zAdd('key', 10, 'val10');
    0 a0 L8 ^3 @# `, t
  459. $redis->zDelete('key', 'val2');- N% h, r, O* D( a% `0 x- Z4 l
  460. $redis->zRange('key', 0, -1);
    , g5 {, ~% |3 X& ]* Y6 _; _$ G

  461. ! ?$ ~7 t! R/ }. W/ d5 y: ?
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出0 o( s6 B3 Q' p! I" Y
  463. $redis->zAdd('key', 0, 'val0');0 @9 r6 T+ T0 V5 _$ K
  464. $redis->zAdd('key', 2, 'val2');
    7 L/ ^: s$ K/ q) J, x( z5 ~& ~
  465. $redis->zAdd('key', 10, 'val10');$ q9 _; h. J/ ^' B' l, j3 a
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);. s# q- J$ `) f0 ?$ c* d
  467. 4 u% D4 S" M+ ~* s% Q
  468. zRangeByScore, zRevRangeByScore
    5 n# B4 z& j3 H( l% x
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    / X1 \! L, |5 G9 n/ x
  470. 返回名称为key的zset中score >= star且score <= end的所有元素0 w* `  p' W  A9 G

  471. # {7 K& L$ Y/ o* V" ?
  472. zCount
    ; F8 H4 x' y* V; V! W2 v. t
  473. $redis->zCount(key, star, end);( n5 a5 m3 H9 V8 X: U( L. {, r
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    & {8 @; ?9 ~: {- I4 [& u; u
  475. / B! X' M; o; C" X
  476. zRemRangeByScore, zDeleteRangeByScore8 C! X$ g+ S* x
  477. $redis->zRemRangeByScore('key', star, end);  Q  ]5 n# P! W
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    3 m" b5 X7 \$ m1 e$ e  q
  479. + f. r* }# @9 a( n$ h/ X
  480. zSize, zCard$ j1 X; b" D/ p* t& ?4 [' L
  481. 返回名称为key的zset的所有元素的个数% d( H7 Z7 w; n0 A* X7 Q5 C" a/ W
  482. / R+ W1 j' V/ Y9 z" k
  483. zScore7 E3 ?3 h7 }- P$ I: [: i
  484. $redis->zScore(key, val2);
    $ C$ e3 h3 _0 ]
  485. 返回名称为key的zset中元素val2的score
    0 ?  v8 u8 K+ f1 ?  {; s

  486. 0 s8 W3 a9 s7 u
  487. zRank, zRevRank
    $ X/ ^; X- s' H% `% I
  488. $redis->zRevRank(key, val);- |+ |! h" r7 d5 Q( r
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序$ X7 g+ C) g% T6 k5 L5 J
  490. + L/ X* V) C, Q9 q
  491. zIncrBy
    ) G: A  A) I/ R& O, T+ e8 s. N, W
  492. $redis->zIncrBy('key', increment, 'member');
    ' p; S" u  K  ]& m5 x; ?& s- U$ C/ I
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment1 E6 M& k) z$ y
  494. 4 O3 D: \7 ~. n* y7 K
  495. zUnion/zInter' I- ^; N# b6 N/ ^; \
  496. 参数5 l! r+ J5 x0 j3 V$ j
  497. keyOutput  u" ^9 L9 Y" b
  498. arrayZSetKeys
    * z' w8 }8 w! N2 f! A1 \- g
  499. arrayWeights
    ; R5 n9 }7 m0 H; r! u8 m4 n
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.' l" ~- ~7 M+ K3 N6 Q* _
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。9 N/ ?* e4 B" X4 D' t
复制代码

8 Y  a4 N* g. p. t8 n' v2 M. c7 j  P+ Y  F
4 d  M% Y$ A$ Y
0 N- S# D( L9 a3 O

作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis();
    . U: x+ Y/ j; q" f3 P  |
  2. //连接redis服务器
      K% p" g) @* K& [% {# a' M
  3. $redis->connect('127.0.0.1', '6379');
复制代码





欢迎光临 cncml手绘网 (http://www.cncml.com/) Powered by Discuz! X3.2