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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php. a. W+ f" ]2 R
  2. $redis = new Redis();  8 k- N& t: x! O  j3 S+ E3 M
  3. $redis->connect('127.0.0.1', 6379);//serverip port  O. e5 M" h% d3 q
  4. $redis->auth('mypassword');//my redis password
    9 x. N* c: g* G8 D& g
  5. $redis ->set( "test" , "Hello World");  
    3 G7 @: j; \7 d4 b' `' @
  6. echo $redis ->get( "test");
    # k3 ~9 _2 }. A7 s( G, U+ M
复制代码
php操作redis函数封装
  1. /**
    3 a/ D: Y" u5 k/ R/ C
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数3 P0 k$ t% M" B  k8 M# e! `6 v
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    ) S. u0 ]  J: h; L  ~3 x7 M8 K
  4. */& ]8 Z" `5 \% T' r$ D1 a
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){7 f5 i1 Q2 t' p5 a7 Z
  6.     if(!$key||!$value) return false;
    . D0 f5 b+ Y, z
  7.     $host = $host?$host:getenv('REDIS_HOST');/ f" I; D3 O$ F0 S' j9 {+ H
  8.     $port = $port?$port:getenv('REDIS_PORT');7 _& E' w$ L* p9 f8 q5 f/ g3 \
  9.     $redis = new Redis();$ F) B# [  ~! Z' m* i7 O" z
  10.     $redis->connect($host, $port);3 d3 X$ B. l6 Y3 `- ?* a
  11.     $value = is_array($value)?json_encode($value):$value;! L5 F- S" n" r- g% A, q3 A2 ?
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);& ^* O$ x! l! [) W: T# Z8 @
  13. }- d. y- p6 t& q* c, Z/ m) V
  14. /**9 y# W- @* }% ?
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    ; i( i9 s( h$ k7 W  k6 A
  16. */
    4 \  R7 |9 {- L* H! V
  17. function RedisGet($key,$host='',$port=''){
    & M3 W+ r- h" w/ `" k
  18.     $redis = new Redis();
    & g: g  c: |9 g; X
  19.     $host = $host?$host:getenv('REDIS_HOST');
    / I3 G3 ^$ }) B
  20.     $port = $port?$port:getenv('REDIS_PORT');+ r% u5 _/ C" E7 A$ b7 q2 c
  21.     $redis->connect($host, $port);
    5 U' a) ~; j$ b
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    ! h3 p4 {; z3 e  d
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);4 W2 @# Z1 a5 M" [; u2 p
  24. }7 M) ~* d9 i) {) {' c! b( y4 D
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了+ a7 d5 ?, g* M
  1. setex 带生存时间的写入值0 i  T6 ]0 p* u  L" K
  2. $redis->setex('key', 3600, 'value');
    ! F; K( k% {5 L
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    1 Q' F" V2 J: n9 v4 X
  4. $redis->setnx('key', 'value');- k: W4 y7 h8 J* U0 G
  5. 返回已经删除key
    / z5 \* J1 e. [& o  o6 q& j% k
  6. $redis->delete('key1'); 成功返回1失败返回0* U" l8 Y9 m; c+ V
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    ( l) ?: N: N  Y: m! c/ k
  8. 查询生存时间
    9 c2 |* U( w7 H9 _3 {4 b" ?4 p5 r8 h
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)( E; }/ }/ v" Q; E
  10. 同时给多个key赋值,同时设置key0和key1* h# N& h  f0 \/ r# U% \$ i9 |5 v
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    , a$ s& D7 S1 ]- ^# |& \: v0 e
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值- ]7 y! n( s5 Z( h9 }# M
  13. $redis->incr('key1');
    # U" ^! a! `7 |
  14. $redis->incrBy('key1', 10);
    7 J* P9 M: b- h/ T
  15. 减法跟加法一样
    & l! l  f! ^: F
  16. $redis->decr("key1"); 减少12 I7 F$ I7 ?! T0 ]4 `
  17. $redis->decrBy("key1",5) 减少5: i7 a! Q4 [, G0 s0 j5 T4 g

  18. - F' ^* C; {3 R% S. ?( X# y9 n; l3 M3 @
  19. list相关操作,连表操作" j7 k' U: b2 Q7 X
  20. lPush+ H  V* N. b! H- B+ P7 B: k" ~: I6 o
  21. $redis->lPush("list", "888");
    ' \+ W8 n. ^: [
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数3 V% l1 `6 N- l
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    ; g- j: Q' z4 R5 H8 l, K
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    & n2 w4 g9 T( v5 \9 @9 S7 B1 G
  25. lPushx/rPushx4 ]4 E$ l6 S3 S& s3 t+ [* y; J
  26. $redis->lPushx(key, value);3 d. f3 e" B3 S9 I; K
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加6 Y* T/ y9 G+ a% I- N% @

  28. + U% ~) u6 `* ^: h' O/ e
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key! R& M( `, o# j" ~8 k! ]
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key( d2 R( z1 D! Z) y. J2 ?
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回19 m( J* b7 {9 X/ K. Y- f
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    3 ?2 |$ l/ b2 q3 R) Q8 ~) c1 k1 G
  33. sadd s1 zhangsan. H: `. X4 a/ L- z: B
  34. sadd s1 lisi: u/ G8 t' \. h
  35. sadd s1 wangwu
    ; w5 q) _) O4 D: c( F2 ?# g
  36. sadd t1 yangxingyi
    3 U) H4 U# z% S1 F+ p
  37. sadd t1 lilei
    8 e! l* y, f5 b2 q$ @9 \& d" n9 E, h
  38. sadd t1 zhangsan. C, O7 g4 ^- |! s8 l& F9 W
  39. smembers s1 s1的所有集合内容* ~( h: E+ z: f: j1 g3 I
  40. sdiff s1 t1 s1有的,t1没有的,差集
    0 g! G4 C; _7 X
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    . X8 T5 U' X; A: ^8 Z9 h. W
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ) q% q" G* s+ }& L; U5 R7 w* B
  43. spop抽奖场景,返回集合里面随机的数' N# d$ N& n% i$ Y# C, {
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    7 L/ r8 N1 i0 R$ u* m* B9 g
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    9 \; r9 k* S6 M" C- {
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的: h8 p7 Q. H1 r- l( k4 x
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    / z* ]/ [! {- y$ r0 v
  48. $i = $redis->srandmember('s1');echo $i;
    % k" \3 G% O0 d& H) }# E! A8 T
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    4 k0 _) F, o, S
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false, P+ g8 u& l6 Z3 {/ S  @
  51. ) O8 B; k4 t* q. S+ E$ G
  52. zadd key 2 value 有序集合" a) ~7 L5 r+ W# Q2 e8 b, f
  53. zadd y1 1 zhangsan;
    , t& g$ K. v( A9 n
  54. zadd y1 3 lisi;0 ^% p; D; @" L/ c6 d# E
  55. zadd y1 2 wangwu;0 i1 a2 a4 [( i) C
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi: ^; f: V# V! H1 c$ M" I
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    0 F: r, o, |" `
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键6 Z8 V0 y0 C/ ^2 T
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    : M& L* Y7 \) [# {2 I
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ' M5 x6 h" H/ T9 h( w( i7 D0 |
  61. 无序就scard,有序就zcard,有z没有s% Q8 D0 r) T$ o+ m
  62. sInterStore
    ) U8 I) l, Y, v& x
  63. 求交集并将交集保存到output的集合% `+ X- H5 }; a3 }6 O
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')+ R3 }$ v; k8 k+ e3 ^

  65. 4 e% g$ h5 _6 G* Y
  66. Hash操作
    ) ~7 C& l; k  U
  67. hSet" @# k1 P( Z( {* g: L) G
  68. $redis->hSet('h', 'key1', 'hello');
    6 `1 G2 A- t) w5 {+ A
  69. 向名称为h的hash中添加元素key1—>hello- `( B: ?: u- I% ^/ w  r& c
  70. 2 M8 D5 I+ g! h: I3 ?( \8 ]
  71. hGet
    1 |+ y  i) D- d& E) j; E3 O
  72. $redis->hGet('h', 'key1');; K: ~# M. F4 T$ F, f) e! ]
  73. 返回名称为h的hash中key1对应的value(hello). g2 \: l- Z0 w: Z5 |
  74. 2 _4 O: _  S' O: W
  75. hLen  r$ a7 [. y6 t! F6 v
  76. $redis->hLen('h');! y; L; D& C/ }6 s
  77. 返回名称为h的hash中元素个数* A+ u: _' s+ ?( @: J- b
  78. 6 @7 K/ V+ m- V+ {" Q
  79. hDel
    / R6 I# S& ~5 o0 }% E
  80. $redis->hDel('h', 'key1');/ }# q5 d! j3 a  O, w
  81. 删除名称为h的hash中键为key1的域5 F9 A+ ^5 J% X( q
  82. 7 B1 x. J9 `& J- S/ L5 d9 n/ w  N
  83. hKeys
    . H. p6 X" t/ i: q! l0 R! v
  84. $redis->hKeys('h');7 i  n! e9 f% n) T; b; [- _5 ]: T
  85. 返回名称为key的hash中所有键
    2 F+ J8 z4 h- h  r8 F. o
  86. ) ~! S) d# O! A2 L# S$ ~0 X
  87. hVals
    * L2 W1 X. C0 n6 V1 F
  88. $redis->hVals('h'); Z  t8 Y# @. l% d$ c* Y
  89. 返回名称为h的hash中所有键对应的value
    4 ?7 |0 T4 U, Z+ b( J

  90. - d. Y% H- T( S: [
  91. hGetAll
    & {. O9 S$ w6 a/ r) X
  92. $redis->hGetAll('h');& T  C) p+ p8 c7 t+ _( m5 o% L( V0 G: N9 @
  93. 返回名称为h的hash中所有的键(field)及其对应的value+ {. F6 o6 I  B2 |

  94. . b) Z9 N4 l$ p) g2 L5 ^
  95. hExists+ W8 D9 W& z4 a& }7 T
  96. $redis->hExists('h', 'a');
    ) t$ _5 Y/ f& |" u9 G% t
  97. 名称为h的hash中是否存在键名字为a的域$ A& n8 |2 Y+ ~$ s3 Y3 Q
  98. . i: {( ?+ B7 o& L1 H1 c
  99. hIncrBy. I& y6 _7 K- I% `1 E7 U: V2 {3 A  i
  100. $redis->hIncrBy('h', 'x', 2);
      B2 W1 U% D- u( F& r1 f
  101. 将名称为h的hash中x的value增加2
    2 {% {; g: X4 q* E; H

  102. , f. H9 x0 B6 n$ J: x
  103. hMset
    + X$ x& p8 |) L; W; V) I: c" q% n
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));- S- E# J0 Y( l( ?
  105. 向名称为key的hash中批量添加元素* ?1 Q+ [" A* u( j0 _1 v0 T% h4 Z8 m
  106. ' }( T1 A. L4 y4 m: |0 D) _
  107. hMGet4 m: i8 `, h. D1 J
  108. $redis->hmGet('h', array('field1', 'field2'));
    - K0 P$ H2 N3 K0 c4 d
  109. 返回名称为h的hash中field1,field2对应的value
    8 w/ k8 H  i1 H3 ^2 o( ^( I4 H, {3 E

  110. & Z6 U% G& m$ f/ ~
  111. redis 操作相关
    0 @& p5 t2 K4 Z$ D7 q$ x/ l
  112. flushDB) p2 H/ U+ d* H- H$ k
  113. 清空当前数据库( _" W& S$ q7 l5 e, |0 ^

  114.   j% g; x7 [! h( o/ d
  115. flushAll  Y* E% \+ T% r+ X6 Q' G6 m4 t9 z
  116. 清空所有数据库
    ! r& j6 S: ?. c8 ^

  117. 0 c2 k5 S/ _* l, g& Z
  118. randomKey1 g7 j" e/ V4 ?+ d
  119. 随机返回key空间的一个key7 a% H' d7 `9 y
  120. $key = $redis->randomKey();
    # Y" ?$ t: a. d' ^8 z

  121. . ^  o: |# U2 b' }$ i
  122. select
    ) o3 n% i5 y% Q- a2 ^
  123. 选择一个数据库# ?7 R9 C' f! T" h$ Q
  124. move
    / B! P4 \8 o- y. V
  125. 转移一个key到另外一个数据库
    - n" |" |2 y6 u1 w
  126. $redis->select(0); // switch to DB 0
    0 K' v, }( n. Q+ e  O
  127. $redis->set('x', '42'); // write 42 to x
    8 _2 x. z, f/ L4 r( ^. l# i
  128. $redis->move('x', 1); // move to DB 1, g, c" l) e! ~
  129. $redis->select(1); // switch to DB 1
      i' H. a5 m5 b, h8 m: j
  130. $redis->get('x'); // will return 42
    1 s3 k3 Y. V' ?

  131. 2 P  A, u4 ?$ S  l$ M
  132. rename, renameKey
    7 Z; a: F9 L5 B* X
  133. 给key重命名
    5 a& a$ a' j, C7 D3 Q, p3 S
  134. $redis->set('x', '42');9 q$ K4 Y9 u/ K7 T0 I
  135. $redis->rename('x', 'y');6 y! p& W5 x$ {1 O
  136. $redis->get('y'); // → 42
    3 u/ a7 x; L! Z" _
  137. $redis->get('x'); // → `FALSE`
    ; e6 e( E1 N4 w: s& G

  138. % J& g' Q& C! i0 d8 o
  139. renameNx. ^6 R. n# l- n; O8 L" }3 _
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    3 i2 L$ \4 W! y0 G
  141. - y  B" X6 B) H/ i7 ?* V
  142. setTimeout, expire
    % p8 C+ H- j: N9 [0 N4 V$ w7 A
  143. 设定一个key的活动时间(s)9 P7 |4 l3 k7 `( I9 Y9 O8 P, u, @
  144. $redis->setTimeout('x', 3);
    1 z. D- y! r1 K, S! C  o/ ]; L
  145. 4 U1 p9 r5 L# Y) h6 C
  146. expireAt
    4 o3 |! u. Y: p7 e6 K0 W
  147. key存活到一个unix时间戳时间1 E' B& r  F. _6 c( m3 u9 o" Q
  148. $redis->expireAt('x', time() + 3);& d8 l- B# k3 X
  149. ! b4 Y& t) q1 D  ~
  150. keys, getKeys& G9 s# E  r! d2 B/ e- H! m
  151. 返回满足给定pattern的所有key
    . k  O5 F; q/ S2 e4 }! H4 M3 H8 B
  152. $keyWithUserPrefix = $redis->keys('user*');
    4 l8 @2 ^1 F& r- ?

  153. # w/ v1 n8 U6 F5 O. y' H
  154. dbSize( \- ]3 I/ L# K! Q( ^' h! Z
  155. 查看现在数据库有多少key" T. m* {6 d( H: f' W
  156. $count = $redis->dbSize();
    + r0 O/ u1 A1 `2 A

  157. * B; D1 c+ g) r/ v9 P4 U. U; W
  158. auth
    - k0 z  G- C5 I9 H# ?
  159. 密码认证' e* V# c; ?$ D3 `. G' c( q" R
  160. $redis->auth('foobared');
    $ u; l* N" l, D: m

  161. 3 p; M  C+ \- @
  162. bgrewriteaof
    $ I, a: ]9 o) h3 W4 q
  163. 使用aof来进行数据库持久化
    ) e! y- ^. I- @, @: u+ s
  164. $redis->bgrewriteaof();
    4 l9 n8 m& k4 {
  165. ; q$ L6 |0 N# S
  166. slaveof3 s! U, r8 V& t! ?
  167. 选择从服务器% I3 ?; |/ x7 T1 _! e
  168. $redis->slaveof('10.0.1.7', 6379);
    ( e9 K" F! [( Q; f6 Z

  169. % H3 T% u7 N% G+ E
  170. save$ ^8 `9 V# e+ F7 i
  171. 将数据同步保存到磁盘
    0 Y) w# D) r$ }) Y5 b
  172. + x8 U8 X$ h* o+ \+ l- z& ?
  173. bgsave; \" w8 u: d. h5 s# a4 x4 j
  174. 将数据异步保存到磁盘( U4 ^( }' A/ t. x: ]# M

  175. ; W% A( ?/ P$ R  |1 C" Y# m
  176. lastSave& l& }1 Q* b( N8 C& h  Q
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    & b; @8 t+ H, d/ J& A& O$ q
  178. 8 |$ A8 D3 q. o# B5 A/ @: Y
  179. info& X* k2 j) P1 j  \* T
  180. 返回redis的版本信息等详情! T2 b6 o1 k9 J- w

  181. 2 n, ^7 c2 E; ^8 j
  182. Redis::__construct构造函数
    # j) H9 v# d& X8 h) \' `
  183. $redis = new Redis();! w; \. I( B  s9 c) ?7 ~

  184. " \* p% ^' c- ]2 r- x( W
  185. connect, open 链接redis服务
    ! U6 `8 G1 s! N  W$ g8 r: o' X! K
  186. 参数
    & g- v, ^! m% h) p$ g3 C/ v& Y6 ?
  187. host: string,服务地址3 {7 Q1 w6 @; [; w
  188. port: int,端口号1 e+ v5 n! E) }$ S
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)$ v- m+ H1 h. x! t+ {
  190. 注: 在redis.conf中也有时间,默认为300
    6 A3 G# ~3 |" U2 h1 w& q
  191. - p+ y( \; h/ C" A
  192. pconnect, popen 不会主动关闭的链接1 q1 A% \& k. c, a) e: Y
  193. 参考上面
    4 p" {# x9 ]/ l: [1 Z$ N0 z" A
  194.   H" U+ e* ]- Z5 R  y6 g
  195. setOption 设置redis模式6 t, q4 @# E$ w/ R8 C0 D$ L
  196. , G9 Y5 l; I" W, X; v
  197. getOption 查看redis设置的模式
    9 o" S1 w! N1 V3 Q8 F+ u
  198. . S& B# ^. g6 F& n0 b' N
  199. ping 查看连接状态9 a. g" y% J# S8 D' Z6 [% o

  200. ' z' h5 @# L$ S& x. n6 A" ?- K# ]
  201. get 得到某个key的值(string值)3 R. @5 V( ^: M! o
  202. 如果该key不存在,return false
    1 x6 L/ j% M4 b8 v2 ?4 i

  203. + H5 T) F5 e9 ?8 Y" ]8 j
  204. set 写入key 和 value(string值)
    - i# Q+ J+ x, k0 o3 H8 W( F- D
  205. 如果写入成功,return ture
    " b% y$ e3 `9 c% i, s  W) ]
  206. - f5 S/ s+ n: c7 G7 Y
  207. setex 带生存时间的写入值+ I6 J/ A% r( a1 y- T
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    / N. Y* ~) w! I5 |  `0 I+ X
  209. # o5 W2 k0 n3 K  S! N+ L6 ]
  210. setnx 判断是否重复的,写入值$ a5 p. h( D" }% ~# P6 T
  211. $redis->setnx('key', 'value');
    5 ?' J0 {% a2 g5 L( F
  212. $redis->setnx('key', 'value');
    4 k5 E' o8 ^8 x. Z

  213. 5 v* H8 U8 N6 v+ J
  214. delete  删除指定key的值7 u6 G/ J) n% A8 g1 l1 e: V
  215. 返回已经删除key的个数(长整数)& t0 X6 j3 X( D+ m
  216. $redis->delete('key1', 'key2');1 j, C+ f& q9 |& v+ C0 j% J1 E  \
  217. $redis->delete(array('key3', 'key4', 'key5'));5 m8 L! }/ K( r( Y. r

  218. 7 W: X7 ?; ~: m& F2 O) \
  219. ttl% I1 G, N/ B' y" a% \) f
  220. 得到一个key的生存时间/ s( h1 a/ L% I* `
  221. 7 c) Z6 F% Y  ]! [6 p
  222. persist  U- {. A4 m8 f3 h! V7 [
  223. 移除生存时间到期的key
    8 I1 _6 \# N3 E3 N" [( C8 \" X$ Z
  224. 如果key到期 true 如果不到期 false
    * O2 I4 p! g" A* I3 j8 o* m
  225. / H% T$ S% ^  g0 X% g4 \
  226. mset (redis版本1.1以上才可以用)
    ( y" z* T5 W; j; z4 s4 F: C
  227. 同时给多个key赋值
    ; R& b- w+ f+ b
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ; K- V& i: i' m  E* y

  229. # A( w1 f$ F/ m, X) a8 E2 v- Z- t

  230. * P8 K- ^9 }" E1 [; q
  231. 6 q4 E6 ?) d/ p# \+ q* f
  232. multi, exec, discard
    * h' r! Z+ ~, D# j; D
  233. 进入或者退出事务模式
    ( q( |& l* l( Y9 M8 \. ?
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI9 M5 P8 f( p3 i  _/ L7 I/ ^
  235. Redis::MULTI:将多个操作当成一个事务执行
    , B; c  a8 ~# P8 a4 ?- [
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    6 c2 K6 [) g/ Q3 y) _
  237. discard:删除一个事务$ [& h0 p# n$ j) Q  V
  238. 返回值4 t( ?8 C' U, }! M
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    6 I7 i% A1 R% m7 C5 G# r1 ?5 l0 u

  240. 7 ]3 s7 X2 E  N: C: Q2 F
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    ) ^' H& R4 Y7 H7 O5 B+ P
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)+ a6 Y) I$ e7 J* _$ n4 v8 @
  243. unwatch  取消被这个程序监测的所有key
      P# s( X" g2 ^9 R" k
  244. 参数,一对key的列表0 l( h$ B3 a, `" E- |
  245. $redis->watch('x');9 c+ g. W5 ], Z. Q0 T$ i; L/ D

  246. 8 C0 R8 z2 S# V
  247. $ret = $redis->multi() ->incr('x') ->exec();
    ' D/ d# Q/ ]. ~8 m
  248. ( x6 K' s7 L; P/ m, q
  249. : U2 G1 Y8 E' o. ]
  250. subscribe *0 M' o7 E) D4 j
  251. 方法回调。注意,该方法可能在未来里发生改变8 h8 ?  s& N7 X7 o( Z( }" c
  252. 4 B! q" m) T% A0 A4 F
  253. publish ** F  i# l% g" o- @, f; p; \
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变4 d& Z4 L: T- N- b. x  w: U
  255. : Q& S% @) h( a+ W( S
  256. exists
    1 H1 W6 c5 H$ d$ S' L3 F' Y
  257. 判断key是否存在。存在 true 不在 false) P- v3 R6 H/ D) a- S
  258.   z+ ?' I; T2 _6 C3 G9 c! s4 S
  259. incr, incrBy3 e+ F7 P! t: q
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    : N2 k/ I, m/ f4 w
  261. $redis->incr('key1');4 O' f; c9 p3 k9 \8 w) e
  262. $redis->incrBy('key1', 10);2 D: E/ |" n  V" L
  263. 3 j7 q- K$ u# d' a1 \9 s
  264. decr, decrBy
    ( n4 J- ~+ v0 ?0 D# C/ d/ E
  265. 做减法,使用方法同incr! D! _9 x4 q4 K3 E

  266. 6 l2 h  G8 w) S$ y! y0 k; A9 v; O
  267. getMultiple
    , d- ], h; Z/ k/ b% n6 ?
  268. 传参
    9 g) W+ o% Y0 t
  269. 由key组成的数组9 Z* v) e8 c3 R' T* S  F
  270. 返回参数/ H$ I! I" x# Q% g# ^1 W8 n( G1 t
  271. 如果key存在返回value,不存在返回false
    ; r5 S: g1 C1 Q! D5 f+ s1 L" t
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));7 a4 i) G, G, q6 h8 D, ]8 u# Y
  273. $redis->lRem('key1', 'A', 2);
    - S8 l2 A( I# l/ ~9 M
  274. $redis->lRange('key1', 0, -1);
    1 w2 t: S1 j( ^) [' [6 T5 b
  275. ; \# a# y0 o% x$ K
  276. list相关操作
    4 m! V& q  a: c3 m9 F8 A9 o5 D
  277. lPush
      L4 O$ f! Q" ]
  278. $redis->lPush(key, value);- K7 ^8 E# k' \8 y# }
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    3 u4 O! t* N, C  K2 }/ k

  280.   @3 f  D) X) A6 y3 [
  281. rPush7 z7 E# {, F8 J) O, O5 N8 b& B* ~" n
  282. $redis->rPush(key, value);" h! R5 C* `: `
  283. 在名称为key的list右边(尾)添加一个值为value的 元素: D  e) n# P& }; Y* N
  284. ; U* s. D: j; I; L7 M, Z+ K. k" P
  285. lPushx/rPushx" F. v. S2 u" Y9 b! j
  286. $redis->lPushx(key, value);2 v$ U' W( u( Y( @- ]$ E
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加/ C# }! y: e) _  O9 r; N

  288. ) B7 B! ^% s3 [
  289. lPop/rPop6 \& N# f6 \1 A) y4 d
  290. $redis->lPop('key');
    0 i; U8 \" V% D5 |, o+ I: `% E
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素9 _. x3 K. g( W/ @* D! r

  292. 8 R8 d( c' u' h& n! L4 |8 w* M
  293. blPop/brPop
    8 |: _5 g* ^/ }/ l
  294. $redis->blPop('key1', 'key2', 10);
    8 |) b1 m) ?& `2 U5 i4 x3 F; z
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作& n& m- `" Q6 S

  296. 7 U  j5 w' u+ V- E
  297. lSize
    ' r- k7 k" T: G% m
  298. $redis->lSize('key');0 X* S1 d' ?% I" r* I
  299. 返回名称为key的list有多少个元素
    ) T, h: k- y$ l7 f' ^7 d- _8 R
  300. 3 O3 K$ g8 B& A* r
  301. lIndex, lGet3 H' j+ U6 y- x/ Z
  302. $redis->lGet('key', 0);
    + p) M) O6 w  O9 D
  303. 返回名称为key的list中index位置的元素
    % h7 I$ d9 j$ X  f3 F

  304. , o$ U) s) u0 F; C% H( N
  305. lSet
    - K' t7 ?, Y+ m' W/ v
  306. $redis->lSet('key', 0, 'X');
    / l: W8 D4 s# [
  307. 给名称为key的list中index位置的元素赋值为value
    , V. ^$ Q& n) C5 Q& @6 y1 `0 N

  308. . h; G: j4 {8 g
  309. lRange, lGetRange
    1 u* c, s0 h; S2 t* `9 k9 V
  310. $redis->lRange('key1', 0, -1);
      P# Z* m' p1 {( j. @
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)/ B6 j+ K" d# \+ r! g9 a" x

  312. + T$ g8 b2 j6 E' j' W' Z
  313. lTrim, listTrim
    ) t; l* x# _  s' Y8 ^
  314. $redis->lTrim('key', start, end);
    & b- I; r& D' a9 u# J& I
  315. 截取名称为key的list,保留start至end之间的元素
    0 Z& C. o6 a6 J% u: `

  316. 6 P. P' T2 w, [! l$ l
  317. lRem, lRemove
    - o7 @& Q' q& {9 J
  318. $redis->lRem('key', 'A', 2);
    ) g3 a# b2 V+ ]" j( A4 x; H+ Z
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素, F/ y8 v0 j& z/ j& s- |4 u
  320. 1 g! d6 N! r9 m7 K# k& z; L
  321. lInsert
    ' V. n) v0 u$ _  M
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -11 p# f* i" d5 W6 `! f/ d/ u/ m' f
  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');
    ! F8 B' b# F( v# X/ a2 V7 }
  324. $redis->lRange('key1', 0, -1);
    / T( Y$ W* H  F) j3 E
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');6 e4 M9 E$ l, M1 Q7 S$ P
  326. $redis->lRange('key1', 0, -1);6 j  x" L2 W! u- ]5 a
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
      g$ g% n$ t( A# M
  328. " q  w( V' t0 H% `* I$ Z, }
  329. rpoplpush
    * c- G- \5 w& C) z+ }( B  s; O% U9 K
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    & d3 k/ y9 @$ _0 W
  331. $redis->delete('x', 'y');0 B% b9 k* K/ r- H
  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'));
    5 Q& b. E  A* U" o0 w& t# D
  333. var_dump($redis->lRange('x', 0, -1));7 t% ?$ S! P, ?$ [1 s
  334. var_dump($redis->lRange('y', 0, -1)); % J- B. V/ g' W% ^9 L3 A0 ]% _% A

  335. ' x. \/ x# E* i1 `+ W
  336. string(3) "abc" ( O- U+ [4 s/ r. q* `
  337. array(1) { [0]=> string(3) "def" }
    * E0 }5 ?9 q7 A& ^9 V8 e2 @
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }  }6 u1 Q  u& R0 E* |  ?
  339. 3 D% L4 c+ d" ~! q% y) j) M% ]! Q
  340. SET操作相关
    9 A: u0 y$ o- t
  341. sAdd
    ; c- G/ A& i4 t
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false* ?6 n$ }( w) D& y, ?) `; A7 {: \
  343. $redis->sAdd(key , value);
    9 @) a( L* i- r
  344. , I+ Q' K3 O1 I2 q' n
  345. sRem, sRemove, ]  e- V2 Q4 m5 j/ m' x$ O
  346. 删除名称为key的set中的元素value
    7 z* r) o$ l+ }& c
  347. $redis->sAdd('key1' , 'set1');4 y; s- e* b& j2 @
  348. $redis->sAdd('key1' , 'set2');
    & E2 o/ e" G* k; d: x$ y
  349. $redis->sAdd('key1' , 'set3');! a; v  z, j7 x) Y1 _6 N
  350. $redis->sRem('key1', 'set2');
    1 @3 u* }. g0 c$ i) D! \

  351. 4 a: ]- U! o3 N
  352. sMove+ w+ K) U- j. w
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    + ~( ?5 K% V  v: @& J8 b
  354. $redis->sMove(seckey, dstkey, value);4 ?% |5 H. W6 g3 z: i0 \1 c- Z

  355. 5 R: x3 c6 r4 n# _# h
  356. sIsMember, sContains% D& |! Q  D$ D) H! u8 O, R
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    & C: a$ f% U: v: p# y" {; i
  358. $redis->sIsMember(key, value);
    & |. r4 v4 Y" g3 S
  359. & q2 N, V& Q! }$ {' m4 V- e
  360. sCard, sSize
    3 t; y: o$ u* R
  361. 返回名称为key的set的元素个数
    9 n5 @# ?- d( C* `9 R

  362. # z% W/ |  a- c& B* Q* d4 u5 Z
  363. sPop0 m& _* q4 B2 N- x5 r
  364. 随机返回并删除名称为key的set中一个元素( N/ f; y! D5 b: c# d$ l

  365. % g+ t2 s+ h$ D
  366. sRandMember
    / R9 Y3 W3 ?: P. C+ _6 u7 I" [. O& z
  367. 随机返回名称为key的set中一个元素,不删除  ?% y2 k3 J: `" S, a

  368. % F" @' g  h1 G5 j4 c
  369. sInter5 e1 k, K4 G; Q7 a. _! M
  370. 求交集
    ' P3 |# n. y* p) L: I
  371. ' S! \9 n3 _2 r. e# m
  372. sInterStore
    8 A; q( W6 ~9 `' h/ d2 o0 O
  373. 求交集并将交集保存到output的集合0 Q. F0 ?( v- o, \" `- b* K
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    5 x1 |5 W  T$ w
  375. 2 R* i5 G6 v& B  X8 B9 ~. X" @
  376. sUnion1 O" F$ w+ e  T7 P! y
  377. 求并集
    , L: N* A" q/ F( |5 _: T
  378. $redis->sUnion('s0', 's1', 's2');
    ' t! S& u) m1 _% {" n; l: `
  379. s0,s1,s2 同时求并集6 g+ [( O6 B3 J9 Y1 _4 T2 @

  380. % b; g4 `0 B5 r
  381. sUnionStore
    0 ]$ U1 I1 f8 H% L* l& B8 S5 q. r
  382. 求并集并将并集保存到output的集合$ ?" |1 W" I; u' B6 H
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    7 P* X# P& d' [" z3 c- m

  384. & I& ]+ F) Y8 g6 J
  385. sDiff8 S7 e2 z6 ]# W/ m! t) W. u
  386. 求差集
      o& K3 Y+ U6 F3 O, t  L

  387.   ^- E3 l' q# L$ f5 X6 _, S
  388. sDiffStore
    4 ]8 b6 V. [. B! t
  389. 求差集并将差集保存到output的集合
    # h; G1 y: l) D/ W, H

  390. 2 u8 M+ d6 ]& Y  v1 ~. M& L; a  W
  391. sMembers, sGetMembers( l# Z( M) }& R  r, V
  392. 返回名称为key的set的所有元素4 f( @- E* o+ K1 t/ O- Q6 x
  393. : i* I2 ?0 k0 c0 K) Z0 {
  394. sort( Z* S- M8 Q9 x1 @, m7 C. w3 C
  395. 排序,分页等
    : |* e+ ^/ t6 Y& O& K8 g5 w% q
  396. 参数+ p% P7 k( s7 N) j
  397. 'by' => 'some_pattern_*',0 U1 C2 k6 ?2 z( ]* I% F
  398. 'limit' => array(0, 1),
    $ k  S. ^- d* {' @
  399. 'get' => 'some_other_pattern_*' or an array of patterns,% f! a% n4 w8 ]
  400. 'sort' => 'asc' or 'desc',
    9 |0 @: y/ S# `" P9 S+ |
  401. 'alpha' => TRUE,
    2 X/ r5 j0 I' d
  402. 'store' => 'external-key'  V& x7 v0 P: Q: J# P
  403. 例子
    % Y9 Q" V7 c( Z! w) 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);* s: l3 d7 Y0 _4 t' |4 _4 l: s
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    7 f( g8 |4 R# n
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    # D+ c% B" r" s1 E
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)58 Y" o6 ]& e8 o" y+ z4 E# B
  408. 8 [4 o" C7 v' r2 }2 ]
  409. string命令
    9 F( x1 Y4 z% P. C/ i( \
  410. getSet
    . q  `) g2 W$ j( [2 p+ K) \# W
  411. 返回原来key中的值,并将value写入key
    4 T# u* G2 J( I
  412. $redis->set('x', '42');
    8 s. c7 n) G+ h' b! p
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'( I& s; l1 K, w( K: e- W$ a. _: _
  414. $newValue = $redis->get('x')' // return 'lol'
    6 U$ M! P+ v* U. H# \$ }
  415. ' l4 E! p2 ?8 B! r& ^9 M( h
  416. append) d5 Z; g4 g* V% K
  417. string,名称为key的string的值在后面加上value
    - X! v2 c  d, p* s7 H7 m8 Z
  418. $redis->set('key', 'value1');
    ) e. ]5 S& ]; V) R" Z" K+ f
  419. $redis->append('key', 'value2');
    - c) P' n4 A8 `1 Z
  420. $redis->get('key');
    % v# @2 A) q2 c

  421.   K% B) o) i3 F2 ~
  422. getRange (方法不存在)8 ?7 Y. N# N  |# S; l/ ?' c
  423. 返回名称为key的string中start至end之间的字符
    + }5 i; g5 z* G' n1 U
  424. $redis->set('key', 'string value');" y6 H9 b- \4 b  o4 G' W& H" Y! U
  425. $redis->getRange('key', 0, 5);* f0 ~) `( Y7 [
  426. $redis->getRange('key', -5, -1);$ b5 w0 U: T* R* \9 q
  427. ( k7 n9 ]. Z; w7 Y
  428. setRange (方法不存在)
    1 U) s$ r+ Y) g, V) R4 {
  429. 改变key的string中start至end之间的字符为value. X6 k( K+ q* [" t4 H
  430. $redis->set('key', 'Hello world');4 [3 l, S: b. k
  431. $redis->setRange('key', 6, "redis");8 w, W7 U: z- D$ U, a; K
  432. $redis->get('key');
    + A7 `* {) }7 M6 H1 e

  433. , K( t8 v! w3 _+ x3 k; W
  434. strlen
    ) b6 i5 x8 @3 g9 h, Q
  435. 得到key的string的长度
    % @" ~2 b- A5 n( P0 {5 a
  436. $redis->strlen('key');/ K( B: ?2 s6 ?5 v" s1 Y. H2 {

  437. 1 K: @. C& L/ x/ ]3 m
  438. getBit/setBit. f3 A3 Q7 q% g
  439. 返回2进制信息9 q. p" J" x5 P* T7 ?* b

  440. 4 j# W) ?; g+ T: x3 L
  441. zset(sorted set)操作相关) p; x. h3 X$ ^  _) K
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    ( S$ k$ z" k3 k! {3 L6 B2 B6 _0 m
  443. $redis->zAdd('key', 1, 'val1');
    4 v. g1 K- R3 N; U2 q9 Y
  444. $redis->zAdd('key', 0, 'val0');
    / Z5 _' ?8 M" M1 J+ q
  445. $redis->zAdd('key', 5, 'val5');
    $ x$ B/ ^' t. G! Q
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    : C9 z& Z+ X$ h4 {) |% c
  447. + ?) i8 ]8 l6 v( T* b/ v) v% `
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    ( Z3 `1 |0 _) w9 K+ o$ p  o. J( j5 E* d' F
  449. $redis->zAdd('key1', 0, 'val0');
    & C* ?* v, x) ]2 k
  450. $redis->zAdd('key1', 2, 'val2');9 k  x. c, G0 I4 P% D
  451. $redis->zAdd('key1', 10, 'val10');
    ) a% y0 i! J  e. k/ G1 U* J
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    3 N) Q! Q0 b: I- z7 \; F9 T$ q( ]/ Z) c

  453. # q* B" a9 O1 [- e0 ~) }
  454. zDelete, zRem% ~% U8 w" Y! O5 d* v- }" y
  455. zRem(key, member) :删除名称为key的zset中的元素member1 V1 a! }3 ^* S
  456. $redis->zAdd('key', 0, 'val0');* k1 \! R' s) S& l/ X
  457. $redis->zAdd('key', 2, 'val2');. e! r. u$ n' Q4 M% C
  458. $redis->zAdd('key', 10, 'val10');
    9 V0 m, k- o- s0 g: m8 ~/ i4 R
  459. $redis->zDelete('key', 'val2');
    : l; V7 r+ D; K0 z% t- }/ s  h- r+ B
  460. $redis->zRange('key', 0, -1);
    + O4 w8 l" D, j) Q

  461. / ]1 w$ m$ {$ s3 ]
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    7 W* i" P! v( [( q
  463. $redis->zAdd('key', 0, 'val0');
    # k( B' J  o3 r8 O& h; b0 @
  464. $redis->zAdd('key', 2, 'val2');
    - B, J, ~/ A1 E+ ?5 B
  465. $redis->zAdd('key', 10, 'val10');0 m5 G4 ~9 S* M
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    7 n" q& _" r. V" b* B

  467. ' X" [- ]* G: y9 C0 U" h. |
  468. zRangeByScore, zRevRangeByScore
    6 \( ?0 H8 S9 B+ T- @& v# @, n  S
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));' g1 o% d1 I1 a
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    / C+ \$ n+ ~; @0 @6 n
  471. 9 k" A* Q* m5 k: z& i3 O
  472. zCount! j/ R4 x5 l4 g" Y
  473. $redis->zCount(key, star, end);8 K" J) X# E* F# Z& }4 j
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    8 [6 J" M6 ]* U& W4 s. y  {3 P
  475. - b) S; e! A: |  m
  476. zRemRangeByScore, zDeleteRangeByScore- W" O2 \( o% \6 ^
  477. $redis->zRemRangeByScore('key', star, end);
    3 [! v/ j6 \/ W$ y% ]/ r
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数  S) v. \+ g9 k& m3 J) y6 }; \

  479. ' v7 M0 m6 ?5 J
  480. zSize, zCard( _8 P, ~& [6 X
  481. 返回名称为key的zset的所有元素的个数8 v; X9 l& r+ ?
  482. . A3 T/ V3 Y( K2 n6 E
  483. zScore
    " t- P# Q0 T- Y+ k  h* L1 m) L" H; Q
  484. $redis->zScore(key, val2);
    ! f% a5 \6 f* _; q" Y; i1 v
  485. 返回名称为key的zset中元素val2的score
      [3 Y, C1 N3 L0 V; i' n$ |; o9 V+ E
  486. ! H' s/ H8 l1 o! ]( `0 S% q
  487. zRank, zRevRank0 V+ a- z1 }2 g8 i. l
  488. $redis->zRevRank(key, val);
    9 u) a$ f6 `* F
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    # Z, |- I2 b+ Z6 d

  490. ! m1 C3 T! r# u  X: z) R
  491. zIncrBy
      n- G& Q" e/ W5 w) B
  492. $redis->zIncrBy('key', increment, 'member');
    8 S/ K! {6 o% ?% |4 V4 ]# Y  i* n
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    / ^: W) s5 R7 E1 ~, |9 ?
  494. " Q* v% F2 P' H* l
  495. zUnion/zInter
    3 m% A9 f0 d( a8 H/ I& y
  496. 参数5 ?1 ]; W* E' Y0 X2 Q- I
  497. keyOutput' p1 [5 e( Z) U  f: _, ]- `
  498. arrayZSetKeys
    . }4 t( F  G3 `& A6 q, q
  499. arrayWeights) y; M7 K; V3 w) b- L
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    , d' t) p; v& o% C3 `. K: _
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    % S" c2 w, E& @! T. A+ \' y
复制代码
1 _$ [( P3 n- h/ k
1 I6 v" W+ a8 {* |3 f

% ?* w. y2 v  C4 f* K6 ]
" H$ r" ~. P1 u1 E2 M( H+ X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    $ [5 g# {, V3 n
  2. //连接redis服务器 * x! y1 l. b: O* e4 R/ E, f
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 17:26 , Processed in 0.085678 second(s), 18 queries .

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