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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php6 B6 D, G8 Q: E1 E, U
  2. $redis = new Redis();  
    ) J6 c5 m# v* j4 R. r
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    1 P4 C9 C7 E0 Z4 \3 r- _7 L
  4. $redis->auth('mypassword');//my redis password
    9 O& d0 u7 ^* t- N" s+ P
  5. $redis ->set( "test" , "Hello World");  ! N1 k# U; d- p! y# {0 b1 V
  6. echo $redis ->get( "test");# F2 G1 J$ r: r, v" I
复制代码
php操作redis函数封装
  1. /**
    ; O& x, @% R. A5 c7 a! W# X
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数2 j5 D  k1 w1 k& ^; N
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi5 ^2 f- U4 A' E" @. C+ }$ |0 A; Z
  4. */
    ! G- {/ }( k/ f% w) s
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    ! w5 ~& |. O) K2 r0 V7 o
  6.     if(!$key||!$value) return false;1 g% _% A* h6 p+ y( a, c
  7.     $host = $host?$host:getenv('REDIS_HOST');
    % g( u0 w: ]$ N' ?( K) ?
  8.     $port = $port?$port:getenv('REDIS_PORT');# e( s/ Y' @  ?. N4 R! m! Z
  9.     $redis = new Redis();
    , I# F" I  H0 R9 e" R% |
  10.     $redis->connect($host, $port);
    3 [0 t4 p) V- h
  11.     $value = is_array($value)?json_encode($value):$value;5 |- ?' E9 P5 s! d. _/ c
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);7 U' ]1 {5 L! R! ?
  13. }# V4 K. k$ a9 ^3 V1 A
  14. /**
    - }: b2 r' x6 E
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi; P0 f' f. S7 n
  16. */; C: x5 B- t9 w
  17. function RedisGet($key,$host='',$port=''){
      w1 f. ]7 h6 v4 @4 E/ Q# v
  18.     $redis = new Redis();  Y8 K/ C! W! }5 H' S
  19.     $host = $host?$host:getenv('REDIS_HOST');
    ; F( |* J$ I9 {- P3 V$ s
  20.     $port = $port?$port:getenv('REDIS_PORT');7 Y# u/ Q0 ?( s# U: F0 j
  21.     $redis->connect($host, $port);
    6 g; H* u0 N- v* N
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);- R- W) }+ d* }0 `% h, ]* N% D. n
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);0 a8 G3 }# x# y4 f5 q
  24. }
    ' b* T( \/ \2 I4 a5 g$ ^  o9 @+ O
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
% Y; _6 C. j5 @; s3 H& J" E! q
  1. setex 带生存时间的写入值: u: X  Y5 c' n2 S
  2. $redis->setex('key', 3600, 'value'); ' y' c1 ]) X9 K; s0 B
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    % p3 F0 l' `: r4 g
  4. $redis->setnx('key', 'value');6 J1 {/ n/ C* P' a
  5. 返回已经删除key# h6 s" Q/ c# n4 W- w
  6. $redis->delete('key1'); 成功返回1失败返回0
    ) a6 Q& }5 |/ S7 y
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0+ }# M$ c0 K( y% V
  8. 查询生存时间
    ; Z  K9 z" S: _& z
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    % u8 j" w% w) {% G! r% N
  10. 同时给多个key赋值,同时设置key0和key1
    6 ~6 a0 j/ _) K; F8 s
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));5 d& j( ]  N( ?0 @8 O
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值5 t3 g3 Q" B7 l
  13. $redis->incr('key1');! x9 f# [$ m3 J( Q$ A7 }
  14. $redis->incrBy('key1', 10);
    % Z) x5 r, s# E* }
  15. 减法跟加法一样
    - }/ m+ q* ]% g
  16. $redis->decr("key1"); 减少1
    2 B$ m" Z" Q/ A  k5 e
  17. $redis->decrBy("key1",5) 减少5
    1 m4 k9 P/ A) e2 |, W* M; b
  18. / \( _: G9 a! M- O  b: n9 w, f
  19. list相关操作,连表操作
    8 z6 c# [" Q9 u# z  c
  20. lPush4 z' L$ P. Q- Q4 D" y' l/ d
  21. $redis->lPush("list", "888");6 [: T0 I$ K1 q6 L7 S
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数$ r5 a  F7 t6 C) D2 K9 ]
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式9 |/ c& ?+ C5 S8 t3 F" j5 p0 ?: R$ A
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素: j+ Q, @2 w. q! X2 P! E0 M
  25. lPushx/rPushx
    $ d. L2 [' \, [1 s% F# a
  26. $redis->lPushx(key, value);/ Q* I. f# V% v
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    4 s  p( h  j4 B8 |$ I
  28. # `4 y  t9 |; I3 x, Z6 @
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    3 G+ v$ e: T' U" }. N: Z' p
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    ) p5 h! E# _: A* y: {1 C* M
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1( r, o- m) a* o5 K* ^
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序0 `. e+ |& a9 b7 b* ?- a: e
  33. sadd s1 zhangsan# e( V0 v6 W& e) r& I
  34. sadd s1 lisi
    ) R& E" o- ?( J0 j% X
  35. sadd s1 wangwu
    3 `: J% Z& ]" j4 K$ b: y
  36. sadd t1 yangxingyi1 \2 a" X9 y2 m! u9 ~+ t$ \
  37. sadd t1 lilei
    9 e. d5 J% E. T3 I3 q- S: a# {
  38. sadd t1 zhangsan
    9 \: j  {1 L1 R/ d( X" @; I; K# B
  39. smembers s1 s1的所有集合内容% l& A- G! _1 i' v9 U
  40. sdiff s1 t1 s1有的,t1没有的,差集; C; u8 y2 ], Z. F0 a) B
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式" x  N7 P' s; k5 A6 M
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    , m+ E$ F" Q5 Y
  43. spop抽奖场景,返回集合里面随机的数3 y( e9 }& |" x' m
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    ; n1 H# {' l. E. N7 X. a7 t
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数% g! L( q9 c8 A
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    ( }9 G( z& K. u' F( l. j; L% e
  47. 随机返回集合里面的一个元素,但不删除,重复中奖3 B" F/ l. z( x6 r. g( y9 P
  48. $i = $redis->srandmember('s1');echo $i;
    8 j' ?+ L: e+ T2 i" t  V
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false, D- O$ k; ^7 W+ b0 x
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    + ^, u: @$ D: D& Z- [( P7 e$ C! x
  51. + M0 p5 F5 P: [; A  z' z. |* H- L3 l
  52. zadd key 2 value 有序集合
    ! d; l! x* U; q
  53. zadd y1 1 zhangsan;
      R# e+ d, U1 l- f; z
  54. zadd y1 3 lisi;
    & J: b# B7 P$ h7 ~, d. D3 b
  55. zadd y1 2 wangwu;
    $ x& W  g4 w- {, ~
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi" v8 A4 X* g5 C/ ]% c
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
      b# b7 Q# h! G; f% U6 R- }
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键- [8 a. s1 W; i" v7 k
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    # E3 G, ?& w3 v9 E1 F
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的0 X2 A# ^- L1 P9 I* y5 G: o
  61. 无序就scard,有序就zcard,有z没有s3 ^6 ]3 z: \3 W
  62. sInterStore
    % K" o+ w# k1 M" X4 T
  63. 求交集并将交集保存到output的集合% i- w& K2 u. y6 r3 b
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ; S: c* H4 {# W
  65. 3 i7 k0 O) h- M* u: p( {
  66. Hash操作; j. B' N3 f: N# I  A. K
  67. hSet" F) r5 \6 Q2 i
  68. $redis->hSet('h', 'key1', 'hello');
    , A9 y+ K/ ]7 l" V( C
  69. 向名称为h的hash中添加元素key1—>hello7 {4 T  O  e; x) y* j- v* K7 C
  70. 6 A; {7 Y( P) R$ C9 r9 q) G" T
  71. hGet
    6 ?  o" k, P# v) v# o+ B- x( }  L6 s
  72. $redis->hGet('h', 'key1');& i: I5 @7 h8 |& j$ ?- Z) N7 N
  73. 返回名称为h的hash中key1对应的value(hello)
    0 Y2 i; e. |) t2 H9 f
  74. : S" f$ _5 Q  q# O, b9 l& Y
  75. hLen% n/ v/ V  D8 N( o
  76. $redis->hLen('h');5 w! B6 s+ L7 v7 I, @- o
  77. 返回名称为h的hash中元素个数2 I2 L9 e% g( w7 ]/ X7 V
  78. ( g# W8 _, i0 A
  79. hDel
    ' n" f( M- _3 A3 r
  80. $redis->hDel('h', 'key1');$ C: s  h; ~$ ^
  81. 删除名称为h的hash中键为key1的域6 c+ C3 P* b- c- ~/ n: }1 Y! U
  82. + }; t" ^* h5 X! w) M
  83. hKeys* [$ a- b% [! Y
  84. $redis->hKeys('h');
      Z- v, z8 J4 j/ s: ^
  85. 返回名称为key的hash中所有键* M. v# [  e8 D. l! |- b" }

  86.   O. V, o' ^1 H' h
  87. hVals/ N- u1 _( F/ ]5 x
  88. $redis->hVals('h')/ b7 R' a! N3 g8 X' N
  89. 返回名称为h的hash中所有键对应的value; y- U1 C9 k9 z5 e
  90. - E; X% K- ?+ U# J/ L6 F7 X9 z+ }( r
  91. hGetAll
    ( ?5 i+ G( r* d' F+ d; F
  92. $redis->hGetAll('h');
    $ ~6 L9 D3 N) X  I# W
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    / n1 a) O" s# l! v

  94. + ]( O* `; m% x) J# ]9 j% r, Z5 \
  95. hExists& a8 [: c) _# N! X; S: y9 ?
  96. $redis->hExists('h', 'a');
    ' S/ w9 d! V+ G: x- e
  97. 名称为h的hash中是否存在键名字为a的域! X( _6 `% A' }/ b2 C

  98. ' y) f/ a. X9 H  H  |1 G2 L. ^
  99. hIncrBy* w5 G! ]- o) _( ?& q
  100. $redis->hIncrBy('h', 'x', 2);. m, D% s3 U! k1 V8 m6 \
  101. 将名称为h的hash中x的value增加2/ d" Z$ n+ y) F

  102. 2 |. G* J% x3 b% T* ~) F
  103. hMset) l. B8 k2 u7 s, O. x
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));  y1 q& ~9 F6 S& c. r( }4 T; |
  105. 向名称为key的hash中批量添加元素
    4 ^- g: n1 Z5 t* R: B( U6 E
  106. + m# N' B) J! d% w  S' r" S+ I1 h
  107. hMGet. I8 J. s( G* x
  108. $redis->hmGet('h', array('field1', 'field2'));) }; V  q9 b2 P" ]$ f
  109. 返回名称为h的hash中field1,field2对应的value
    . P6 t! ^$ r+ B) f" |( g
  110. & U/ T4 H  [" D& J) w2 Z$ q
  111. redis 操作相关5 E+ s- s7 o8 j4 H
  112. flushDB9 d6 o0 {/ \$ b6 v' v( {
  113. 清空当前数据库7 w$ y0 |, o6 {1 _& Z
  114. ; A3 e# }  x" H/ b' [: z
  115. flushAll
    " v2 w0 K7 A0 M0 U* f1 z
  116. 清空所有数据库
    1 _& @6 G' e6 m3 h- {
  117. 1 h- u/ M7 O" J3 }# e, S# B$ {6 H
  118. randomKey
    # ?5 y! C  f% A% A+ |$ b
  119. 随机返回key空间的一个key
    9 F6 @+ d% u$ W! j) F& R
  120. $key = $redis->randomKey();
    ) v8 O5 [$ C4 d0 `9 T
  121. : z1 B3 n2 T  J; m' e
  122. select
    8 @$ M- a6 _" ^9 d
  123. 选择一个数据库& |8 A# U1 T& s( A3 C
  124. move
    2 g8 h8 Y0 l- B6 q+ N& |6 d' g
  125. 转移一个key到另外一个数据库
    6 B3 T  Y) k- U/ {# u' M: ^1 v
  126. $redis->select(0); // switch to DB 0
    6 b3 N( P$ u) P6 V3 I; \
  127. $redis->set('x', '42'); // write 42 to x
    ( z) z5 Q% F" H7 x6 t% v$ L
  128. $redis->move('x', 1); // move to DB 1
    + ^7 g0 n+ c( h( H! K
  129. $redis->select(1); // switch to DB 1! ]6 x# U1 C! o3 J: D; i% U
  130. $redis->get('x'); // will return 42& y4 X- o5 a2 R( g
  131. ; C% \  S) H: U+ C: P) r! k
  132. rename, renameKey
    * D6 d; ^  N$ k  Y
  133. 给key重命名4 X" U3 `$ ~8 Q$ k0 m
  134. $redis->set('x', '42');
    4 b! X( w/ P. x# j) `0 j/ v
  135. $redis->rename('x', 'y');
    # `- x7 y- k6 F4 X1 B
  136. $redis->get('y'); // → 42; y7 t9 @( }7 v; m* Y
  137. $redis->get('x'); // → `FALSE`
    2 d- x/ G: Q$ C/ |, g1 P3 i

  138. % i4 A* v. i7 Y1 {
  139. renameNx
    " k3 k+ J" j" |% @5 u2 y5 y0 b
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功$ a; B: }5 X% n6 F4 t) E, O

  141.   K9 m9 K; p4 E6 Y1 M
  142. setTimeout, expire8 G* {$ N/ W+ n. ~
  143. 设定一个key的活动时间(s); ]5 o9 n. u6 M+ A/ g& `3 b
  144. $redis->setTimeout('x', 3);$ w: T# Q0 c, e% F3 D: k

  145. 5 |) Z5 |8 }8 }2 |" \5 x/ T+ t
  146. expireAt9 i" W  J, J& |1 y$ y, T" Y# ~
  147. key存活到一个unix时间戳时间
    0 d. \7 J. ]0 j; A& k# X
  148. $redis->expireAt('x', time() + 3);" ?/ A! l* Q7 U+ h
  149. ' t: t: k5 B+ w" Z( l+ j
  150. keys, getKeys& G1 Y0 _  f! R
  151. 返回满足给定pattern的所有key
    6 u, O; M* A9 O( m# D. h
  152. $keyWithUserPrefix = $redis->keys('user*');9 |5 Y+ h, j. J
  153. . X3 M$ J. i! A
  154. dbSize
    7 \+ y) k$ r" G7 r7 G
  155. 查看现在数据库有多少key
    ( [1 e% p$ F1 l) G
  156. $count = $redis->dbSize();
    # Y- d6 Y9 W4 X$ t+ |
  157. 5 f/ t1 A; E) K  F* K
  158. auth
    / k! ]! `2 d! J7 u; G) Z
  159. 密码认证8 Z2 ]% A1 ^) ?: D3 A
  160. $redis->auth('foobared');
    9 {4 c2 Y2 q: Q2 s6 ?. j
  161. 9 q! t; F- X" f! I/ t$ R
  162. bgrewriteaof. r4 x9 T) z; c
  163. 使用aof来进行数据库持久化# ^) R1 @, |6 P. _. j5 U
  164. $redis->bgrewriteaof();
    ; Q: N  w0 E) V& }' q
  165. ) [7 M5 b1 f* i( g
  166. slaveof
    & @4 ^1 l* M; R& T% D6 h0 Q
  167. 选择从服务器9 P$ Q7 V# b+ T/ p: `
  168. $redis->slaveof('10.0.1.7', 6379);2 R- g3 v1 E9 Z

  169. 4 [" @+ [- w+ d' p; T; @4 Q3 L' m
  170. save3 @9 r6 d% r* v9 \
  171. 将数据同步保存到磁盘
    # D& e/ \$ b- V3 [4 Y# Z

  172. 5 e% u  T7 G% D+ D
  173. bgsave2 L( h9 Y! J4 H  ?' M2 Y4 F% [' Z
  174. 将数据异步保存到磁盘; \% g% \! S. G. O+ i- s
  175. . r5 \; _* j  G% [- r' C
  176. lastSave# T) K; M  v4 X) \6 z% v
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    8 l3 {. `' R, Y# v. j. r+ ~/ g
  178. . i3 ~2 _) J  G; T- L/ X0 H7 U1 I/ h( `
  179. info
      y% G1 M* O( e! |$ }3 S* r  v
  180. 返回redis的版本信息等详情
    - e  g2 C2 V* t: K! x
  181. ' f  G$ s& |* T8 e* b! b  S
  182. Redis::__construct构造函数
    : A  R* M2 U/ t& m+ |9 k
  183. $redis = new Redis();
    2 Q% d- o0 S, ?% ^+ F% O
  184. # N4 [0 ^4 ]6 M9 L, ?- X
  185. connect, open 链接redis服务4 W# |5 T  h. t9 q
  186. 参数
    # E. |3 v1 q# h! Z' J4 k
  187. host: string,服务地址3 }$ t, f5 K4 Z$ R9 B: g% w- B
  188. port: int,端口号
    ; `# r- ?5 e  W$ t% N# m% K% A1 Q# Q
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ; C/ M- a  a" G
  190. 注: 在redis.conf中也有时间,默认为300) w4 H/ @4 q  a1 I( ?- {
  191. ) U5 F) b& l. d
  192. pconnect, popen 不会主动关闭的链接( H* R/ ]0 }# I% N8 v; b8 m) A6 L
  193. 参考上面( e7 a% {; D; a/ s2 ^
  194. 6 t, Z; B8 `# Y
  195. setOption 设置redis模式2 A! {1 m+ H# S- U
  196. ( `# [6 z! e7 k3 a" i' V5 Z
  197. getOption 查看redis设置的模式
    + \  ?, m' g$ r: B* C; C
  198. & f; c  p4 F: x8 w. {7 I
  199. ping 查看连接状态
    6 E( \. J+ I2 l& @8 K4 V

  200. & r; i  `" i% t7 z! u
  201. get 得到某个key的值(string值)* t( I, q6 q4 v) \
  202. 如果该key不存在,return false
    + ~+ z2 V4 _7 B& ]: Q4 f* W
  203. ! H& }5 |* e0 l7 F& h3 g  F7 q
  204. set 写入key 和 value(string值)
    ' L7 d6 u# i5 F
  205. 如果写入成功,return ture
    / D. g4 |) i% ^4 h. B# R# _

  206. + `& \* m7 K( R+ T5 j( |' Y
  207. setex 带生存时间的写入值
    ; G8 ]7 s9 S$ J4 G3 @: W
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.# D$ O( W0 u- P. ~

  209. : |# k  M4 N* o- i4 T' p
  210. setnx 判断是否重复的,写入值
    + ^4 {4 W7 m6 o
  211. $redis->setnx('key', 'value');! W- q. I; _  G' t1 \! S# V
  212. $redis->setnx('key', 'value');
    2 v2 P+ C' f; g: J) `

  213.   Z1 z0 r: R+ ]" z. v
  214. delete  删除指定key的值3 h  b: x0 V& `4 [
  215. 返回已经删除key的个数(长整数)
    0 O. o* U- T6 ^4 @
  216. $redis->delete('key1', 'key2');( t! {2 v- ^9 Y5 C( _8 a
  217. $redis->delete(array('key3', 'key4', 'key5'));
    3 v; e1 }+ z9 s# v3 Y% E
  218.   ~% E4 z1 T+ m' f9 x% u
  219. ttl- H+ |- x1 d  D
  220. 得到一个key的生存时间
    1 e  I' g- x$ E6 Q" ?2 x9 g
  221. - v# ~  L1 T9 e, B( u2 e% X2 Z3 h6 T
  222. persist
    ; k7 h' r- |6 x/ E
  223. 移除生存时间到期的key+ l8 P# O& w2 W' h0 i
  224. 如果key到期 true 如果不到期 false! e" E- i/ H/ ?) e- q3 {( u2 `

  225. " Z( U( k  ?* G4 F
  226. mset (redis版本1.1以上才可以用)
    + |4 p7 ~% Q0 s8 n+ s5 D8 y% X
  227. 同时给多个key赋值
    3 a8 }3 }7 |. V  h7 C% U- X* \
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ' r3 I8 r# W6 V4 ~% @

  229. , \+ V, j+ o0 U+ k5 V
  230.   A  c  P  {8 o
  231. 6 e9 [! T0 N+ Y+ r  v9 @
  232. multi, exec, discard0 z  i' N/ N6 d2 {, @; z
  233. 进入或者退出事务模式
    ' Z" j0 \' x" Y$ B  x+ L! H9 Y+ @
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
      u, h0 n6 c, y: Y
  235. Redis::MULTI:将多个操作当成一个事务执行7 b- p( h$ o5 L  A! O
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证: ~" \3 M& Z( z
  237. discard:删除一个事务
    7 s: P& q& P0 [- l. v7 a
  238. 返回值
    1 k* Q2 o' E! t, B1 M' L
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    + t( o0 K! X) l

  240. 9 [% R4 d; T6 N& X9 c, _9 Z
  241. watch, unwatch (代码测试后,不能达到所说的效果)4 a! J6 H$ b) ]1 h2 O4 `0 @6 G
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    " k9 D1 N# u1 E. C
  243. unwatch  取消被这个程序监测的所有key7 n  R# W4 f5 |4 A% V/ [
  244. 参数,一对key的列表5 M) s8 w+ F2 h) Q+ Z. p: ?0 d
  245. $redis->watch('x');
    + `: R* n( R' p, e  ~$ i

  246.   n- v, d: ]3 J' k7 Q
  247. $ret = $redis->multi() ->incr('x') ->exec();8 g& w/ D' D$ ?2 V7 Q) H% [' a) ~
  248. 1 y. S8 d' k; g" K( v2 [

  249. % K$ H- C9 m0 K, {
  250. subscribe *7 l! h* y: ^- c8 X
  251. 方法回调。注意,该方法可能在未来里发生改变% p) l( F9 v6 V9 K. r

  252. ; r; v- w% D# I. H
  253. publish *3 h& E7 Q' @' ?9 c1 e
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变5 g) V( ]+ T# V# R
  255. 5 q$ q! ]: W; d1 S, M* m/ I! E
  256. exists! v7 z3 |' _2 y; K' x' K
  257. 判断key是否存在。存在 true 不在 false
    7 }2 {% A, ~+ A+ H$ _
  258. " C# D$ C) U0 @5 a
  259. incr, incrBy3 U! a4 q3 v2 Q' z7 ^1 q! b' Y
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    8 o9 D$ Q- G% u( S& c0 v5 ?
  261. $redis->incr('key1');
    + D- {. x7 o' j4 k6 L0 I
  262. $redis->incrBy('key1', 10);* z( O) F4 z3 l3 k8 J# L

  263. 8 O# H% t8 L; L
  264. decr, decrBy+ o* V7 R4 u# g
  265. 做减法,使用方法同incr
    + ]$ I5 X$ G. Q

  266. 8 u5 o3 Y1 F6 i, @
  267. getMultiple
    . F' b8 I- f7 R' N5 A. {
  268. 传参
    5 _# u5 s8 r/ e: I7 ^
  269. 由key组成的数组% q7 ^# s1 I2 u2 q3 F
  270. 返回参数
    $ P2 K( _% V+ ^1 F  d
  271. 如果key存在返回value,不存在返回false
    0 K! Q0 `0 X+ e5 Y+ B( j! a
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ) `4 `! s% n' e% E
  273. $redis->lRem('key1', 'A', 2);
    ' X) d! x' i3 J: D) W7 E
  274. $redis->lRange('key1', 0, -1);9 H! D6 Z3 x- j. [

  275. & o& r* F5 b4 Y: Z
  276. list相关操作" r/ f4 M* V5 A1 g
  277. lPush
      N7 I7 l; U7 r+ L& T6 O
  278. $redis->lPush(key, value);: D% T* V$ m! e0 g: Z
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    4 a! I2 [7 D6 w. C: t

  280. % x( U; b, {& R8 z6 ]3 W
  281. rPush" V6 G; k* n1 V% G$ n7 ^4 O" c
  282. $redis->rPush(key, value);
    & p( w" A) S3 T9 a* ^  V) \! W
  283. 在名称为key的list右边(尾)添加一个值为value的 元素6 E" Z! }: P; k& Q4 T3 U9 i8 x
  284. , s% z* C% o  j& x: t& z
  285. lPushx/rPushx
    $ h9 w; L2 e" V8 x. W. q8 [
  286. $redis->lPushx(key, value);1 x: y( L8 i( I+ P8 [4 _
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加# }0 g; K3 B2 C+ T' i, |3 x; k
  288. - ]7 X- I: M& ]; v! C
  289. lPop/rPop
    / q2 e# J7 J( S7 i) }
  290. $redis->lPop('key');
    0 M8 E, T" d. I8 C' J% U0 d
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素" k0 b2 U: Q% b9 M' T8 b' [

  292. / e. k9 _! Z- h0 @4 z
  293. blPop/brPop0 C/ v1 e/ `+ P! f: @: V; T3 c
  294. $redis->blPop('key1', 'key2', 10);8 }$ `: u3 G3 U/ `) H( p6 e" y
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作* \) q8 {5 H+ x1 L
  296. " p2 x0 K  B9 G: _! `5 P" Y( C
  297. lSize$ f# j+ v) E# e$ O( K
  298. $redis->lSize('key');1 Z5 t3 a- g  u0 z9 O& O" P
  299. 返回名称为key的list有多少个元素* k6 n6 K6 H  L$ |1 n4 O7 L9 H( f

  300. : H* f, F0 k1 r, @
  301. lIndex, lGet: ~2 K1 ]" s# w! |$ Q
  302. $redis->lGet('key', 0);1 ?/ z; X; [$ D# t+ V! |
  303. 返回名称为key的list中index位置的元素
    2 S0 b6 ]* ]% |0 |6 ]

  304. 5 V! k3 p8 K! e; g/ r9 r
  305. lSet
    * i. z+ Q$ h2 ?* ^
  306. $redis->lSet('key', 0, 'X');
    $ J* H& C( g9 h( V
  307. 给名称为key的list中index位置的元素赋值为value
    : @4 r6 P2 W( q+ O4 w. |! t

  308. 4 `2 \" i  ~) E- K. m# M  @
  309. lRange, lGetRange5 u6 F' X, q- Q' k% z9 J' X9 N
  310. $redis->lRange('key1', 0, -1);
    ! B$ S/ x, q( x7 ^% f
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    # }' G# l) O5 g; `1 \( C
  312. / R2 @8 r' v/ ~* a  J' O: _/ m
  313. lTrim, listTrim* e! X3 l7 e% d1 u0 o) u
  314. $redis->lTrim('key', start, end);
    1 H) o& M& ^, A3 V- |( z/ o
  315. 截取名称为key的list,保留start至end之间的元素
    ' Z# Q7 R% s3 q: L
  316. 6 K' F6 W( p& H1 E" _+ j: i
  317. lRem, lRemove
      c+ T) V: ^9 G  I
  318. $redis->lRem('key', 'A', 2);
    6 V* N3 {! d& l/ C3 L# P% m( p+ \
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ' g& H: N- R& ]" s6 C/ E2 h

  320. % p& q0 g! i6 C- L' p
  321. lInsert
    8 [. q6 S/ ?2 c% S3 t
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    " Y: W/ D, i' y; N! b
  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');
    0 p% t7 D( h1 t: r7 W% {3 T7 w
  324. $redis->lRange('key1', 0, -1);
      L( Y8 v$ t. ?( C+ L6 h
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');# [* O( O7 o' P1 l; }' X! q
  326. $redis->lRange('key1', 0, -1);
    $ q. H. t5 y+ o7 b9 v/ Y' y( j+ Q  D
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');" p7 Z" T) I. m

  328.   i1 I# W: k" C' Q" W( c0 V
  329. rpoplpush
    5 R( R$ k' g$ d+ x1 P0 u
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部( [/ Q' a3 D% c) H6 n. C4 X; d6 _0 V
  331. $redis->delete('x', 'y');8 R% C& q% T5 p( K$ S3 D# F
  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'));
    * `- c- \4 x4 G: B8 P
  333. var_dump($redis->lRange('x', 0, -1));; x9 [- Q! p+ J9 I0 ^% |3 F
  334. var_dump($redis->lRange('y', 0, -1));
    2 j: {8 k6 U+ o# {5 s2 c
  335. 7 M; b9 [" h' h8 t7 n# t
  336. string(3) "abc" ( x+ s2 V8 b- R6 u/ M
  337. array(1) { [0]=> string(3) "def" } , A8 s9 E4 j9 ^& h! G% u2 h: K
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    $ ^4 |9 Z" l! l  t, T
  339. # p# b; b8 S- y: l8 [% p; @
  340. SET操作相关
    2 ~' F0 v% n8 V+ e% G; W) s0 p
  341. sAdd: u) R$ U8 w" Q
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    4 }" W5 S2 \! ^+ o
  343. $redis->sAdd(key , value);/ K& Z3 J6 R6 i# l9 j
  344. 1 y* d+ c1 j3 R+ {- v* w
  345. sRem, sRemove
    8 s: A5 I5 ~) x/ v% k3 \
  346. 删除名称为key的set中的元素value4 U- n' E  c0 W) E8 `7 j
  347. $redis->sAdd('key1' , 'set1');
    - V3 R4 Y9 L% u" V
  348. $redis->sAdd('key1' , 'set2');. P3 Q9 H1 e( c: Q, K9 w5 f
  349. $redis->sAdd('key1' , 'set3');
    ( \( u" O4 q- o! H1 \$ U
  350. $redis->sRem('key1', 'set2');  m# t$ h% |! W/ V" e& |

  351. 9 T) l3 z4 N; D: {2 G* [
  352. sMove
    ! s, W/ t" s5 V9 c& ?
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    / [1 f, K  u& j: c- ]" e
  354. $redis->sMove(seckey, dstkey, value);/ m0 j" f" Q+ ]. I9 V( z+ H3 F
  355. . ]; ]' e7 o7 i1 S; H- A0 ?
  356. sIsMember, sContains% P( }3 y1 t+ n, {  @
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false! U$ C& j5 D+ E  b! S
  358. $redis->sIsMember(key, value);* l- A/ t6 R, a( _9 j

  359. , ^  L7 \& Z4 u% y. e
  360. sCard, sSize
    5 F' \5 o5 [  j
  361. 返回名称为key的set的元素个数
    8 S, I( l0 G" \; U6 ^

  362. - @# R' |" ?- [; i8 d$ ^
  363. sPop
    & S+ A3 e  T; W1 T7 g9 j
  364. 随机返回并删除名称为key的set中一个元素6 g# B. ?3 w+ o
  365. 1 D8 P" z6 K/ O
  366. sRandMember' Z8 H3 {. w* E# G
  367. 随机返回名称为key的set中一个元素,不删除
    * p, V$ B$ i* x9 Z
  368. 2 c! |& G) Z" `/ j% K' c) z
  369. sInter
    ! Z0 m' d: [: n. c
  370. 求交集6 X" o, w, M- f7 L4 A+ n

  371. ! X# o* n; g, N# q" N4 `8 Z9 M1 r% D
  372. sInterStore9 j; g, {* D6 b  ?" m
  373. 求交集并将交集保存到output的集合
    : [6 r' @; ~, l( Z% |  _$ w
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    7 ^, ]& E. P, e! K# d% g! I

  375. 9 C' o! E2 [% p: T' H
  376. sUnion" z0 f" J' w3 E0 p9 ]
  377. 求并集  r2 X4 L' N1 k" T7 h' ~
  378. $redis->sUnion('s0', 's1', 's2');
    9 t' c' w1 @9 @" a$ _" M2 W% `
  379. s0,s1,s2 同时求并集
    * h  z& S, k, y

  380. 6 ]2 B  _0 c' z9 }9 C+ }+ e
  381. sUnionStore- F" u. p* J3 R. a1 a; r
  382. 求并集并将并集保存到output的集合4 [4 g, ]6 S1 E. X
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');; _8 Y7 o4 Z( j, [  |
  384. 3 o  N( U) ]4 t. O% b
  385. sDiff
    + m) b# S! S, P
  386. 求差集
    ( k) i; P; b* a  \+ T" O2 @

  387. . U; t" A" z9 Z0 |4 ]
  388. sDiffStore
    - z2 F  u# G; n. ~) z
  389. 求差集并将差集保存到output的集合
      D: a( t. X  }' z% E3 B+ ]
  390. 2 K. a* f# Q3 c, ~3 r' G
  391. sMembers, sGetMembers$ B/ y! K4 E$ J
  392. 返回名称为key的set的所有元素
    ' n3 b+ f. v7 g$ A  v: T

  393. " Y2 {( J: R" b5 u
  394. sort9 K  x4 s+ e' `. D8 C! C
  395. 排序,分页等: n) z. b$ m& H7 v+ ]
  396. 参数
    " H& d4 W" K7 w; M% v* H" A" Y
  397. 'by' => 'some_pattern_*',, y- [6 H! o9 @; c, C8 x' a
  398. 'limit' => array(0, 1),
    ! x$ |8 f" _/ d; Z, c. [8 J
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    - W, O9 s) m% \
  400. 'sort' => 'asc' or 'desc',
    4 G3 q/ `$ Z6 F) z6 ~
  401. 'alpha' => TRUE,
      U) g2 C- }, l# N
  402. 'store' => 'external-key'2 `3 T* S! I7 A$ v. [
  403. 例子. ^! |1 l  K7 }) S5 K( T
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);5 C$ M& o: F. X5 |9 ^% h3 X
  405. var_dump($redis->sort('s')); // 1,2,3,4,58 q4 o* w4 N( k8 k3 K9 I
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1" N2 h! r5 N2 @. x; k( R
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5" i+ S  i" W6 p" b4 q+ W
  408. ; _) K0 p& v$ A6 z% e: h
  409. string命令& @& Q8 u5 J( R) R4 ?. X
  410. getSet) F7 i6 W- ~! @. V; U+ d' |
  411. 返回原来key中的值,并将value写入key
    " w" `8 X- l$ N" r
  412. $redis->set('x', '42');
    6 P5 z, z. ?" @# u. y* [
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    8 _1 ~2 s1 K& b* g% L
  414. $newValue = $redis->get('x')' // return 'lol'! H+ t7 [8 p" g1 ?( s1 W8 W
  415. ! }& A: _8 Y2 X# V
  416. append
    ! g1 `6 C- R' y5 ^7 d( Q
  417. string,名称为key的string的值在后面加上value8 t% D. r  Y& M; a+ I  z
  418. $redis->set('key', 'value1');; e% a2 [3 Y' C& r, V
  419. $redis->append('key', 'value2');
    4 W# F8 t+ ~0 A& j0 X  o. d: S6 O0 h
  420. $redis->get('key');1 H1 L# N, r7 l0 g% I) O  g: k

  421. + _/ O5 g' u; S9 Z$ M
  422. getRange (方法不存在)! Z" M; k1 f. f! x! i
  423. 返回名称为key的string中start至end之间的字符
    8 j3 R! N8 K: s: K* L7 h1 ^2 A
  424. $redis->set('key', 'string value');
    ) G2 k  K8 E- H) C
  425. $redis->getRange('key', 0, 5);9 J1 P. k& Q6 \
  426. $redis->getRange('key', -5, -1);
    7 c' e# \# @! _8 u# K9 `

  427. - y9 `( N( C, _* u, }. V  I
  428. setRange (方法不存在)
    2 w- I# {$ ?1 y, k, @. P$ o. b
  429. 改变key的string中start至end之间的字符为value( y7 C5 Q4 s/ k! k* i8 H2 S
  430. $redis->set('key', 'Hello world');
    6 q( i4 H( j% c' m* A" P1 |. V1 Q
  431. $redis->setRange('key', 6, "redis");  V4 b6 W9 _( H& K7 R. A; T
  432. $redis->get('key');/ l  L$ Q! P0 m, i; v
  433. 9 D% x6 U$ P5 `& h8 m+ ^
  434. strlen
    / l% m) n- Z$ k' A$ s
  435. 得到key的string的长度
    6 h% l+ i, L+ r5 X' Q
  436. $redis->strlen('key');. M9 {, M/ P4 y% a
  437. 9 n- n  z* k" u. C
  438. getBit/setBit
    ! e) q$ h1 E$ g, _$ I+ G6 r
  439. 返回2进制信息
    % q6 K8 s6 R' P, s% n; D: i
  440. 3 H$ _5 s4 ^# N
  441. zset(sorted set)操作相关  u9 c8 W# ~4 F7 c
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。5 l4 c7 F" b- [- q) k( t8 @4 j6 d
  443. $redis->zAdd('key', 1, 'val1');' w" z+ v  u' R+ i$ [# }% n( f
  444. $redis->zAdd('key', 0, 'val0');
    + k0 d6 k4 q1 p# D3 v* j$ k
  445. $redis->zAdd('key', 5, 'val5');/ `1 I0 b+ L* J& L7 D
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    0 f& G2 i) z0 l# r( f5 L# A& q
  447. 9 z1 L5 Y5 U7 D! a4 ~
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素' E& s$ Z  X2 [, f" o! V7 E
  449. $redis->zAdd('key1', 0, 'val0');
    & m2 }: x  o7 q" K
  450. $redis->zAdd('key1', 2, 'val2');
    ) c$ B7 o* I' b
  451. $redis->zAdd('key1', 10, 'val10');
    7 W1 p% y' s6 d' S* v
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);3 z* C& [- i4 J& P$ B; H+ D/ m
  453. ( E$ l. c9 e4 |
  454. zDelete, zRem8 g% l1 p* V2 k4 S8 @
  455. zRem(key, member) :删除名称为key的zset中的元素member/ O# o" X# V5 \1 ?3 C6 U
  456. $redis->zAdd('key', 0, 'val0');
    + X" M1 g1 B# W5 A4 h: ?
  457. $redis->zAdd('key', 2, 'val2');( b: l$ u' Z  j$ O- h' v6 q
  458. $redis->zAdd('key', 10, 'val10');
      R6 P3 ?+ q, r9 t% w7 E% m
  459. $redis->zDelete('key', 'val2');
    ! y0 ^0 A& j- e0 D+ t  V
  460. $redis->zRange('key', 0, -1);
    0 j/ L+ Q. L% ]/ `- |

  461. 0 i, S: k% L8 d& }
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出& u$ x! E% Y  j  c) I
  463. $redis->zAdd('key', 0, 'val0');7 S$ S+ `- ~0 g9 r$ W
  464. $redis->zAdd('key', 2, 'val2');" M7 N: s! y$ F8 i: E) [1 z. m5 v
  465. $redis->zAdd('key', 10, 'val10');& j1 m: m3 S$ }- N
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);- T( r9 |+ I, N% n8 t6 Y! L

  467. % J# j. E. ^3 y( ~9 R
  468. zRangeByScore, zRevRangeByScore# V, ^# w% T: E6 V4 I8 i1 J5 D1 g
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));( S5 f) y5 c& R7 J+ k9 r2 y7 ~  q
  470. 返回名称为key的zset中score >= star且score <= end的所有元素1 R* o' X& t  _! h

  471. * p& {* x- s1 L: G, _
  472. zCount
    ( x5 c. J0 @3 j, `: ~( [3 \
  473. $redis->zCount(key, star, end);
    9 l. M2 ]9 c, \( A
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    2 n4 j2 n8 r, B5 }- q

  475. ' }; s) T  |; n. u
  476. zRemRangeByScore, zDeleteRangeByScore( k) c: w3 o; C
  477. $redis->zRemRangeByScore('key', star, end);
    5 j  v; o3 x+ q( _5 O" D
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    $ T$ s7 a0 S( f' ~( q% D
  479. ; n* W" ]+ ^, C
  480. zSize, zCard' q3 ?4 x, O- e  c( Q: k; O4 b
  481. 返回名称为key的zset的所有元素的个数" _! A5 U7 \6 a5 d& N/ t  T

  482. % ]* m. {$ r  N
  483. zScore; P, y1 n* m2 t4 B
  484. $redis->zScore(key, val2);" O: D2 A  L" L# C. ]
  485. 返回名称为key的zset中元素val2的score
    % a3 D/ K! {2 w; W6 x

  486. ' u1 q6 j( i1 e. ?& S! j6 K
  487. zRank, zRevRank
    . ~7 n4 b0 l/ K  R- K9 }
  488. $redis->zRevRank(key, val);- \3 K1 e1 A. z# \) \
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序( z1 b  Z7 n8 o9 `

  490. ) K/ G. }/ T" p; Z
  491. zIncrBy
    3 V1 |0 U; P9 h9 Z  Y1 ^# ?
  492. $redis->zIncrBy('key', increment, 'member');& T4 `6 O. i) C  X; l3 B- k( ?
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment' q/ q7 a; j0 E( N2 k. M

  494. " p/ o/ P# M' B9 {
  495. zUnion/zInter
    6 X+ [* c( \$ }
  496. 参数4 c& R: z: U9 S& z
  497. keyOutput3 ?2 D! y( {) h. U  [; l' B
  498. arrayZSetKeys
    * c0 W5 _7 r8 z- ]# m+ G. U
  499. arrayWeights7 r; d6 u% x% q( G
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    4 E- d8 U0 {4 l4 ]
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。2 O' y0 X* s0 T/ k4 C
复制代码

" D! H$ ^3 [  @- u/ ?2 m; F. Z. I& @$ D2 Q/ k1 Y2 r9 v1 _( d
: n! V0 g" g" M
+ |  r+ d( V2 D: `% B1 q7 p  G8 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    $ T# r( ]5 M- g; ]) w0 p0 ]1 p
  2. //连接redis服务器
    + Y; k9 M5 _" X9 r' B) Z
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 21:34 , Processed in 0.150865 second(s), 18 queries .

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