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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php* |) p+ R# }, K0 ^5 Z9 {% d3 \
  2. $redis = new Redis();  4 `: B- i2 I, O  u$ }& Z% |
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    & x" |; Z& }5 p& H; T
  4. $redis->auth('mypassword');//my redis password * A0 k7 a0 G& H0 ~2 Q
  5. $redis ->set( "test" , "Hello World");  0 f, y2 h( w( N6 S) P$ ?) p# Z
  6. echo $redis ->get( "test");
    ) K+ p- L7 i( v# f, ]4 p
复制代码
php操作redis函数封装
  1. /**
    2 y4 B5 k% P& O% G& K
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    + W: U8 _  j0 a# T
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    # `  t6 W6 S* H: ]1 e- ?
  4. */9 V9 b. n: Q  C7 y
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    : n4 `: z" U; s( g1 \$ N
  6.     if(!$key||!$value) return false;
    ; e* q5 C1 _4 G5 x) o# [  R
  7.     $host = $host?$host:getenv('REDIS_HOST');$ r& c+ g" A; |, X- l* d
  8.     $port = $port?$port:getenv('REDIS_PORT');
    3 k% T+ y" a  g4 `& W1 f
  9.     $redis = new Redis();
    0 V0 M, T* s9 s
  10.     $redis->connect($host, $port);1 }0 s3 b  w$ _0 [1 B, v
  11.     $value = is_array($value)?json_encode($value):$value;, `& F7 @& q0 c" {0 C* `$ g! N( `
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);$ _8 u7 e1 B9 h8 |
  13. }
    9 T6 [' `" b5 i: p' k' W
  14. /**
    ! w6 ~8 M# z, e, K# A
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    : j' g' i2 u' N) j5 ]( i$ z
  16. */
    3 A7 ~/ k$ _* d5 {2 Y+ t; g
  17. function RedisGet($key,$host='',$port=''){9 Z% g# ^6 |% p: o0 W, M0 ^
  18.     $redis = new Redis();5 O+ v7 `0 a' R. d1 x
  19.     $host = $host?$host:getenv('REDIS_HOST');6 I7 J" z( C) k7 h8 x- I$ e: A
  20.     $port = $port?$port:getenv('REDIS_PORT');
    & E! s  E9 [- r4 V5 i: x- S
  21.     $redis->connect($host, $port);
    ( {- d# y" d2 H, x: `
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);7 `5 h/ v7 ^7 j9 h5 t
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    ; ^' `; Z" v8 `; X
  24. }+ p! f2 g, I$ b+ ~& C0 f
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
6 X* Z" j  b1 y  d$ D3 v3 Z
  1. setex 带生存时间的写入值
    . K" ~  p) ?0 m
  2. $redis->setex('key', 3600, 'value');
    2 w4 Q9 A7 Z( ]/ n
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1$ R# j3 B' ?+ W  X4 w; k4 f
  4. $redis->setnx('key', 'value');: |& l. z' a9 z7 E0 F
  5. 返回已经删除key
    , Q6 ?, |, ]6 r- W7 N8 S
  6. $redis->delete('key1'); 成功返回1失败返回0  U1 q) `2 B! S* @& i, \$ f
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0( d3 h4 O9 F1 j9 ^
  8. 查询生存时间& F; W$ G" e5 \8 a0 i! v" n
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    " }+ M3 j0 a1 F1 O* N
  10. 同时给多个key赋值,同时设置key0和key11 N9 b- G' a- m* o: N0 m( m) i
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    ' m. m* o' c7 ^+ ^5 q6 k
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    2 l. Q# _; ?0 j$ n3 M$ ]6 e
  13. $redis->incr('key1');7 b2 P) A" J+ _! B, b: J
  14. $redis->incrBy('key1', 10);
    . u/ }0 B7 C( G
  15. 减法跟加法一样& T5 N4 h. v& `; R2 ^# _! _7 E
  16. $redis->decr("key1"); 减少1
    , ^0 O3 _! ^+ `0 S- _
  17. $redis->decrBy("key1",5) 减少5' g; C6 r6 C. L1 C0 N
  18. % H; |% Q/ e3 `; v! o9 W6 |( |
  19. list相关操作,连表操作/ S* [* x' v4 e" ^7 z+ R3 p
  20. lPush, D8 n' w" S. u! w; w3 g
  21. $redis->lPush("list", "888");: a, y- e( M/ r1 L
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    ( z8 ?  g" ]7 R
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式' L- K$ d0 f& _# e
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素/ J, N. A% u8 \7 f3 L; ~
  25. lPushx/rPushx: E3 l" g- B1 V) B1 x' n7 ]
  26. $redis->lPushx(key, value);
    0 ^) t- y$ O( A- F2 V0 V) U$ s
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    % h4 h9 K9 v5 j# e  c5 B
  28.   V0 G- ~% d, O) V+ R6 w! l4 `0 ^
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key% y* M( \7 U5 o/ i& l; w
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key- w4 H+ _  I: T' m5 [
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回10 V$ L4 y4 N5 F; g$ c$ N& ~4 y8 _1 W
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    7 Q8 I( E% Z9 H7 N$ ~. d: U
  33. sadd s1 zhangsan
    ) O3 I8 F) x$ m; n! I: }# t
  34. sadd s1 lisi2 W" L/ O0 \* C" }( }
  35. sadd s1 wangwu0 ^9 M% I6 [6 m, E+ s
  36. sadd t1 yangxingyi  L7 ]9 a3 g! H2 b% ?
  37. sadd t1 lilei% {) I* _4 B( z& C7 ], H" \
  38. sadd t1 zhangsan* ?/ O8 C4 `" |# p6 ]7 p1 g) f4 H& u
  39. smembers s1 s1的所有集合内容5 u' p3 C3 k' q+ P" M7 {; g! M
  40. sdiff s1 t1 s1有的,t1没有的,差集
    & O0 w; ~0 s3 @4 N/ A
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    4 r( @8 F$ s) }# `
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的4 N! r8 B6 E& B) F- h$ g
  43. spop抽奖场景,返回集合里面随机的数
    7 T5 \3 N& m* b  S% d  V* C
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    : w- r2 {& n7 ?0 f4 H
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    . C  O& s- V4 `' q- o
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的* {% r0 w# d; f7 r% ]1 a" i
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    + {: i: T8 j7 v' G% q$ i" d
  48. $i = $redis->srandmember('s1');echo $i;1 u% Z5 t% H! p; S
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    7 C# n' v0 L7 n7 n# I+ i; V
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false* ]( T9 H: j9 x
  51. 5 ?6 x) H9 N/ d
  52. zadd key 2 value 有序集合
    : g; T+ c. Y! a* X5 [) X5 D
  53. zadd y1 1 zhangsan;' @$ `- Y; |* H; F- S4 F
  54. zadd y1 3 lisi;1 P# L0 \& q4 X1 K) ~
  55. zadd y1 2 wangwu;
    % ~# l5 V  d1 O+ c
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi3 H' T: A( V. G0 a/ W$ H8 J
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);' Y$ i2 K. @! x) B0 g
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键8 o0 u) @9 C4 r! ^  O; q* H4 {+ P  y# S
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先$ T" k0 T! z$ }, }
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的; f5 O  y: h- @; i6 d
  61. 无序就scard,有序就zcard,有z没有s& J0 N7 d  j1 ~$ B( |- P& n
  62. sInterStore# H( f( h" D! _
  63. 求交集并将交集保存到output的集合0 h! {$ k7 {. h- b
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')! `9 Q- L- ?4 Z2 W4 p2 P* _0 W" a

  65. / c7 c" p6 ~" n
  66. Hash操作
    7 R/ b# y1 S; e) k
  67. hSet4 X2 d1 v7 O6 K$ r
  68. $redis->hSet('h', 'key1', 'hello');8 X6 I; ^$ n# W2 K# U- c( a6 n
  69. 向名称为h的hash中添加元素key1—>hello
    5 S  V1 s; Z1 T4 c
  70. ' s8 ?+ p% p2 v2 b
  71. hGet
    / X! E# }  O# P7 L2 w
  72. $redis->hGet('h', 'key1');
    9 F1 g; n3 z( \1 a
  73. 返回名称为h的hash中key1对应的value(hello); q, r( D9 a: v5 C1 v

  74. $ ?" d7 s$ I- t. k* S$ B, y
  75. hLen
    " p/ u8 |' d# U7 z! ?0 O
  76. $redis->hLen('h');
    1 z& A$ D2 X  _
  77. 返回名称为h的hash中元素个数
    / `9 J* E3 D6 O# x
  78. 2 ^" }$ u" R9 \$ _
  79. hDel* i3 w) r' x1 X+ i0 x* |
  80. $redis->hDel('h', 'key1');
    ( u0 d: f" h& c$ w" Y- [' Z0 W
  81. 删除名称为h的hash中键为key1的域
    , B; W, {$ R4 m+ E
  82. ( G# T5 p# z9 v# K2 ], v
  83. hKeys
    2 v2 k4 k3 `1 Q0 t: |
  84. $redis->hKeys('h');
    0 P) F# E2 h# d& S- ?6 w; ^
  85. 返回名称为key的hash中所有键
    $ {0 i4 E/ {& M( s8 ?! Z; Q

  86. # ]$ S5 F$ E7 h9 ^! e3 B: V3 [
  87. hVals  Z$ S: J# Z9 u0 k
  88. $redis->hVals('h')
    3 z# Z1 A5 [) y+ P, J
  89. 返回名称为h的hash中所有键对应的value4 ]" r6 Q6 L8 J) S$ a" |! R

  90. 6 ]: ~, b& I  l& m2 ]) b. y
  91. hGetAll7 [- J, R1 u% @/ ?0 v4 s: k
  92. $redis->hGetAll('h');: S# w) l+ K- c0 A, b# M# w
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    3 K) [  H& a. ^2 D
  94. 3 Q* F( A8 }* q" M- l
  95. hExists
    - a+ {6 e7 W0 s
  96. $redis->hExists('h', 'a');
    ! ?5 x* G, E9 C/ W% R6 `, L/ n. n
  97. 名称为h的hash中是否存在键名字为a的域
    5 y7 E2 z' O8 ?5 }

  98. 1 S- p9 }5 t: X# T6 E/ V/ {  j
  99. hIncrBy3 Y+ n5 X+ B9 k3 W; q
  100. $redis->hIncrBy('h', 'x', 2);0 }, E  d; u# F. L5 s. @/ A
  101. 将名称为h的hash中x的value增加2
    & K0 |7 ?9 Q; c1 g: i

  102. - t# ^% e) Y, F6 T
  103. hMset0 Z1 n+ b6 X3 W( H8 H# V- e
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));' C6 j) u3 s1 R' T1 s# V
  105. 向名称为key的hash中批量添加元素
    & `; D; H' D& M" n1 H

  106. * ~7 }1 y0 t! Y5 U
  107. hMGet
    / @) ]- o6 ?( J" @  X
  108. $redis->hmGet('h', array('field1', 'field2'));
    ; T. X1 ]" W2 S5 ]7 ?
  109. 返回名称为h的hash中field1,field2对应的value
    ' Y: Z0 D8 d! g
  110.   c4 ^# v1 N8 O
  111. redis 操作相关+ [. Z$ O1 C, Y/ X( T4 ^
  112. flushDB
    & S) [# A* h/ A' G2 l8 L, @
  113. 清空当前数据库- h4 H0 y" u: X4 Z
  114. . K( r# C# ^4 f; C1 Z6 j
  115. flushAll
    & V" E6 c7 T( J. d+ O
  116. 清空所有数据库
    5 I5 ^! C$ @8 ^4 o: ~1 D$ f

  117. , y# l- }( R8 Q3 }, |
  118. randomKey3 n2 E' l6 J: O5 K0 u+ F! X
  119. 随机返回key空间的一个key; b3 N/ O! I! ~$ z% a  r! D
  120. $key = $redis->randomKey();
    9 t1 u3 ^  K& e3 I5 }% x7 J4 B

  121. 8 v: i# y/ ^: \% d) q  X+ i
  122. select
    : H* \/ y* @3 Z( Q! C5 i$ d4 E/ u
  123. 选择一个数据库
    ' w) a1 s$ [6 O
  124. move
    $ T6 _2 [) O+ I% ]! [; n8 Q
  125. 转移一个key到另外一个数据库
    8 z' v$ X9 A$ p7 q0 T9 ^" d- g  o4 Y
  126. $redis->select(0); // switch to DB 0
    4 m' T7 o) f* w- q
  127. $redis->set('x', '42'); // write 42 to x
    , j8 Y. z+ L+ v% |  M  D
  128. $redis->move('x', 1); // move to DB 1
    ' F  d% h$ n( ?8 o( m8 m$ `
  129. $redis->select(1); // switch to DB 1
    ' W5 t# O" [) ^% B7 Q. j$ O
  130. $redis->get('x'); // will return 429 v. F3 k2 P6 a6 Z7 y0 m
  131. + c2 C2 Z7 B# ^" X
  132. rename, renameKey  t) `8 {$ ~* B$ L5 z
  133. 给key重命名
    # v2 W  O( x- u* p
  134. $redis->set('x', '42');
    ! c, t8 @" Z& l
  135. $redis->rename('x', 'y');! f. Z* d4 M8 J" Q2 X! [& h
  136. $redis->get('y'); // → 42
    $ b/ c. U9 `7 u! E2 \. k: i
  137. $redis->get('x'); // → `FALSE`
    & w" D3 ~$ p# I( N1 C/ [0 n. L6 Y
  138. 2 Q' e3 J  o9 h
  139. renameNx
    ! L9 m% _: v5 F& `) s
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    " K1 t1 a# K2 n8 s

  141. + {4 h: r' a5 A+ ?# q8 l
  142. setTimeout, expire; Z# g1 G. i2 Y, ~% i4 \% l% ?
  143. 设定一个key的活动时间(s)
    6 }% X3 ]% N6 S" [1 }" I1 U1 c2 k
  144. $redis->setTimeout('x', 3);
    % `+ W# S) X- W) k
  145. 7 k) Q+ a: s* r
  146. expireAt
    " y# g4 Z, R6 ~1 X9 t: @8 d& {
  147. key存活到一个unix时间戳时间
    6 D3 q# @1 _5 @/ w
  148. $redis->expireAt('x', time() + 3);
    ' }9 v3 u$ S0 I; Q5 U

  149. 2 \+ i# m# I+ u7 l
  150. keys, getKeys
    % v. g3 d$ x0 Y0 F
  151. 返回满足给定pattern的所有key; P, [0 F4 Y) }! F
  152. $keyWithUserPrefix = $redis->keys('user*');
    ' r1 L. {$ k# u! A/ G$ f$ V
  153. ( q1 M( s: l  N; c0 C5 t
  154. dbSize
    8 g4 Y, g4 }2 A3 F
  155. 查看现在数据库有多少key; u5 Q5 T0 L' u1 c
  156. $count = $redis->dbSize();3 {! g6 C5 h- f& v/ o+ c
  157. ) X, W1 Y/ S$ J. `1 m1 O: g; }6 P- R
  158. auth
    & [8 L  S3 T4 A/ [/ t8 [
  159. 密码认证
    . P; h* a; R, x2 _+ r; y$ s1 }
  160. $redis->auth('foobared');; @" v" E( q9 e6 F9 u' E
  161. 7 |4 `6 s/ E" s4 S% m2 i
  162. bgrewriteaof7 Z2 D( V! Z" |) [2 U
  163. 使用aof来进行数据库持久化9 N# a+ y9 k" E  y+ E
  164. $redis->bgrewriteaof();
    ! `9 y# d5 h2 C* m$ @- `  t
  165. 7 W5 L9 K; F3 {( d
  166. slaveof; a' t* ]0 @* n  }" C. I
  167. 选择从服务器2 s8 d) _" V+ m: O4 [# ^
  168. $redis->slaveof('10.0.1.7', 6379);8 n. N. }; Z5 W$ C% U$ l
  169. 1 N! b$ x# `6 ?$ q) Y
  170. save
    ' r, u* |, |% V9 ^) ]% |5 ]7 ]1 T4 e- ^
  171. 将数据同步保存到磁盘# j1 u5 G! w4 @9 Z

  172. 2 ^; t- p% U! B( b. m
  173. bgsave* B; I0 w: h0 w. t( T) H
  174. 将数据异步保存到磁盘
    9 k& ^' H5 |, C, k7 g
  175. % ]/ W" [' |7 E' a1 K$ x
  176. lastSave
    - T: F2 C+ D+ t5 l; J/ y' V; k
  177. 返回上次成功将数据保存到磁盘的Unix时戳; s. U3 C# V/ R

  178. ! o6 [1 n# Q7 a( T  R+ _2 u/ r
  179. info
      g, i2 O" E4 v. ~7 }: C
  180. 返回redis的版本信息等详情+ X, R2 P. A1 o9 _2 X& G

  181. & ?! a* _& z" F
  182. Redis::__construct构造函数. z, ~8 _- n4 C
  183. $redis = new Redis();+ ]; U3 j! C. }% A9 a

  184.   l1 j# K% S$ }% g1 m
  185. connect, open 链接redis服务
    " a5 ^" d6 J+ I) I* Z5 j. g; U
  186. 参数
    3 k! e+ v/ q7 u$ l) P" m
  187. host: string,服务地址" A2 V# @% c7 ^' C2 k- y
  188. port: int,端口号
    ! v5 d( \# F. N: b  ?) k
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)" `$ S+ S& l' c5 N$ N: M5 d1 @
  190. 注: 在redis.conf中也有时间,默认为300
    8 t( Z) m. U' l* V: w: K

  191. # l" Y( Q' G4 @) I4 B1 U
  192. pconnect, popen 不会主动关闭的链接
    / i& e$ ~0 S& K7 x
  193. 参考上面
    - B1 W; l: ^: j
  194. ; }5 O  y8 A6 N& `1 k" k
  195. setOption 设置redis模式3 h# j. K, x/ x( Q

  196. 0 I) S3 U/ D7 M3 K
  197. getOption 查看redis设置的模式
    : f/ w; {" ?: N  g# A  ^1 p
  198. / l/ ^4 w# a* e, M3 a
  199. ping 查看连接状态7 O1 @' L4 O6 F" G3 g3 w
  200. , b6 w- h% a2 M: w! j
  201. get 得到某个key的值(string值), h5 M6 b1 x) Q$ j- c
  202. 如果该key不存在,return false" _  _9 Z: [5 J( I) X

  203. 0 \* x  {7 W4 i2 Q3 h
  204. set 写入key 和 value(string值)
    % Y# l" M. P( t2 s2 L( ]
  205. 如果写入成功,return ture: ^0 p0 O1 U& q* q6 T! {/ B
  206. 4 c- f8 L8 O0 H  T4 }) J
  207. setex 带生存时间的写入值
    / f  N6 i9 _8 s
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
      u8 u: |) |5 X$ Q" @, u6 v2 c, S

  209. , s: V6 K8 d4 G4 l6 Q3 e
  210. setnx 判断是否重复的,写入值
    1 K$ }0 b3 ^. R: h) t6 }( c; A
  211. $redis->setnx('key', 'value');
    # F9 ?# Z" F( a
  212. $redis->setnx('key', 'value');5 W1 D+ w/ Q9 w' W" K8 E# Z0 y
  213. * r& a1 D" [2 x! \: K+ N
  214. delete  删除指定key的值% U; t( X/ Y% p" L, q. ^1 [! U" P
  215. 返回已经删除key的个数(长整数)
    ; x2 r9 t' I+ \) J0 y
  216. $redis->delete('key1', 'key2');
    : F* Y0 }2 u, i; ^8 E- [
  217. $redis->delete(array('key3', 'key4', 'key5'));, t) a' E( F, N' ~+ T

  218. $ E7 b$ ^2 a, Z% P4 ~3 q4 I* H
  219. ttl# ]) p) y( x2 T) K
  220. 得到一个key的生存时间- Y8 D6 ?) |+ h( Z

  221. * U; G2 B& F- `: R% m6 H- ?; M2 k
  222. persist3 T: T' o# D% w$ M
  223. 移除生存时间到期的key7 T: n7 i+ C' z; a, \, R
  224. 如果key到期 true 如果不到期 false/ d: W( C( C" k

  225. 7 i8 [4 }" H' f/ o/ S( L9 [8 Z
  226. mset (redis版本1.1以上才可以用)) L* I7 \8 y6 B
  227. 同时给多个key赋值& [' g& ?8 P1 [+ G
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));% l" o/ }$ N5 c) T
  229. # j, I/ G" R+ z. v& k/ F9 j

  230. 6 v6 j" b( V, ~
  231. * W. h* Y* y3 w8 H* p! a
  232. multi, exec, discard
    - K" j& j  f9 Q; |$ u* r  T
  233. 进入或者退出事务模式5 J5 l* `4 o. w1 B) g9 g
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    / A0 ]  I9 K& _, a3 S. D+ H
  235. Redis::MULTI:将多个操作当成一个事务执行3 Y# j. x% f# f9 K) I
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    9 Z- }; y0 g0 Y/ R  x* M
  237. discard:删除一个事务
      T7 u8 C) D# w( {- h" O5 ^0 E! M6 N8 w
  238. 返回值
    5 o' g' j; K! Z, Z# ?: t6 |
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    $ U: m  r  f: @$ t
  240. 6 X4 c) e4 U+ }2 p, Y" J! t
  241. watch, unwatch (代码测试后,不能达到所说的效果)& ?/ T" `2 E  V  B
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)' v# ?* }" [6 E1 A3 `* m1 P4 @
  243. unwatch  取消被这个程序监测的所有key/ F1 c) H* b- N% P7 v+ _+ H6 C
  244. 参数,一对key的列表
    3 h( X6 ~6 Y7 |2 b, \9 s0 d; X
  245. $redis->watch('x');8 ~+ m5 i6 \3 w' w% u3 x5 ~! }

  246. 6 U! i) g9 `% H" {/ A
  247. $ret = $redis->multi() ->incr('x') ->exec();7 b6 H5 F$ e! x9 t( T! N

  248. ( G* l+ L' e, `9 S& c/ v  D$ c

  249. ! b3 e: q* t1 O; E' x
  250. subscribe *  H7 g* O1 R, k( T$ u# y
  251. 方法回调。注意,该方法可能在未来里发生改变
    1 P7 c0 ^0 [0 i' B

  252. $ b+ X4 l7 @; q- W% r8 {5 x
  253. publish *
    ) I! I# T& ~7 `2 J) U
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    ) l7 ~% }, d( S8 k) N

  255. ! t+ _, \# |8 F3 o  R, q7 _  }4 T3 i
  256. exists
    - r' A) w3 f, I1 I0 i
  257. 判断key是否存在。存在 true 不在 false
    % g% E1 j; V% \3 a! N- f% n. \
  258. ! [/ [0 ?! Q; f* {4 c
  259. incr, incrBy* w0 R  N0 O5 y5 n; B
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    + p) ^+ `2 T* q3 T- F' L
  261. $redis->incr('key1');
    ) H3 [  l+ H: j3 c5 m5 l9 ]
  262. $redis->incrBy('key1', 10);* z; V% W( h# a) W  p
  263. 5 F7 r3 K7 h3 X# X6 U& D( t( ]
  264. decr, decrBy* g6 D3 c- E5 h- c- l8 Z# e8 |
  265. 做减法,使用方法同incr0 ~, S0 P% c5 P; G* `6 p

  266. & U2 R( N6 f! D. s6 z9 D
  267. getMultiple
    1 t+ S& P4 `/ p1 q3 s
  268. 传参! [! ]  n, s  h  z  n
  269. 由key组成的数组! O4 R- f4 F* y; N+ B9 c" ?9 j3 |
  270. 返回参数
    . {9 G0 r  Q5 H
  271. 如果key存在返回value,不存在返回false
    , R4 P% I: X$ E: G3 X
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ; d  r7 l$ O- @
  273. $redis->lRem('key1', 'A', 2);  |4 k$ j! Y- j0 I
  274. $redis->lRange('key1', 0, -1);
    ' @& O" [0 y' m% v# \
  275. " l% n2 d- }) ~$ p
  276. list相关操作
    , x* A; l! g: F  Y! p
  277. lPush1 I8 p1 K1 ~4 p  d9 P
  278. $redis->lPush(key, value);3 A2 l& t. W! [: K* V
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    1 t, `6 K# E2 A) N/ h

  280. 9 Y$ P1 f' i  ^1 [
  281. rPush/ l4 \1 I9 O! Q( g. P* y0 p  I
  282. $redis->rPush(key, value);7 [( m* F  Y9 _
  283. 在名称为key的list右边(尾)添加一个值为value的 元素, U+ b" M, n3 V2 E1 @; M9 H$ y5 m; o
  284. 5 I2 Y. a6 [) l4 @) C2 n1 ]9 T
  285. lPushx/rPushx
    ' @2 [- k4 @* S1 w3 L# \0 B
  286. $redis->lPushx(key, value);( [3 j3 x7 k) w) v0 P
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ( ?( b9 G) G! x+ ]

  288. % G: r) P4 i! `5 N+ p
  289. lPop/rPop
    # z3 S, D4 n2 _* {( L
  290. $redis->lPop('key');2 {$ G- p+ P. p4 _0 p# I$ X; K
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素: ~9 W( a1 r% T$ \! V5 S
  292. 7 o1 Z* `5 I/ J" e; k0 g4 z- ?
  293. blPop/brPop# d0 X$ ?# [: ]
  294. $redis->blPop('key1', 'key2', 10);8 r2 e7 r6 y; J$ T
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作: E1 S3 b# q2 P3 t/ u

  296. , {; d+ O; W9 V- m2 m& O9 k
  297. lSize
    7 s4 s" {& c" O4 t. `7 t( ]
  298. $redis->lSize('key');
    1 M& ]# m# z/ h% r5 Q% {
  299. 返回名称为key的list有多少个元素
    : B/ w% ]' _8 s$ w: U* D: l& W
  300. 0 b$ z# t$ p& C, Y! U
  301. lIndex, lGet
    4 j% @$ K# ~0 k; H9 O9 M* l
  302. $redis->lGet('key', 0);
    5 G1 ]. {  v6 R
  303. 返回名称为key的list中index位置的元素- Y1 s# A: I- _+ O, V, s, |4 o  e. k1 x
  304. . l5 u: t" T4 l% k
  305. lSet
    1 W2 U  W6 ]; P3 Y" D  _% w$ _- z- q7 c
  306. $redis->lSet('key', 0, 'X');  |+ K& r( y3 _
  307. 给名称为key的list中index位置的元素赋值为value
    " w  }" @4 L7 E. i8 Z4 j2 z: b$ B* U

  308. 0 i+ A7 T9 q) x, x
  309. lRange, lGetRange
    : D% o& W7 q# s/ P
  310. $redis->lRange('key1', 0, -1);, C* M/ p3 g4 X- I* G3 ]; V9 c
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有), ^9 |) {, b$ e" O
  312.   _0 Z' y4 F) z7 r. f' W) n
  313. lTrim, listTrim" W! w. p% k% E4 l6 e7 J
  314. $redis->lTrim('key', start, end);8 b+ L8 M- y  F& ~
  315. 截取名称为key的list,保留start至end之间的元素6 z; m% o! w8 Y* n0 m
  316. " k6 Z( K+ I1 @% F2 C' o: w
  317. lRem, lRemove
      ^% R/ c! A6 q* m/ B6 R
  318. $redis->lRem('key', 'A', 2);& y- ?  H; t: A) ]
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    # b7 `$ R' X% Z5 p

  320. ) D) [/ h+ p/ n: I, @
  321. lInsert8 b* r0 L( O% U6 s
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    . f+ M5 v: Q1 }, A8 H
  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');/ f' N  W4 y& e' Z
  324. $redis->lRange('key1', 0, -1);
    * {1 l9 F5 F( B9 |& K
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');0 _3 M" |- c8 H
  326. $redis->lRange('key1', 0, -1);
    # D! `4 n+ t  O+ a
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
      E& G. ~! p3 V9 b0 P) ]% W
  328. 0 u' J4 O) U, I
  329. rpoplpush
    ; e8 v- c! W6 u* K- I: D
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    ; A- `8 Z' C" c( A. \: G/ S7 |
  331. $redis->delete('x', 'y');+ J6 e! O0 ?/ ]) P
  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'));! w* O3 Z3 ^) ~- x2 R
  333. var_dump($redis->lRange('x', 0, -1));5 H" x" \+ T" C* J# Y
  334. var_dump($redis->lRange('y', 0, -1)); 0 p+ C0 {9 U# |

  335. & G* P8 {2 Z  w# m9 E* g
  336. string(3) "abc" 3 d3 A: Y7 G) w* d
  337. array(1) { [0]=> string(3) "def" }
      \# e8 U0 m; h. W, R  }: o3 f
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    1 \7 P# R: W# \3 T# Y; B  }, ^

  339. / C$ r0 A$ ?# e/ {: @- P
  340. SET操作相关
    : }% G. l6 {* X. {& ~' G  m9 D1 i2 |
  341. sAdd
    ' O4 I' F6 ?( @& @8 f
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false$ R- g( c$ q$ U9 `$ L
  343. $redis->sAdd(key , value);5 V+ {  I$ H; h1 Z1 v

  344. 6 k+ T% g' I, U2 S4 d8 f" i- E
  345. sRem, sRemove
    ; m6 K2 p2 I. M4 R7 C" O! t8 v
  346. 删除名称为key的set中的元素value1 ~$ p  o$ b6 a1 h$ B
  347. $redis->sAdd('key1' , 'set1');
    % V( Z8 [+ ?: z! W1 U( t
  348. $redis->sAdd('key1' , 'set2');! N7 g( ^4 H  d
  349. $redis->sAdd('key1' , 'set3');% c& C$ w5 c5 ^4 @
  350. $redis->sRem('key1', 'set2');
    + {, P( A& D! w) L) W
  351. 6 \3 Z9 w) @1 c$ ?
  352. sMove/ s0 J0 Z* z( ~, X' ^& l; k7 m
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合( t/ M% g$ O2 B# C: e% ?$ _
  354. $redis->sMove(seckey, dstkey, value);' V2 f  R7 t8 h) Z! J
  355.   O, X2 P# @% z1 \; |5 z9 D
  356. sIsMember, sContains) `  T* R4 P" q: S# O9 x
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false2 t8 q* Q! [+ J% ]) Y# l% \. w) s
  358. $redis->sIsMember(key, value);
    ! V* C! ?$ x2 d6 i9 B
  359. $ u5 X; @4 b0 ~
  360. sCard, sSize1 P5 Z- I% d( _0 I% B5 g, B
  361. 返回名称为key的set的元素个数
      |* q! p4 d  [& v" p
  362. * h+ Q4 X8 @( l5 W5 v
  363. sPop  b2 c5 R; h/ z/ U2 p* ^! I! y7 X
  364. 随机返回并删除名称为key的set中一个元素
    9 A) }5 Z( D" G" j
  365. ' c3 Q/ k7 m: q" X1 l1 [2 d
  366. sRandMember3 U3 P$ o5 ~5 j) y1 Y1 V
  367. 随机返回名称为key的set中一个元素,不删除
    , D& g  L+ U0 J- F0 p
  368. ( R) J9 e  x+ w% w' b$ v) R* w
  369. sInter! b7 k3 z" q* S% r2 z
  370. 求交集
    & J' d5 u# A! V5 f" }
  371. 2 `7 {" i+ a5 r) \1 [, `
  372. sInterStore
    7 z& a3 s2 l. g) O5 c
  373. 求交集并将交集保存到output的集合( t' ~" v5 a8 ?1 s) P
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    5 c! ?* Y% V6 T8 }' q: f7 ?

  375. ; @6 M& b, `- G/ V% q; T$ `
  376. sUnion" `- x9 l3 d+ D& }& t! d0 K
  377. 求并集
    , D5 s$ a; O' [- a- Z4 U- G8 E
  378. $redis->sUnion('s0', 's1', 's2');
    7 Y" x- G+ b% N8 Y1 {; N
  379. s0,s1,s2 同时求并集
    ! n5 J7 G% l$ d. x. @2 K! S

  380. ! W3 B0 ^& R, s
  381. sUnionStore" w2 ?' A2 T6 `2 b
  382. 求并集并将并集保存到output的集合
    $ D. B* P% C) j* \- y
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');+ @1 g+ @9 a$ u3 G' B. i

  384. - R4 w  d( g! H
  385. sDiff
    # e# W$ T- ^/ V' |
  386. 求差集
    : K" }5 |# Q2 O* ^$ w) }9 [
  387. % H) b$ l# |+ b  J! f* [
  388. sDiffStore- `5 _1 y8 ^7 D/ `$ f+ h5 U7 f
  389. 求差集并将差集保存到output的集合
    ( c; z. I1 K3 p- c
  390. ! _) F% d8 G% i3 D6 p
  391. sMembers, sGetMembers
    + V2 m' V7 t$ |; y  Q1 Z+ p
  392. 返回名称为key的set的所有元素$ k9 b$ ^/ G& U1 ?0 D

  393.   S+ I/ k" v+ s9 ^. `$ w
  394. sort, @) i# k. v; g' |5 w; y
  395. 排序,分页等
    & N; H' A6 T; V, Q6 F
  396. 参数  P$ G& Z% f6 H+ S& H) J* \) s
  397. 'by' => 'some_pattern_*',2 L! w5 S) H" e5 {
  398. 'limit' => array(0, 1),7 {- l6 C: N7 u: N2 q9 [4 p( @6 f
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    0 g" f- ^& ~/ V2 Z3 H+ W" [; J
  400. 'sort' => 'asc' or 'desc',0 g  @% S3 ^% x3 d- M. I
  401. 'alpha' => TRUE,! @/ @& d6 E4 T2 C
  402. 'store' => 'external-key'
    ; k- D( d4 k+ w. `! L
  403. 例子& S% F3 [! z; S  `/ V
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);- n+ |2 B. C3 I% p& r8 A
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    $ L- N/ C3 K, P! e& v: G
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1; G2 K  I" q6 J
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    2 S! f  H: E5 f7 c4 d8 e
  408. , k1 Z4 i( K& K+ r
  409. string命令9 N3 M, p1 t4 ~6 t
  410. getSet$ A) `4 V- L" v1 `
  411. 返回原来key中的值,并将value写入key2 q# Y8 Z7 l* j* J$ V
  412. $redis->set('x', '42');
    # t, f7 M" E" |
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'! F/ D. C) o! w& c! i7 c
  414. $newValue = $redis->get('x')' // return 'lol'8 Y# d8 s) C7 K' q& H6 f
  415. 5 S6 R6 {/ Y, W: ^
  416. append; o0 u( R8 L; p
  417. string,名称为key的string的值在后面加上value' X# l1 E* Y6 c- {$ B  N- G6 `
  418. $redis->set('key', 'value1');2 @7 A0 @  `. u: _5 m
  419. $redis->append('key', 'value2');
    ( f- i, ?5 E. u- z: Y- |
  420. $redis->get('key');4 a1 y: t6 @+ c) {

  421. ) W: Z1 @! a6 t* _8 [* d- [7 _
  422. getRange (方法不存在)9 x  o. [8 \4 X, n1 @5 M7 _
  423. 返回名称为key的string中start至end之间的字符
    3 H4 G7 H! W2 ^% a& `
  424. $redis->set('key', 'string value');
    ; O7 s2 c' r7 ]. z7 B$ ^
  425. $redis->getRange('key', 0, 5);  E! M3 z4 n) s2 r( d2 S
  426. $redis->getRange('key', -5, -1);" Y: X8 y8 O& }- P8 o* }1 F
  427. ) S# L7 |8 F) d/ X3 e3 Q
  428. setRange (方法不存在)
    0 e" ?- g) T: i0 u. p; C
  429. 改变key的string中start至end之间的字符为value
    ! Y* }9 o% d2 v- O$ ~& ?
  430. $redis->set('key', 'Hello world');- y1 @% O/ V8 Q* L
  431. $redis->setRange('key', 6, "redis");4 o9 W7 a; h! [
  432. $redis->get('key');
    - Z( D2 Z; ^: h* p0 x

  433. ( `; G9 q& c2 t
  434. strlen
    $ Y0 n- e" c1 }& B3 }' u- O9 H
  435. 得到key的string的长度
    3 _( ^& N# _7 S$ A0 G+ ~3 Y
  436. $redis->strlen('key');0 {' `* f/ e0 y2 ~. R: R

  437. $ B: ^! q$ ^7 B+ D4 Y* j7 Y5 D
  438. getBit/setBit2 T: P% x0 h9 K
  439. 返回2进制信息
    : F7 W( G9 \! f8 l! a" j" y
  440. 1 [! ~% i# S6 }
  441. zset(sorted set)操作相关6 j4 b. j; G2 p: e9 Y( }0 s
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。/ l& S1 f* B4 A3 _# h
  443. $redis->zAdd('key', 1, 'val1');
    4 p8 ^1 {+ O3 |' c  E$ O  M
  444. $redis->zAdd('key', 0, 'val0');
    ( z% S8 q5 Y% Y8 w& x. j
  445. $redis->zAdd('key', 5, 'val5');+ o7 ~+ I* F8 Y( |- `& V
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)! ?! \4 l6 x! `4 v

  447. * d/ u8 u; R" ^2 p+ V, F+ ~( \+ O
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    , p. _6 d# S& F' v0 V& M
  449. $redis->zAdd('key1', 0, 'val0');
    + H  F# J* N1 `' ]1 F
  450. $redis->zAdd('key1', 2, 'val2');4 M) M. E% l, X! o! N9 @! g7 T+ ]
  451. $redis->zAdd('key1', 10, 'val10');/ q5 J0 W5 ]) l7 K
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ; Z% V' K4 \- f1 S( A" f

  453. - F- }# f+ j$ L' m+ Z" J$ K! |
  454. zDelete, zRem& j, G- s9 @0 f; R* l
  455. zRem(key, member) :删除名称为key的zset中的元素member# x9 c& z- h! J7 V5 j
  456. $redis->zAdd('key', 0, 'val0');) c/ X7 h3 H) S; Q1 L
  457. $redis->zAdd('key', 2, 'val2');
    0 J" E0 m7 T& l/ ?) Y/ V6 j3 E2 j
  458. $redis->zAdd('key', 10, 'val10');3 y% f! r; i0 r* f
  459. $redis->zDelete('key', 'val2');2 s8 J, m; W; x+ C6 W; y+ ?; j
  460. $redis->zRange('key', 0, -1); 4 `( a- ]! z3 {( u, O- ]1 s
  461. . h% D- t: t6 {' n$ _4 I
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    + g- N  r$ V' B) P* L( w
  463. $redis->zAdd('key', 0, 'val0');' X& N8 j# D3 T! `9 y
  464. $redis->zAdd('key', 2, 'val2');2 ^9 N, J2 l. Q1 }0 C1 K5 P
  465. $redis->zAdd('key', 10, 'val10');& v) k7 A9 q: u( A- a% V& ?" R! W( b
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    * t/ Y' I: Y( q' c9 G& y

  467. 8 {( n% K5 G2 T7 d9 Y
  468. zRangeByScore, zRevRangeByScore
    6 j7 h5 M' I6 I
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));5 c5 M  |( f! i
  470. 返回名称为key的zset中score >= star且score <= end的所有元素8 U5 i! Z% K( {- N5 }
  471. " Z9 T) y1 M# D7 ]; e2 o+ y3 n
  472. zCount0 c6 P8 R2 @' L
  473. $redis->zCount(key, star, end);
    3 I6 J4 ?/ X& Y3 i8 {/ @& t
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数1 ^& a9 x2 N9 U

  475. 9 d$ j  m' L4 \3 z: S
  476. zRemRangeByScore, zDeleteRangeByScore
    5 h  ?, z4 ]+ D6 s
  477. $redis->zRemRangeByScore('key', star, end);9 h6 r# s8 M0 N
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    ( Y6 G4 c/ f4 b

  479. 1 q- Y% N' F5 Y, ~4 ]4 @# H% r
  480. zSize, zCard) k8 x/ K5 Q! D6 k  J4 d3 k
  481. 返回名称为key的zset的所有元素的个数$ y5 |+ R' E1 E
  482. ) @/ m# d6 M! T/ t! j
  483. zScore
    3 r- \: j% d6 r1 U" f! y% _: X
  484. $redis->zScore(key, val2);
    4 y$ F1 [; _% o5 A  {
  485. 返回名称为key的zset中元素val2的score& f6 G" {$ ^+ z1 h- u# R
  486. ! z0 v1 m9 O  \' w2 O' [
  487. zRank, zRevRank$ s7 L2 V, G8 X3 ]
  488. $redis->zRevRank(key, val);
    5 r- B6 i- |) @: n/ o4 X
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序7 a; x9 }0 I' H8 S

  490. 2 v2 y2 t6 @3 o' V3 D
  491. zIncrBy+ {$ {! f0 W/ S1 N
  492. $redis->zIncrBy('key', increment, 'member');+ N3 W+ d" j* G# G! D4 E- b
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    " Y* u( J( H6 H% f# F  `
  494. * S5 h$ q, q& [/ ~
  495. zUnion/zInter: _2 k+ q" R  M) M$ z) ^  `1 O
  496. 参数
    $ p4 e4 J0 }" g; k
  497. keyOutput  r" Q$ d! O$ Q$ o
  498. arrayZSetKeys
    $ E" E% j4 ?, A2 ]$ j
  499. arrayWeights
    6 n( z1 b- k3 p; N$ f) B. W% V6 V
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    ) g: m3 f) f! {4 w. y$ J
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    8 q7 h% I  k+ l* D/ y# i
复制代码

' [! x" L( f- x9 @. B2 _( s* X. Y' W1 s5 P$ N3 {9 b3 _% z# x3 u1 p
( E3 X. w+ l. _

. G' t4 @6 I+ ^, P$ G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    ) r1 j: b8 b6 s' P* V, p
  2. //连接redis服务器 $ L( l% i* y! H7 y
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-23 01:34 , Processed in 0.148678 second(s), 20 queries .

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