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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14639|回复: 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; @& q7 X2 X% N0 w& j
  2. $redis = new Redis();  
    0 s% G: g/ n  P$ X
  3. $redis->connect('127.0.0.1', 6379);//serverip port
      S9 S/ A; U) D* m8 X
  4. $redis->auth('mypassword');//my redis password / ?7 K/ |# ?. s, K
  5. $redis ->set( "test" , "Hello World");  
    : o: Q* c' z4 P8 p  F
  6. echo $redis ->get( "test");
    7 l5 `& O3 R! z" t* a9 u" G& `9 I
复制代码
php操作redis函数封装
  1. /*** Y. E8 ?9 E! e7 Q
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    4 N) K# U" w4 ^! F3 F' w
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi, \  i9 U! Z+ g+ Q
  4. */' _/ p+ [5 m; w
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    $ k* U6 O* C) d; I9 ?$ ]: r% O$ M
  6.     if(!$key||!$value) return false;, w1 N4 d! e; p/ {' Q, ]
  7.     $host = $host?$host:getenv('REDIS_HOST');0 X; j6 e: H/ {' m
  8.     $port = $port?$port:getenv('REDIS_PORT');  A: C# [  e! h+ e
  9.     $redis = new Redis();
    ( A0 F. f  D  C' O+ }  Q3 U6 O
  10.     $redis->connect($host, $port);
    : L2 s) I5 ~5 @  H5 t. `, B
  11.     $value = is_array($value)?json_encode($value):$value;( u8 E; j  O) U0 s' c  \6 m
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    * U0 y" u7 H- M5 z7 L
  13. }
    * E* c: S4 [: [7 b8 r4 e" j
  14. /**& D$ y' a2 i% k
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    / G: [; x  O/ y( M3 e/ m
  16. */: v6 Q& l7 I& }0 |! o" p
  17. function RedisGet($key,$host='',$port=''){4 i! w0 N5 z; S
  18.     $redis = new Redis();
    & J5 K# E4 m' g" z, i+ M/ W  L
  19.     $host = $host?$host:getenv('REDIS_HOST');, e8 l" \% _$ s7 i4 e
  20.     $port = $port?$port:getenv('REDIS_PORT');+ q% T2 U) [  X0 f) s/ Y7 G
  21.     $redis->connect($host, $port);$ R; [, R0 p: g$ e
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);3 B1 N+ P: e' ?! R
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    ( [" ~) v, M1 r8 T+ L4 ^, y
  24. }
    3 Q6 O* ^6 K- T) ^5 F4 c/ j+ n
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
7 |( e1 b6 D% K4 Z" {# `
  1. setex 带生存时间的写入值! A* z0 i2 j  z- B3 N6 L
  2. $redis->setex('key', 3600, 'value');
    . j7 L' Y( P, O: o# l% \! R
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1; Q. C5 r; W" x. c* J
  4. $redis->setnx('key', 'value');
    ( O0 ~  r1 A, C8 ?" \" Q9 s; i
  5. 返回已经删除key
    5 F# |# g8 p4 c* Y
  6. $redis->delete('key1'); 成功返回1失败返回05 `6 e) X+ {, s: L) ]: ^6 e
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    & ^: _0 C1 |  s" f6 D; m
  8. 查询生存时间
      X& v8 t6 _; `$ s( g  y
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    - G% g& W; g) U& T
  10. 同时给多个key赋值,同时设置key0和key1: x5 M5 f3 g% o) }0 j) A
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
      H4 ^& U* |* c6 @9 V3 D
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    3 _9 W9 J- r1 T; ]. `
  13. $redis->incr('key1');
    " X7 Z1 k5 B, a
  14. $redis->incrBy('key1', 10);* j( L$ i  j5 Q- @4 ?; Z
  15. 减法跟加法一样: a6 s$ T: |' X7 v" r! m0 H
  16. $redis->decr("key1"); 减少13 w% m: ^' a8 H# E2 t
  17. $redis->decrBy("key1",5) 减少57 s& u+ h9 [8 P9 V7 O
  18. 2 y, F7 b" a6 C* U2 w
  19. list相关操作,连表操作
    ( l9 T6 @) T. o; }
  20. lPush) Y0 D# ~! k: F) A# L
  21. $redis->lPush("list", "888");" M1 L$ I7 e  j2 g. A" v3 @* k
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数. V7 i3 `, X" s5 a3 G% i- S" i
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    % e$ o3 p3 q6 i# r
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素& c1 |7 `6 Q2 \6 j5 v- i
  25. lPushx/rPushx4 W& d& e+ _1 v0 k
  26. $redis->lPushx(key, value);
    ! J4 t/ |' _( r" ~, V
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加5 [7 w3 A" f# ?; J

  28. ( V3 ~: U* y$ s
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key  j# E9 g3 o3 ?( R& o
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    4 ~4 n8 A1 p2 [' }+ n5 e# A
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    1 O/ w) ?( z; @& B4 F; x3 S
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    . m! M" z& ]! I) v& F; Y' |
  33. sadd s1 zhangsan
    $ Q; K8 |8 P7 j) u1 c
  34. sadd s1 lisi' Y" y0 N8 n, Z) F
  35. sadd s1 wangwu
    1 J- p1 Z) b, c; c% h
  36. sadd t1 yangxingyi0 X# z9 N% p2 F0 Q
  37. sadd t1 lilei, R( T* S# B$ d; y# L# J
  38. sadd t1 zhangsan
    3 b9 I5 o2 D' @" E: e* L" w
  39. smembers s1 s1的所有集合内容
    " }& y: q: f+ v/ n0 x6 G
  40. sdiff s1 t1 s1有的,t1没有的,差集
    % e6 {0 ]9 d" D( P
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式& j: h- K% ~/ l9 G
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的' F% Z, e% R- Q" z2 B; v( l& _
  43. spop抽奖场景,返回集合里面随机的数
    ! Q9 s9 D% N/ k2 V5 R; n% N
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了8 Z6 g& t+ t: s7 O" m; i3 M
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    ( S4 f! y0 H( n" j6 Q) C+ D/ p
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    / L: w+ W4 z8 b4 Z- X! l+ x3 X+ v
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    ; W4 s; U& h1 U% k' D3 p
  48. $i = $redis->srandmember('s1');echo $i;  {7 P0 J# |2 j9 C( a! S
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false( P/ o$ m( ?& e9 K4 P
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false3 d) R% j, x1 v. l2 _) s$ u& S& j2 }
  51. ; z# ^7 ]3 ?' b( @4 C+ n5 Z
  52. zadd key 2 value 有序集合0 j8 J: J4 Q/ x# n  Q' ]
  53. zadd y1 1 zhangsan;* z+ c3 y4 Y: ?+ K# A3 [/ F
  54. zadd y1 3 lisi;
    # @" M, ?) c5 S, S+ G
  55. zadd y1 2 wangwu;: E$ N7 x1 E# U" T% u
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    9 O0 k# d  J* g& L  N2 }
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    " H) W/ \9 F) W) s
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    ( G3 M8 q" y" L& w- a
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先: y( o5 k0 x, g5 k) ~' Z
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    * o5 X% Z( z. M" w; M% |* t
  61. 无序就scard,有序就zcard,有z没有s
    4 T! K$ ^, e6 L. f  E3 L
  62. sInterStore
    5 ^& T* ^! m: C' g3 D  H- B
  63. 求交集并将交集保存到output的集合) z/ E5 u6 @9 b( o3 v* i
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3'). U. \8 D9 s  P" x

  65. , ?+ E/ x2 Z" V4 J3 k
  66. Hash操作- Z5 y, D6 `- i' L3 n
  67. hSet
    4 x1 {1 O9 Z) g4 D( E
  68. $redis->hSet('h', 'key1', 'hello');
    * E* _% o; W8 z! l- {
  69. 向名称为h的hash中添加元素key1—>hello5 r7 @; @) _1 x, x/ k0 p

  70. $ U: _$ U" e& ]0 O+ h: V. r
  71. hGet( r$ Q# n9 C/ @
  72. $redis->hGet('h', 'key1');
    4 y9 @7 |) I# I, }% F5 \
  73. 返回名称为h的hash中key1对应的value(hello)
    1 f7 l: c5 R- E7 q6 V3 t
  74. % f' `+ u$ |7 g  t& e# y2 i* P
  75. hLen% |# r& ]. r* C: I
  76. $redis->hLen('h');* b# y: a. z7 o7 K) E; `
  77. 返回名称为h的hash中元素个数( {8 e! g# G: a! L& A9 A

  78. 9 W( f$ C$ s9 G) h4 I. _  ~# v
  79. hDel
    8 T9 B* M- O( V: h
  80. $redis->hDel('h', 'key1');% z. M; |. S; S* ?7 N
  81. 删除名称为h的hash中键为key1的域" J% L" u+ _# `3 Z3 I
  82. ( A% ~1 }2 P$ U( j) k
  83. hKeys, }, [, n0 E! S0 b" J+ u' L4 k
  84. $redis->hKeys('h');: J5 m* ]% Y# l" J4 s0 P
  85. 返回名称为key的hash中所有键
    : O+ I' `8 x6 E( u* ?6 O5 _

  86. ; F6 T+ y& j8 B* e& A$ U
  87. hVals
    4 M& X6 S* n) P6 H9 o" w# J
  88. $redis->hVals('h')
    , @8 z% Z6 z4 ~2 ]  ^" b" }
  89. 返回名称为h的hash中所有键对应的value
    4 t% Q' X2 n# ~4 p; @1 [

  90. 3 X5 A) s, l+ ?- y$ o
  91. hGetAll
    6 e$ u1 o. e5 J, B7 j  ^/ H1 h* `6 _
  92. $redis->hGetAll('h');9 l5 V7 d* R# L. U- u+ M4 l
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    6 P5 O! k" e1 \$ _. E: a: ]0 D; E% r
  94. ' k1 a3 f. M" Z& ]0 R) ^
  95. hExists0 r' e+ o+ [5 o8 h! R6 p
  96. $redis->hExists('h', 'a');( f- _1 P, U& p& d) U
  97. 名称为h的hash中是否存在键名字为a的域5 ^( Z' q% K8 p

  98. . }, g3 i8 Y* t6 \7 E  |" \
  99. hIncrBy
    . E. \# X- y: R" A8 P
  100. $redis->hIncrBy('h', 'x', 2);8 L9 @) N& y# R, G6 [! k$ t+ t
  101. 将名称为h的hash中x的value增加25 S/ _- C/ z" T- G$ ]
  102. 8 I5 x4 j/ f! J2 V6 L0 s0 t# p" p
  103. hMset
    & Q$ P+ V" H3 u- D( Y) \" @
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));0 ?. T2 u3 T) E' z5 _. h9 r: q
  105. 向名称为key的hash中批量添加元素* G: E: x' P+ h) j/ y& [/ R

  106. / q- A* Q: {" Y# W
  107. hMGet
    " L* s0 W8 ?2 K( K6 L/ J
  108. $redis->hmGet('h', array('field1', 'field2'));* Y) b/ b" L9 m# B8 S% U) G
  109. 返回名称为h的hash中field1,field2对应的value/ |& @% i; T" Z$ Q  {# _6 U4 _/ P

  110. $ z" I  P$ o7 F, W; e$ v
  111. redis 操作相关
    8 h! f- O2 r% Q" X( U% J
  112. flushDB% l. t) A( W* |' H# R
  113. 清空当前数据库- |- y/ O% n$ m1 p+ ]+ S
  114. 1 N( c0 {0 p5 b6 V# V# y5 Q( D
  115. flushAll# x* m1 j; R% Z# c5 M/ W6 m
  116. 清空所有数据库0 y: J* R2 q" P, k; m
  117. 8 j9 ?2 A1 }* J6 u* i1 R+ P
  118. randomKey
    1 Q0 S# `9 S: u  b0 E: Y
  119. 随机返回key空间的一个key
    + N$ x% E0 o3 n: O' n# Z) A
  120. $key = $redis->randomKey();
    % [6 `" k) o( ~: M' w6 |* ?

  121. ; C6 s0 Y+ T/ ^% Z
  122. select
    $ l% C6 p. d$ J: {  K
  123. 选择一个数据库4 ^7 g3 M$ {' B1 h, K* p
  124. move+ {3 s& E5 \: `, W$ z
  125. 转移一个key到另外一个数据库" C, D# N; ?0 d) {
  126. $redis->select(0); // switch to DB 0
    ) a0 K3 y8 e0 H7 o# G
  127. $redis->set('x', '42'); // write 42 to x( m6 m# X* t: Y$ I5 ~2 C4 E# g
  128. $redis->move('x', 1); // move to DB 1
    ! h' E1 e  ^: l5 L( I8 s
  129. $redis->select(1); // switch to DB 1
    9 N8 v* t& F/ c' K9 f6 m* [% l6 H
  130. $redis->get('x'); // will return 42
    ) I% b0 E, n; U# B* }* }/ z
  131. ) F0 `5 n" L7 s1 A
  132. rename, renameKey
    ' o% l6 J6 F  X+ o# J
  133. 给key重命名
    7 h8 `1 g* F* ?2 y. r
  134. $redis->set('x', '42');% X" g7 m+ R+ x& [: X2 I
  135. $redis->rename('x', 'y');
      S1 X$ X4 h/ }1 z( J
  136. $redis->get('y'); // → 424 ]) D  r! V! W' r$ Q3 i
  137. $redis->get('x'); // → `FALSE`! p' U5 f( b' A& e7 {2 T3 \) e

  138. 5 r6 [( c  M$ ]2 h
  139. renameNx$ Q7 ]/ [  l- H) c$ @9 `+ L
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功: b+ T  p4 [$ r: i$ J
  141. : p: `* W9 j, g& I; R4 a
  142. setTimeout, expire3 e% |* f. x6 o6 n  f
  143. 设定一个key的活动时间(s)1 `0 d) ]+ t4 F- \9 o* X5 I
  144. $redis->setTimeout('x', 3);
    % ~  |/ v5 I+ Q8 C# `2 F

  145. 9 E& L6 r  {; E7 ^' q& B& T
  146. expireAt
    % \+ W% B4 n2 H. k
  147. key存活到一个unix时间戳时间* Y' G5 X+ @: G6 E5 D+ Z, B1 R
  148. $redis->expireAt('x', time() + 3);
      z3 j  X- K6 n2 k

  149. 2 a# z$ ~. F3 ~- b) I
  150. keys, getKeys7 y, i, U6 o9 y" y! R
  151. 返回满足给定pattern的所有key1 ~* r0 ~1 G, V  i  C7 F* y2 D
  152. $keyWithUserPrefix = $redis->keys('user*');% k3 H# d3 d5 S5 j  p* Q: [& k$ j
  153. " y- _! y+ R' p- c
  154. dbSize6 I, w1 I$ H0 X/ X# A% U
  155. 查看现在数据库有多少key
    : n, A  N  i0 Q
  156. $count = $redis->dbSize();
    / M/ Y; Z8 s. G
  157.   e' V) _1 y2 m- H( _
  158. auth
    / x: B! J$ A/ u' ^- E# t' `
  159. 密码认证
      h- b& k% U# w9 B
  160. $redis->auth('foobared');. k; J* G7 [1 D. U7 [3 ?
  161. 1 i7 ?7 v8 b7 ]/ ]+ F3 t; r0 j; c% T
  162. bgrewriteaof- A; R; }, ]6 }/ I. g
  163. 使用aof来进行数据库持久化/ a/ q8 I! m- N) N$ `8 S
  164. $redis->bgrewriteaof();7 R2 q. E4 @5 G, z: g
  165. % `! w1 \/ e) f, Z
  166. slaveof
      J9 w$ P' K9 A/ V# w+ h& Q
  167. 选择从服务器% t! \, G* `2 w" J% I
  168. $redis->slaveof('10.0.1.7', 6379);
    6 Q/ s. y$ I# o9 b
  169. % l8 D7 a( {9 h, X. l
  170. save
    ) F# s/ F8 c0 C
  171. 将数据同步保存到磁盘" O' d- W) M* i% u0 [9 i. D

  172. & z8 N* [% o  K/ W* i
  173. bgsave0 `  U6 I9 |2 [, _& p( w
  174. 将数据异步保存到磁盘/ n! t( a4 j% h0 g3 y! I  G6 d
  175. ; G# ?+ |/ ]: d. A: L2 d
  176. lastSave3 T5 b5 P) F4 R. a$ w
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    # ^+ {4 ]2 B: c4 f

  178. % @% q. K* z3 q& c9 k
  179. info: b* l3 u3 P  m1 J" s
  180. 返回redis的版本信息等详情
    2 H0 P( t4 `7 d8 d$ J% K/ a8 C

  181. $ s8 D5 D0 B# b
  182. Redis::__construct构造函数
    8 f) U& v  T2 L8 @
  183. $redis = new Redis();
    2 p9 @* D5 o2 d8 |5 q0 N5 M
  184. 5 o6 V# f$ r9 @. ?% G) h
  185. connect, open 链接redis服务1 U, A/ K( `  {
  186. 参数' ?' V9 d% k  V1 j4 U" J4 u
  187. host: string,服务地址5 J0 V6 ]) b- f$ f3 C
  188. port: int,端口号" f( C$ K7 b' @0 _6 g7 Q$ f( }
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)' v2 c% l% l7 y) T5 q
  190. 注: 在redis.conf中也有时间,默认为300
    0 f' ]7 e# k$ k- ]! E: a% c) a
  191. 7 ~( |) L+ H  H- D
  192. pconnect, popen 不会主动关闭的链接
    7 X7 X$ y; G/ T: Z: v  T
  193. 参考上面
    ) J6 d& l( b6 z( g- p
  194. ) B5 w- i# Q; J& z% n! e
  195. setOption 设置redis模式( S3 b1 f/ M% m; [( N  A  h

  196. 1 q0 o. ^( s! y6 e
  197. getOption 查看redis设置的模式+ V- U' ]5 ]& I. ?5 `( N

  198. 5 a" O7 a9 u3 ^: B
  199. ping 查看连接状态' B7 n: d7 |0 C' q2 N
  200. 9 [- X. g+ n: X( |
  201. get 得到某个key的值(string值)
    & c) _' F: ~7 y
  202. 如果该key不存在,return false! y- \9 a2 A1 G* W/ h. T4 F
  203. ; J8 v0 C! Q4 x0 x$ k. _
  204. set 写入key 和 value(string值)
    6 v4 b$ r- }+ i# B/ Y5 i
  205. 如果写入成功,return ture( @6 j' q; m0 g/ D: a, e6 v. @

  206. , U4 c2 e$ ^, G0 Q
  207. setex 带生存时间的写入值
    6 P& ?& Y: S2 D1 V9 A3 ^, }
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL., r" g8 l# c" x0 M  ^; z3 G9 S

  209. & Z+ U; N+ R, i4 @
  210. setnx 判断是否重复的,写入值
    . e# G3 j! T& i) }
  211. $redis->setnx('key', 'value');
    5 e$ ~, k( }8 I* }' q1 V% L
  212. $redis->setnx('key', 'value');* I5 G: Z- F6 \/ L

  213. : g. d8 C3 x: T4 d( r( x
  214. delete  删除指定key的值
    ( k' v) @4 V" B4 R" ?) y% w& M% t
  215. 返回已经删除key的个数(长整数): @4 K$ G( C8 E3 c4 e
  216. $redis->delete('key1', 'key2');0 U& |# s" B: ?1 k
  217. $redis->delete(array('key3', 'key4', 'key5'));5 j$ q: a9 d9 u  N. y1 Y

  218. ) T6 m' r; r" h& o! f
  219. ttl
    + h$ {1 |* @) Y8 v1 E- @
  220. 得到一个key的生存时间
    ( H. }2 A$ w5 x$ U/ U

  221. ; d9 e) C6 b% j) A# T# m: \
  222. persist
    4 J$ p5 \: e; x! ~4 q
  223. 移除生存时间到期的key
    " q0 {9 D1 C1 w8 f- C) k$ O2 {
  224. 如果key到期 true 如果不到期 false2 r* s+ S7 _% ^2 Y' W& {( R# v
  225. * S* b& o) x- z' r6 A) ~/ x
  226. mset (redis版本1.1以上才可以用)2 E# I0 ^0 X8 f3 k
  227. 同时给多个key赋值1 U! f1 r: d8 f  ]
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));* f. d: ]% K% f. w8 F4 l
  229. . k) z& J( A+ _2 \" ?

  230. " Z# }& \# V9 C* r: [0 E* ]2 A

  231. * B8 L8 l- o& J+ q. ]
  232. multi, exec, discard
    # l6 J6 g" }. p* y" s6 z: C) F
  233. 进入或者退出事务模式8 c2 P; ~2 X( s% T6 Y# H  N  d
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI3 x" o; h1 ?. e
  235. Redis::MULTI:将多个操作当成一个事务执行
    9 O2 P# O( p3 A& X
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    + F! i  C3 s# A: f3 {7 ]
  237. discard:删除一个事务
    $ p# h1 i! ?5 P# Y/ G" v
  238. 返回值6 k0 S! X# v! L- m$ V: J, X! u
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    5 u& j2 j1 a; ]5 [( D. e

  240. 5 ]0 |- [4 J" S; c
  241. watch, unwatch (代码测试后,不能达到所说的效果)6 E) D4 B2 E$ x- a4 [
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    ! W- f& d+ k$ {+ \6 e
  243. unwatch  取消被这个程序监测的所有key# p: S6 I2 V: z* u
  244. 参数,一对key的列表
    5 m# O3 a( K- e
  245. $redis->watch('x');0 I2 @. X. E% Q( O" _2 a

  246. 0 J5 z4 M( E+ j3 Q8 ~7 V
  247. $ret = $redis->multi() ->incr('x') ->exec();# U9 u# K  W; e. a

  248. 1 j* V$ W: s4 V
  249. - x( @- c, j9 X0 I
  250. subscribe *: R8 l) W' K. {- a/ S; k
  251. 方法回调。注意,该方法可能在未来里发生改变! p+ ~; g2 P  ]' {1 o& v- h

  252. ( A( T( W& a+ D! u/ g" B" p
  253. publish *
    , h6 s  a6 T& N' n6 Y5 w
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变; ^/ G1 E; e* ~1 Z4 E

  255. 9 W: [# V3 a* I/ Z& n: t/ \
  256. exists
    2 j" U. S! m' t' r+ ^. V6 D
  257. 判断key是否存在。存在 true 不在 false& l/ [4 D1 y8 d9 J* d
  258. 8 E5 d9 o$ D8 J
  259. incr, incrBy
    7 s6 E3 j: y" N$ r
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    1 b8 w( N4 t8 A/ d
  261. $redis->incr('key1');
    0 I2 j2 ]* f1 b5 h2 j7 a
  262. $redis->incrBy('key1', 10);! M, C5 E2 F6 p1 o. d
  263. . q* @2 ]4 T0 L7 ~, @
  264. decr, decrBy
    + S- R2 u% [4 H3 \
  265. 做减法,使用方法同incr
    4 l  q, `; O3 G7 [
  266. ) ~( u; T4 w0 [! t: {+ K
  267. getMultiple0 t8 O4 H6 I! I) P
  268. 传参
    , V8 e( a. S* G7 [$ F: ~- Z
  269. 由key组成的数组
    + m% V! C1 f) K* _: U+ c
  270. 返回参数
    ; R1 k# y0 t; p# ~+ Y) z. n! \
  271. 如果key存在返回value,不存在返回false
    8 m3 K! k! V  ~/ p! |& B/ Z
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    1 V5 I- Y+ @/ g3 O; v
  273. $redis->lRem('key1', 'A', 2);
    ' Y& m, N) R4 }
  274. $redis->lRange('key1', 0, -1);
    + l" J9 o) X& g; s9 Q+ A
  275. 3 T# a' `7 Y; F- `: n% v
  276. list相关操作( r; |' F' r+ p1 m& K
  277. lPush
    8 A: j4 t; U8 B; A
  278. $redis->lPush(key, value);
    7 X+ R/ v2 h- j( x! z$ ?' _# B8 w3 n
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    # ]) F* y9 Z7 d( b- r3 @

  280. / g7 V* Y- P" `) ]
  281. rPush1 e; l/ C$ a9 `; @
  282. $redis->rPush(key, value);
    8 K2 r- Z. M7 s0 W8 N) J  K4 u
  283. 在名称为key的list右边(尾)添加一个值为value的 元素+ F+ L: Q3 J" m2 N
  284. 1 i/ b' d5 j4 E3 T9 e
  285. lPushx/rPushx
    " ~# ]& T5 b  V* a' z; R  _( Y7 j
  286. $redis->lPushx(key, value);
    0 B: ~& T0 q  B0 h6 e8 c1 Z
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加  N+ ?  K1 S) [# N
  288.   m6 [2 ?4 u9 v5 S! H
  289. lPop/rPop
    ) X, [, ~3 p. W3 @  n% G$ s! E
  290. $redis->lPop('key');
    # Q2 x. h% [- K
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素) ~7 ^/ }: J* V8 Z

  292. $ L. n: x$ T' G( ~6 Z4 z, `8 o0 i, P
  293. blPop/brPop( Q$ w/ T: D6 m. [+ ?9 {9 ?
  294. $redis->blPop('key1', 'key2', 10);
    + j  P) t2 H! O
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作" n; V* s/ q0 ]  S( T1 Y, l

  296. & I% z8 q3 a* B$ G$ d
  297. lSize8 _. c! s: Y% i) ^  e8 X# E
  298. $redis->lSize('key');- B& R9 ~' J/ w. B5 K
  299. 返回名称为key的list有多少个元素
    / B: |! H' D- e0 u7 D) S% t

  300. / S7 F$ N5 T6 R! B; f' L
  301. lIndex, lGet4 [/ ^; C: q2 C: G: n) M
  302. $redis->lGet('key', 0);/ E3 U- P& U1 i# I: x. o+ c! ?
  303. 返回名称为key的list中index位置的元素3 @7 h" O" b0 q* Q+ N5 i) h4 z
  304. + Y3 d2 L& {" q6 O9 K- n2 y
  305. lSet
    ; [' A/ M# K' ?2 I3 J) q& c4 [
  306. $redis->lSet('key', 0, 'X');6 Y7 @' p1 I& J5 h$ t. Y- l
  307. 给名称为key的list中index位置的元素赋值为value0 M3 t3 f2 a+ |) I  U2 x

  308. 8 U3 z7 N4 c4 g, C' k, B
  309. lRange, lGetRange
    * p% g. Q9 i" O( B+ j! g; R1 }
  310. $redis->lRange('key1', 0, -1);
    2 G/ G# |, m) m4 ]& c+ h3 o
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    " k0 A' Y+ e6 x+ ?6 Z
  312. ' ?2 r$ V# f7 f
  313. lTrim, listTrim
    - L; z% S9 d+ \6 v" U
  314. $redis->lTrim('key', start, end);. K! r% p. L2 d
  315. 截取名称为key的list,保留start至end之间的元素5 x' t% J3 Y  n

  316. - o1 B- m' t: u
  317. lRem, lRemove) {3 z+ M+ M+ [7 _" x0 Z; v8 i2 o
  318. $redis->lRem('key', 'A', 2);
    * s" o' z- L+ y9 x( N' Y6 }
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素" g7 c) {  g! o
  320. : a: u* R: k/ U( i$ F# s# m
  321. lInsert1 c) x8 C/ c- ^8 |
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -12 A# O; c: {" |& _) ~2 E8 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');
    ) l6 {; _3 a2 s3 W8 C
  324. $redis->lRange('key1', 0, -1);! O! A+ _" Y0 u, S2 O9 C  F6 X
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    7 ~+ i' Q% b: D0 [: ~
  326. $redis->lRange('key1', 0, -1);5 F1 w; a2 K- c1 ^  K+ S, Y" N
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
      y" M& B& e" r8 z* W0 r2 Q  S
  328. 9 ~. [6 a4 K$ @, U( S  T
  329. rpoplpush
    8 m/ U7 S9 O6 `* g1 T# ?3 Q9 ~
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    ! M  n2 e: y0 z( O% `
  331. $redis->delete('x', 'y');
    7 a, q) k- |  a( ]6 H6 F3 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'));& W( T  n; t. z; x; k* }
  333. var_dump($redis->lRange('x', 0, -1));7 T) G! Y: R1 K
  334. var_dump($redis->lRange('y', 0, -1)); & e  D, I* I& b0 t& O
  335. 3 A' p% o$ M& @7 e3 F0 U, R
  336. string(3) "abc"
      i$ _  M* h1 U8 ^, E( R
  337. array(1) { [0]=> string(3) "def" } 9 Z: s- s# s/ _, |/ d# O
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    ; [0 _. e. @, L0 D9 s! Q1 X  q

  339. 1 Y& o/ F6 M. T0 \
  340. SET操作相关
    ' c1 k: _4 s: S2 P
  341. sAdd
    . k& \) A% N7 }2 k0 ]
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false- ^  ~" F9 M  M! b, S, q/ |
  343. $redis->sAdd(key , value);' P5 C, s' B8 \0 n" r% ]
  344. " U  y3 D1 D5 t7 D: q
  345. sRem, sRemove
    $ u* Q( ?  ?1 o- ?
  346. 删除名称为key的set中的元素value
    5 L( d" ~0 L& R+ P
  347. $redis->sAdd('key1' , 'set1');
    ' w9 T8 p+ h) i& P/ n6 w( x8 X
  348. $redis->sAdd('key1' , 'set2');5 L9 x% H1 |9 M- R% A
  349. $redis->sAdd('key1' , 'set3');
    $ [  N" z; w9 J- u, s, Z5 L; |) W3 ~
  350. $redis->sRem('key1', 'set2');
    ; X% b! C$ A3 a8 @

  351. # n' O7 q5 G- f# S; Q
  352. sMove8 E: Q0 |( E# i" T
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合/ w3 r, ?! k1 X9 u
  354. $redis->sMove(seckey, dstkey, value);
    - R/ G, x0 ]5 N9 u
  355.   t9 W& T+ V/ T& h: \: I) p% q, P
  356. sIsMember, sContains
    2 B4 V% x5 R2 A3 a
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    2 t9 |* j. \1 Y- q
  358. $redis->sIsMember(key, value);
    7 [: V0 z/ l; ^  v8 [
  359. ( k( v  Y4 L7 D9 ?4 C8 I
  360. sCard, sSize
    9 w- x- m$ X) M/ y  v( U9 u. {# M
  361. 返回名称为key的set的元素个数  m- P' k* q0 H" z. N5 v/ R$ R0 M

  362. ! l, K( t# u& P# s
  363. sPop) u3 Z  W; \* ?" c+ p, ~3 o
  364. 随机返回并删除名称为key的set中一个元素
    2 N& @& C- E1 E# W7 R2 Y
  365. / S" M, o1 T  s# q  }- L- \( B
  366. sRandMember
    8 C4 a7 v2 s7 r% ?. d- I* x
  367. 随机返回名称为key的set中一个元素,不删除+ Z. v5 R" k/ n+ B8 K/ z5 _, ]; e
  368.   x: q" ]2 d2 v
  369. sInter' l7 V7 P+ d! Z+ E9 d0 P
  370. 求交集% S, ?# t, R# U  Z6 @, z

  371. 3 ?" Z: F0 M8 I" @$ V0 }
  372. sInterStore- t7 ?% ]3 U6 ^: \+ m! O
  373. 求交集并将交集保存到output的集合
    ! E+ _! E: n% {* G8 l
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')# T4 q4 {- x0 C/ ^. O
  375. 0 m, a$ F* O1 [6 o8 j
  376. sUnion
    7 B: N% Y. O9 `: B" K
  377. 求并集
    - j: S& q0 a; e) \, w" ]: j9 O
  378. $redis->sUnion('s0', 's1', 's2');. @8 Z5 J  @' t, L
  379. s0,s1,s2 同时求并集. b* W7 O& T" D. q

  380. 6 y: `: ~, j( ^
  381. sUnionStore
    8 {' B1 v1 y" e1 N' |% l* U
  382. 求并集并将并集保存到output的集合
    5 W# Y* T& d1 A5 u! G2 L! g
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');6 m( P9 d! F! }7 K" p2 y

  384. ! j9 f- n; `' W& q+ l$ I; C
  385. sDiff6 p% {6 E4 b2 M! S( B
  386. 求差集7 x1 ]! h  V% m7 J$ P
  387. - \+ d, f8 D6 q0 n' l4 y# M
  388. sDiffStore
    ; J8 X2 p9 r3 Y# T: A! j; q* ^8 t% Q, Y. z
  389. 求差集并将差集保存到output的集合
    , U  f  J$ t( Q8 f; D. M, k5 B

  390. 1 \4 ]6 X( P5 [  \: F, p8 Z6 M
  391. sMembers, sGetMembers: w, j) V: N7 n
  392. 返回名称为key的set的所有元素
    # U( ]; Q" d, ~" k* P; ]% l5 t

  393. 1 h4 {; W) ^5 i
  394. sort4 t1 B$ Q1 Q$ q$ S
  395. 排序,分页等
    % t/ q: s1 m8 H8 z. l
  396. 参数
    4 Q/ v% H) V. `; m
  397. 'by' => 'some_pattern_*',0 d% Z7 g% P, Y: Z. |( r
  398. 'limit' => array(0, 1),: X% U% A5 t7 P0 ?( \; l3 t
  399. 'get' => 'some_other_pattern_*' or an array of patterns,  D5 M. i8 C2 {' r. f5 u1 M
  400. 'sort' => 'asc' or 'desc',. ?2 C* V9 R, {) o6 Q6 Q0 V
  401. 'alpha' => TRUE,
    8 y* D# a3 A& b2 n* A& ]! h
  402. 'store' => 'external-key'" e. r( v) T1 s( l" \- @) U" ?1 l
  403. 例子! s  i5 `$ X& v+ Q3 C/ w1 E
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);* |5 l3 t/ G% n% S
  405. var_dump($redis->sort('s')); // 1,2,3,4,51 V1 D7 C' U* {' l8 z& ?
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1* W/ ~+ e' |7 R+ _
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5+ g8 h7 Q! p: |- i+ B/ n
  408. & x  n' y% ^' L) h- O2 z& _# @4 {
  409. string命令, n! ^/ q# @8 {* ~7 m
  410. getSet
    * S0 x7 |- I8 H$ b5 a
  411. 返回原来key中的值,并将value写入key, A; D& \6 p) u- E& M
  412. $redis->set('x', '42');" N" ^# _5 O, {% r
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    . j6 h6 w/ a( ^5 |% g. ^
  414. $newValue = $redis->get('x')' // return 'lol'0 I* ?  l# {. S* I. v0 g& z0 O. S
  415. 3 Z0 L+ R: _- T# v
  416. append! K4 G* B: W1 Z. y# r, d1 o# L/ F
  417. string,名称为key的string的值在后面加上value
    5 U  O9 o5 @6 D% t! r* v/ q
  418. $redis->set('key', 'value1');
    8 S& S) p* s& i$ c$ z+ [3 T  A' x7 u
  419. $redis->append('key', 'value2');- h4 A7 U- C9 S& Q8 t- Z" F
  420. $redis->get('key');; R2 \. T- l; m/ K6 S3 T# ^; o

  421. * y8 e/ s& W0 J) V8 n4 s1 x) ~6 i
  422. getRange (方法不存在)8 V1 }$ _' h. L: u9 S3 @
  423. 返回名称为key的string中start至end之间的字符
    ( o% m/ D$ Y3 l! D5 Z
  424. $redis->set('key', 'string value');5 X- t* n, I& O4 ?. y2 B8 v
  425. $redis->getRange('key', 0, 5);2 e& n- o" `6 a9 P* T
  426. $redis->getRange('key', -5, -1);. G8 `6 S& V- K  U

  427. 1 U1 @3 h% Q& b5 q
  428. setRange (方法不存在)3 O& K) J6 a7 C0 n% W& T! x
  429. 改变key的string中start至end之间的字符为value. b# R9 h, C) L9 _9 t& }  y# C6 E
  430. $redis->set('key', 'Hello world');- m3 d, ]# B; R
  431. $redis->setRange('key', 6, "redis");/ ]( U) D" S- f, j
  432. $redis->get('key');
    ' O- h6 S9 _% m. l; E7 @, [
  433. 9 S7 p# m7 |0 x- W) m/ a( b
  434. strlen
    5 y0 ~( P# z1 W% A
  435. 得到key的string的长度3 c( X# f9 Z2 G4 f, N2 D
  436. $redis->strlen('key');6 j2 V+ {0 }6 X* r2 @
  437. 2 Z# g! v: U4 W4 \! M5 N
  438. getBit/setBit3 k& u) U; s7 V3 G+ B* K. L5 A
  439. 返回2进制信息
    1 |' X; F/ U. _% J% x( S7 W& i
  440. 5 ]9 a6 S; }7 j' H4 Q
  441. zset(sorted set)操作相关( A9 C" R" r$ H* M; M- F& f
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。' s" Y$ g1 H( I; L0 J$ M
  443. $redis->zAdd('key', 1, 'val1');
    ) Q4 Z) ~1 e4 L
  444. $redis->zAdd('key', 0, 'val0');8 T- [* o- r' R8 ]* @: b
  445. $redis->zAdd('key', 5, 'val5');
    9 _; J. o$ U7 W2 A$ Y
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    / q) n  ?- J; t$ P: ?! T1 _. r

  447. 2 @3 J; q+ P6 s, p
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素: `5 C4 j) K  M* B# k
  449. $redis->zAdd('key1', 0, 'val0');
    4 R2 [* p. @$ u# h9 V+ ~# y2 K! @. p
  450. $redis->zAdd('key1', 2, 'val2');. X0 @9 l2 q: T( `# L  Y
  451. $redis->zAdd('key1', 10, 'val10');
    : ]; M5 D# u4 ~9 C3 \2 g* F8 T
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    7 C! Z2 `( L9 f% y" J0 X
  453. " ^9 j4 t# A4 V) }
  454. zDelete, zRem4 |' k9 C/ t1 _- j% Q4 j
  455. zRem(key, member) :删除名称为key的zset中的元素member: c, o5 t& b$ j- X
  456. $redis->zAdd('key', 0, 'val0');
    / S- S- P: _8 r0 O3 F0 i* @* [
  457. $redis->zAdd('key', 2, 'val2');
    " m8 C% j1 L% X. W
  458. $redis->zAdd('key', 10, 'val10');
    * M( ^" n! c) m9 l2 v
  459. $redis->zDelete('key', 'val2');1 n( }, s4 L5 a& f5 r( v
  460. $redis->zRange('key', 0, -1);
    ) x% L& @( n8 n  j0 ~* ?9 a

  461. / z! Z) |" {  g' n' [2 S, q
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    % z, K0 _7 ~. A
  463. $redis->zAdd('key', 0, 'val0');
    6 h! m4 q  m6 A8 y8 L% W1 Y
  464. $redis->zAdd('key', 2, 'val2');$ s+ D1 ?: d! g8 r  \2 N3 J
  465. $redis->zAdd('key', 10, 'val10');" n( B; s; ~0 e  _/ R' W% [
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);8 F- E# Q8 _" ]4 \
  467. " |- W0 r/ K8 l4 ~- ^3 k; X6 c& s
  468. zRangeByScore, zRevRangeByScore8 J, D! G& y! h2 a& l: W( v+ }
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    + d4 A3 O% F5 X- o
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    - m2 Q. x7 R, l+ S
  471. , T  Y$ v" `+ o( Z; _
  472. zCount7 e4 o/ a( p/ q4 q6 M# P8 z
  473. $redis->zCount(key, star, end);
    + ?. e6 y1 _, N  I/ W) J! ~
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    * K! \& Q1 N8 r3 U1 T( |1 [* n

  475. * y$ W. {/ n3 d
  476. zRemRangeByScore, zDeleteRangeByScore
    4 _& Z# r4 G2 l* c6 M
  477. $redis->zRemRangeByScore('key', star, end);% G. `( h5 k& Q4 d( m) F
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数; X+ W( h3 Y( q

  479. ! j0 d" p5 d0 |8 u( b6 R7 S4 _$ |
  480. zSize, zCard9 [- n+ I# d8 x2 @
  481. 返回名称为key的zset的所有元素的个数
    , x& b& @3 q; Q8 H' x" r

  482. 5 o6 [1 A+ n8 M1 p6 N# p
  483. zScore
    % S+ s* @8 R0 H7 }6 j3 ~
  484. $redis->zScore(key, val2);1 u) C9 K% e9 ^7 w
  485. 返回名称为key的zset中元素val2的score6 I0 W1 L; d+ Q" v
  486. 4 R' [* t( z" m" R
  487. zRank, zRevRank. y3 ~% L- e3 C2 M% r2 |* ~8 s, s+ `- P
  488. $redis->zRevRank(key, val);
    1 d' [$ q8 N5 K" k+ n
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    0 N6 \3 q; O# C0 p+ t

  490. # ]! q4 M4 V1 ~5 Y$ r* A' |
  491. zIncrBy
    5 N: n! C" R7 z: C' O
  492. $redis->zIncrBy('key', increment, 'member');' y% E: ]/ l+ F* u
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment2 M: m( w/ u5 v- r- ?% ~: Y' D! ~3 c

  494. 0 L; c: q* Q/ D+ m3 C$ e7 c$ O
  495. zUnion/zInter: }% }& {& D0 {) a+ p
  496. 参数4 ~" D+ W$ Q1 J  T) U! C/ N. Z% V: D- ]
  497. keyOutput
    & v5 e' p% v; \
  498. arrayZSetKeys/ ^. u& N9 J8 g1 \5 T. D$ Z3 X
  499. arrayWeights1 a  L/ y8 B' |9 j
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.* L; \! K6 L6 n
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。) Y- ^* z' ?5 K. k2 Q
复制代码
: a; l( K* V* q/ L

5 _  ^; Y) S3 T7 i$ b
- r) A9 Z) f, `1 g, n8 {
, ]1 R$ K* _: ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    ' N  x2 ?3 z8 Z( z. m2 I' b
  2. //连接redis服务器 ( S- K' w9 k) p  B2 k/ C( I' P
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 03:18 , Processed in 0.056681 second(s), 18 queries .

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