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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    9 D5 _! U, |) O, W6 {3 G
  2. $redis = new Redis();  2 j0 l6 m) X7 N9 N1 {' U* G
  3. $redis->connect('127.0.0.1', 6379);//serverip port" d/ W9 X+ ?; ?# B: B% [2 v1 V
  4. $redis->auth('mypassword');//my redis password
    . M$ u, f5 U; d+ a
  5. $redis ->set( "test" , "Hello World");  + k+ {7 g: s0 z' h/ i5 l
  6. echo $redis ->get( "test");
    / e6 y* d8 A6 B! X3 ?$ L0 F7 Y
复制代码
php操作redis函数封装
  1. /**
    ) Z* b# k# x& G1 [$ b- S
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数. J% C* u9 G* Z7 C/ m$ j
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi+ B" `. V7 F4 \. H& O
  4. */
    . N; k8 H" s( [; I/ q
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){: X" \: r! e9 b4 H! }
  6.     if(!$key||!$value) return false;
    7 X* E; M" m- a+ R
  7.     $host = $host?$host:getenv('REDIS_HOST');8 |9 \% \6 E4 u* c' |
  8.     $port = $port?$port:getenv('REDIS_PORT');
    ! U( k" D+ k# \. y8 n5 d* w5 Y
  9.     $redis = new Redis();
    ! O' |8 X9 d) O. B4 c8 p
  10.     $redis->connect($host, $port);
    8 U+ [3 ~1 s9 V3 N! ]& R
  11.     $value = is_array($value)?json_encode($value):$value;7 a# [# D. U: f3 J! r. w
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);; S# q: l6 e& x' N0 i# b
  13. }  N0 l) F3 J8 C. D1 Y7 c
  14. /**9 e9 f2 D6 `0 I' K! x, `) G
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    $ [+ d: @- y4 z2 v1 p9 k
  16. */4 k, P  J1 L, C/ E2 I$ W
  17. function RedisGet($key,$host='',$port=''){' M8 J; D7 e" j
  18.     $redis = new Redis();, |/ `* W: `& j! |
  19.     $host = $host?$host:getenv('REDIS_HOST');( r: x' m, E; T% ~7 O
  20.     $port = $port?$port:getenv('REDIS_PORT');
      R( c; `: ^+ S, k0 Q+ h$ e5 X
  21.     $redis->connect($host, $port);7 s& G% i! Z& h# O$ @  u
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);; G3 K6 j& L7 [2 w
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    " r. T5 d  H" Q8 a  H) f
  24. }7 y4 Y$ W- U! e6 Q: g3 w
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
+ u( h. R2 c: C
  1. setex 带生存时间的写入值2 [5 @# Y3 N" \
  2. $redis->setex('key', 3600, 'value'); 3 A$ V/ j2 ~9 C' d4 p
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    - ~8 ^, k& T* j, _* H+ D" g
  4. $redis->setnx('key', 'value');+ i3 }& H5 y1 ~; ~  [
  5. 返回已经删除key8 L' }0 W2 [5 p4 q
  6. $redis->delete('key1'); 成功返回1失败返回0
    ; D7 X" ?3 J7 e9 o$ @& ^
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0# l* c5 _; X- w! C
  8. 查询生存时间4 N$ Z, i  m9 K/ }. I+ D( X
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒), n8 C- Y+ `+ v) y1 A; i
  10. 同时给多个key赋值,同时设置key0和key17 K) a, M+ a" k) w% \: X
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));8 G! A5 }7 s1 U/ G! x/ V3 Y
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    + ]- f; k, k$ T5 V& w
  13. $redis->incr('key1');
    7 I* j$ P8 W$ @$ G8 e: p
  14. $redis->incrBy('key1', 10);
    3 [3 T# ], d( |0 n5 f
  15. 减法跟加法一样
    & Y3 b6 H) F2 `8 Q; I1 @% v
  16. $redis->decr("key1"); 减少1
    . j8 v9 Z4 V9 m: C' I0 N
  17. $redis->decrBy("key1",5) 减少5
    : t+ Q8 ^; e, Z1 ]

  18. * b) D* k+ E9 M6 e* X3 i% l0 c
  19. list相关操作,连表操作
    ( K4 O' b8 y4 ]4 L, G; o# N: B
  20. lPush
    + o1 P# a$ B) G( K% X
  21. $redis->lPush("list", "888");5 \7 a3 M, t5 x. T) h
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    / R, t2 K# ?, A8 i9 ~1 m# D8 R
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式0 N; o! ?/ _- J* f# A
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素9 Y! }: C+ L% W* m
  25. lPushx/rPushx9 W  }8 W- m1 e( l
  26. $redis->lPushx(key, value);+ W. I* k2 M/ f1 y5 c
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ! n5 B$ C0 Q& A9 j

  28. 2 B, @0 `# _4 G$ y
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    " L( B" M+ _7 k0 S4 \
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key' v6 b+ [- o) @; k' x  J
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回19 H; ^7 s( k  A1 a7 P; \" t. [
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    " E5 y# P7 p7 x* ]7 t' A! R- t
  33. sadd s1 zhangsan
    ( ?# R1 W! B! a* F5 N$ x) v9 E
  34. sadd s1 lisi
    " c* ^$ c4 s' x% G, R+ w
  35. sadd s1 wangwu' k: p8 o" E: Q6 k; d$ r" N
  36. sadd t1 yangxingyi# W$ T' h2 j& Z; `
  37. sadd t1 lilei
    $ l! B( k; v& V; \) Z9 {" S
  38. sadd t1 zhangsan' G* n* W  b* E3 q1 r( x3 S
  39. smembers s1 s1的所有集合内容/ `! {& T- D+ q& [; f
  40. sdiff s1 t1 s1有的,t1没有的,差集
    0 s% {! H+ I" ~8 [9 S8 n$ L
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    / Y/ [0 H# M$ D& [; k+ G) p
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    , ]8 {. v5 L- k. y/ j: z
  43. spop抽奖场景,返回集合里面随机的数6 u: \0 g# e2 }5 b& L
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    6 ~2 @8 Q+ r  H) L) z, F
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数) e" ?3 X( J- I1 D
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的6 w& s! i0 f% |4 [* p+ e% }# M
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    8 Z0 p- z' z* R' j, G
  48. $i = $redis->srandmember('s1');echo $i;
      e4 z5 U- o6 i2 |
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false8 |, `. y2 O1 ]/ \7 t
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    + h, r7 ^* u/ F* G, z! Z
  51. 9 R" o2 F# l$ z; Y* U
  52. zadd key 2 value 有序集合
    6 ]8 E- Z3 ]) A9 b! ?# J6 G
  53. zadd y1 1 zhangsan;1 j; g+ q$ |* ?2 V6 a
  54. zadd y1 3 lisi;
    $ c- B7 Z$ l& Q2 ]
  55. zadd y1 2 wangwu;
    8 r) K! X! w# p, m5 V1 X
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi2 V. O  @/ \! K1 b$ c* ?3 P) o
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    / }4 E4 ?2 W- b
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    ) d) Q0 y+ B! S9 u5 k0 u
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先' ~0 r9 }( q2 ^$ O
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    " s3 k  Y2 @0 S& a
  61. 无序就scard,有序就zcard,有z没有s1 Y9 I1 }1 b# J8 ]+ q0 }9 b
  62. sInterStore; Q( n, k3 y0 y7 m6 j+ g. Y
  63. 求交集并将交集保存到output的集合
    2 ^% W* R4 e& L2 B6 @5 N' s2 p
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    * v" V" h, F% G. C
  65. " y3 s6 Z( O: e) s
  66. Hash操作
    & i5 a' V- s+ v8 J  v
  67. hSet
    : Z* t+ @! r4 v2 `4 H
  68. $redis->hSet('h', 'key1', 'hello');
    " d2 V7 ~) M6 m2 m& ]
  69. 向名称为h的hash中添加元素key1—>hello
    8 j2 U: c, q0 q' ^6 L

  70. # b0 Y, M: c, `$ p
  71. hGet- q0 E0 g% E  X$ \! L, ^  z6 Q
  72. $redis->hGet('h', 'key1');$ A2 \% d* k( h8 Z! n3 B/ d% t' z
  73. 返回名称为h的hash中key1对应的value(hello)9 u. R$ E+ h( H

  74. 3 e6 o3 Y% z7 n" V+ ~+ m- ?
  75. hLen) y8 x, \: @1 \
  76. $redis->hLen('h');& H- j) h6 @/ U( ^* g  m, Z9 U; C4 _
  77. 返回名称为h的hash中元素个数
    2 a8 v$ x: N, Q, u  H
  78. % Z( `" z) E+ I" Y
  79. hDel; e8 H! I/ h3 q8 p4 _- B
  80. $redis->hDel('h', 'key1');
    + m' y, d9 R; S) x
  81. 删除名称为h的hash中键为key1的域9 [% a' C/ |$ y+ V

  82. 2 c- Y) L# h" u
  83. hKeys1 x4 D% i* q3 _& {& `" `7 r0 ^
  84. $redis->hKeys('h');* v9 B. B, c0 Q2 ~4 [% q
  85. 返回名称为key的hash中所有键
    5 V* O$ F! [; c. q% Q
  86. . Z# L7 Y% p& ^
  87. hVals; ]* |! T% Q! v# i9 Z& J
  88. $redis->hVals('h')# M5 [) V5 z( Z0 F$ [" d
  89. 返回名称为h的hash中所有键对应的value0 I/ d* L7 A8 `2 w- Q; S5 x

  90. ' G& Z/ f0 Z; E+ x) I1 E
  91. hGetAll
    4 z& p! P9 `: N# q( {7 @# O' {
  92. $redis->hGetAll('h');5 v+ u$ r- m- j
  93. 返回名称为h的hash中所有的键(field)及其对应的value2 t& K! O1 ]* ^( I) G# l

  94. ( C+ O  ]% {, L7 D6 `
  95. hExists) Z3 {% r: K# I# ~& r( @
  96. $redis->hExists('h', 'a');0 M; ?/ Z3 s- K- ~6 f: V- p$ A
  97. 名称为h的hash中是否存在键名字为a的域- B9 {! P+ {+ i" o1 W7 I; A

  98. 1 Y5 D% u# E' }; V
  99. hIncrBy+ Y) K6 c$ u# [: }* B
  100. $redis->hIncrBy('h', 'x', 2);$ W0 e- o. s3 ]1 f4 f( A" R  z' B
  101. 将名称为h的hash中x的value增加2
    : ~5 v) x5 d  d: h: y
  102. # n: v- O  i, |3 z4 d: d9 H
  103. hMset
    $ }" y, C7 Z1 z- v) o6 n& n* U
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    5 U& X5 J7 v7 F" e7 [$ Z) Q7 [: Q
  105. 向名称为key的hash中批量添加元素. [2 d, W- F0 {* Q9 w4 M( F
  106. ( a8 g0 |* }0 ~- g" G/ r
  107. hMGet3 O$ r2 f/ Z' Q4 T6 J* T9 k
  108. $redis->hmGet('h', array('field1', 'field2'));% Y) }9 D/ t1 l! a* s
  109. 返回名称为h的hash中field1,field2对应的value
    7 U8 G1 J/ h& c3 d( }4 ?3 ]

  110. 9 T3 z5 S8 P9 y
  111. redis 操作相关9 l' a  Q! q& I
  112. flushDB- u3 `+ l8 \4 t% Y) `
  113. 清空当前数据库
    3 r5 r+ [# ~& _9 u" N/ M

  114. 4 Z) F" ~: D3 Y! M* t2 M
  115. flushAll
    7 {2 Q. U: R# u4 @; s+ w! V3 H
  116. 清空所有数据库
    + U& K! V. Q: ^
  117. 1 s1 g+ o$ S* A9 i% W" f7 h, b
  118. randomKey
    " h$ Y1 t+ R) v# k6 y, {* v" w
  119. 随机返回key空间的一个key% c% n2 z$ p  z; P9 x9 c
  120. $key = $redis->randomKey();
    & \/ `/ W7 n" y/ O+ e) q
  121. # w5 g! ?0 @& C
  122. select
    # G6 N! t' u7 G1 c
  123. 选择一个数据库
    $ Z& X- d8 I5 r# M
  124. move
    ; r/ g1 l5 ~5 l) ^4 r, N2 z
  125. 转移一个key到另外一个数据库
    ; _5 E% f% x4 s5 E1 E  g8 q$ n; ?
  126. $redis->select(0); // switch to DB 0
    9 U) r( E' X8 e0 m. V
  127. $redis->set('x', '42'); // write 42 to x) g, \2 _- c; Y+ Y0 M
  128. $redis->move('x', 1); // move to DB 1$ s) N3 [2 ~& X  p3 z8 m: k& U
  129. $redis->select(1); // switch to DB 1
    7 o$ Q1 r; `4 L
  130. $redis->get('x'); // will return 42
    - c. M% ?) J/ P8 F- }
  131. ) k8 Q: o  D8 Q+ K' W" x
  132. rename, renameKey, ]" K  k3 S3 `* E
  133. 给key重命名
    # U' R+ |* g9 Q" y- V
  134. $redis->set('x', '42');
    3 R, V/ s* W# I& c
  135. $redis->rename('x', 'y');0 I1 m, A# I& o) m; l# n9 ?
  136. $redis->get('y'); // → 42+ p4 V, A* f: c7 D
  137. $redis->get('x'); // → `FALSE`1 ~: {& E3 y+ Y6 Q! n7 r7 n2 n

  138. ( y+ B6 r1 M" s* c- m: ]
  139. renameNx
    % Z8 d; `+ x. L* \6 d* ?2 u4 L1 h9 t
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    4 U) L, @! J) _  U# d
  141. 7 I% {7 B$ d, y% D& v
  142. setTimeout, expire+ `9 p0 G% A/ B
  143. 设定一个key的活动时间(s)& ~* ]3 j3 @* \# I9 j
  144. $redis->setTimeout('x', 3);. k- p- P; s7 _8 L6 ^
  145. 7 J; k6 N& \5 o
  146. expireAt
    + }( B' V  s$ r( O$ [5 y& E
  147. key存活到一个unix时间戳时间& y6 c5 B- _) w- r
  148. $redis->expireAt('x', time() + 3);
    / W/ K  p4 D2 Z3 ]- A9 {' ]5 s
  149. ( T2 K# G) K7 M; W4 `
  150. keys, getKeys, }" b9 f6 ~- m2 S  ]
  151. 返回满足给定pattern的所有key
    ( \# y9 X! g( ?: S% H; ]* ?
  152. $keyWithUserPrefix = $redis->keys('user*');8 t6 h2 i% s( X$ [+ j+ f/ S
  153. 7 l& a% P# n+ l1 h8 y
  154. dbSize3 |+ x, f  Y/ A; h# v" b+ r
  155. 查看现在数据库有多少key
    9 X+ ~8 i/ G8 C8 ?0 I2 K3 G3 n$ H0 f
  156. $count = $redis->dbSize();" v. P( g! i# _' ~  A

  157. & c3 \# W' J- @
  158. auth$ q# |  W" f% l+ S
  159. 密码认证
    ( m- Y- }/ h6 {, k4 u9 r
  160. $redis->auth('foobared');
      N5 a1 ^$ L; p+ X, G

  161.   S  U; c$ a" X, U! V& @. P. L
  162. bgrewriteaof
    $ Y* \" \9 H1 l1 l- ^" W) ~$ k
  163. 使用aof来进行数据库持久化
    7 z6 I/ K. w4 m
  164. $redis->bgrewriteaof();
    - G3 j( X$ b, ^  f/ n9 M% Q" q
  165. : b( B! ~) H- J
  166. slaveof
    : h: Q( H. w$ R! @  L. O
  167. 选择从服务器
    % v8 y& k; g% x% v. H
  168. $redis->slaveof('10.0.1.7', 6379);: }. D! Q9 R5 X0 [+ m
  169. " s, H5 Z  w" D; Z, m
  170. save
    2 ?1 M$ M9 B% h, a1 y
  171. 将数据同步保存到磁盘
    9 Y* p  c$ w2 q
  172. . N9 @& o( f* Y( M1 m! N) l
  173. bgsave
    % @" I. v) I6 {
  174. 将数据异步保存到磁盘
      T: c' h; F( }' y' H. ]

  175. ' o) e' w: c# D
  176. lastSave6 Q; N  g( @* [, |
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    1 I4 x4 ~7 D3 G/ Q

  178. 3 x: I0 Q& m3 u: A, W+ Q
  179. info/ j) h# G9 H4 H. I9 u
  180. 返回redis的版本信息等详情; {& @& b5 d& Y4 d
  181. - O: X7 Z3 S" B4 J& U6 A" N2 ?
  182. Redis::__construct构造函数2 k% b) I3 ^: P! j- a
  183. $redis = new Redis();
    ! [/ i+ N7 Z6 i7 }* ^4 R( o
  184. % q4 M/ k. N2 ^( B- w
  185. connect, open 链接redis服务
    - n  s6 o8 p( Z& ?# z7 H
  186. 参数' D# V) o: v* U6 n
  187. host: string,服务地址1 P. G  `  l8 P+ g
  188. port: int,端口号
    8 _, z, {* h1 H! ^: e* q
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间), z$ {' ^1 Y' }# z
  190. 注: 在redis.conf中也有时间,默认为300
    ) K" X2 Z) J0 n- Z% M6 m: N
  191. " q0 d4 K& ~3 a/ M# w
  192. pconnect, popen 不会主动关闭的链接' U* O+ S5 m+ I/ R- }( u3 K- X9 B5 x8 a
  193. 参考上面
    ! e( R" Q. G8 O3 v( I9 H- h+ M5 a
  194. 9 n% E, [% e) ]! m1 }' H( R! a
  195. setOption 设置redis模式
    5 F- t( j( R7 G) G1 R5 y; ^

  196. 7 H# `8 q# v9 F/ Z" J: Z
  197. getOption 查看redis设置的模式
    ' t2 Q8 e# Y% W) I8 [/ d& A

  198. ' K0 I3 B; d2 l# w3 y# o
  199. ping 查看连接状态
    ( O9 F3 y: _1 q8 L
  200. 3 |- D7 t7 w+ X5 q% |& b
  201. get 得到某个key的值(string值)
    + p' W2 U) B2 O
  202. 如果该key不存在,return false8 b4 W5 {. O5 F; m) g

  203. ' @/ m4 k/ h% ~+ h: f  I5 K' T
  204. set 写入key 和 value(string值): u* }1 G2 \4 m8 |5 J
  205. 如果写入成功,return ture
    / k+ j+ q! a! T0 C9 N# r

  206. % \, S* ]. l) ?% Y
  207. setex 带生存时间的写入值
    ' ?. h2 X+ i0 c4 [$ c
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.8 Y. w+ \' g1 N* I$ ?

  209. 5 S4 l! E& n" Q# d  Y6 f
  210. setnx 判断是否重复的,写入值
    ( C+ H, v6 u1 P" d
  211. $redis->setnx('key', 'value');* Y' C- w8 f  m
  212. $redis->setnx('key', 'value');  c9 x8 x0 e1 O0 _; c/ }# s

  213. 3 w2 ]9 _/ Z  H$ K7 B
  214. delete  删除指定key的值- x' d4 x; w$ B" {- ]' m
  215. 返回已经删除key的个数(长整数)5 q: l0 ^" Y# d4 ~
  216. $redis->delete('key1', 'key2');' b3 v( b4 ?5 O
  217. $redis->delete(array('key3', 'key4', 'key5'));
    ; k, e& b5 O& }, Z& G
  218. + Q+ I/ @: G8 ]: U3 S- f/ \; X. \
  219. ttl+ Z  u' m0 [1 Y
  220. 得到一个key的生存时间
    ) m2 u# Q! M% f) o8 ^) [
  221. " M0 Q  N- C, y; l# B; ~
  222. persist
    ) m7 N6 D( z" `/ s0 I7 K4 n0 _
  223. 移除生存时间到期的key
    , C( I0 w- s" j" J3 |
  224. 如果key到期 true 如果不到期 false1 G# d' J. r4 c
  225. " k: L3 \* Q4 G& t- _; L3 o
  226. mset (redis版本1.1以上才可以用)% U) y. D0 i2 L, r& K
  227. 同时给多个key赋值
    ; a% X( r1 Z& v( i" a5 ^2 I' ?
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    0 y! n6 h' M) {
  229. % ~3 N. a$ g) y+ B  F
  230. 9 C4 [; t2 G- O. c) I

  231. 5 m; f6 i9 D) ~! g1 I  e
  232. multi, exec, discard* a/ G3 b3 x; Z% n% A6 t% U/ A" C
  233. 进入或者退出事务模式2 J2 z9 ]" \7 ?. E1 q
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI1 s' B+ b; o5 s: p/ ^7 w$ m
  235. Redis::MULTI:将多个操作当成一个事务执行
    ; k  C$ k# S+ d2 g
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    % L. @2 P* L9 C  Q
  237. discard:删除一个事务, w- A, H! L) D
  238. 返回值
    * S. X: F0 q7 c5 G
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    # b) _  F2 f3 D7 s& r
  240. % e( G5 _* _6 W2 [
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    ( o6 c0 z3 w+ E# B8 N+ M5 D  q1 ^
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    & w' `& B1 b0 v% t9 o5 _" U0 B
  243. unwatch  取消被这个程序监测的所有key+ S* A& ]% C, U  N
  244. 参数,一对key的列表
    % Q$ X$ V2 H" w$ ^
  245. $redis->watch('x');
    ; }. w6 W2 M! m; e( v/ R' ]7 l, ^

  246. # n+ ?  y4 U6 h( u- ]/ v
  247. $ret = $redis->multi() ->incr('x') ->exec();
    ' v, t( o, ?/ u; S

  248. & `* t( l9 y- y3 L6 f. b

  249. 1 L$ S2 s# f, I" N
  250. subscribe *
    1 h6 U' e. F1 X* J9 \, m
  251. 方法回调。注意,该方法可能在未来里发生改变' p6 B1 E" W/ P0 Z( u
  252. 4 f0 t0 J0 t" k0 |! Y
  253. publish *
    % C; b7 Z$ Z/ S
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变( k" G) ~3 ^0 o0 |4 d! X) e
  255. / Q, {2 D7 {& O0 B) p9 M% M
  256. exists& I" {9 O' J/ ]! Q0 R2 ]
  257. 判断key是否存在。存在 true 不在 false8 _/ }7 O( f. B2 p
  258. 9 g6 E5 h8 |0 b2 L
  259. incr, incrBy
    , Z) l  {; ~$ e) C9 t! ^/ c+ o
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值- B. `* N) _# O9 X+ H$ r% s$ ^% ~" v# S
  261. $redis->incr('key1');
    4 q5 |. t; ?) }% q2 f1 {, P9 p
  262. $redis->incrBy('key1', 10);
    0 [/ m% K0 x. v8 `4 v

  263. % }; P9 w5 u# E+ B# u
  264. decr, decrBy6 c3 C2 @2 {5 Q, e8 t5 a
  265. 做减法,使用方法同incr, X) U# \: T. v9 d* F) y
  266. - u: M, C8 m6 W0 c& U5 U
  267. getMultiple
    9 \! K2 z3 I( i
  268. 传参: _& G0 q; A- Z9 b7 k: l. R
  269. 由key组成的数组
    6 h; f2 i3 u$ o( R+ w
  270. 返回参数
    7 t( A0 W- O8 G
  271. 如果key存在返回value,不存在返回false2 }$ m2 u' w. K
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));0 a3 [. P) M' `
  273. $redis->lRem('key1', 'A', 2);0 |; v0 y: i4 s9 e- m8 V+ Z7 S
  274. $redis->lRange('key1', 0, -1);
    6 C; ^" H* K' _
  275. ' a/ U2 ~" C& q- d; N' v! ~  a5 `
  276. list相关操作
    1 o  K, t* a% L
  277. lPush
    , B; N" E0 m; a2 Z. e0 ?/ J
  278. $redis->lPush(key, value);
    & l" O0 P4 `: q6 a. C
  279. 在名称为key的list左边(头)添加一个值为value的 元素% c8 w* `8 C4 H) Y  G) [: _2 J' E( ^

  280. / |3 z- s: ]9 D
  281. rPush
    4 T/ R' v. C' N& I2 g# G( `
  282. $redis->rPush(key, value);
    - J4 o; ]: q. X6 d" o9 ]2 I* |) y
  283. 在名称为key的list右边(尾)添加一个值为value的 元素0 P& O! }" g1 m

  284. # _  H9 n# H, B2 r: S) F. g
  285. lPushx/rPushx
    # Y) ]' g/ \" S+ ]
  286. $redis->lPushx(key, value);
    . n: _7 W7 F$ P, @, R
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    3 ?* C: G- h% N: M5 e

  288. 7 N+ b& n# l- V- w( ]! H6 c9 r- i
  289. lPop/rPop: d7 A4 u' C: t2 z7 d2 t* g& H
  290. $redis->lPop('key');1 X4 o9 V# o& |
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    0 D) N5 d& Z7 n
  292. , F3 D/ K: [1 p4 s+ E
  293. blPop/brPop
    9 w4 _# ?( q1 [: y0 `2 O. `, R
  294. $redis->blPop('key1', 'key2', 10);1 X% q, r+ Q6 K, s
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作4 X1 R8 A9 i' v7 F8 w$ t
  296. 9 Z  Q$ s9 a) ~1 T
  297. lSize2 j; P  I, N+ L8 N6 s: D
  298. $redis->lSize('key');7 b/ I6 X" k* T0 ]) M4 a2 t
  299. 返回名称为key的list有多少个元素, @" D' n5 m8 l: I

  300. ( t1 k4 ], q0 x$ r
  301. lIndex, lGet# G- @% F2 L9 G) l0 p& \/ ~
  302. $redis->lGet('key', 0);
    , }" k" p, |" U+ m" m9 q
  303. 返回名称为key的list中index位置的元素
    % h7 f4 J; J  E
  304. ' l  U" k4 M+ g2 {& i/ Y1 U0 F/ O
  305. lSet
    ' @( Q/ J0 M  v& P% o: k& e
  306. $redis->lSet('key', 0, 'X');
    8 v$ I+ R7 d/ S( F0 C
  307. 给名称为key的list中index位置的元素赋值为value
    8 [8 c4 X, v0 H/ k  [0 _

  308. ! j  F. ?  F! l' Z  }+ ?( O
  309. lRange, lGetRange4 E4 A4 e& |; f( r1 v3 N4 Y  O& O
  310. $redis->lRange('key1', 0, -1);9 _5 K2 i9 q" A. F7 X+ x
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)' R8 Z/ n( d1 s6 K  Q, v
  312. ! ?' a4 M& e+ A8 h8 X& f6 k% L0 [
  313. lTrim, listTrim
    ; D% t5 U9 M4 w
  314. $redis->lTrim('key', start, end);5 ]/ m3 F" G& \* p4 i
  315. 截取名称为key的list,保留start至end之间的元素
    5 O5 ]0 N) M3 j# g# p9 C/ F1 u6 n

  316. + _" h5 B9 C8 E( v1 C" ^5 ~
  317. lRem, lRemove
    0 a- D* P. @4 ]- n
  318. $redis->lRem('key', 'A', 2);
    ' C% ^. X+ t* r9 B5 q
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素' d1 ?* l" t; P( G6 K
  320. - W) T4 P# V: r8 k6 T
  321. lInsert! e4 P- ~2 A0 ?+ J0 v
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    * T5 P! O5 W0 J
  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');
    % w) b3 V' x. b* X
  324. $redis->lRange('key1', 0, -1);
    4 m' |5 ~  ?4 R+ q2 {' v
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    ! u+ p9 M. |5 t/ a( q7 i# `2 F
  326. $redis->lRange('key1', 0, -1);4 _* G& P1 e4 q+ @2 a/ n9 C
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    2 n# z1 h$ }5 Q' w4 n
  328. 5 m) }. D2 p( `5 F3 g# z# J
  329. rpoplpush" S  p  v4 I  L7 p' W
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    , y, Z  \& N& ^+ j1 M' Q( s
  331. $redis->delete('x', 'y');
    4 A# Z: o" @  z' ~
  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'));
      R& K' ?- U) _
  333. var_dump($redis->lRange('x', 0, -1));- T0 z4 v. Z( A, O% T- s
  334. var_dump($redis->lRange('y', 0, -1)); : q. P" J9 m& z2 O4 U' i, {

  335. : Z. }5 r) w" ?7 Q
  336. string(3) "abc"
    : p- S1 {6 w# k* E
  337. array(1) { [0]=> string(3) "def" } , @# H0 E( r& s! Q7 i4 s
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    ) f" N  C. H3 {! j! \0 h; B

  339. + }9 \4 o7 s6 E  @+ P0 t& \
  340. SET操作相关
    & ?2 g' A7 v+ F1 G/ H# g1 h
  341. sAdd
    + N6 a! t/ S9 l+ i9 _
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    & _8 N! p7 h7 a/ k
  343. $redis->sAdd(key , value);
    $ D/ @2 V; R% R# \( A

  344. / k0 B* c) f# _
  345. sRem, sRemove% e  A2 U) f% J# U* q3 @% z
  346. 删除名称为key的set中的元素value
    4 \- W- O& d' {* C) \* ~
  347. $redis->sAdd('key1' , 'set1');6 \3 z, W+ V+ p, |/ D! F+ r+ X9 V& \
  348. $redis->sAdd('key1' , 'set2');( o* u% o8 K, d* I$ z" f: m
  349. $redis->sAdd('key1' , 'set3');, u2 c8 C3 X* r0 f; A" z6 D% U2 W
  350. $redis->sRem('key1', 'set2');) t1 `% t: T9 P; [$ u

  351. 3 j8 n" H* }( ~  q( W# H! t# d
  352. sMove& o! [! T" ?. |
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    * p4 H/ I8 L! |6 |0 s& s
  354. $redis->sMove(seckey, dstkey, value);
    / A: k- m7 L- W' K

  355. 5 o$ c+ w' V- v
  356. sIsMember, sContains" }/ H4 _/ e9 H* \. \
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    1 {, j6 |1 ^5 w- p8 O4 T5 R
  358. $redis->sIsMember(key, value);6 T; E4 Y2 w! ?8 u4 R7 g! {- y

  359. " t, u, H) U$ \" ^( x$ X
  360. sCard, sSize) ]$ O- G# m) k5 f% m' G" s
  361. 返回名称为key的set的元素个数% g- D1 }. [6 E/ y- t( n/ D
  362. * Y6 Y  W2 z7 \
  363. sPop
    1 A' ?* n% C# }' w. U6 c: Q0 F
  364. 随机返回并删除名称为key的set中一个元素
    , u5 z7 f, j# Z2 f2 w, Q, m" B  m
  365. 1 z1 M  c8 j# i; M, P. u
  366. sRandMember6 {8 T( Y  f+ P
  367. 随机返回名称为key的set中一个元素,不删除: `$ o8 s/ {. o% M8 ?/ |4 Z
  368. 9 m( v3 _+ I$ x; s& m
  369. sInter* C. O3 q# h- W" _& A- |: k
  370. 求交集* z  D8 L6 U, Y5 L, n" k9 o

  371. 1 D- k- c" i2 n; D8 o- [, s
  372. sInterStore0 k" V  g! {3 Z& `1 \' M
  373. 求交集并将交集保存到output的集合4 D& d9 l8 |2 ]; Q/ h
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')( r+ b9 M3 d! A% G# E/ [
  375. / E; n! q: ]% o+ _/ j# H* d
  376. sUnion
    4 S# u" @* @% M/ s5 L
  377. 求并集
    : ]. W; R5 Y- `, q# V: m+ C
  378. $redis->sUnion('s0', 's1', 's2');
    * ~' e9 c. G6 P, A5 |
  379. s0,s1,s2 同时求并集4 ]; D8 q4 o4 M, h
  380. 7 Z( q) U/ N/ w- L2 ~  A
  381. sUnionStore
    & l1 Q1 n( u1 B' D! i/ k
  382. 求并集并将并集保存到output的集合+ e$ |3 k4 H* M/ [; T
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');$ p; v# ~) n0 A% B2 E
  384. " T3 N' b; Z% i% i+ \1 |1 w1 \
  385. sDiff8 `% q; X, s( I8 H& P
  386. 求差集( ?. v8 e9 a/ W! G) D

  387. 9 x/ v) L4 B, O2 {; H+ w
  388. sDiffStore
    ) k9 ]$ h- `+ b
  389. 求差集并将差集保存到output的集合
    : P4 \4 e6 @, t7 [: q7 G

  390. 5 R8 g* Z* V) g- Z
  391. sMembers, sGetMembers
    9 P) ~; U, B- N' F
  392. 返回名称为key的set的所有元素
    $ P/ j: O4 ~  o1 u* N( a
  393. , ~5 C" w+ ~5 u$ Y
  394. sort5 O  d  h. b% e
  395. 排序,分页等1 }& y$ ?$ @/ d; o
  396. 参数
    ; c" B9 H3 ~) M; r6 Y
  397. 'by' => 'some_pattern_*',
    % s  K8 ]+ R' w' h6 q
  398. 'limit' => array(0, 1),/ h' j5 k  J  c* |
  399. 'get' => 'some_other_pattern_*' or an array of patterns,9 P) U- j2 i7 U- a* h# E
  400. 'sort' => 'asc' or 'desc',
    9 l! w. ?# z9 u
  401. 'alpha' => TRUE,! U7 G7 V) J4 O1 r5 p, R8 E
  402. 'store' => 'external-key'
    8 z$ N: @, V4 s" J) w7 y3 M, D
  403. 例子. p, d/ |; x# }; s* i4 B
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);* S4 R; u( D! y7 m: k; Z5 O: c
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    8 R2 o5 ~7 i: x5 t: @; H: C( g
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    / c- E2 Z5 l2 F
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    0 C8 K' O- [. N' q

  408. 1 J, r4 K5 n/ }7 `
  409. string命令
    ) h, ~6 H) e7 s7 x
  410. getSet
    7 T* x& a9 Z+ F5 S
  411. 返回原来key中的值,并将value写入key
    ' [/ V8 ]/ A$ c& [1 n0 y4 V
  412. $redis->set('x', '42');
    " z' t) p# h7 F( e' p$ Y
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    1 U' Y  l$ `* k1 P% g) ^
  414. $newValue = $redis->get('x')' // return 'lol'
    8 ^+ T+ f/ f) X3 r' @% @. r4 d

  415. # N9 @3 s& ]1 y4 K) K& Q
  416. append
    ! @1 p1 @  Y! Z8 [, S
  417. string,名称为key的string的值在后面加上value" e8 x0 g4 m8 k
  418. $redis->set('key', 'value1');
    & `. S! Q) S. T$ ~8 Y
  419. $redis->append('key', 'value2');
    5 s) g4 r" U$ C" f9 m6 @
  420. $redis->get('key');3 g7 X$ P+ Y: g7 f# Y: P$ ]
  421. 6 C: v5 i9 {$ n$ {2 ^
  422. getRange (方法不存在)! g! ^9 I( H- r& I8 J* p2 s" [
  423. 返回名称为key的string中start至end之间的字符
    / w; _( ?( n* E5 U6 P0 g; H6 O
  424. $redis->set('key', 'string value');( k8 T/ j! l) ~
  425. $redis->getRange('key', 0, 5);
    5 g" C' @, p7 [2 S' Z
  426. $redis->getRange('key', -5, -1);& R+ u5 m6 @# o+ h

  427. ( O2 B" p/ _" L: `% Z1 J* a4 y
  428. setRange (方法不存在)
    9 [- _6 x% \/ T& ]3 s6 J) O
  429. 改变key的string中start至end之间的字符为value( f: I- \/ V' X9 n/ M
  430. $redis->set('key', 'Hello world');
    3 ~1 G: K8 J& k7 D" \1 l7 g
  431. $redis->setRange('key', 6, "redis");0 K0 ^/ c4 n" g+ p
  432. $redis->get('key');; E% @) |" M% e, a5 ^8 y- Y
  433. 0 H# ]) \# X6 F& t. P% ^3 b
  434. strlen
    4 ^% x# q. v2 ^. `0 |0 E. T  K+ h
  435. 得到key的string的长度, u" {+ V: g7 O: i# R% y7 y
  436. $redis->strlen('key');
    , R' c6 g* u1 T& F
  437. # P0 p: [: X3 [9 b
  438. getBit/setBit7 z8 s; L( ]/ @) b( L9 k, s
  439. 返回2进制信息5 ~, G1 [+ k; }: s: j9 y
  440. 5 h% _6 @: T) x& A# c+ P* K
  441. zset(sorted set)操作相关
    " F) u2 O! ]8 |  z! V! D( K
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。. n% i1 X9 `  m( Q. w
  443. $redis->zAdd('key', 1, 'val1');
    : ^, I5 ~& ?5 J8 S9 ?( k
  444. $redis->zAdd('key', 0, 'val0');
    . G& e, [8 @4 E+ K
  445. $redis->zAdd('key', 5, 'val5');
    1 l/ D* T. F& ^8 f+ ~: H
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    , @( Z+ U: ^1 {# v( L) z
  447. 2 b* L0 q0 ~: X0 T7 ?4 N
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素: d. ~3 B! J' R( R3 J
  449. $redis->zAdd('key1', 0, 'val0');
    ; n- B' o  ]' o4 ]( f4 Q! \; ]
  450. $redis->zAdd('key1', 2, 'val2');+ u* q& U' L2 z4 W2 ^9 v8 O% x
  451. $redis->zAdd('key1', 10, 'val10');
    0 U+ p" P$ j$ R3 y. K+ r
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);/ [  C2 R0 A: c4 Z& C0 V" V
  453. # O( u0 K; r$ E' c
  454. zDelete, zRem" \5 R2 r3 ]& X; _# M4 E
  455. zRem(key, member) :删除名称为key的zset中的元素member
      e! S2 ^- p5 z$ Q- ~' N  d
  456. $redis->zAdd('key', 0, 'val0');) L9 b% n1 x6 n& R
  457. $redis->zAdd('key', 2, 'val2');
    , H2 z: m& m2 m# k! X7 w6 v0 e$ K
  458. $redis->zAdd('key', 10, 'val10');
    ' T- y4 A& O- g7 B6 i
  459. $redis->zDelete('key', 'val2');
    * r* L+ O& G0 u2 n8 N9 n
  460. $redis->zRange('key', 0, -1); - o& b, c$ {- U2 @3 o

  461. & [8 ?  L8 ^+ L* U  l" Y
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出) t& [) E0 u+ H0 w: D+ H
  463. $redis->zAdd('key', 0, 'val0');
    , M4 `8 W5 r2 m3 k
  464. $redis->zAdd('key', 2, 'val2');
    6 Q5 }7 d9 ^$ n5 h' w
  465. $redis->zAdd('key', 10, 'val10');& _: _/ o6 V3 i) N0 w; Y/ h* b
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);9 h0 T# s* v3 C8 u2 D1 w

  467. ( l7 G+ B. s. k+ E- t& o( N  _. P
  468. zRangeByScore, zRevRangeByScore
    ! u0 E; y1 c; y6 X6 U8 y2 W7 a9 ]& R
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));* P3 V% d/ o0 x
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    1 S! ~6 p/ g* W" K: b
  471. % u5 ]( C4 \$ T: o7 G/ b7 S* i
  472. zCount" m/ w1 c7 k8 O! N2 r/ z8 U- k' }
  473. $redis->zCount(key, star, end);
    6 F+ ~! G6 A" I
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数/ f! {8 @+ K/ P. O3 _$ s

  475. , j4 J8 s- _5 c5 A) R3 m
  476. zRemRangeByScore, zDeleteRangeByScore/ q4 p! v! U" v# m( {
  477. $redis->zRemRangeByScore('key', star, end);- P3 }% }- J# Y% p
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数5 `: F# _( v- I( g

  479. 4 R/ H5 K) L! n- }5 R# m( c$ l
  480. zSize, zCard! K# I6 M7 a. t+ }! B. F
  481. 返回名称为key的zset的所有元素的个数
    8 [2 P$ c  u+ }1 V9 Y6 P
  482. ) O% D6 |8 l8 a3 L: I( q
  483. zScore
    0 J8 f. m% ?- Q( Y
  484. $redis->zScore(key, val2);
    , q" u! o( J# w1 A' H# W
  485. 返回名称为key的zset中元素val2的score* ~, q/ {% z, y# o5 r
  486. 4 F  F3 L' g! L
  487. zRank, zRevRank
    - Q2 J1 u. T$ d# Y' j4 p
  488. $redis->zRevRank(key, val);
    6 c( @4 a( m* r+ M+ h) U
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
      I% j& ^# P% [4 K( o' M: Y
  490. , Z, H4 \. G) Q2 ]- k/ x
  491. zIncrBy
    ' m7 ?0 j: V- z2 X+ R
  492. $redis->zIncrBy('key', increment, 'member');
    ! k- `8 V- p0 o( m! e5 i
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment8 F7 c* M* F  B5 S# Z
  494. & d# D6 }( v2 b* v2 R, }
  495. zUnion/zInter
    ! Z# g) T. l0 g
  496. 参数9 |. d& X: \1 |
  497. keyOutput
    ! p$ Y  N4 Y/ y% X' J9 g
  498. arrayZSetKeys1 o: q6 L5 z1 ~0 B/ g5 f4 ]3 Q
  499. arrayWeights
    8 Y1 a2 t) v4 r; o( `: E, k
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    . S8 f2 N& }1 X2 m: j; t
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    8 i8 e4 k+ l8 l4 p
复制代码
) u! Y* [# p3 _9 h5 I
) X+ Q3 b/ g/ F

2 g9 s7 K# H3 R2 d: U
, I! F# Z3 E7 o- Q4 E; R4 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); ; I& k+ j- i+ Q0 f4 U% i* ]& p
  2. //连接redis服务器
    7 {) M) m% \5 n# {$ K% K# S, [
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-17 20:00 , Processed in 0.076389 second(s), 20 queries .

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