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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php" m1 G2 E! V4 ~% E2 S
  2. $redis = new Redis();  : e0 z  @8 M; C  c! q) y+ h
  3. $redis->connect('127.0.0.1', 6379);//serverip port7 s% j* k3 i. e0 O5 K
  4. $redis->auth('mypassword');//my redis password
    ( _9 ^  m8 |1 ?+ r7 A' S# N- B% p. u! l) S
  5. $redis ->set( "test" , "Hello World");  
    " ^7 Q  `) y* p* g1 v4 j0 |
  6. echo $redis ->get( "test");
    8 V& _$ c! X2 Z, T) k0 w6 }4 f5 d  {
复制代码
php操作redis函数封装
  1. /**
    9 z% H$ x9 o. c, P& r4 H
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数2 F& ^# i7 _/ d9 b1 u# c
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi0 c* B0 y! Z4 X3 O/ X/ s0 l
  4. */
    $ S7 N3 _9 E. X* j
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){+ F+ k# @& a) x# [$ A* E
  6.     if(!$key||!$value) return false;; C$ }9 T4 H' V- Q+ L8 u: o: q
  7.     $host = $host?$host:getenv('REDIS_HOST');( w: r% O2 Z- h% l4 `& K
  8.     $port = $port?$port:getenv('REDIS_PORT');% f2 b) K( u/ w% w9 K, ?/ T
  9.     $redis = new Redis();- _( w, u5 v1 l" p; C# M
  10.     $redis->connect($host, $port);
    . ^! T, G' L# O: V7 l
  11.     $value = is_array($value)?json_encode($value):$value;6 L1 A+ o& x) N
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    $ x% l1 Z# O: C- ?& {. X
  13. }
    6 H& o, f# K9 H9 s' B
  14. /**
    * H5 M1 _/ L( M8 Z9 X' [
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    + x6 U; ^! h; f9 l2 P5 [2 h
  16. */
    ; h. C1 c' w5 s
  17. function RedisGet($key,$host='',$port=''){! _. x# g6 k: m$ W, {% Y
  18.     $redis = new Redis();
    3 Z" \. n5 i3 ?9 }3 O4 @. h
  19.     $host = $host?$host:getenv('REDIS_HOST');, q' U3 Z% g8 S6 V# i6 P5 {9 Q4 f
  20.     $port = $port?$port:getenv('REDIS_PORT');% Y, V, P/ N) [* }
  21.     $redis->connect($host, $port);, Z0 H1 Y2 H6 a, R& u3 R# a
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    % u5 B; z1 T# t
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);% l7 E/ A3 E3 `6 Q! `3 T8 q' w
  24. }. w1 ]* y! e* z- f3 G
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了7 H; H% g. A' s* F
  1. setex 带生存时间的写入值9 S' l% k/ [  C  j( _  u: @
  2. $redis->setex('key', 3600, 'value');
    + U7 x" }: K% K  S  M6 e5 r1 B" g
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
      K4 \2 T5 l( R7 `; J% O
  4. $redis->setnx('key', 'value');9 {! V5 |0 b" d: c7 u) O* |  T4 G- i
  5. 返回已经删除key: y/ D( w* k/ }' ^
  6. $redis->delete('key1'); 成功返回1失败返回0
    4 b- c6 z1 C$ M, A
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
      ]6 A; l$ |. s6 p
  8. 查询生存时间
    0 ~1 X: h6 ^" T0 p' Y
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)! m3 l  p4 y" w
  10. 同时给多个key赋值,同时设置key0和key1+ G  h/ i& Q5 @1 p3 o
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));- V9 n# I0 U" [& S
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值: E# k( g6 P* b; O/ g" q/ Q
  13. $redis->incr('key1');
    4 S" T  Z0 ]& U
  14. $redis->incrBy('key1', 10);: r, P  e( X( K1 C- X( Q
  15. 减法跟加法一样
    ) V% X  M; A9 Y9 A
  16. $redis->decr("key1"); 减少17 y# I  L9 T& I! y( e- o9 p
  17. $redis->decrBy("key1",5) 减少5( r7 B0 N1 }6 b2 U! s
  18. . }% Q2 Z. W( m; V, W" g
  19. list相关操作,连表操作
    6 T; v# A# t: Z1 f- m% v2 U
  20. lPush
    / o: o, ?& X6 V: S# P% q/ T
  21. $redis->lPush("list", "888");1 E6 e2 ^3 c) P7 ^0 F; d( {
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数% s# b- q2 Q/ r1 h  t4 z
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    , i5 F! Q9 x: I$ ?' T3 F$ i- J4 F7 ]
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    8 ~/ P& J6 ]7 E
  25. lPushx/rPushx
      y& X8 v1 F5 M  n
  26. $redis->lPushx(key, value);/ T! i5 ?% J# N) s- u
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    & {! t7 @2 z; w

  28. 6 h: f. R2 h, _. T9 `& @7 M
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    : e# {9 B* k2 D5 {5 F$ U) I0 O
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key( S# k5 z  G/ R0 |
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    & M  w* W+ A) J9 L! j! w. G& K
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    2 [9 A2 u+ ~, e' n5 _4 i; o
  33. sadd s1 zhangsan! c) |9 k0 v$ w6 C
  34. sadd s1 lisi
    $ z$ p8 x5 V- c/ Z
  35. sadd s1 wangwu
    % O; l5 C- W5 u, M
  36. sadd t1 yangxingyi- r* _% M# f2 {$ G# S6 b  z- a
  37. sadd t1 lilei" W0 N' @# ]9 ^7 e+ a3 a2 B! i
  38. sadd t1 zhangsan: |, K' M/ O8 |# U- ?/ }
  39. smembers s1 s1的所有集合内容
    5 e# u6 _: h8 a- v6 x
  40. sdiff s1 t1 s1有的,t1没有的,差集
    ( e* X. _/ J& x
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    7 L0 g8 l0 t' y/ }' L2 G8 `! s
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的1 T4 G- \8 \9 p9 C0 u7 k
  43. spop抽奖场景,返回集合里面随机的数$ z) Y  E9 e+ ?/ b
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了" q* F2 [- z2 B& Q+ r; {" H7 ^
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    8 P5 _- d* i0 A
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    4 ^" k$ _/ j- E; p& H( @
  47. 随机返回集合里面的一个元素,但不删除,重复中奖! B7 `* F5 F. r1 F; S+ P
  48. $i = $redis->srandmember('s1');echo $i;
    % y9 |1 ?& D, t: l  u" I7 n
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    % b# A* p* L: `6 n5 O0 ?/ {4 K6 b
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false1 m# o" P. V2 j% C' `* O! n

  51. # Q0 N2 u" U0 A, w: V
  52. zadd key 2 value 有序集合
    7 u! O. ]9 U7 o3 q
  53. zadd y1 1 zhangsan;1 V* m/ V) H- e& c# t: @
  54. zadd y1 3 lisi;, t6 G* K' z0 ]/ X' t
  55. zadd y1 2 wangwu;
    4 C7 S  V) @. Y
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    6 A+ K& b  P' u3 f8 }+ j/ C0 n+ ~
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);/ z( A. J8 J2 Z" l6 x$ ]% k$ E# U. n% X
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    $ e2 T7 O5 i9 G
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先# h5 M4 M; T$ H2 ~. X7 ^0 I4 r
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    , B, t" ~5 ^6 A, k7 W% p
  61. 无序就scard,有序就zcard,有z没有s
    ) M% q1 _% @6 L1 `$ v
  62. sInterStore7 E8 R  c# c" i& i# E( C! U- N
  63. 求交集并将交集保存到output的集合
    ) B0 ~2 q* _3 N6 ^
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    9 I5 b5 @4 D# h1 C6 j3 X
  65. 8 \* f' N+ n1 D) R  @4 M6 ]
  66. Hash操作9 I6 X& s8 e3 g6 a( b  S) }! A' l
  67. hSet
    1 p  a. [' @4 _& y" h" j
  68. $redis->hSet('h', 'key1', 'hello');' |' u! @8 b% E6 @" h. y7 J
  69. 向名称为h的hash中添加元素key1—>hello) z1 B8 x- T, b' a+ I, \" d

  70. 7 w) j8 G* W! I0 h' F
  71. hGet0 y* w. [8 N9 G9 l- ^
  72. $redis->hGet('h', 'key1');1 M, ~, a% e. ?5 g( }' |
  73. 返回名称为h的hash中key1对应的value(hello)
    , W, n- J1 S" s1 g

  74. + c4 o% D. p3 G( B1 ~8 K
  75. hLen
    4 K: z2 Q7 v* w& ]. ?5 I" H9 T
  76. $redis->hLen('h');- g+ H, B+ c$ _
  77. 返回名称为h的hash中元素个数  m. V5 M7 \3 L

  78. % v3 I8 _. }* b, y0 Y4 H# Q' S
  79. hDel6 g% |0 P) I+ G% g7 z$ E* J7 Q. A
  80. $redis->hDel('h', 'key1');
    ' t& ~* t8 B% X! g7 d; y
  81. 删除名称为h的hash中键为key1的域6 o( o  L& _( D

  82. ! ^/ @- R2 l5 X$ m& @* ^
  83. hKeys3 x6 z2 q5 s: L& V
  84. $redis->hKeys('h');
    4 F9 h# ^$ i1 Y7 p, K' K9 m
  85. 返回名称为key的hash中所有键
    4 y" Q7 R+ u) V

  86. ( ?9 ?: q  ~$ k+ z
  87. hVals' n4 O# U, ~5 o$ a, z! W
  88. $redis->hVals('h')2 S1 @: u$ O; f' @$ Z" V
  89. 返回名称为h的hash中所有键对应的value# X0 y. N) t' m* r% l& J) T: d

  90. 9 l; {/ A5 b8 P) L: H
  91. hGetAll
    # q& l% h0 L- V- j: Q7 h! [- w
  92. $redis->hGetAll('h');
    : w/ V* `2 x2 V
  93. 返回名称为h的hash中所有的键(field)及其对应的value& j. g# Y9 d- V% B! E
  94. 1 m9 J( {/ n; s! U9 }  h+ V
  95. hExists
    5 G. B, L2 W6 r* @. o+ Z
  96. $redis->hExists('h', 'a');
    4 P9 Y3 B/ _( i4 D. b3 h; F* D
  97. 名称为h的hash中是否存在键名字为a的域8 T/ O5 m) T$ m" h; J- ~; W1 K/ k

  98. 5 O; D& C. d) A6 u  C
  99. hIncrBy
    ( ^$ T2 l9 c! \$ W- O& E
  100. $redis->hIncrBy('h', 'x', 2);+ H! X+ F* y; S
  101. 将名称为h的hash中x的value增加2& s* R1 L3 J# E) x9 K5 `1 ?

  102. . B6 x) Z, A# G+ J; N2 n4 v; F" i
  103. hMset
    * X8 a% q# b5 b) J: V
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));- b0 S" t0 @3 M. h0 k# w+ u* L( i
  105. 向名称为key的hash中批量添加元素
    / j$ n3 l, r( S  N+ Y" V% K7 Z
  106. ; K  O* v  }! k# f
  107. hMGet+ `/ \7 B8 h0 e5 \8 l( y! v5 z- q
  108. $redis->hmGet('h', array('field1', 'field2'));! B2 g' v2 B' z, Q8 m( M
  109. 返回名称为h的hash中field1,field2对应的value
    6 {3 X" G3 y8 H: K# a8 \

  110. + q) Q+ U2 I# o
  111. redis 操作相关. j! v7 a6 a' Q  R. M% n
  112. flushDB
    1 a# \( }/ _, E  t; \, ^1 q
  113. 清空当前数据库  E; G3 |) R* H% ~; W5 S4 P

  114. 4 _' T9 W, m! o( ~3 o) G/ ~3 l
  115. flushAll. P; K- @4 e. T4 Q1 c! P6 p
  116. 清空所有数据库
    * F4 U* Z& E$ G6 J! o
  117. ' L4 ~4 r) v; I" _
  118. randomKey% F" K  [4 G: ?& W  M
  119. 随机返回key空间的一个key/ j- \6 F9 t/ \' M. W
  120. $key = $redis->randomKey();9 K( P4 P+ p) H
  121. . m8 L  `; H( i4 M' i4 m0 ^) Q
  122. select
    2 k, L5 l7 o( z' B0 N
  123. 选择一个数据库
    4 S# e2 i, `; R; J  ?5 G' Z: r
  124. move1 y/ z3 A- _% W% h7 Y! ]
  125. 转移一个key到另外一个数据库! P6 G# |% @. I$ Q/ z
  126. $redis->select(0); // switch to DB 0$ M$ y" y  C" f+ R$ V' |. w/ }
  127. $redis->set('x', '42'); // write 42 to x
    * w# ~$ J9 ~8 p+ s6 q  b* Y
  128. $redis->move('x', 1); // move to DB 1
      H+ r3 I$ i; z4 l5 v% k
  129. $redis->select(1); // switch to DB 1! T9 {- O% E- \3 P7 Z3 E4 w7 b
  130. $redis->get('x'); // will return 427 d  \6 [1 n& g  |' V: f5 Z  l
  131. 6 o. n+ D7 \+ E8 l" U0 G/ W
  132. rename, renameKey
    5 `; i- m( ^* O3 P
  133. 给key重命名
    9 \) w7 ~% U# k! i
  134. $redis->set('x', '42');3 x+ O# U# V. m2 G
  135. $redis->rename('x', 'y');2 Y& s! I  U. u( R
  136. $redis->get('y'); // → 42
    - |/ Q) V2 S/ T7 m
  137. $redis->get('x'); // → `FALSE`; H; ]+ F! v3 D! ~
  138. 3 p% }$ d6 i8 A3 o9 y1 M, F
  139. renameNx
    " `6 S8 P% ~  |+ u% }, @6 s
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    " P# @; k5 O+ [! L

  141. : R& j: `2 R0 O
  142. setTimeout, expire# [7 G5 P, v( v  I) c1 w" @
  143. 设定一个key的活动时间(s)3 g/ h% H) r  q+ H. i0 H, }$ J
  144. $redis->setTimeout('x', 3);
    : p( W9 E5 H7 ~7 {  B

  145. , x/ Q: r+ B" ]0 ]3 ?( B0 s: |
  146. expireAt
    2 W7 \8 k) k* ^. i& x
  147. key存活到一个unix时间戳时间
    ; d0 z3 i/ t7 K. t
  148. $redis->expireAt('x', time() + 3);: Y$ K, [" n1 @# k8 f
  149. * H3 x3 W5 K- X  {* v
  150. keys, getKeys
    " ^& v5 u! ^& K, [+ {. r
  151. 返回满足给定pattern的所有key
    2 g) e* d) D' K, S# ~9 Z: M8 k" j
  152. $keyWithUserPrefix = $redis->keys('user*');0 ]% v4 F6 I( G" c# p) ^% D
  153. , x- ]  O) n6 b4 z" _, g( K7 k
  154. dbSize
    & ~. _( j& k" e5 ]/ Y. }) p2 R
  155. 查看现在数据库有多少key# \( [1 c, T- d( Y4 |
  156. $count = $redis->dbSize();' ~# w2 b; C+ u+ a2 B

  157. : @% N( S' h# A5 D# j/ s  F/ A
  158. auth
    1 N( ?9 N$ a* T8 R" o
  159. 密码认证/ j. d, x5 ]' U8 b; }- C) i0 a" b( Y
  160. $redis->auth('foobared');
    4 L  Y7 p6 h2 t8 A5 V
  161. * k6 I3 |3 C0 \$ v$ k, z
  162. bgrewriteaof
    , K. q2 G& D" U! S1 r! H
  163. 使用aof来进行数据库持久化
    2 K$ X1 \; g4 o" P( i" G+ k
  164. $redis->bgrewriteaof();
    : B" y$ i' n1 ^* Z% Y6 u9 C
  165. 4 u$ R* |5 M0 R' i
  166. slaveof
    9 ^' }" G3 t1 P1 }$ W( ?0 ]
  167. 选择从服务器; [6 p6 i) D) [+ N: @  Y6 ?
  168. $redis->slaveof('10.0.1.7', 6379);; o+ m7 E8 H& h- h* j
  169. ( V+ D; ?$ h0 n' N( _/ g2 S$ k
  170. save
    * s% {$ Y, W- A; ?& y" i% J6 T
  171. 将数据同步保存到磁盘
    $ ]- F8 k1 N4 K% j5 m+ P
  172. ( Q7 v6 o# S! w- y/ E7 t* C' q
  173. bgsave; O9 p5 B  ]' A7 H
  174. 将数据异步保存到磁盘4 V  s2 g  B% T4 f

  175. : b1 }% g- J2 W9 X, k- D" [' p% G6 u
  176. lastSave3 X: `! E& H3 S! I! N3 C
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    % ]+ b! B. h% n/ [( r/ a
  178. 8 k! ?% g: g. C
  179. info+ V6 b* I2 K8 D/ P6 {) H7 {
  180. 返回redis的版本信息等详情
    6 T  |+ T. y" X4 l7 R8 ?

  181. 7 T! T4 h. S( E! k1 ]
  182. Redis::__construct构造函数
    % z0 l' [- ]4 U, _: d( N* V! a; |& B
  183. $redis = new Redis();0 z/ G- w' B7 h( p
  184. 1 N% x/ n2 L: \
  185. connect, open 链接redis服务% f9 c9 L0 K, Q7 Q
  186. 参数1 g( _8 j; d& \% X5 w8 Y
  187. host: string,服务地址+ k) l6 I6 @  F! k5 O
  188. port: int,端口号* U* a# M: v! g4 }6 a
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)- ?) a0 o1 b$ e# k: M5 }% f8 {
  190. 注: 在redis.conf中也有时间,默认为300
    8 Y/ a0 j/ |" Q8 C

  191. % H. U! ]% ?3 J3 s& o+ d
  192. pconnect, popen 不会主动关闭的链接4 s5 B( b( P% \/ p, z9 g
  193. 参考上面
    * a3 o' l# s: E
  194. % V) M* z5 r% M! S+ a
  195. setOption 设置redis模式
    1 A% a% y5 ^8 j& M6 {9 l) w2 t# p

  196. . J  U6 g: x& F3 y: [
  197. getOption 查看redis设置的模式2 G7 i+ W7 M) c2 a3 S
  198. 0 }. ^' G2 x$ E' u
  199. ping 查看连接状态
    / w/ @$ N0 w& L

  200. 7 m/ x# W& k( h8 B+ j
  201. get 得到某个key的值(string值)
    5 I' x2 i% H# l6 H" k( l
  202. 如果该key不存在,return false' y4 c* |* `; }* q; y

  203. , G0 G% q# S" P0 q+ o
  204. set 写入key 和 value(string值)( D  f; w+ f' @& f# o5 g6 a' j
  205. 如果写入成功,return ture1 ?3 q7 U" a, ^" N( p' B
  206. 4 R. c% ^' l* x
  207. setex 带生存时间的写入值
    , e, x1 Q, r$ h; z  w& i% n5 l
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.$ H+ O0 {4 A9 G' D9 ^

  209. 0 B; ~( u8 Z$ ?5 B# w7 M* n/ }
  210. setnx 判断是否重复的,写入值
    $ \7 ?9 ^' z8 a( E1 y2 }, |! S. C
  211. $redis->setnx('key', 'value');) U3 g8 Z1 P3 ^0 E  e1 `
  212. $redis->setnx('key', 'value');( \4 M: T6 B6 Y

  213. + w/ s: Q; `6 k3 o1 z: D# G. K
  214. delete  删除指定key的值
    6 L3 V9 x/ [& p, q, D$ h, @! |
  215. 返回已经删除key的个数(长整数)
    # n9 Z: A) \* z2 K
  216. $redis->delete('key1', 'key2');
    ) |' [) w. Q! \& F7 |/ i: ^
  217. $redis->delete(array('key3', 'key4', 'key5'));8 G% m* u+ Q" j; n1 X

  218. % F6 B8 u% S, `& }1 f; W+ @, z
  219. ttl9 l7 X" X  q* M  n
  220. 得到一个key的生存时间
    . n! r! ^4 b" b0 ]! ]

  221. 3 |5 c  T3 C% X" J
  222. persist+ T* r! \' f6 B" k0 B
  223. 移除生存时间到期的key
    9 l' {) T9 e' W$ W' m
  224. 如果key到期 true 如果不到期 false: M0 W3 l6 P/ a# ]6 I

  225. - F+ X  |' E( j  |# x1 i
  226. mset (redis版本1.1以上才可以用)( z. m6 ?, T  V
  227. 同时给多个key赋值
    ) ~2 z- g3 E" s4 ^
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    4 `0 D3 b9 Y6 |  g$ q3 }; U/ {

  229.   Z5 n% K6 w% E! M- {) A

  230. 2 V- s; Z- H+ X6 O
  231. ; M8 h0 S5 T- |
  232. multi, exec, discard0 Y' r4 i# z# w
  233. 进入或者退出事务模式
    9 }4 S) l: {% T" e( R& W) R
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI8 g6 ]! _8 v3 K' O% I' U* o! S! `
  235. Redis::MULTI:将多个操作当成一个事务执行2 T" a/ O6 I7 o0 N2 ^# e3 f
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证( p3 |$ C" D. r$ z2 f9 h5 r5 M  Y& y
  237. discard:删除一个事务
    ! [7 k5 g' \% V$ _
  238. 返回值9 X. }: j# }1 q% \  t
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
      ~& K/ a. Y6 ~5 u! }2 p9 r
  240. 8 K& m  g9 q* h1 Z
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    , Z5 l. C8 D$ ~! ~
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)3 W; i. m" |5 i" l
  243. unwatch  取消被这个程序监测的所有key
    " r1 V, w7 e6 F( s% m
  244. 参数,一对key的列表' W* Z$ ^& i3 S( m5 J/ Z: X' D
  245. $redis->watch('x');# _! d1 \7 M# R

  246. # ], L$ H' a9 z6 l6 @3 \1 g
  247. $ret = $redis->multi() ->incr('x') ->exec();4 p" i! z. o; ^
  248. 8 R/ e! s( j) J

  249. # o! w) }* z/ k
  250. subscribe *
    5 c4 x  Z( L# i1 D! W# _. M9 Z% G
  251. 方法回调。注意,该方法可能在未来里发生改变+ Q2 P0 T" Y. l$ Y6 ]" q

  252. 6 Y+ l) I1 x* _8 _
  253. publish *4 U+ u) j- O4 S5 @
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变7 X4 ]' m% A5 ]/ i; ~; ~1 Y! {
  255. 2 i4 O+ f9 ?3 {
  256. exists
    $ m& |8 i, M$ ?$ n5 Z+ j
  257. 判断key是否存在。存在 true 不在 false6 U# f$ i! S2 F$ {! T2 {

  258. $ L! _" i$ @! C- C8 A! W. C7 X
  259. incr, incrBy
    - v+ ?: j$ I, {' T9 ^* l+ r
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值# r  i# E7 x( p
  261. $redis->incr('key1');- o+ K. R/ Q7 o4 [4 O
  262. $redis->incrBy('key1', 10);
    , V+ I4 ^5 v: F: z

  263. : H0 R3 Y& O2 Q) P: M' ^  ?
  264. decr, decrBy
    . d& F; O2 i7 B0 H
  265. 做减法,使用方法同incr
    - F. g5 J; z1 u4 P4 h% R3 S
  266. + W8 Z% ^/ n0 h0 {% u3 `
  267. getMultiple
    ) O% w! a2 V  V3 @" |
  268. 传参
      \+ l# V& L& l6 [6 \1 E
  269. 由key组成的数组
    ; t& }. |: w0 Z
  270. 返回参数% b$ ?: A# e+ B* b
  271. 如果key存在返回value,不存在返回false
      O' L  j. I3 u( G0 L3 o* |' I
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));9 y9 l. ?" e5 q2 [) t
  273. $redis->lRem('key1', 'A', 2);
    9 \2 @* q0 x) N
  274. $redis->lRange('key1', 0, -1);) d/ v+ r1 t5 ]; d% v

  275. : A. v) L/ S% B1 j
  276. list相关操作0 W8 d( ~6 ~% W- ?2 y+ z
  277. lPush- }0 R: Q0 b! ]4 a$ @) v' {
  278. $redis->lPush(key, value);! O. D. K4 Q! u- D, l
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    ( _* O9 o2 B2 r: {7 P7 |/ D2 r+ B
  280. 3 ~0 \" Y8 Z' ]" E; n
  281. rPush. }9 ^5 }' N4 [. g8 X& j
  282. $redis->rPush(key, value);
    " t6 q$ v" N5 {1 b' g/ ]. q
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    # }* L- s  O$ G4 ^5 X  e

  284. 8 s0 u" S3 i, g0 B, K9 o* Q
  285. lPushx/rPushx8 L: L7 D7 E- O8 `2 f
  286. $redis->lPushx(key, value);! m  @9 G% G! k2 K# @6 J( z4 g
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加  Y) C3 ~. n# k3 P5 G0 S5 L6 W5 g

  288.   d" H$ r0 T4 S6 K( O9 M4 x
  289. lPop/rPop
    ! t9 i( r- M8 J
  290. $redis->lPop('key');1 y8 H% d) x$ L1 t
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素' c. q  d; q5 |% f, T
  292. $ \  y; _9 K: f1 r. m
  293. blPop/brPop
    ) F5 V. F% {7 L$ Q* I
  294. $redis->blPop('key1', 'key2', 10);
    ( S1 g7 B* R1 P5 [
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    + V0 `1 ~  D3 }( g' @; t: Z0 z
  296. & ~8 ]& R" ?6 t' f( p7 N6 c
  297. lSize
    + k: S, }/ z& `" h) e" N
  298. $redis->lSize('key');* c; Z- D7 p2 f7 P; O0 q. v) y
  299. 返回名称为key的list有多少个元素% a1 D0 C9 ]( }2 g9 W3 h
  300.   x$ u( f2 W1 _( v
  301. lIndex, lGet/ s" x: U" j4 c8 o
  302. $redis->lGet('key', 0);0 m8 z! J' V; y" L
  303. 返回名称为key的list中index位置的元素
    ; p* }6 K- A, Y3 [
  304. ; s2 @* Q& Y& Q$ @  {! e
  305. lSet0 F. J$ Q, o; N* v
  306. $redis->lSet('key', 0, 'X');
    7 _) N; n4 T3 p& a" I; \% ]
  307. 给名称为key的list中index位置的元素赋值为value# G0 ^0 ?; ^3 K/ f' y
  308. : O- f2 e1 N1 E! w8 ^! l
  309. lRange, lGetRange
    % L5 H& z) |$ u2 e# e- Z( [
  310. $redis->lRange('key1', 0, -1);
      }# q  P; D$ O. n( f' b7 v# ?
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    ' j# `: a% U  q7 M/ j( n& z
  312. 7 r2 y6 A) u0 L+ f/ j! g, j9 o4 Y
  313. lTrim, listTrim; I$ z5 q: _* s) m# \" `" G% R
  314. $redis->lTrim('key', start, end);- s' d, J: W) N2 P8 O  E) A+ \# i
  315. 截取名称为key的list,保留start至end之间的元素
    6 x% x0 M/ u" t+ u

  316. 5 W* d' ?, F' `
  317. lRem, lRemove7 Q  F! J; v) x1 z( D% B
  318. $redis->lRem('key', 'A', 2);  x) j, h% S5 |6 X0 F2 M6 U3 ~# M
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素. {( t  R  t5 E  G4 ]6 X' h! E! X7 P
  320. " a0 Y) X  j" J% E# A, ~
  321. lInsert
    4 f4 W' L. ~, u1 H" j
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    4 c  E) ]3 L5 w! m* _6 c
  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');
    , y% N$ A! [7 \3 e2 X9 L0 I# p5 w
  324. $redis->lRange('key1', 0, -1);: F5 s( w# S2 m' N/ d. h
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    6 s" s6 ~& {! J) N6 X: l' n. g
  326. $redis->lRange('key1', 0, -1);% P) p  n4 p5 l- f: H, `
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    & a* r: @3 V0 S& W+ S

  328. - M& w5 m/ u4 i- R$ A
  329. rpoplpush+ o" x* `, T2 s! y) m6 m0 n
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部. p: X. c4 J* m: b
  331. $redis->delete('x', 'y');$ F" a- x. y1 v1 i* w; ]
  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'));. C1 u) K' n1 T* z1 |5 J0 N
  333. var_dump($redis->lRange('x', 0, -1));
    1 }$ s8 H; f( K; x5 g4 H; a2 O
  334. var_dump($redis->lRange('y', 0, -1));
    3 B+ o( N6 g8 `+ @& I
  335. ! e1 Y4 t! I' W
  336. string(3) "abc" * \& e, L4 i4 t, S& K
  337. array(1) { [0]=> string(3) "def" }
    5 B7 g9 R9 M* ]( ]! P8 n
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    ' c' T# V: a2 e( Q

  339. ) p" C' }/ p' C6 E
  340. SET操作相关3 h5 _3 o: U; x' N) S
  341. sAdd
    0 S/ L; W* [9 e- y; d
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    5 V: G% \4 @" E1 |- a0 w
  343. $redis->sAdd(key , value);
    1 N8 H, Q% Y$ X! }" M/ O

  344. . \7 G" g9 c1 M
  345. sRem, sRemove4 _9 t4 P* a/ _0 }3 i, J) u
  346. 删除名称为key的set中的元素value% ?3 l" u/ P: S7 W3 b% y
  347. $redis->sAdd('key1' , 'set1');0 E- Z) T8 N2 `
  348. $redis->sAdd('key1' , 'set2');) m; w# e6 C& k- x
  349. $redis->sAdd('key1' , 'set3');2 V  w/ i/ A* y0 m/ ]
  350. $redis->sRem('key1', 'set2');
    % N1 M) ]) }; v
  351. " ^# ]  L4 W2 O  i
  352. sMove
    ' l' ?6 B# ^; o. J/ n! P
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合+ P; Q$ P. T, ?; m
  354. $redis->sMove(seckey, dstkey, value);1 R6 q& [, p$ H& F
  355. . t+ N, f1 F' k  J% p+ `) p/ }% K
  356. sIsMember, sContains- |- C9 [* W6 s* s4 t
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false8 z/ _2 d, _, m2 e
  358. $redis->sIsMember(key, value);8 ?' `* Y' }& g# X- x: n
  359. 3 s0 r  h) M# l8 Z0 i) }- x
  360. sCard, sSize
    3 y( A) t8 h( j9 w
  361. 返回名称为key的set的元素个数
    ) V# t7 G: B% G% E4 d9 x& {$ d
  362. ' s; z! }3 b3 C! N- ?/ u
  363. sPop
    5 Q8 Y- w0 M, z. F: a7 A, F3 U: \
  364. 随机返回并删除名称为key的set中一个元素
    # R6 d7 c. Y, ]. i

  365. : e3 C# Q9 D; N' D
  366. sRandMember
    - l/ B( i, t  A: Y( G; V
  367. 随机返回名称为key的set中一个元素,不删除' c- d4 b" s$ w( \  e5 H

  368. 4 ?1 r' {9 Q/ I5 N9 q+ t* }
  369. sInter
    3 O" k. U6 e; X3 U* t
  370. 求交集& _: w$ L+ A. ~# Z' V) a! [( E

  371.   \: ?7 j" \: K
  372. sInterStore' p, A" ~; B( @5 j. P1 t( ~
  373. 求交集并将交集保存到output的集合) D+ H* e8 T1 m- t
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    9 C: i, [, F$ Q5 ?4 ^

  375. 2 \  D6 y% V  _1 Z/ m- \
  376. sUnion
      o0 B: ?' z: u
  377. 求并集
    ; f/ y" b: E- G& J1 `* ]. v, V. `
  378. $redis->sUnion('s0', 's1', 's2');. t  S; ^$ g, U4 |" x, ~, e
  379. s0,s1,s2 同时求并集
    % @$ M9 _/ v! ]+ y- h
  380. + Z8 h. N' c, X, Z2 D( i8 Y  l
  381. sUnionStore4 a$ ]) t6 D- [' ~
  382. 求并集并将并集保存到output的集合
    3 i4 {* V  ]! t1 p
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');, c$ m5 Q5 u$ a' S0 k, x

  384. ! E: N. M' i2 i/ f1 ]- J9 Y- t
  385. sDiff
    + V* V# r2 S0 _: D
  386. 求差集
    ' o' i* T3 {" Z. l
  387. ; W2 p" L5 M9 N3 o( Q
  388. sDiffStore
    5 x0 G* \  g% H8 N. {- I% r% _
  389. 求差集并将差集保存到output的集合7 w1 F, l/ s) q) g: ^

  390. ( x, V8 R& M: f7 ?1 j$ _- D2 J
  391. sMembers, sGetMembers) s, y: ]7 x9 M0 p
  392. 返回名称为key的set的所有元素4 S5 a7 W0 G- u

  393. 0 X9 [* T0 L8 M7 W1 |
  394. sort' a1 S1 E3 W0 _' k1 ~
  395. 排序,分页等
    * b/ Q, ?& ?! Y% U6 P
  396. 参数
    , i1 v: e5 l; [+ x+ |1 p# X4 r3 P3 ]
  397. 'by' => 'some_pattern_*',
    : K4 h4 e2 x- s4 \$ p& t
  398. 'limit' => array(0, 1),
    ; ^4 ]/ W  I- v; J6 a0 }. K4 |
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    , M- T% E1 U" [! Y2 z
  400. 'sort' => 'asc' or 'desc',
    8 ~. I" c5 t: m4 y. j) |% H) p
  401. 'alpha' => TRUE,
    ) }3 `& w1 q! {  l. J  V
  402. 'store' => 'external-key'. ^) B: v2 V4 c* N1 }1 |, A" f
  403. 例子
    ' Q) b# ^) H' ^) o5 [6 @
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);/ t' V$ `# P- [: W9 N
  405. var_dump($redis->sort('s')); // 1,2,3,4,57 X; u5 \0 w5 @- u% A
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1- G% p, _5 w7 B4 r, d4 L
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)56 Y' x, y( x8 a6 P" P1 T7 v& F* n9 K

  408. % i3 d+ X# z3 h) E5 m& f& B$ r- u  K
  409. string命令
    7 E! c# v! z; w* R
  410. getSet9 y; B9 c& ?: e
  411. 返回原来key中的值,并将value写入key% t# e5 \- R% u
  412. $redis->set('x', '42');
    0 S% T/ T+ w  n* b2 M+ c
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    3 z2 ~% L4 q* w, f
  414. $newValue = $redis->get('x')' // return 'lol'3 r% T2 Q, q1 d+ b* n) c* f5 ?
  415. ' `8 L3 {9 k0 F. c$ U' n! L
  416. append
    ! M' k5 f: o5 l( ^, u
  417. string,名称为key的string的值在后面加上value. p% f1 D2 Q( h* M
  418. $redis->set('key', 'value1');: G, @. @$ B, K; w5 q2 W, J
  419. $redis->append('key', 'value2');
    6 @) t& a4 M- ~' X6 y; K
  420. $redis->get('key');+ W# b: X: v1 D
  421. . w9 C  v" f' O  Q
  422. getRange (方法不存在)
    1 j% |! C' \% K5 s7 z
  423. 返回名称为key的string中start至end之间的字符
    2 |+ e( @# G: U8 h% f+ _" K
  424. $redis->set('key', 'string value');
    % \8 O- s& ?  F; Y9 ?
  425. $redis->getRange('key', 0, 5);( Q$ K3 \+ z# W( n, d2 ]
  426. $redis->getRange('key', -5, -1);% N2 T4 S9 z4 D1 A4 ^; m
  427. " |. @/ o# O. s% U. G7 t
  428. setRange (方法不存在)
    9 c0 ?7 p2 f! p5 U
  429. 改变key的string中start至end之间的字符为value
    , S' B. b; x4 ^/ r0 g8 b
  430. $redis->set('key', 'Hello world');7 p% P0 J0 y) Z7 r! f
  431. $redis->setRange('key', 6, "redis");
    ! p/ P4 d5 i- B. [
  432. $redis->get('key');2 E* D, C  {: Z& F  y# v: R, ]

  433. ! B! z1 {# n3 p0 ]' P4 ]7 S
  434. strlen1 Q$ \* w4 p% w. |% J% j
  435. 得到key的string的长度8 E+ a! S9 o+ N5 W/ G$ l7 ]6 p
  436. $redis->strlen('key');  ~) v) \; _" Z( Z' ^1 Z2 x

  437. / _( U& v5 s3 d; O$ x" Z9 y
  438. getBit/setBit/ z1 K0 B2 L3 \! z- \% K
  439. 返回2进制信息
    5 M) M: G. o- a! a. U& w" C7 v

  440. + M6 @2 R: L- I- T  g
  441. zset(sorted set)操作相关
    ( l; Z4 f7 Z8 @, Y, i# s% C- V- h
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    * Q% d' W& q) {* i
  443. $redis->zAdd('key', 1, 'val1');
    % P5 P* Z& ]" c9 x; q6 _0 {7 \
  444. $redis->zAdd('key', 0, 'val0');5 z& }" F1 N# [  @6 S
  445. $redis->zAdd('key', 5, 'val5');
      Q7 P- ~% t) m& G' W5 [
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    0 I- O& B2 X2 f! p
  447. 4 A& b; e4 j# f
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    1 C) u8 O3 S+ g
  449. $redis->zAdd('key1', 0, 'val0');) l6 I7 ^- S2 {# t5 Y1 |
  450. $redis->zAdd('key1', 2, 'val2');
    4 ?; @: p# P# _, L
  451. $redis->zAdd('key1', 10, 'val10');
    7 q& j$ M" T5 O6 v4 \% s
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    - ?5 [  l- v1 U' K# I4 v
  453. % r' h# K% Q1 E) n8 ^4 s& [
  454. zDelete, zRem
    . G4 T; V9 k! k# ~( U8 u/ |7 i* X
  455. zRem(key, member) :删除名称为key的zset中的元素member
    1 L& _9 z, h8 {) R, V+ e* \4 w' |0 Y. ~
  456. $redis->zAdd('key', 0, 'val0');
    % C  ^5 r5 U& w+ O; T& o$ A
  457. $redis->zAdd('key', 2, 'val2');
    , B/ P6 S! d% g+ p9 Y
  458. $redis->zAdd('key', 10, 'val10');2 L" n# f8 f4 {
  459. $redis->zDelete('key', 'val2');
    % l2 Q& T( q8 R* ^& y
  460. $redis->zRange('key', 0, -1);
    ! ?) V9 \8 \4 s/ D/ H! K
  461. 8 k. {& I, H! Y; F
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出2 {' U3 f, C: @- P8 [: n8 Z6 Z8 J
  463. $redis->zAdd('key', 0, 'val0');
    ( g8 [2 @: W1 H; P% m. {
  464. $redis->zAdd('key', 2, 'val2');) Z$ o& V% ?1 m+ Y2 Y
  465. $redis->zAdd('key', 10, 'val10');
    ! p3 u; R3 @7 P+ ~( k, m1 Y" N
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);" E" W1 \! ]; y% T; C
  467. 0 \$ R  }9 d2 m
  468. zRangeByScore, zRevRangeByScore2 Z! {. X0 l& l* X; L
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));1 Q' f5 Z- {2 ]6 v0 T
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    ! ~% v7 z6 P: c: a$ I1 j/ ^8 `

  471. " {, G- |# d- z6 x/ |/ i
  472. zCount
    1 M4 k5 @9 B" ^4 G& C2 B
  473. $redis->zCount(key, star, end);
    1 b: R* {. l( p
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数  F1 R4 i- `9 V

  475. " A9 R" I* `  P& f4 {" W
  476. zRemRangeByScore, zDeleteRangeByScore( V" v0 d; E5 ]5 n0 e: M
  477. $redis->zRemRangeByScore('key', star, end);
    ( ^% d2 i& ^& \7 G- w8 Z
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    # ?9 k' P+ ]. ?$ g: x( q; V7 U1 I
  479. ; H$ F9 Y: Q$ R0 ~8 O# d
  480. zSize, zCard' A, D3 d, Z' A* b
  481. 返回名称为key的zset的所有元素的个数3 ?# i- H" L+ J) B/ e- y
  482. . G0 f1 g$ N. G: j* y  W3 i1 M
  483. zScore
    9 K/ ?6 ?7 |3 k, L- v1 D
  484. $redis->zScore(key, val2);: ~1 Q1 O5 @$ O7 I
  485. 返回名称为key的zset中元素val2的score
    + c7 h% a5 `4 m. J/ k5 R+ U9 V  b

  486. & M# t, c# W8 @+ _: g( i: G6 [
  487. zRank, zRevRank9 {  `$ W8 W, A# }5 \- j
  488. $redis->zRevRank(key, val);1 q2 Y% H$ \% ?  A( q
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序/ j" b% E% |9 i
  490. 2 h( p3 _! R' S$ b% T$ Z
  491. zIncrBy9 t- j/ Q, O- \' F% q
  492. $redis->zIncrBy('key', increment, 'member');
    9 ^$ n. K# n: K: c7 F7 M; |( @. g
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    / M2 C" q3 t# R& {/ O; O  H: ~
  494. 6 ^* e; D2 }& `7 t8 t5 V1 E3 O
  495. zUnion/zInter
    5 g  h( `' q; v
  496. 参数
    - b, g" B' q4 H7 D/ A8 f& o" p& ]3 m% o
  497. keyOutput
    : N) R% u# @$ Y, q& L
  498. arrayZSetKeys5 S. o# `6 a  I
  499. arrayWeights
    ' n4 S# B9 e- {6 m) i# X
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.( H( S. C) E# ?7 s& B8 K9 V
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。: n0 W% E/ D+ L
复制代码
& Z% {" i7 e2 C' f7 t  d+ T

) v7 t$ U% s5 R$ M8 x2 M+ g( b7 |+ K0 U
- s3 @. o: \6 J% N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    , X/ [' U: G" E: o, Y
  2. //连接redis服务器 5 b: Q. c, ]3 j9 l) s
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-20 13:45 , Processed in 0.148980 second(s), 19 queries .

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