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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    # G- I4 l- l5 _
  2. $redis = new Redis();  / v3 t& G# s9 E' ~+ U
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    6 J+ u5 J  |1 E1 d5 c+ W0 |% k! ^
  4. $redis->auth('mypassword');//my redis password
    , [& X# L8 P7 k6 {2 {1 `
  5. $redis ->set( "test" , "Hello World");  
    2 V. U6 {8 U' v: M
  6. echo $redis ->get( "test");9 K7 S( m& R- d  M# c! H
复制代码
php操作redis函数封装
  1. /**6 b  P% |- ~: ^% E2 C) r! f! k
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    % y6 \( d9 L2 Y" {
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi% x/ R9 w, Y, X& X  T
  4. */
    / Y+ K' `( }! ?* |4 [; U
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    - z4 r0 d0 C( V3 y% Q3 z$ ?. k
  6.     if(!$key||!$value) return false;
    , F1 i" N1 W% f; w+ G
  7.     $host = $host?$host:getenv('REDIS_HOST');: w; u# o4 t  z- V2 m8 {
  8.     $port = $port?$port:getenv('REDIS_PORT');2 v7 T, w) x/ }
  9.     $redis = new Redis();
    5 ]- b$ `9 C; D9 n% {
  10.     $redis->connect($host, $port);0 r- q$ j& v( |& P
  11.     $value = is_array($value)?json_encode($value):$value;( R9 ~/ e2 ]& e+ r  Y0 [1 _* n
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    : h! H5 i, y, \0 H9 m+ g5 k
  13. }
    ) @. o, _* m) `; S+ g
  14. /**
    0 F: F3 v0 n2 X
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
      O" g5 a6 [) d" n
  16. */3 w3 T; |$ ?3 `3 i
  17. function RedisGet($key,$host='',$port=''){
    ' {4 R' [- e3 A& M
  18.     $redis = new Redis();# q2 W, U2 Q7 b- W8 R( v
  19.     $host = $host?$host:getenv('REDIS_HOST');
    , W+ c4 h1 j  p/ P7 c" N# U' j. C+ ?
  20.     $port = $port?$port:getenv('REDIS_PORT');
    $ _& ?% H* h" d
  21.     $redis->connect($host, $port);
    + \. V2 y5 j, `8 s- K* V) B
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    ' ]4 t9 F; H1 }2 {
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);$ L8 R5 G. a& o1 G  ?: q
  24. }
    2 _( Q. f3 T8 A
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了" r7 j' N* @- s) g& i( z
  1. setex 带生存时间的写入值* G' }" m6 F* a  u" [
  2. $redis->setex('key', 3600, 'value');
    ( e5 }7 m& T) e# M6 {
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    , Y* i* V" P/ S2 @- }  F1 e
  4. $redis->setnx('key', 'value');
    5 Y8 o2 _2 n# S
  5. 返回已经删除key9 x- Q9 D9 F: S" K0 u$ j% D
  6. $redis->delete('key1'); 成功返回1失败返回0- D3 `- N  h  l4 A" F; _5 z
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    " {1 g) S6 O- m& e+ X
  8. 查询生存时间$ S# P3 S4 h- [. Y, }- x$ E
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)0 n! U$ v1 D' m; s9 a
  10. 同时给多个key赋值,同时设置key0和key1; L1 A) \$ W7 s+ V
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));0 X! }* i- Q% I' V+ w8 |
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    1 x, A; a/ D  n& ~2 I
  13. $redis->incr('key1');) i1 `% X8 ?& _% W7 r
  14. $redis->incrBy('key1', 10);
    3 l' y: W0 }  `( d* }  }
  15. 减法跟加法一样
    ! a9 x1 L5 f! N7 s7 p$ t& e  s
  16. $redis->decr("key1"); 减少1
    5 Y/ r2 w+ r+ x) P" n0 a8 S
  17. $redis->decrBy("key1",5) 减少5
    4 l& _) x3 g) w) }6 ]0 r; ~' A. m

  18. : s% f2 L$ G# _
  19. list相关操作,连表操作# C- C. S; t) |( i6 y
  20. lPush
    ! a8 ?1 l) r5 c; ?; w* Z
  21. $redis->lPush("list", "888");
    5 ]+ e; b$ s  `1 h& N% z
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
      i. w3 x. ~$ O
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    , Q* u) t- c( U3 X$ A# Y
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    4 K; P6 k8 v/ o
  25. lPushx/rPushx* e) b8 l& N* i, E& P
  26. $redis->lPushx(key, value);
    * M2 p: q4 ^' G, K: p
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加9 U; A- _0 E8 j) n& C
  28. * e" ~' q& ?9 }0 ~* L
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key7 @8 W, B; _+ f) \# ^
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key+ X$ O3 o5 A, }, C; M
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    2 R/ J  e' K  h, k0 o% `
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序4 H1 X& }* J/ x" p) l
  33. sadd s1 zhangsan: }4 t- O! I; _) a- U
  34. sadd s1 lisi
    1 b9 u: d! q0 D
  35. sadd s1 wangwu5 w8 ]- Y( }# ?7 ~. j
  36. sadd t1 yangxingyi+ }  r' A5 O6 |$ D) X2 k: z* z
  37. sadd t1 lilei4 _0 ~$ g& x- C, E. B' U( @/ E
  38. sadd t1 zhangsan+ k/ p1 h+ F4 ^0 G/ \9 ?
  39. smembers s1 s1的所有集合内容
    - L2 y+ r5 K4 d( K
  40. sdiff s1 t1 s1有的,t1没有的,差集. J) s+ q" ?4 l8 n5 r
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式. J  r, H9 {, \4 c' O$ T) L3 }
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    / Z' B2 m! O/ m( B" _* j
  43. spop抽奖场景,返回集合里面随机的数
    ! b* k# \% q, k" e
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了, G" [3 _% p9 w' A8 l( _- h: Z4 f, q
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数, H; v- R* n+ [! E0 N0 H
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的! s3 Q8 t6 F( R% V4 i+ V
  47. 随机返回集合里面的一个元素,但不删除,重复中奖, o. g2 c% C, C% k; J: u
  48. $i = $redis->srandmember('s1');echo $i;* J7 `0 |5 Z. A, u3 W+ w! g
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false. a4 `- Y8 t8 q  A) h
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false* m+ Z6 Q8 J  j) H  o* Y! t* Q
  51. + T1 S4 \  w! T* K, P  J8 k
  52. zadd key 2 value 有序集合! F8 M8 K% r* J" Y9 M
  53. zadd y1 1 zhangsan;
    : {* L, X4 C& s, s  m5 R1 V
  54. zadd y1 3 lisi;
    - C2 r: X( ~2 d. R, E( g
  55. zadd y1 2 wangwu;
    & d4 d( e# h( E/ O1 J
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi3 T7 S- U5 Y$ H) b5 Z
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    & i+ J6 j% P' i: O) z+ ~: Y. Y6 M- X
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键  B3 j& l. m2 x$ n
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先, d" z0 H8 h' O" K! v8 j$ A
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    1 P1 b2 K& e  y" u' C
  61. 无序就scard,有序就zcard,有z没有s3 f( G. N8 N. b1 L0 p; y+ s7 s
  62. sInterStore0 }" J9 D2 K! ?6 O0 z
  63. 求交集并将交集保存到output的集合
    ( e0 U% d% w) p& X" D* |/ d
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    - `; H8 C2 a6 E2 x( |4 i

  65. ' ~2 p& b: J+ o) W
  66. Hash操作
    + L; O! M. h5 R+ {" D+ Y; w
  67. hSet
    - s4 w% f) m8 }! x  T: ~0 I/ A- ]
  68. $redis->hSet('h', 'key1', 'hello');6 _$ N, ^7 R9 ?6 q+ b: {
  69. 向名称为h的hash中添加元素key1—>hello
    " W, ?' u9 @  F/ I
  70. ' U0 n2 |+ f- o' C- R
  71. hGet: _$ p8 u6 c% p5 e+ P
  72. $redis->hGet('h', 'key1');8 O$ t& r0 ^2 P5 j$ b5 F; u4 [0 m8 j
  73. 返回名称为h的hash中key1对应的value(hello)% V( r" V; l. I; t5 _  j
  74.   a/ @( I0 y# t' A$ V/ Z& @
  75. hLen2 }$ I; W/ n3 X& f8 }, B
  76. $redis->hLen('h');
    & S: N* j( l8 ?: w& }: |" p
  77. 返回名称为h的hash中元素个数
    2 g3 `9 R$ H' T* s/ e' Y
  78. ! E3 l# G% x7 R+ m; H- L0 z: L
  79. hDel
    / w+ [) a7 _: u
  80. $redis->hDel('h', 'key1');
    . V1 W# a6 T7 B0 v
  81. 删除名称为h的hash中键为key1的域
    & x8 x! Y$ l& ?- ~; X
  82. " M& X- ?  T4 }" E+ X" R
  83. hKeys
    * h% c( B  _1 z' C. M- {+ d( N0 D
  84. $redis->hKeys('h');
    * e5 X& ~( x& ~7 j* u, P% g! n
  85. 返回名称为key的hash中所有键
    8 c) N- E7 p& ~: C5 z* X

  86. 2 p* s( x, L* }2 f; d. ]4 E
  87. hVals+ o5 }$ _& m6 u4 f/ m
  88. $redis->hVals('h')0 t1 u& u. _4 s$ r  |, f3 j/ @' v
  89. 返回名称为h的hash中所有键对应的value/ z% Y5 u4 f; R6 y9 J
  90. - g! O9 u; W* s' N
  91. hGetAll
    5 C3 d- i9 V& y# y$ j
  92. $redis->hGetAll('h');
    8 l1 r" K" h+ L2 Y
  93. 返回名称为h的hash中所有的键(field)及其对应的value
      i: ~& y8 A! A' Q6 Y' Z& _
  94. & b4 Y% s" v: M4 e
  95. hExists* G( G* d7 P/ y, C3 D) T* I
  96. $redis->hExists('h', 'a');
    5 o2 h5 t1 c% g" U3 ~
  97. 名称为h的hash中是否存在键名字为a的域( J1 e' R( G! z* }2 z! x# T

  98. , p+ g: K  e0 X2 F8 i0 A% {
  99. hIncrBy+ S1 F# o) a6 F1 r- V# f
  100. $redis->hIncrBy('h', 'x', 2);
    & k; J0 f" |1 L
  101. 将名称为h的hash中x的value增加2
    . X7 h. z8 H3 ?  T% l

  102. " q) o- E9 j' k' w1 C
  103. hMset
    / g1 R6 `, r( x( _  U" r
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));5 w) W0 b, u# b5 h
  105. 向名称为key的hash中批量添加元素
    * _8 n9 d: G& o
  106. 6 J- B& G, A4 N! s( t" U
  107. hMGet
    5 d9 ]4 B. B9 l/ C) T# G$ e
  108. $redis->hmGet('h', array('field1', 'field2'));
    $ g4 v2 a$ o3 r0 t6 X
  109. 返回名称为h的hash中field1,field2对应的value  i& C% l7 z4 ~" }8 W

  110. 3 O' o4 B6 v5 a- x6 u# i( [
  111. redis 操作相关/ b! O' o) [3 N% p* e( [( o/ a
  112. flushDB
    5 }* H8 k4 Q) L4 j. g3 z8 y
  113. 清空当前数据库$ b; D+ ]( j2 J  A/ g

  114. 9 V- r/ J: U" [$ [  h2 f8 i
  115. flushAll& M5 j" Y4 [! N1 y8 x# ]. C+ V! q) W
  116. 清空所有数据库, q1 B3 B6 {& ]7 i5 a

  117. # h) i) J. v. i# V' t
  118. randomKey
    ! z% q& u- R9 E& {. L: e
  119. 随机返回key空间的一个key
    . r4 T! j# w: S- B
  120. $key = $redis->randomKey();
    9 T+ v! V4 a! T* k* g, q( N

  121. ! A0 y, U2 s' u, z9 G$ ?
  122. select
    ) e9 E+ k  P+ A1 z% U
  123. 选择一个数据库
    * e# _* ~9 d0 @) ~
  124. move
    ! J0 @7 o9 S/ Y* Z: Z
  125. 转移一个key到另外一个数据库
    5 v; ~) E1 f4 T2 p
  126. $redis->select(0); // switch to DB 0' n7 k& Y7 ?3 G5 H: F
  127. $redis->set('x', '42'); // write 42 to x. i1 ^6 e( d1 t# m. S
  128. $redis->move('x', 1); // move to DB 1
    + Y3 p0 X+ k/ ]
  129. $redis->select(1); // switch to DB 1
    9 v% |+ @4 Q3 Z5 F
  130. $redis->get('x'); // will return 42* f0 R" S: P+ v0 }: c- H5 Z& A
  131. , j- l$ w, F5 C$ }$ x. Y& C/ p1 [
  132. rename, renameKey
      Z  Y5 w% A! V) L. P; d
  133. 给key重命名
    ! Y" e$ B7 l! X/ h5 H
  134. $redis->set('x', '42');
    ) V4 x9 t5 h. Y; X
  135. $redis->rename('x', 'y');
    . ]& t% G8 g9 w
  136. $redis->get('y'); // → 42
    0 z* n8 ~5 F9 w* V+ n5 G
  137. $redis->get('x'); // → `FALSE`
    $ s1 S/ Z; O% E  t
  138. * [" z$ r5 M1 R2 s& o+ Q2 S
  139. renameNx
    7 g  t% a3 F( U6 {- U" \6 h  ~
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    : H5 ^1 t8 ?- _8 N- ?. H  \, {0 l% z
  141. $ }8 {9 F2 ]2 Z2 L* a
  142. setTimeout, expire2 U: ^  G9 O. N- d
  143. 设定一个key的活动时间(s), H! Q, c3 h. [: }, x9 D
  144. $redis->setTimeout('x', 3);) w" s4 {8 f; m. o' @' x3 s8 G
  145. ( R$ a7 S* X: C5 T& `' ~
  146. expireAt( E- t8 Z3 g7 U+ n( M0 j& X
  147. key存活到一个unix时间戳时间* a: G8 W3 ^! i* B
  148. $redis->expireAt('x', time() + 3);; E: m3 Q% d5 I9 J4 }
  149. ( O; z( `: n( F3 B  B! z; P
  150. keys, getKeys+ s0 V1 g- ~% y2 h2 d
  151. 返回满足给定pattern的所有key
    1 S( [. Q# s: d
  152. $keyWithUserPrefix = $redis->keys('user*');
    0 p5 \& Q8 T, B* r; w# E5 R

  153. 9 g8 @: ]8 m2 {8 b
  154. dbSize7 c( ^2 x* g( R# S6 L4 o
  155. 查看现在数据库有多少key
    6 f' o3 M9 a( D! r# o( t2 |
  156. $count = $redis->dbSize();
    + X; k( Z2 ~) Y

  157. 4 C, ^7 J8 k% c- ^( z
  158. auth; S' s; }0 Y; ?% ?- c
  159. 密码认证% f( g; C3 e/ B7 K* w" l9 I/ Q, z
  160. $redis->auth('foobared');
    ; ?5 H/ R( }, i  m% I: k! Z, b
  161. ! O8 F$ ~" ^1 y" p: v" }' X3 `
  162. bgrewriteaof9 j: g; u0 e& R! K( O" {3 w0 ^2 b9 x
  163. 使用aof来进行数据库持久化
    * e( y2 m' u6 F7 N- ]& c
  164. $redis->bgrewriteaof();
    4 i- ~8 B( Z5 I& Z9 w; M+ L
  165. 5 V) m  ]- Z8 Y6 k$ J% c5 Y
  166. slaveof: `7 [8 \- a3 x) N8 w
  167. 选择从服务器
    ! ^: g! i, I9 I% ~
  168. $redis->slaveof('10.0.1.7', 6379);( x9 r( n( i" i
  169. 0 ~* H5 r# f7 a* X: e/ o
  170. save" b" _' ~  j; ]$ w* F6 }+ n
  171. 将数据同步保存到磁盘
    # J2 Z! o) ]' }, I8 N) U  u
  172. * T) B% e  \9 a# o
  173. bgsave
    6 M+ g+ q. ^9 M% [$ ^+ c" y
  174. 将数据异步保存到磁盘
    : a$ h2 h' B4 Q+ ^9 \7 x0 ^

  175. + @1 k6 U' \7 i( ]
  176. lastSave
      N- J7 u" {7 @. W, k6 Y9 i
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    4 c& q' q" x' E8 g! F3 w

  178. + _0 p- u* M7 C" ]: j6 J
  179. info
    / b& b# W/ ~9 K  l. e8 P
  180. 返回redis的版本信息等详情$ }4 }2 Z- ]* {

  181. 9 O* ?  i! g) q6 m0 s( O5 ?
  182. Redis::__construct构造函数  b$ g# S3 m8 {
  183. $redis = new Redis();5 J3 J. {  b3 B2 E( t
  184. # c3 p7 B/ a2 M. J
  185. connect, open 链接redis服务
    $ T( [  t, y3 L( A0 \. J
  186. 参数( t4 |( S. c0 G4 D" _& T
  187. host: string,服务地址2 g1 L3 d0 y. }+ W  @; D/ u+ C
  188. port: int,端口号' s- ]7 M' v6 q2 a7 l) f7 ]
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)" g/ x/ {. `3 a+ p) V% V
  190. 注: 在redis.conf中也有时间,默认为3001 c9 D' E- I1 M: P+ [5 |

  191.   Y( R% T! a7 F: N4 c7 n# ~! o% W1 M% D
  192. pconnect, popen 不会主动关闭的链接
    ; h9 [9 u  [8 X6 ^
  193. 参考上面  P8 W  M" R, J7 s3 L& T
  194. ( M! ^- z7 u+ C3 m/ P
  195. setOption 设置redis模式% x/ \! @% E9 F3 f2 A/ X5 M/ N
  196. ! _1 ?: h" z+ v
  197. getOption 查看redis设置的模式
    % E7 w: C2 x7 u: D$ Y5 M

  198. - {3 ~; `$ n1 f$ t+ @% B
  199. ping 查看连接状态6 t8 n- u; G4 q6 a  Z+ I0 ^' X1 t" B

  200. * t+ Q( g# H. e4 i# s/ z7 @
  201. get 得到某个key的值(string值)8 L% N# k7 p5 K4 }  s( z
  202. 如果该key不存在,return false
    1 ^. W4 K% h& w: T( y

  203. # F7 _" s7 }' b' m
  204. set 写入key 和 value(string值)
    + P, a8 J& H$ c0 J. H
  205. 如果写入成功,return ture$ V0 l% ^2 e/ q/ _7 [2 ~
  206. / Q  {, F4 F- @6 V2 P  y1 P
  207. setex 带生存时间的写入值" g  a5 P6 ~8 e! ?
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    " [* i, q9 g6 R5 W. ^  _& L

  209. ) Q7 O" ^0 h& L- Q
  210. setnx 判断是否重复的,写入值* G  t- w9 j: P- H
  211. $redis->setnx('key', 'value');
    $ \2 U6 P) v) V' `& @1 n. f
  212. $redis->setnx('key', 'value');
    8 B5 v4 _7 Z- N9 X1 N" W
  213. / J# @2 [6 i% v' T, O4 [
  214. delete  删除指定key的值$ L6 a; O: s1 w
  215. 返回已经删除key的个数(长整数)8 o* \/ @/ p" w2 {" H1 H, `' N
  216. $redis->delete('key1', 'key2');
    2 h4 p1 G+ c# f8 D8 B
  217. $redis->delete(array('key3', 'key4', 'key5'));
    * t/ T9 E4 T( e

  218. ' ?$ D! ?- b: z3 N/ U
  219. ttl4 J# P( m8 G0 L0 l
  220. 得到一个key的生存时间8 h7 o% l& Y: v  z# R

  221. % p: G% \9 h- ?! B4 T" z9 u; W
  222. persist
    ) |( ?: S+ J# `( x5 w
  223. 移除生存时间到期的key) m$ @2 ?- _. m
  224. 如果key到期 true 如果不到期 false
    " H2 b3 x8 G( p& |, z
  225. ( S. m( H( D4 }
  226. mset (redis版本1.1以上才可以用)
    , i! q& U1 w! V% j% s# G
  227. 同时给多个key赋值
    + [1 ~' H) c' U, [+ W6 p
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));- Y( f" W  B& V6 G

  229. 3 L: T) U" f2 a: _
  230. 9 T0 E8 v/ @! N" K

  231. / U$ [  X. v! M4 S" F0 C
  232. multi, exec, discard6 Q, q; `5 Q: |# K7 ], T
  233. 进入或者退出事务模式
    $ {: q9 `( M- a. A# v
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
      X2 N- N7 F( w& P( B* ~$ U
  235. Redis::MULTI:将多个操作当成一个事务执行, ?4 {, q6 D% V) ?( L3 V+ r4 Z1 y
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证! Y: A4 P8 D) |8 h( m1 q( }. g, R
  237. discard:删除一个事务* M* G% P3 r8 W  ^
  238. 返回值
    4 r! m+ y7 h0 a0 o
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。! F/ v7 _8 v. g! D
  240. 7 z& O1 W; r/ I
  241. watch, unwatch (代码测试后,不能达到所说的效果)! P. O2 }% u6 x' w5 x& `
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    . N' m, ~  M; Y" c+ o/ ^% M
  243. unwatch  取消被这个程序监测的所有key% a$ J3 Q. W+ b; W2 j1 K: H
  244. 参数,一对key的列表
    * Z( j! z' B" R
  245. $redis->watch('x');
    1 ~7 a( m2 T; b' l- K$ h+ y

  246. 9 Q2 s4 P+ [- e1 U- S( o, o
  247. $ret = $redis->multi() ->incr('x') ->exec();8 @; d9 {7 g. ~6 Y. i8 ~
  248. . N2 e2 o6 o2 I% o! N7 x

  249. 5 U, _0 J0 u3 N( [. ^
  250. subscribe *
    ' {( D9 q! m& l' [+ I
  251. 方法回调。注意,该方法可能在未来里发生改变
    ! d! [# k+ h7 \6 a5 M' X/ k  l; A
  252. & L! K7 v6 Q3 ~$ I8 ?" N5 K
  253. publish *0 E" C- D6 g' |1 T( \$ t! d6 U
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变) v3 X6 k+ \' D7 }7 I! J% O) x
  255. 0 e3 p$ l. r( ^4 s, Q' h
  256. exists
    7 O" L* @4 [6 ^, C
  257. 判断key是否存在。存在 true 不在 false
    & G" ~, a' m# N+ T- c$ d

  258. 7 e. s& q$ d6 `- B
  259. incr, incrBy
    + Z& H6 L$ M! C; i
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值$ ^" f; g% j" \9 l2 o, C' l
  261. $redis->incr('key1');- ]8 ?  I5 `# H5 B
  262. $redis->incrBy('key1', 10);
    2 u1 n5 L% X  E+ i; ?7 D& T
  263. ) t9 x, ^5 s1 F5 e( k$ t8 N6 M/ u
  264. decr, decrBy/ A: ]+ W5 D' Q9 ?7 t+ y
  265. 做减法,使用方法同incr
    % t- Z  k0 ]5 D/ @: x& M: b

  266. % `. r) g, x4 m" L* I- d/ r; g2 R
  267. getMultiple
    3 g& X! \" y, a4 ^7 ]  r
  268. 传参
    # ]3 U- ]! b$ ?7 o/ W, v# T
  269. 由key组成的数组
    ( I, O. z" R+ |9 V, d$ c
  270. 返回参数, k& X2 x1 _0 _6 e( R4 v
  271. 如果key存在返回value,不存在返回false
    / n6 ]4 y- C) H5 b* C2 c4 Z# G
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));! }4 n. \* j& V' s) p7 J& f& K9 _
  273. $redis->lRem('key1', 'A', 2);
    3 d% d' a7 F1 S; O2 W
  274. $redis->lRange('key1', 0, -1);
    ) n' b0 |4 }! z% \/ f) S: q: \
  275. 0 F2 u* h/ u" s
  276. list相关操作
    % R) p2 ~* D! E% i* \3 k
  277. lPush
    , f6 J8 H+ ?: U% m& ]* `# A0 |! w
  278. $redis->lPush(key, value);" S8 J! P, A8 o0 `9 ~( ?7 L
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    - c$ T8 V/ t4 D7 I5 d
  280. * [" l0 d$ ^; C% ?
  281. rPush0 P: t7 l0 S- b7 E0 R- x  r% c
  282. $redis->rPush(key, value);# E2 k. F" b) O) E5 x% x
  283. 在名称为key的list右边(尾)添加一个值为value的 元素1 o( y8 q9 m! E2 K( j( T) S7 J5 x0 A

  284. 1 f* W9 C9 N9 n5 Z
  285. lPushx/rPushx4 X# Y% t$ |2 J+ t- Z6 R/ j" k0 O
  286. $redis->lPushx(key, value);$ L, |% x8 s( T; v$ V
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ' i+ o: e7 _5 R* N1 Y$ v0 G1 `8 o
  288. . B1 J% Q+ `8 i5 w
  289. lPop/rPop1 K, ~" \( T& @2 F; K
  290. $redis->lPop('key');- p7 s) y. ~* C" Z/ k+ J! N
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    , F: q& }, M; f' @, Z' G" q

  292. 2 j& X: T0 C: u
  293. blPop/brPop4 A9 V( K1 n( O+ J
  294. $redis->blPop('key1', 'key2', 10);
    , d) D8 z" c( j1 h  v
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    7 j2 V" g# o9 c1 U0 I, J$ J
  296. / A) |3 c, f& F  z
  297. lSize  n( Q, G3 v- W3 _+ \2 b% T: ?6 S
  298. $redis->lSize('key');4 {, X5 C( @7 j9 b8 \
  299. 返回名称为key的list有多少个元素. ^  o; `' k* S5 w$ |$ y
  300. # J  u4 \. n# N8 c% w1 A
  301. lIndex, lGet( b) t5 ?+ S" @- ]! F+ }
  302. $redis->lGet('key', 0);6 f, ^9 m3 c0 s% q8 P- M6 C0 n: a5 B
  303. 返回名称为key的list中index位置的元素  \) o* ]5 U( H; V( P/ H8 M

  304. . {, C  ]/ a  m& R
  305. lSet
    ) {$ S& E  @; F2 U% x! S1 x) Y* d9 z
  306. $redis->lSet('key', 0, 'X');
    ) S4 ^; B& e3 F
  307. 给名称为key的list中index位置的元素赋值为value
    " f" v6 _, C. ~! u& q
  308. . `! W% V3 r( u: r6 l+ T8 {" B9 E
  309. lRange, lGetRange
    ; d1 r) ^7 ]0 N, I; a8 K" E' N7 K
  310. $redis->lRange('key1', 0, -1);
    ' i4 q8 F' }3 E( M; }7 l
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    % N5 ]: Y) w7 G# J" t$ O) N0 p
  312. / d( Y- x4 S1 K$ n/ _0 C/ E
  313. lTrim, listTrim
    - ^9 C$ U' u2 u! X
  314. $redis->lTrim('key', start, end);% ~+ s) Q) e% \+ M( m9 U- s/ ?/ }
  315. 截取名称为key的list,保留start至end之间的元素- ~( ]' X4 h3 t: }5 x& C

  316. 4 b! `& Q( g/ ~0 `
  317. lRem, lRemove& O) ~5 @! Y) {5 i9 I# I# \2 F! J/ h! z( j
  318. $redis->lRem('key', 'A', 2);; ?4 G; h* O8 l/ r! a9 h# T
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素8 A, J  \( x  U7 H' ^) A) e

  320. ) h% R/ }# k: ]' O1 M
  321. lInsert
    + W5 m  C8 I  w- Z% u: ^
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    . a% h9 k3 s; d
  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');; z) O7 _5 D% t& c
  324. $redis->lRange('key1', 0, -1);' v: M. p$ d+ ]6 x; Y! C3 T( _) G
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    7 `' C* l5 ~5 w$ t  E
  326. $redis->lRange('key1', 0, -1);
    8 a/ Z* @. \8 }
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');. j- Z" ?9 A; p6 z
  328. ; E7 Y. [1 [! T4 v; @: k8 F
  329. rpoplpush+ ?* C: n5 E6 T: t! N/ p5 e" B' e
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部0 D3 x- F' n* [  m$ \: _
  331. $redis->delete('x', 'y');
    . L# I2 z% @5 W- `  \: B5 B
  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'));
    ( u$ G  c5 R) Z0 P7 e
  333. var_dump($redis->lRange('x', 0, -1));
    5 q% n/ I/ \) r$ j
  334. var_dump($redis->lRange('y', 0, -1)); / W& d/ d$ e. Y- ^" `

  335.   e2 }2 l5 P7 V4 p4 }0 T5 r3 {# O
  336. string(3) "abc" ; C. i) ]* u: n& d& I
  337. array(1) { [0]=> string(3) "def" }
    5 T* K3 U9 L4 h$ D& w0 Y
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }+ v& f8 k2 x+ a  ?- ~( D

  339. 2 _: n3 y4 E, f# b) _* _+ ]
  340. SET操作相关7 d( N+ Y. R6 {+ r; z6 g2 n) F, r
  341. sAdd
    ( r; b/ B1 r0 T% ]8 [, Q3 H( m
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    * T9 R' w; A* `$ Y+ f* c/ d  C
  343. $redis->sAdd(key , value);" F) ]- d0 M2 m: I# a
  344. ) m# P/ w( W; ^& Z
  345. sRem, sRemove
    6 W0 r% U0 |3 o3 F
  346. 删除名称为key的set中的元素value; I' N( G- \+ ?
  347. $redis->sAdd('key1' , 'set1');! |7 b. c7 v: a9 x7 O* L+ \
  348. $redis->sAdd('key1' , 'set2');) H" X+ v+ _& k5 Y) U5 O
  349. $redis->sAdd('key1' , 'set3');
    - [9 T2 d7 J8 X3 `& j
  350. $redis->sRem('key1', 'set2');
    3 ]% j% e. P& B2 |2 q, d

  351.   ?5 {+ S" I& n. S: H3 _! Y9 X4 K8 `$ i
  352. sMove2 Z/ h( n. h: p0 s
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合  F# r( V: c, |, g* c1 i
  354. $redis->sMove(seckey, dstkey, value);1 @- d& e/ P& p/ D* A0 G
  355. ; @; _/ Z) J2 S- ~# q
  356. sIsMember, sContains% f6 S; \! y, @' D8 c9 A% ^8 H$ e
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false. ^, Y5 H5 q. v; U2 F! p9 e. ?9 b( n! O
  358. $redis->sIsMember(key, value);
    5 O1 d1 p. J  B6 _

  359. % J/ G. o( b6 l! v% B% N
  360. sCard, sSize- i9 E% `7 y4 a1 |) S
  361. 返回名称为key的set的元素个数
    5 d& p" I1 D% e! o  [9 t

  362. ' A) i3 N5 N2 }- l5 X4 M
  363. sPop- J  Q$ X7 V# O# ]  U
  364. 随机返回并删除名称为key的set中一个元素
    6 T. C3 u9 [9 x% j0 `
  365. ' X1 b+ _4 d& `6 z
  366. sRandMember
    ) l# J, t, b$ F# A2 V
  367. 随机返回名称为key的set中一个元素,不删除, j2 W7 a$ ^- c9 U* T) @$ _

  368. $ p, l& Y6 d9 l, T* E
  369. sInter
    7 f4 u) f( u3 |
  370. 求交集1 w* X% Z9 Y: X- P5 E! d' B

  371. $ h: _( l+ Q! l/ Y
  372. sInterStore1 s5 B) b* N2 O# j2 t
  373. 求交集并将交集保存到output的集合
    6 ?0 C. @3 }) q* h/ J8 K& a; H( L6 ]* t
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    3 X* T7 {' @" K) X4 Y. }1 W3 o0 i

  375. 8 w1 M8 u3 C! v2 ~- p
  376. sUnion; }* f9 c2 n: G6 J& S) |# b
  377. 求并集* y% M, }( L) T  y
  378. $redis->sUnion('s0', 's1', 's2');
    ; {: M% R) @# I
  379. s0,s1,s2 同时求并集  F" r5 ?& Y  E$ X! l" }
  380. 0 {5 W. C. Y/ x0 a
  381. sUnionStore
    - j5 ?3 u9 \: r# w; D+ m8 q7 E
  382. 求并集并将并集保存到output的集合1 W0 y8 T5 ?1 E+ S* r7 q) N
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');' f+ o  n$ o3 a* a% q1 c: C$ o& n
  384. 5 ]$ u5 d: y7 o) y4 P; m
  385. sDiff" ^, C; m) S5 d( `$ k& u% P! {4 U) K
  386. 求差集) d$ e3 _# h" e

  387. 0 I4 [9 J( u. n: C
  388. sDiffStore2 b: B" S9 b6 D2 U
  389. 求差集并将差集保存到output的集合6 U/ W8 [3 \4 x( K# m* }

  390. / D, c) `+ n; @- e. h
  391. sMembers, sGetMembers* c6 i, I: G1 R* b/ y
  392. 返回名称为key的set的所有元素
    7 a) Z" v7 O4 o$ b' z( d0 P
  393. 1 H3 I. Q, A, R& ~! @- s: L/ {
  394. sort# u1 H+ Y9 }( c
  395. 排序,分页等* x$ y; `/ W1 v
  396. 参数' f% a- q/ U1 r
  397. 'by' => 'some_pattern_*',
    5 {; c9 l0 n- q6 O) Q7 C
  398. 'limit' => array(0, 1),
    & g# @- O0 b) c
  399. 'get' => 'some_other_pattern_*' or an array of patterns,* }) r# ]1 A. Y0 v. B9 {; [
  400. 'sort' => 'asc' or 'desc',$ V2 H  J! |5 G! L
  401. 'alpha' => TRUE,
    2 U8 N7 ~8 m% N* ?- N
  402. 'store' => 'external-key'2 ^( H* S) z4 |7 c6 A  R* _, G$ Y
  403. 例子
    * t! D2 Y1 m* J9 L
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);9 `- j, P2 C- x. U
  405. var_dump($redis->sort('s')); // 1,2,3,4,52 w* @6 `. }7 t
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1& N, |. m6 ^! Y; i% L/ H- t) H
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5. F- H/ b, B2 J

  408. 0 l3 X4 T  F1 H# d6 j4 b" D
  409. string命令1 y4 P/ ]4 C6 {9 C8 Z4 m
  410. getSet
    9 j: A: \" m/ t% [% Y; L& |
  411. 返回原来key中的值,并将value写入key
    # s6 c/ ~5 n" |$ N. _/ S: q
  412. $redis->set('x', '42');" S, X! ]% F  A0 ]6 m
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    8 g" k  e. R/ n3 E, H* I' k: T! y: k/ u
  414. $newValue = $redis->get('x')' // return 'lol'; [! j! Z7 t( }- j) S

  415. 3 I4 a* j' W0 u+ C" s9 }
  416. append( P$ D, T! _% C" @& v* U
  417. string,名称为key的string的值在后面加上value4 C! R2 O- s+ i7 N9 G6 L# F
  418. $redis->set('key', 'value1');
    " v" ^; Y5 }' n$ {; K1 Q# {: G
  419. $redis->append('key', 'value2');0 R* W# [' r/ q  x$ O
  420. $redis->get('key');
    # j! W1 H; l# z" ]! l+ D0 a4 [

  421. 2 j. e  n- i2 t! ^3 s0 Z
  422. getRange (方法不存在)
    ' ~  z3 E* S. _2 b, {2 e- X
  423. 返回名称为key的string中start至end之间的字符
    6 H/ l7 k; h. v" c4 ]4 E0 H
  424. $redis->set('key', 'string value');, V1 o. T* z3 ?' L5 o" \5 B, |; B
  425. $redis->getRange('key', 0, 5);# _( x8 E; v& T% d/ B
  426. $redis->getRange('key', -5, -1);( x- [( z7 C  ~" C! h
  427. ' a# Y$ K+ k9 P
  428. setRange (方法不存在)# P) P% K7 Y2 f
  429. 改变key的string中start至end之间的字符为value
    ) x8 z$ F* |1 i
  430. $redis->set('key', 'Hello world');) h4 A0 s% b( f1 d8 B8 U/ a
  431. $redis->setRange('key', 6, "redis");
    + `$ t+ U# P% X9 @3 j+ O( K
  432. $redis->get('key');) S2 I  `( m$ G( L6 i3 }

  433. 2 d, K" b; B3 t$ Y% {# v; Q# f
  434. strlen9 ~3 O. U* X; V2 A
  435. 得到key的string的长度! T" u4 Q$ z) c
  436. $redis->strlen('key');1 }+ L; g3 H0 Z3 q0 d

  437. 7 u5 N$ v6 v/ w# y: w
  438. getBit/setBit
    ) B+ }1 Y( @$ A1 a1 x9 l
  439. 返回2进制信息9 I! C6 B( r8 E5 U/ d* w
  440. 8 B  P  `: {3 e( ^- e
  441. zset(sorted set)操作相关
    & ~7 j2 d! k/ z! s8 Z
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。1 x6 G1 e) X2 |% K: m
  443. $redis->zAdd('key', 1, 'val1');
    + }. G! K: k% K3 o8 O6 r
  444. $redis->zAdd('key', 0, 'val0');8 W& R" D7 k/ l  n& V* n
  445. $redis->zAdd('key', 5, 'val5');  i# S% g- p9 N( {' B
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)' P% S/ O9 \% @: O( P  W5 \6 O
  447. 8 z/ W4 Z0 R5 Q
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素" W5 |1 f# Q; X& ?; S/ ^
  449. $redis->zAdd('key1', 0, 'val0');; Y8 K; I3 B7 f2 k& b# [, c
  450. $redis->zAdd('key1', 2, 'val2');" r, A* ]+ t  S
  451. $redis->zAdd('key1', 10, 'val10');
    9 |1 E" G* l2 j/ Z" H
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);1 d! v0 Y" J. {

  453. 3 p" K- x0 k6 v# k5 x$ X; F, s
  454. zDelete, zRem# o( P" H$ H0 i3 m7 z1 _
  455. zRem(key, member) :删除名称为key的zset中的元素member% N( E- ~4 U. ]. n  @" B
  456. $redis->zAdd('key', 0, 'val0');
    * Y. |: x& f0 ?' y
  457. $redis->zAdd('key', 2, 'val2');
    6 m, Q2 i2 @) Y( s
  458. $redis->zAdd('key', 10, 'val10');
    + d) p5 o* X& H, R7 z
  459. $redis->zDelete('key', 'val2');7 z* o" h' @5 v; a; ]0 O. o
  460. $redis->zRange('key', 0, -1);
    8 Z# F) s/ W% f. O+ Y# m
  461. / Q9 M1 z8 P% @
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    ( p  b/ l0 O0 I* \& ?$ ~
  463. $redis->zAdd('key', 0, 'val0');
      [6 g) S1 C3 @  [3 r' i" m
  464. $redis->zAdd('key', 2, 'val2');$ A# Q+ I' J( r8 K; o6 i
  465. $redis->zAdd('key', 10, 'val10');
    " ^1 m) X  Y; b% P' X7 k: t
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    & d% t1 P6 X; ~7 e+ z

  467. . l' X* a$ Q$ F6 @& V8 ?
  468. zRangeByScore, zRevRangeByScore2 q5 f, M' D+ G- e9 ^/ B0 w
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    % o, [+ V# Z" B. F
  470. 返回名称为key的zset中score >= star且score <= end的所有元素7 x/ @  ?/ H+ g& F
  471. # r8 N  L! j+ U* k' r; N5 }
  472. zCount
    % G0 H" _" T- ]( U. A% \
  473. $redis->zCount(key, star, end);
    8 A2 Y/ S& u) o0 f' B6 X
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    6 Q1 u2 E0 [% G/ E& y
  475. 6 a+ m" e6 S8 A
  476. zRemRangeByScore, zDeleteRangeByScore- f/ O8 b6 |# R
  477. $redis->zRemRangeByScore('key', star, end);0 K+ B& S1 c( b
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数/ X4 x" q  Z- X: _) P
  479. 2 N# S! h( j5 Z$ v; [
  480. zSize, zCard
    ( J) Y& v" E( d' ~
  481. 返回名称为key的zset的所有元素的个数# D: F1 F! d! J* J; V
  482. # q  B8 L5 x; j; t; R5 ?% f4 j
  483. zScore
    9 ?% ]. V# L4 T0 Z& _
  484. $redis->zScore(key, val2);" t! M3 j' p, U
  485. 返回名称为key的zset中元素val2的score
    & a. z& H( p$ K8 C' \

  486. 6 ?2 n2 `8 {" ^; s& f6 U% R
  487. zRank, zRevRank
    5 S$ D& Z  G5 a0 q7 z
  488. $redis->zRevRank(key, val);; R9 |% p% h+ R5 Z4 Y) C- Z+ w9 _
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    / t5 b# }! \. f
  490. 3 M  _8 S, x4 u7 m2 K, i9 |! o5 N
  491. zIncrBy- ^! _' p. c  b- t  c# l4 c
  492. $redis->zIncrBy('key', increment, 'member');
      O; h- U4 v# |
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment% r( z) y- k* j6 q0 ?; I

  494. " U) b8 T! x! l# J
  495. zUnion/zInter
    7 O4 E9 Z( [, k. \: P
  496. 参数
    # U" k; n0 n5 V) |( x9 F
  497. keyOutput- {! p8 I- ^4 U0 g- }% Z1 d
  498. arrayZSetKeys
    9 j3 n* V; X8 N) b  B+ F, z" t4 D( g
  499. arrayWeights' L2 N( N) Q1 a2 m4 S$ x: K( C; ]
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.7 n9 o% }- {" z* ]* j% L
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。2 T' t5 |6 t1 y1 K
复制代码

0 U6 a  {  s: x/ A# [
. _* L' E* R4 `+ b
+ g% P3 g- R6 p7 U% k0 k
- J+ n4 U" d9 J+ c5 }" r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 4 j/ A2 {4 |- c# i( k, `9 Z, n
  2. //连接redis服务器
    2 d6 T6 s0 ^  w
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 22:28 , Processed in 0.127599 second(s), 18 queries .

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