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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php  Z0 o  o/ \& J' O
  2. $redis = new Redis();  & i- z' @: R, l
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    6 \! {5 I  X, t3 h0 ~$ s
  4. $redis->auth('mypassword');//my redis password 3 k; y  ^& n. q# g1 b4 d) u
  5. $redis ->set( "test" , "Hello World");  
    2 f8 g6 u$ K2 B$ u0 D. }
  6. echo $redis ->get( "test");. W) S9 s5 j5 {- w" c1 p$ j9 T
复制代码
php操作redis函数封装
  1. /**
    $ l7 O2 }/ P3 v. H3 ]
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数* ]' E7 a) G3 R' s
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi) W9 y4 y) i6 o$ M3 A
  4. */
    8 O% x. ~2 ~% y
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){+ x2 w- |! F" |4 Z; T4 G8 \, g" u2 C
  6.     if(!$key||!$value) return false;
    $ U. F* t- F8 C3 M  Y+ v5 ~/ [
  7.     $host = $host?$host:getenv('REDIS_HOST');
    + V* |, K$ H; t- Z0 L* G
  8.     $port = $port?$port:getenv('REDIS_PORT');
    ! h+ W: B+ N9 w
  9.     $redis = new Redis();
    " e" V% i5 \' x. w3 Q0 k7 m; y
  10.     $redis->connect($host, $port);
    & }" D; D. A- m$ p( l, Y& l+ r
  11.     $value = is_array($value)?json_encode($value):$value;9 a1 R4 M: z. Y! C' V8 g+ p% k: R
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);% U2 h$ k5 v! O9 e, w8 K
  13. }5 {! G  }$ D2 O) Y( y: R  w4 @
  14. /**3 {0 H3 A* q7 Q9 @5 F1 a
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi) Q1 i2 |7 w1 r) B, q# X! A3 V/ P
  16. */
    . {  C. N2 Y* |2 v6 C
  17. function RedisGet($key,$host='',$port=''){6 p' [3 i( U& _0 ?1 a
  18.     $redis = new Redis();
    " Z. f$ C2 u" T9 w
  19.     $host = $host?$host:getenv('REDIS_HOST');
    % B/ c# C- W4 _1 F3 T0 _$ N
  20.     $port = $port?$port:getenv('REDIS_PORT');
    * F, f& I3 g- h  i8 _# l
  21.     $redis->connect($host, $port);
    % A3 f- \2 o, r+ Q5 _' Z( h: x
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    : B# x1 m# k1 E; k/ z
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    ) x  _# h0 P9 O- ~. h2 Z) X+ W
  24. }5 ~# {$ K* O% h3 A7 B
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
' O( H/ F$ Y& g9 h0 o
  1. setex 带生存时间的写入值8 ~6 {7 O. `* F7 E* A
  2. $redis->setex('key', 3600, 'value');
    * ]% ~! B* V5 q5 T& D2 W% O
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1& W- J$ j, h! a9 W9 ]
  4. $redis->setnx('key', 'value');, ~: Y! v( o* g& r
  5. 返回已经删除key2 r; E7 L8 ^% _! _& s3 [
  6. $redis->delete('key1'); 成功返回1失败返回06 z" O7 n) }- m& g% A% j7 s5 A) s
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    # v  x: Q6 Y  j
  8. 查询生存时间* S% O9 V8 M  m3 G( u/ m
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    3 @$ y+ ]& g; k( [, B
  10. 同时给多个key赋值,同时设置key0和key1% U! Y( P/ W4 {+ M
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));9 S+ q' x: v8 O9 d) p) E
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值$ I" N1 o7 _0 a( G
  13. $redis->incr('key1');8 a4 s8 J8 `# E. o3 d
  14. $redis->incrBy('key1', 10);( m5 C+ [5 q8 U* B8 s1 R: v
  15. 减法跟加法一样( I% v4 z+ d) q
  16. $redis->decr("key1"); 减少1. ^; D  M! E! A
  17. $redis->decrBy("key1",5) 减少5
    * h4 q+ q% C3 a1 E9 _+ b2 h, e
  18. 5 d+ k4 r% K6 {& q; T
  19. list相关操作,连表操作
    , f. r! c* G/ s$ j! \1 N
  20. lPush7 ^$ ^/ C( G1 X- f
  21. $redis->lPush("list", "888");
    ) v5 {$ F* _1 E$ ]  K5 ]
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数4 ~( V* B* R) m! C
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    / `1 `" ?" M' b  f5 ?- W
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素0 q$ f+ y9 N, M5 _4 N
  25. lPushx/rPushx
    , i5 w5 Q. M) G/ m2 ~4 G3 n8 O% U
  26. $redis->lPushx(key, value);8 W* A/ u9 x2 n4 \; K8 S
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加" P+ b  u! V0 W  R

  28. ; y7 |' j8 i+ _2 [4 ~5 n
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key8 M. W3 o6 `$ a( w# z
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key' h" l9 m5 |/ u; d; B. q8 d
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1  `0 _4 `3 m4 Z
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    7 a0 U: d: L) _% X
  33. sadd s1 zhangsan3 s8 L/ F7 _# z, x2 O
  34. sadd s1 lisi
    ' b% L" M0 V. N  ]  J$ ^9 F
  35. sadd s1 wangwu
    8 Z0 U1 S" y6 H, Y, p* z: u
  36. sadd t1 yangxingyi
    ; |6 N" v# }- s
  37. sadd t1 lilei; O) L1 u1 V" D, L# U0 `
  38. sadd t1 zhangsan  ^4 b, q; S0 B/ s& V
  39. smembers s1 s1的所有集合内容
    8 O6 K- y2 n, O" }7 @( j" @/ U
  40. sdiff s1 t1 s1有的,t1没有的,差集
    $ q% k  D3 v% B$ R
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    " `; g( u: F5 I* }* C8 Q
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    1 p8 P/ U1 X2 A; e, A
  43. spop抽奖场景,返回集合里面随机的数
    5 e- Y. f. Z9 p* }
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    ( f& x) H5 K3 j* s8 p( n# j
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    # [& o: d2 F; d4 u2 \) h- m
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的9 y0 Q8 O4 t3 N  C
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    . H3 N: |$ ?! B9 K/ j2 V
  48. $i = $redis->srandmember('s1');echo $i;1 i, n5 x, r. c, ]6 v  [
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    $ j( ?/ o7 N, G' P3 ~: {
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    ) w3 m' J: q/ k* p, t, A9 x

  51. / q- S7 s$ t* _" ]1 p5 @1 X
  52. zadd key 2 value 有序集合
    . }% d) ]8 L4 T/ X! v. C: y1 ^  [
  53. zadd y1 1 zhangsan;  l! {  a+ }4 i. Z7 u# H. m+ \
  54. zadd y1 3 lisi;" y) Y3 K2 w! b1 W
  55. zadd y1 2 wangwu;8 b1 T& R: z; D# ~. I% ]
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    1 J2 Y1 o1 n1 k# S
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);! w1 i0 t7 h! G
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    9 l1 q4 [. \% h3 {6 b. M& h  z
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    1 ~; F& O: `: o7 ?* C5 c2 S
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的/ `( [; F' N  n8 `; p  a
  61. 无序就scard,有序就zcard,有z没有s
    0 \1 i, p: J& M: Z7 V
  62. sInterStore) c8 ]7 O5 s9 v
  63. 求交集并将交集保存到output的集合# ~: L- y  h, ]6 @: G
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')% ~/ H1 m2 j( f, ~% l3 o  T

  65. ; A9 @& R$ P6 G) E' w/ G# o
  66. Hash操作
    ! w' W1 p# N! V1 i% p/ E
  67. hSet1 h3 ^; @, l  G, h8 U' s
  68. $redis->hSet('h', 'key1', 'hello');5 d, A! T3 ?2 h9 K5 d4 G
  69. 向名称为h的hash中添加元素key1—>hello% w# s4 Q$ \3 D* `! |
  70. : ~+ z; \0 n7 k
  71. hGet) D/ m5 I# U' y0 ?3 y
  72. $redis->hGet('h', 'key1');
    6 H  \/ c5 M# c4 a6 Y0 \; k
  73. 返回名称为h的hash中key1对应的value(hello)
    " M4 J/ O1 W# p  L4 u+ W
  74. 0 u. J5 c7 V# F. U- v7 v
  75. hLen
    , A6 T4 W8 q! H6 p
  76. $redis->hLen('h');
    # @$ Z8 ^+ N2 v8 G2 M5 @
  77. 返回名称为h的hash中元素个数% K# Z4 F1 S5 a! k1 U

  78. 0 O! }$ R$ p& G
  79. hDel) A, z% |& t/ a; A* B
  80. $redis->hDel('h', 'key1');
    ) w! c4 _2 ?, G# s. |! s3 ]
  81. 删除名称为h的hash中键为key1的域
    & _$ i" x; K& H2 Y% p; m

  82. 1 ?8 x7 l- I3 y
  83. hKeys* U4 J+ g7 o- u4 A
  84. $redis->hKeys('h');
    4 y/ l# X* V/ ^, d0 H
  85. 返回名称为key的hash中所有键; z, q5 L; I! `" s5 N5 K

  86. / a! j$ n* `$ h. P( X1 Y
  87. hVals
    0 U) w8 M) g9 C1 V3 x
  88. $redis->hVals('h')
    # ~% [0 F) c1 d
  89. 返回名称为h的hash中所有键对应的value
    9 V" @% f6 E3 L: R' N& d

  90. ) ]* p' d, ?0 w
  91. hGetAll- v! F3 i3 C/ X0 \4 R: ^$ }. J$ D
  92. $redis->hGetAll('h');5 w5 `5 g3 D, ], o, D
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    6 i! i' }3 r* j* V& h

  94. ) y  \" {5 _! j0 Y8 T! `- g" b4 r
  95. hExists
    " M+ I5 e' C7 m$ x  R
  96. $redis->hExists('h', 'a');
      i7 g$ J1 P/ t5 c# Z  j: ~
  97. 名称为h的hash中是否存在键名字为a的域6 B6 U. ~# _% r/ z3 V
  98. 8 E; F5 r1 X: }+ d9 j, x2 W
  99. hIncrBy; \# f& \4 i; Z/ t  K" y
  100. $redis->hIncrBy('h', 'x', 2);
    ) w. V4 i, A7 \, W$ f
  101. 将名称为h的hash中x的value增加2
    8 L  c$ X: O- n# R

  102. - _# G, N& G, q! T) V
  103. hMset
      N4 K7 i) e) w( I
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    5 p* \( I; m; i6 b4 i# R
  105. 向名称为key的hash中批量添加元素
      l5 N7 ]8 X/ N0 U. T
  106. 1 i/ K5 C+ s8 D) x- {7 E) r9 A
  107. hMGet
    9 Y9 B7 R- `% H0 b
  108. $redis->hmGet('h', array('field1', 'field2'));; g( k- u; z' \9 T* {
  109. 返回名称为h的hash中field1,field2对应的value
    ; v0 H- r9 ^8 T7 y" i- m
  110. . t# u" Q7 ]; k& Z; T# A5 R3 h
  111. redis 操作相关
    2 d, s" l: d5 Q' Z! `
  112. flushDB* Z, a  w6 Q8 v
  113. 清空当前数据库- H1 {' T3 n$ B/ \
  114. , Y! r5 y: A7 O) t1 p1 N) E
  115. flushAll
    ( [# b, |( `7 P
  116. 清空所有数据库+ n2 p; ^! w5 Y; v4 E

  117. : \' q1 K4 |& I" H& i9 O
  118. randomKey! m% i4 A& [; `$ N7 s: k' F, R
  119. 随机返回key空间的一个key
    - j( _$ q2 `: Q8 \. X) K
  120. $key = $redis->randomKey();7 r+ x" E; H2 L# N( U
  121. 6 U: H% G% C5 X4 ]3 ~* O
  122. select) \- {# S4 K9 H6 B+ [
  123. 选择一个数据库
    % n; e9 f1 e  o7 @' I
  124. move
    5 o0 p9 `1 V) m  U
  125. 转移一个key到另外一个数据库6 Y  o- m0 S  Z  P* Q
  126. $redis->select(0); // switch to DB 0; A/ b, G3 W% r8 G
  127. $redis->set('x', '42'); // write 42 to x
    7 v; a" E+ y8 u; r. p8 J% u
  128. $redis->move('x', 1); // move to DB 1  d; f& J4 g) r, s+ v& F
  129. $redis->select(1); // switch to DB 14 m5 M; Q- x& I& C9 D( P7 Y
  130. $redis->get('x'); // will return 426 s( d" {2 {% R. }; Z' ]

  131. . ]! P! y3 z- i) h& q4 d+ b
  132. rename, renameKey
    $ }- L# d; E- N
  133. 给key重命名
    5 M2 w4 S; k+ m, j5 j+ N% u
  134. $redis->set('x', '42');/ ?4 K& H3 v" c' i3 X# t
  135. $redis->rename('x', 'y');
    ( ~+ }; Y4 a: N# ?+ e; u; {4 P
  136. $redis->get('y'); // → 42% y+ v/ _9 K/ [0 u& V9 y, S
  137. $redis->get('x'); // → `FALSE`
    ( _+ J2 Q3 D) u8 V6 \& A! ^
  138. & H  |+ B' c% S; b- J
  139. renameNx
    / r  D  }4 y! y: p/ h
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    ( G) w# E  M+ p9 R3 ?7 C" m
  141. 3 J; K0 @/ }6 ~8 a2 b+ e) n1 g& \
  142. setTimeout, expire/ T; o1 k% C! V
  143. 设定一个key的活动时间(s)
    ! q  C) c3 T+ I9 u0 h* l0 k
  144. $redis->setTimeout('x', 3);/ B" u" S. v% N7 n
  145. " S$ a' d$ f" s6 R
  146. expireAt
    , o4 G! s) ~& m; Z$ T8 x2 g8 W
  147. key存活到一个unix时间戳时间
    9 f5 v+ u) v9 R& L* W) Z
  148. $redis->expireAt('x', time() + 3);
    # A0 h0 O9 s9 z* C

  149. . W* |6 o6 l" e. ^4 [* C
  150. keys, getKeys
      T0 E6 B9 E/ v. C$ X
  151. 返回满足给定pattern的所有key6 Q* t# o7 L; C: J) {
  152. $keyWithUserPrefix = $redis->keys('user*');
    " A0 S9 G& O& L( |' p& n- t3 U9 f

  153. 9 S; b" c3 l- U. `' m
  154. dbSize# x: Z( `0 H9 i! N+ B, F" Y, W  p$ u
  155. 查看现在数据库有多少key' m0 v& b2 x$ o1 ?" n
  156. $count = $redis->dbSize();
    ' I% W) t% d4 v9 l% Z. z6 V3 J: c( U

  157. ! G( M6 G% ]1 l" e$ F
  158. auth5 p- l8 E+ u* O! S5 g9 Z7 \
  159. 密码认证8 v0 j. M& d6 {0 D" p
  160. $redis->auth('foobared');" l/ b. y7 B4 _: o0 j* y

  161. 7 U" f3 Q9 L  u7 j
  162. bgrewriteaof9 r6 A9 d' J% g0 d1 T
  163. 使用aof来进行数据库持久化
    % F5 {! M( p! y! R# n4 R, H
  164. $redis->bgrewriteaof();
    0 q+ T# @' F' o- ^9 [9 P

  165. * h" x, d4 Q: }" l1 o8 l: F
  166. slaveof* R2 ]3 c* w. l4 u; B% U5 S
  167. 选择从服务器
      l# p; ^7 I% N
  168. $redis->slaveof('10.0.1.7', 6379);
    . E0 h* Z" b3 }9 L
  169. ( Z2 `/ b' P) B% u2 b% r, C
  170. save) V1 G6 ^! F6 s/ j9 i9 ]
  171. 将数据同步保存到磁盘  }3 y9 h2 Z0 U8 I) D' Y* a$ {
  172. & ^- ?( y6 V5 d3 p' X0 L3 D; J
  173. bgsave
    ( a" U5 E! Q+ k1 h
  174. 将数据异步保存到磁盘+ o( E6 D) V7 J% A

  175. 2 p5 V" }% A$ S4 [& P: X
  176. lastSave
    ; N, G0 G5 x; }. n& d# g7 E
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    $ u5 D! a7 F7 D$ T6 ]

  178. * o/ M. K+ `4 I$ P( h+ V$ B% P
  179. info( M) h# \* |6 U$ j5 D
  180. 返回redis的版本信息等详情
    1 E! q2 H5 m' X9 m

  181. * z, z- B1 H4 h
  182. Redis::__construct构造函数8 y2 C( P3 u0 t  s
  183. $redis = new Redis();( E* U' g; p# ?, {4 P$ q

  184. ; ?, _& }" w2 p1 p* o, e
  185. connect, open 链接redis服务
    ) K& j7 R5 `0 J
  186. 参数
    % f/ c4 V! ~8 b# u4 ?; j
  187. host: string,服务地址
    + ~( B1 x7 X6 h2 p& @  n: Y0 Y
  188. port: int,端口号3 f( X  x5 u8 P
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    0 n/ y/ w6 S3 D& j
  190. 注: 在redis.conf中也有时间,默认为300
    6 |0 V5 a1 I2 s7 Z8 d2 X( @. F
  191. ( H3 G2 A/ n% _; u9 s& u2 ]
  192. pconnect, popen 不会主动关闭的链接8 }2 ]) u$ o# L' V, B6 h
  193. 参考上面
    4 q8 M# k4 W% C$ U  a2 u

  194. . o( S4 i/ m' \" F$ ^
  195. setOption 设置redis模式
    " i0 A: M; e) S0 k- ]5 G9 {6 v) T' Z
  196. ( C& B6 |1 \: o
  197. getOption 查看redis设置的模式
    7 H' w. g/ A: _. c4 ]: L" G* B
  198. , e! _9 U  C' I5 n9 I2 T4 P
  199. ping 查看连接状态$ ?  @: t2 A, n; @

  200. ! a, I( v4 U1 {, W: w1 p, h
  201. get 得到某个key的值(string值)$ q; r. N# g& c: I
  202. 如果该key不存在,return false* P: o+ Z/ {( G9 Y) J, h, ^( @3 ~

  203. * @3 t6 C* B* f9 b5 o- _% I
  204. set 写入key 和 value(string值)2 j+ K/ y3 B# o4 A
  205. 如果写入成功,return ture' f2 v# g& q- B& [1 [# v8 p6 s! n) {

  206. 3 J) |6 v5 @0 Q
  207. setex 带生存时间的写入值! W6 \/ T/ f+ w6 `% x7 a1 {4 u8 _: H
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.6 R& U1 o9 K! n" k2 U; o
  209. 8 w* ^$ H& E9 H7 P1 C0 P0 X
  210. setnx 判断是否重复的,写入值3 a& _( i+ B8 k
  211. $redis->setnx('key', 'value');
    0 L" y1 W2 N  |
  212. $redis->setnx('key', 'value');
    / |: \: ?( `( ], v) `# e6 L" Z
  213. 9 x. e( _4 D/ d! ~" h
  214. delete  删除指定key的值
    " }; m8 r$ A7 p. [7 A" v9 r% S
  215. 返回已经删除key的个数(长整数)0 c1 @9 u+ Q! _) c, O3 a6 H; L& P
  216. $redis->delete('key1', 'key2');2 y( D2 j) N# n$ C$ b( Z5 @
  217. $redis->delete(array('key3', 'key4', 'key5'));" x" ^# a4 d& v3 }' M
  218. 9 p- w7 g  Y9 k# r
  219. ttl8 x, M$ S( u2 Y; O, v9 I& p
  220. 得到一个key的生存时间2 c4 W- x4 s" f  u0 _$ }
  221. 6 t, n6 F# l6 F/ A
  222. persist; P% d# G" i) _% k- B5 s% j
  223. 移除生存时间到期的key' Q  j/ R+ c! @/ f. T. m7 X/ V+ W% Y* o
  224. 如果key到期 true 如果不到期 false
    0 \2 ]4 }# W) g0 u4 f6 f+ B
  225. ( ]. E) P3 d" G5 G4 |% _8 p
  226. mset (redis版本1.1以上才可以用)
    # d. R# C( p) }) K( r6 k/ ^
  227. 同时给多个key赋值; J% x) w- \6 r; t+ m
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));" [% o% h* {+ [( Y

  229. * H* V2 m" g& G! ]! q: H
  230. : L% n6 _* S$ `' I* C1 t# z" y' O: J
  231.   T% R% l5 u$ }4 C! Y" [. k' \' S" M
  232. multi, exec, discard
    # I* ?) r2 f. J2 ?4 Y
  233. 进入或者退出事务模式
    2 N( D# U/ \' m4 y, ^# L$ Y2 N7 B' z
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI9 u( @! S4 K) B, T8 h' o, p
  235. Redis::MULTI:将多个操作当成一个事务执行
    - u1 K4 I! h9 Y3 o7 C8 w2 b. |# O
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    6 V. W; ^% }  S1 \. a; o8 J/ _
  237. discard:删除一个事务8 S4 _& K! h0 b; j% e7 I
  238. 返回值; Z& o- J0 [* y* F
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    ( ~$ Q$ i6 d2 u

  240. ' C, y5 O$ _1 [
  241. watch, unwatch (代码测试后,不能达到所说的效果)7 @! T: e8 `$ v- n5 u9 Q" `
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)9 z% [( r+ E  N4 ?  j8 G" J
  243. unwatch  取消被这个程序监测的所有key
    " s8 b) L- X( O. c! k$ \+ i
  244. 参数,一对key的列表
    , Y- ^) }9 S+ p7 w5 `$ ^! \
  245. $redis->watch('x');7 j& l" s3 ?' C7 J) Q5 R

  246.   }! p6 X- ?. W
  247. $ret = $redis->multi() ->incr('x') ->exec();
    - A$ a9 A0 l& v$ k& {1 P4 F

  248. $ t1 H8 N, X; R3 T

  249. ( e5 a! ]/ j" o& F3 R
  250. subscribe *
    5 {; y7 X6 Q0 V' O4 q1 i7 p# X
  251. 方法回调。注意,该方法可能在未来里发生改变
    3 ]7 t" c% U( C) |- z
  252. 7 s$ I+ ~$ n& E2 N
  253. publish *
    ) c: j+ d3 w, t1 c" |; Y4 {
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
      E: o& W$ ]3 J; L/ ~: n! B/ g
  255.   B7 ^/ s, C* v- f. a1 p7 F% V+ q
  256. exists# \5 t" X7 e) ~/ |$ N3 r8 X" X
  257. 判断key是否存在。存在 true 不在 false
    , A  R8 G3 X% Y3 `7 @

  258. 8 C4 W( @  ?2 V& C
  259. incr, incrBy
    ! @0 Y' l- s6 A% N
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值5 n$ k3 u  I5 {8 M
  261. $redis->incr('key1');
    2 n! A( n! @& p$ i8 D3 U0 L
  262. $redis->incrBy('key1', 10);
    & e% ?- C; L5 F- @% _

  263. ; E7 i+ ?1 |/ \9 D' M" j, k
  264. decr, decrBy
    ) k! _1 U" P9 T8 J5 d, T
  265. 做减法,使用方法同incr% `' `" [  E) V: E; v0 T9 Q; }

  266. * F4 S' I. i" S$ `) \
  267. getMultiple5 ^  O) e: I* {
  268. 传参
    ) n. A+ r1 n/ i. r3 _$ \+ `
  269. 由key组成的数组) B, L/ f! l( \1 {
  270. 返回参数0 s/ W" z2 m0 A2 G! [; H; }
  271. 如果key存在返回value,不存在返回false, V) v" u# Q1 w8 q% h
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));6 P: Y# @& Y0 N
  273. $redis->lRem('key1', 'A', 2);. Q0 ]+ w5 H' T( W2 v+ j2 a
  274. $redis->lRange('key1', 0, -1);
    , R( I9 y2 M: M$ J  O

  275. 4 R1 z! ?0 K  R; h  |2 i% h
  276. list相关操作
    ( T$ I' r% R1 N3 g1 n- r5 `, C: b* I
  277. lPush8 z3 \2 `  |- p. P: f4 [# J* D- k1 R9 u
  278. $redis->lPush(key, value);
    5 H7 X' t' `& }; Y4 C& {% R: k
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    ; f3 d2 m/ {  w* s/ q, Y
  280. 3 j7 q9 K$ E/ ~" b3 k( w2 e) }
  281. rPush  K0 L  u; N& A4 t
  282. $redis->rPush(key, value);6 Z2 n+ B+ N/ R3 f4 d' e
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    % S+ Q  w% n% v( S! b8 ~; f* T

  284.   v4 V1 i/ Z" X5 w- }4 c4 L1 s
  285. lPushx/rPushx
    & U5 r' u2 _) H5 w5 n, S
  286. $redis->lPushx(key, value);" A. i; S1 I" r3 T4 e# b
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    * J7 C9 Y3 l# w. q- L( Q

  288. 0 V3 k8 h  c& ~* C- ?$ y7 }
  289. lPop/rPop
    , w. \+ H; u' T: L$ ~$ J' u
  290. $redis->lPop('key');
    3 @- F7 I' [- V
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    # @1 ~0 f5 j$ f' O7 C* U7 m# ?

  292. ' U. V6 P2 K( W3 }
  293. blPop/brPop! Z6 `9 V2 F  }" y
  294. $redis->blPop('key1', 'key2', 10);% d. j" l6 q9 D- W# N: q
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    % m: G/ \6 g. S* Y2 c9 U
  296. " T2 L3 J' o: Y! z9 E9 ~
  297. lSize
    % R$ R7 b" l) k. V0 a, v0 t5 i
  298. $redis->lSize('key');
    7 A* Y( b8 q5 T2 q
  299. 返回名称为key的list有多少个元素0 d$ B+ }2 Q. E5 ]1 [5 B- D/ w
  300. / N% A3 p* p+ U
  301. lIndex, lGet0 i2 J2 g" l4 ?% G) \: o. N: j
  302. $redis->lGet('key', 0);2 h$ G4 q$ |7 o
  303. 返回名称为key的list中index位置的元素
    8 g0 `( O; P$ B% M, z3 Q

  304. : H' u0 m" ]# |2 k9 R4 ^
  305. lSet
    : b( U% M1 O; C, ^! Q7 n& ]/ J% |, W4 K
  306. $redis->lSet('key', 0, 'X');  _1 K9 c/ N1 Z
  307. 给名称为key的list中index位置的元素赋值为value
    8 S. t( z' V) n

  308. # _3 L5 B& x, M" r
  309. lRange, lGetRange. t8 P9 ]* o- t2 t1 d
  310. $redis->lRange('key1', 0, -1);- y1 C4 M$ V5 ?) j- I0 [$ b8 t
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    * |% R- H4 f# p3 Q1 V, s8 |9 F1 j1 S
  312. ' U9 V0 ?& @# U
  313. lTrim, listTrim$ ~1 u8 K. ]- u- I1 ?, T* ~
  314. $redis->lTrim('key', start, end);
    ! i+ E0 {$ V2 M+ R
  315. 截取名称为key的list,保留start至end之间的元素7 R- f6 N0 G9 Z0 j0 a# |+ H( s
  316. & B* L  X# l% r; j
  317. lRem, lRemove* @# I% u9 d$ D' m# ?% r
  318. $redis->lRem('key', 'A', 2);
    4 D4 B4 L( O" n- N8 S
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素6 u4 ]5 j9 k0 y( i
  320. 1 W2 S) X2 I+ y. `; Y, F+ Y6 I
  321. lInsert
    # \# {6 \4 _. i: S1 T+ f4 A4 Y+ W3 o
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    3 ]- A0 C7 e  N! i: R2 h. m
  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');0 {) ^4 V) E* B$ p& k7 V
  324. $redis->lRange('key1', 0, -1);
    " V6 H* P* ]8 d
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    / d  Q2 [* @0 i+ i* R; j
  326. $redis->lRange('key1', 0, -1);
    , |3 X& o3 B+ T9 \  j. u
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');/ j4 T6 Q" d8 d, v

  328. 1 c5 p) E0 R8 w% x- R) l
  329. rpoplpush7 ~6 J, m6 X: L, I6 U
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部, `) O) J7 p1 C( y9 ~0 s+ w+ ]% Z
  331. $redis->delete('x', 'y');7 H- e: ?  F0 ?) u
  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'));
    " }) S8 J% o6 w, Y; r5 j3 E8 ?, J: f
  333. var_dump($redis->lRange('x', 0, -1));
    # ?: b% P4 e( M: R
  334. var_dump($redis->lRange('y', 0, -1)); 1 m3 U8 G! \  W$ i( `, c0 J

  335. ( l+ O9 J! U2 ]$ Q
  336. string(3) "abc"
    # {0 z: K5 X( F# G
  337. array(1) { [0]=> string(3) "def" }   K. X$ C% I- r# o$ A# E
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    : U# ?' Y6 I! ?( D

  339. 3 h; b, J& w) p: i8 R1 J, R
  340. SET操作相关! L( m/ P" T$ I. z( s% _! A
  341. sAdd7 S* `  {3 l( B
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    3 a$ H/ q# l) G) i# b( Z% P
  343. $redis->sAdd(key , value);! g) t! g) B7 b/ I2 u- D7 {% x

  344. # i# B* v4 i) u3 B) z; a5 V
  345. sRem, sRemove4 q* e+ S; v! s
  346. 删除名称为key的set中的元素value
    # _# k# h; x+ L, @
  347. $redis->sAdd('key1' , 'set1');
    & n; ^: ]% e5 e! J" a9 v
  348. $redis->sAdd('key1' , 'set2');* \5 P2 U. ?0 A! `9 N
  349. $redis->sAdd('key1' , 'set3');
    ! U) ]/ R9 W* L' }! j
  350. $redis->sRem('key1', 'set2');
      @7 J( K# t+ [1 `& \, }

  351. / ~* A8 P7 n' _' s! Z+ ~$ M0 O, i
  352. sMove
    . [1 ^1 L; y. R1 r: B
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合$ |, ^0 a3 R; b$ ]! W9 t
  354. $redis->sMove(seckey, dstkey, value);" b9 K4 K- C; O/ a, N" E1 o
  355. ( E9 S# i7 g& {0 H. I; J. Y' }" ^9 G
  356. sIsMember, sContains4 u2 u$ ^* I+ k4 ~: {7 h
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    - l. k8 i7 `0 A$ h' o& n+ M
  358. $redis->sIsMember(key, value);& z  n, c. E, t( X2 _
  359. + z2 r0 ^3 r0 ]$ W2 W; M
  360. sCard, sSize
    ) A/ l; s; b& _% g( J1 B
  361. 返回名称为key的set的元素个数
    3 ?- {9 Z7 e, N: r. J
  362. 8 B0 D6 W5 P( R* w
  363. sPop
    , P7 R! q/ E( S" ]8 d5 J
  364. 随机返回并删除名称为key的set中一个元素( x' a3 o9 j* r: I+ P: i/ l
  365. 1 A, b7 n: _5 A1 s+ f$ \0 s8 q
  366. sRandMember3 E, k2 {) A& c; l- c
  367. 随机返回名称为key的set中一个元素,不删除+ _5 f% Z& m3 R" d' f4 ?
  368. - K: e4 w2 K) J! e  n) f
  369. sInter- C. n1 B: k. T5 |
  370. 求交集5 q2 F* ?7 r8 Q% b3 D

  371. + F/ S- |+ j8 Y6 q2 M" T
  372. sInterStore, M1 v3 v" K7 L
  373. 求交集并将交集保存到output的集合
    9 O7 u. X) n! R% H1 D6 y
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')& M5 c7 l0 `7 Q7 j0 v$ P

  375. 5 x- ?' q6 ?& A
  376. sUnion/ q% `: m, f+ B  [8 h$ ]0 @' E; R7 v
  377. 求并集% N# y+ U6 K/ p0 V, s
  378. $redis->sUnion('s0', 's1', 's2');
    ' O4 S4 e% C# U
  379. s0,s1,s2 同时求并集
    , _. M' T& H+ s  C

  380. 2 G9 m! {! i# F  L$ ?+ e
  381. sUnionStore+ E! x  _0 L0 }1 \5 r% ]; }9 _
  382. 求并集并将并集保存到output的集合
    - P) C- B: s: l( ~1 s0 s( c
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');, a/ y1 r/ ~) B) p. J

  384. 0 r7 n8 ~/ R6 L5 E" h. j
  385. sDiff
    ' ?. O) i! B* ~/ G- G: U# Z
  386. 求差集# R' Q; I5 x9 a( Q# @' K- b
  387. 4 F* h8 w4 F. P) |( {5 P* D7 _
  388. sDiffStore' [$ m& i# p: |: K! x* C3 Z+ ^) y* q
  389. 求差集并将差集保存到output的集合; f/ O# J7 H" E8 w9 v3 E

  390. ' [( {; j9 U8 A; r1 ]; L1 U
  391. sMembers, sGetMembers
    ; X3 i$ [; `/ D+ A/ f: k* ?7 N
  392. 返回名称为key的set的所有元素
    ; X+ s/ z6 r* G7 _$ X! s0 [$ ^

  393. + Z# e3 ^7 Z5 C3 _1 h7 b8 [
  394. sort1 }9 X) `; }7 T: u8 o! R7 s
  395. 排序,分页等4 b) F# }3 X+ a: t
  396. 参数7 ^% B# i$ W; S; q4 v7 I& J6 |, A
  397. 'by' => 'some_pattern_*',
    - Z! V( o% @# {% k
  398. 'limit' => array(0, 1),
      M: n9 T9 W# W( K( M3 \# o. V2 b
  399. 'get' => 'some_other_pattern_*' or an array of patterns,+ y' ?; `! a9 k/ _. f' b2 ~
  400. 'sort' => 'asc' or 'desc',
    ( J  B1 ?4 E  y' M( W1 F
  401. 'alpha' => TRUE,
    * i- m# s! N! c( Q+ G0 F
  402. 'store' => 'external-key'
    & M. X+ k  w# o3 V
  403. 例子
    ; ~2 b; z+ x/ W, }# B
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
      r( l% v  x$ J- |  p0 n
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    0 H! [: B# B' m2 I( L
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    8 Z- k& s: _% ?9 G3 P
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    3 `4 M" S" ]- X. {: y5 o4 y9 p
  408. " h- u7 I8 ?* l2 j5 T$ \' Q( H4 {
  409. string命令
    & L% N$ `# Z& y. G
  410. getSet5 r9 ^( o! }. b
  411. 返回原来key中的值,并将value写入key8 K' P7 g! ~- A9 I0 y# k
  412. $redis->set('x', '42');
    . h" K* x3 O  _5 d4 W) h
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    ( u8 x( U) |: M$ a6 W6 Z
  414. $newValue = $redis->get('x')' // return 'lol'
    * T( }0 [: x- [6 c* W6 l4 u

  415. $ c, o3 x3 Y$ g( o0 i
  416. append
    9 t$ I6 d* l9 [% I8 Z. N# I
  417. string,名称为key的string的值在后面加上value
    ) b3 F3 Y& V/ J3 ^
  418. $redis->set('key', 'value1');) u5 \; w; Z" n7 O1 P  }/ y
  419. $redis->append('key', 'value2');. |4 p. x2 G- t& b
  420. $redis->get('key');9 F2 r2 o8 N& [
  421. 5 h* T+ \6 o. |9 C- ?' N
  422. getRange (方法不存在)
    $ M# l' x% ~1 i
  423. 返回名称为key的string中start至end之间的字符5 `, f& [7 D) O+ S: Q# K2 ]
  424. $redis->set('key', 'string value');
    $ f. |6 Z! e0 h, M  V* O' z
  425. $redis->getRange('key', 0, 5);) p& d5 e! ~! j0 }4 ?9 z- ?) z
  426. $redis->getRange('key', -5, -1);" r& N5 D& g) f9 J8 m$ r* L/ {

  427. $ y+ k7 |- w" A/ U1 i- \" a/ e' j
  428. setRange (方法不存在)
    " n, X: i5 z7 ~$ j
  429. 改变key的string中start至end之间的字符为value8 l/ ]! Y+ g8 _( w3 E8 R2 o7 V% B5 x& ^
  430. $redis->set('key', 'Hello world');
    % [5 l$ T, A( Z. K# ~& w. X$ b
  431. $redis->setRange('key', 6, "redis");
    1 H# N8 Z& G5 o, F8 O7 L  n/ T' W7 G
  432. $redis->get('key');
    " H% Q! ?% [4 H  z
  433. 1 w0 c3 h" D0 P: n/ Z1 d9 |5 Z
  434. strlen
    3 S% z4 @" Y% f: V3 H8 h: s  s5 h
  435. 得到key的string的长度0 X2 a& M# A1 s* a, t1 s
  436. $redis->strlen('key');, j( {- Y& [. g4 g: u1 K1 |4 {% c

  437. # l9 }; k; \& m. e6 k! t
  438. getBit/setBit
    % E. M7 M0 c, L5 @/ r8 W4 e/ n
  439. 返回2进制信息4 J- @% T6 c, q3 D- _6 F
  440. + \8 F5 z* u5 H2 e3 i  b
  441. zset(sorted set)操作相关
    + W3 a: @* Q- Z, N( C% b
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    / P* i" `0 B2 @0 ]
  443. $redis->zAdd('key', 1, 'val1');
    ) W( g/ ?5 C# W) n/ x& \
  444. $redis->zAdd('key', 0, 'val0');
    5 c" K0 w+ k+ b/ M6 T
  445. $redis->zAdd('key', 5, 'val5');5 Q7 y. N% C' `+ k
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)+ l( r1 z" [) Y$ J/ T* Z6 z

  447. 0 j9 {1 X. i9 k% m
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素: x$ o0 e6 Z. \& |& b7 q
  449. $redis->zAdd('key1', 0, 'val0');
    " {" u9 I( q' l1 \. [- ]9 D2 m# b
  450. $redis->zAdd('key1', 2, 'val2');! n/ |" y2 C* k; u0 N( i- S: g
  451. $redis->zAdd('key1', 10, 'val10');
    2 b9 B9 y& H! x& d) ^
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ' g: P/ e  B% G7 R6 x$ }% z1 a! u. H
  453. - E7 C" x; A$ I, L# \  i
  454. zDelete, zRem6 K) @2 D# }0 L) i  g3 [; X
  455. zRem(key, member) :删除名称为key的zset中的元素member. S1 Y5 Z; o3 S' p6 w
  456. $redis->zAdd('key', 0, 'val0');& \2 a& j$ G" i3 z
  457. $redis->zAdd('key', 2, 'val2');
    6 h. E% ^0 L) m
  458. $redis->zAdd('key', 10, 'val10');$ z; P( ~7 {% E6 ~
  459. $redis->zDelete('key', 'val2');; _3 p: Q& B! _  f8 K0 @4 W2 Y
  460. $redis->zRange('key', 0, -1);
    , Q; q7 B7 R6 n3 |7 y! z

  461. 6 K; r* k% D$ G- o6 S1 n" G9 b
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出. }6 D$ X8 v! P& r& \1 I
  463. $redis->zAdd('key', 0, 'val0');( I; s6 H9 r. s! J
  464. $redis->zAdd('key', 2, 'val2');8 P% D% |& l1 K( s9 ^7 a, ^3 f
  465. $redis->zAdd('key', 10, 'val10');% g* E- C+ x1 ?- X
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    0 ]* [$ f" f6 D

  467.   I9 k- ?; E" r/ M) l* H
  468. zRangeByScore, zRevRangeByScore  N" |% B6 L1 r. [2 p
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));' ]; u& H# f6 x$ X
  470. 返回名称为key的zset中score >= star且score <= end的所有元素% l4 r) T) k! j. k8 X

  471. + G0 u7 c' A. A' i
  472. zCount
    7 b. ~. B, }6 P1 m  F" N1 J/ H
  473. $redis->zCount(key, star, end);
    2 B3 w' s9 {  Z" V8 W: S
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    1 D- a0 v6 s/ J4 R# s1 j9 s

  475. & ?" T9 c0 ~/ y/ u
  476. zRemRangeByScore, zDeleteRangeByScore! v  j+ X, |. G6 E( T1 Y2 O) E
  477. $redis->zRemRangeByScore('key', star, end);4 g) w2 G3 z$ s' Q  H1 Y, f: Z4 q/ E
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    - j) q) I) V  {8 ]! i/ l

  479. $ Q5 v& l) v$ m4 O
  480. zSize, zCard
    ( ^8 T1 x8 E! N6 R5 X
  481. 返回名称为key的zset的所有元素的个数6 h& l. T9 F+ j
  482. 6 [8 G0 E# b2 p' g
  483. zScore
    2 n' R+ M# C# Q/ \% y
  484. $redis->zScore(key, val2);
    7 f" m' u4 z/ f) h' ]9 D
  485. 返回名称为key的zset中元素val2的score% c' X) ?# y* R
  486. ' F' r5 H; m+ h9 g, ?+ C# y
  487. zRank, zRevRank
    1 @, G  G% x) V# t
  488. $redis->zRevRank(key, val);1 X- ]* i) R6 ?
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序/ y0 k! K+ r% S$ ~0 z' T* E
  490. * l* D. Q) [& F7 y. }0 g
  491. zIncrBy
    5 S& N* A. s: E- |' B/ ~
  492. $redis->zIncrBy('key', increment, 'member');! [8 |' ^3 n+ \+ w6 o$ O4 b
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment5 w, F. H3 a: O/ O2 z, G8 }: `

  494. ; C& b7 a# v  r
  495. zUnion/zInter
    ( ~7 v1 n- |& L4 H% u, c
  496. 参数
    . S: d: F1 H" ]! }! _- N
  497. keyOutput4 v- x" I5 P2 H. e" `
  498. arrayZSetKeys
    , X) b8 g7 a- z# m! @1 d1 N7 h+ {3 Z
  499. arrayWeights
    $ w: O& W( V: G2 Z
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.* a: g4 i7 Z/ L& r+ r
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。  i- @0 @! m$ q! X; L  G% P  r$ m
复制代码
( m% h! R2 s' {1 x( N( _- }. U

8 _" [& l: Y! I0 ~$ p  q( }: m2 b$ u8 m% j5 K3 v

( R7 D8 l+ \' K+ r7 {6 G1 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    " S* U; r" d) G6 y- G
  2. //连接redis服务器 6 y9 h1 L+ f2 b7 ?; |0 G
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 22:05 , Processed in 0.120404 second(s), 20 queries .

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