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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php7 m9 H% f6 E  o6 H  @" ~( Q( z
  2. $redis = new Redis();  
    : c. {5 p0 @8 X. r6 e* `1 A( J6 }
  3. $redis->connect('127.0.0.1', 6379);//serverip port6 C. J8 a3 a0 J" O( a
  4. $redis->auth('mypassword');//my redis password , [1 O3 ~/ B  R) E* c
  5. $redis ->set( "test" , "Hello World");  2 @4 \# k9 H# X8 j" n' o
  6. echo $redis ->get( "test");$ e8 l, m5 ^! @+ F7 ]# g
复制代码
php操作redis函数封装
  1. /**8 r6 D  ^( s* g8 H
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    # r2 u" Y+ o& `- B0 E, P
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    2 }7 e- p; i; i+ ?. i
  4. */
    1 V, L+ ?5 @  T
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){$ p8 d6 G' Z/ N+ Y; P4 N& |9 Z& w
  6.     if(!$key||!$value) return false;/ [, l" i% V, T( I
  7.     $host = $host?$host:getenv('REDIS_HOST');3 l+ b3 E: ~( ]: U* o: F3 ^
  8.     $port = $port?$port:getenv('REDIS_PORT');
    ) U) c: j5 q/ f4 Y! N) `, Z
  9.     $redis = new Redis();0 x  A4 L) r" M' m4 k
  10.     $redis->connect($host, $port);
    + _0 V7 f. _* n- F% f
  11.     $value = is_array($value)?json_encode($value):$value;
    ! w0 e- h( b' e0 A; B
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);' `& Q: O6 B$ |. I8 \" a
  13. }
    # u+ c+ k, T' i. g  i7 Z. i
  14. /**
    / ]2 V2 d# J. \" \
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    & I2 V1 a& I' H4 J! P( y. T/ C
  16. */
    ) c1 N! j4 |  X/ h; p1 }
  17. function RedisGet($key,$host='',$port=''){9 P# r* k4 h* D* A
  18.     $redis = new Redis();% Q# W, K# Z/ }% u# c
  19.     $host = $host?$host:getenv('REDIS_HOST');
    ! b. i$ D% v4 T" W- m1 u
  20.     $port = $port?$port:getenv('REDIS_PORT');* _& I* E, R  U8 a9 A
  21.     $redis->connect($host, $port);
    . }2 Q4 d" n5 t& T3 ]) D) m
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    7 N( ^& Y$ U3 Q1 s$ a% ]. _3 t
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);- ?1 k1 w) v9 f; R/ i9 ?0 U+ ~
  24. }1 r( H: R( h) @! y
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了2 i. q5 V$ g5 e
  1. setex 带生存时间的写入值
    - S. r  t+ @9 d" R6 P
  2. $redis->setex('key', 3600, 'value');
    1 d! ^2 d( J8 u/ ~. }8 c- h
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    2 m6 |  L! C# B1 G* p
  4. $redis->setnx('key', 'value');
    0 D' x7 l5 L6 D; W6 F6 z
  5. 返回已经删除key, l! R: M8 C" C/ v- @/ Y
  6. $redis->delete('key1'); 成功返回1失败返回0  F3 o7 K6 E5 v" N; F. ~
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0/ x8 L* r: R3 A7 }3 H% B
  8. 查询生存时间
    + m  s5 |0 S& T
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)" Y0 ^% j; B+ Z( T- X4 m
  10. 同时给多个key赋值,同时设置key0和key19 Y) A. g/ M9 c9 h. s) }
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
      {0 Q2 U" g  s% R6 U/ v2 {7 L6 m! B
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    / b" ^' N1 i5 j5 S
  13. $redis->incr('key1');
    ! k2 }3 s) J+ t$ s
  14. $redis->incrBy('key1', 10);
    , w/ b) ?+ H4 T5 C5 k
  15. 减法跟加法一样8 O3 I2 i# c) u% _
  16. $redis->decr("key1"); 减少1
    ) m2 t+ e. v) Z+ f$ ]! I0 o
  17. $redis->decrBy("key1",5) 减少5
    9 B% z8 [) Q3 S" v2 s: q

  18. . l3 ~2 |6 D; {$ ~, r* N: f
  19. list相关操作,连表操作
    8 Z; l/ b! H6 ?1 k3 ]
  20. lPush
    / ?, ~0 w! F7 V( \4 G
  21. $redis->lPush("list", "888");
    ' A. Y' `4 Y  A2 E! M
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数& v6 n4 Y& u8 l8 V
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    7 Y% F' {; N" Y' t" d3 P0 Z
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    0 a$ I+ j+ ~1 {/ @6 `: W: h; S
  25. lPushx/rPushx
    0 P/ R0 r, Q7 ^1 D: j2 u' G
  26. $redis->lPushx(key, value);' f. i4 h4 s7 X* P! s
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    8 k$ L  y- z% p2 c1 G) F

  28. / x& ?& R! s! I9 }& R# h- J, l9 o3 X2 l
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key+ K! l7 I* q/ G5 |" Q* H$ S
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key1 c# E0 D. P0 F, m& M" E7 D
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回13 E/ D5 I2 a0 R
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序) s* v% f$ Z" Y& D; K) h  }6 |* H$ M
  33. sadd s1 zhangsan$ e- c" U( I( X0 D0 \! q
  34. sadd s1 lisi1 S; O! C$ K. ]% a+ @/ u
  35. sadd s1 wangwu( ~. A. w$ X: q1 a( B" W
  36. sadd t1 yangxingyi7 p7 \* D1 O# G2 M' L5 ?  P
  37. sadd t1 lilei7 I( F4 g- r, k" |9 X0 z0 y) g
  38. sadd t1 zhangsan
    7 u/ x5 j  g4 {" P6 j
  39. smembers s1 s1的所有集合内容
    / \2 {. E: @. e, A8 h/ G- S5 C
  40. sdiff s1 t1 s1有的,t1没有的,差集
    * S. y, C6 }* N# I9 k3 z/ I
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式/ @7 q0 f9 G' R/ p
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    , C: X- z2 t& J* l4 u
  43. spop抽奖场景,返回集合里面随机的数- d. U) H' J" j. U6 e( p
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了# }4 B6 J4 ]4 V) X
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    $ H5 P  ]. b6 i  i* T- s8 j
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    . V- v& J+ ~/ a! j3 q: m
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    , o, _7 t  x) R$ Y* @6 t
  48. $i = $redis->srandmember('s1');echo $i;
    # M! g1 N% Z5 F9 s$ t# U6 d
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false; L' e8 x. i/ H
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    0 q( y  r4 n5 R
  51. / F. r0 P1 Y) S
  52. zadd key 2 value 有序集合1 X5 T2 u4 i# C* S
  53. zadd y1 1 zhangsan;
    ) O+ i/ J# b8 F9 W
  54. zadd y1 3 lisi;
    ; `4 S' H$ S0 e! Y3 z
  55. zadd y1 2 wangwu;
    ( |6 ?6 G, O, l( A& |2 H
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    . u. a- v9 X4 Z9 L0 K
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);- J- H5 K3 _9 i# \$ W9 ?
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    " I6 F" m, `. D$ T
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先* r% h' ?* P0 k: Y7 i. e0 G
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    # E; t+ l- l1 y  U  f4 Y
  61. 无序就scard,有序就zcard,有z没有s
    ' X0 r) S3 F( O2 F! H3 U9 [* ~
  62. sInterStore6 |& L" c% i. U1 N. k* |% L# ]
  63. 求交集并将交集保存到output的集合0 C! u- n9 c: P
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    , z1 u7 G1 E) i

  65. % `' ?. ?0 g1 a, x5 }# t9 S0 f) t7 ~
  66. Hash操作9 I  }2 q& w2 P
  67. hSet8 |6 q3 a1 C7 M6 }) }) A6 I
  68. $redis->hSet('h', 'key1', 'hello');
    ) p" i* R8 f1 }" [2 A# P
  69. 向名称为h的hash中添加元素key1—>hello
    9 W1 W4 d0 y- ]) z

  70. ; o* \- r: \' o* s0 u% H# {' w
  71. hGet' u& U: s' c4 ?6 j& e, M
  72. $redis->hGet('h', 'key1');  r- @) V' o, q  R/ S
  73. 返回名称为h的hash中key1对应的value(hello)
    , n! q9 V$ K# d

  74. ; m. Y7 Y5 h+ \9 U8 \8 j8 P: w4 E
  75. hLen
    7 e, \% x) T4 I' [
  76. $redis->hLen('h');
    * T7 I& r! R( ?1 W) [" K4 |- {6 S
  77. 返回名称为h的hash中元素个数
    ( Y# @) ]/ d. ]+ @8 C2 z2 X
  78. - y* x2 ~% n" m0 g- I7 |& Z. u( U1 W
  79. hDel  o7 E& O0 s" V
  80. $redis->hDel('h', 'key1');
    2 X2 ]' A$ S; I: d+ o7 m3 F' u
  81. 删除名称为h的hash中键为key1的域
    $ I2 T- u' v! o
  82. 7 T3 f/ G* J: _  d# b
  83. hKeys$ t( W2 V8 ^: p; z% T2 S' ^
  84. $redis->hKeys('h');8 X1 Y5 a& X) L( y5 B2 T) V
  85. 返回名称为key的hash中所有键) F! C* D- c7 b, }1 G6 {( M
  86. ( c' h- D, m' F5 Y1 {; Y$ d
  87. hVals  G* G6 i0 u3 L% D) [+ K
  88. $redis->hVals('h')3 X- G9 R6 ~% s3 V: O- r- @; w
  89. 返回名称为h的hash中所有键对应的value3 {% @* L' F+ n, U' ^

  90. ! `8 T) x! a7 ?3 {; b- z# w$ _
  91. hGetAll. f8 x4 W- m; q* s
  92. $redis->hGetAll('h');* l. J! k5 l( Y
  93. 返回名称为h的hash中所有的键(field)及其对应的value5 I" f. T* t- a( J# ~3 A( }) m
  94. & I9 {, i& h6 q, [
  95. hExists: o- e$ B) q% ]$ K; H, O- I7 U# m: ~
  96. $redis->hExists('h', 'a');
    " y; l/ T3 b' Z% q8 ~7 S
  97. 名称为h的hash中是否存在键名字为a的域* q% E% L3 @& c" N- Y8 |$ g

  98. % \) s2 O# n# Y+ \+ c/ Z
  99. hIncrBy; C6 ~- X$ O) b, @% F) n" X
  100. $redis->hIncrBy('h', 'x', 2);: [7 M6 P- p1 ]2 D7 |" M9 Y
  101. 将名称为h的hash中x的value增加2
    2 d- X  M" }7 C. [' V
  102. 4 F- U5 @4 k3 d( T7 L4 G  B! O
  103. hMset
    + j. r3 q7 J  M) [) h
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ; K/ ^) R' b: r# I$ `$ g* P  W9 B2 Z; J( c
  105. 向名称为key的hash中批量添加元素
    - Z1 s! ~& K+ @8 I! F
  106. ! P5 |4 J- n$ P+ c1 U$ g5 L
  107. hMGet1 h5 p2 c) ?4 Y  M# z! g, Z" k
  108. $redis->hmGet('h', array('field1', 'field2'));
    ) i8 n2 y7 d( A
  109. 返回名称为h的hash中field1,field2对应的value& c& s6 S' r% `; W$ P
  110. * U. N) X% q) A3 z- q8 D( ~2 a
  111. redis 操作相关/ x* T* t. T( W) [! ]
  112. flushDB
    * y) {+ ?9 s: Y
  113. 清空当前数据库% I( ^* l; Y0 R) y0 S

  114. / P; G8 |$ Q! s' g0 g
  115. flushAll
    ( I+ v4 Y5 g, _$ K+ N0 l
  116. 清空所有数据库
    0 q8 R# }0 M( |8 z0 h5 N
  117. & B  {5 l' K6 ], V4 {
  118. randomKey
    2 v: x% S) o6 ]
  119. 随机返回key空间的一个key
    3 p( J, ]0 q; w5 L& i" R: }
  120. $key = $redis->randomKey();
    - b9 B' a6 Q4 m* O7 A0 a8 P
  121. 0 q& t9 \# `- N3 \
  122. select0 b" n9 F, G4 v4 _3 D. U& x: a0 h
  123. 选择一个数据库
    . e  B1 J) B& f. f3 D
  124. move! {8 D) N# W+ ]7 Q" _+ e2 j7 K
  125. 转移一个key到另外一个数据库
    ( y/ A, `* l% ^1 _; a
  126. $redis->select(0); // switch to DB 0* |0 s# n3 ?4 s9 b
  127. $redis->set('x', '42'); // write 42 to x( D% g, W+ s* N9 ^& ]7 |
  128. $redis->move('x', 1); // move to DB 1
    ) {! @1 ^5 U2 _! x- `1 o% P9 R
  129. $redis->select(1); // switch to DB 15 o1 P+ s( g/ h, L; G
  130. $redis->get('x'); // will return 42
    ) E* Q; o3 [% g* A6 M' H
  131. 4 L* Q5 u6 q3 h; L. n
  132. rename, renameKey. G5 t8 q3 L* P( Q3 v1 N# T
  133. 给key重命名/ G! D9 `) P. Q: s. M7 }
  134. $redis->set('x', '42');5 A# o1 {8 B5 T$ e% i+ A
  135. $redis->rename('x', 'y');
    3 x$ \) @: x2 M3 X- }/ p1 o7 f
  136. $redis->get('y'); // → 42
    # l' v3 G0 p6 u0 Y
  137. $redis->get('x'); // → `FALSE`
    " {8 q) F0 w' ]6 A

  138. ' A( C) [: D. |- b" c
  139. renameNx
    5 r- e" [$ U* f0 G" U
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    6 C  P$ f0 r3 y
  141. # N' ]* `7 o3 F2 g
  142. setTimeout, expire
    * O* O( e. ?+ {+ U! q+ s
  143. 设定一个key的活动时间(s)# S( X+ Y5 J  ^
  144. $redis->setTimeout('x', 3);/ D/ ?" x; I( R' G# B

  145. ( b3 z* u* K6 o7 Q3 W
  146. expireAt  B% K% f: t/ R0 B
  147. key存活到一个unix时间戳时间
    0 P/ M1 ^4 B2 W
  148. $redis->expireAt('x', time() + 3);
      U! D! C: y, ~% H2 |& ]5 |

  149. 6 b, @7 h$ \. R% n7 @+ V$ }
  150. keys, getKeys
    3 `: p5 l% I, H& K; P) d6 b8 Q$ e
  151. 返回满足给定pattern的所有key
    9 M/ u& L9 @' `; G6 a
  152. $keyWithUserPrefix = $redis->keys('user*');
    ! s9 n, u0 Y3 X5 Z

  153. ( x8 ]% ^* W9 y
  154. dbSize. M" Q" G+ f+ I( {4 d" c
  155. 查看现在数据库有多少key
    ! E( g) P" c) L, o% L6 o
  156. $count = $redis->dbSize();& `; W6 C" v6 Q! B; N3 V$ T

  157.   j- O; ^: N5 s6 V/ \; a- @7 J9 h
  158. auth
    2 u9 {( ^+ G& V8 H. }6 j* J
  159. 密码认证
    ! n3 J0 ^, E9 S7 E
  160. $redis->auth('foobared');
    5 j' T  H+ V. {* R* ]% v# o

  161. 6 Q/ A: l) f; [2 ^! n5 i% @) T
  162. bgrewriteaof
    / ?8 ^$ z& A$ d
  163. 使用aof来进行数据库持久化
    & c( C: j+ O4 o% z9 n" a
  164. $redis->bgrewriteaof();
    : `& Q, x& O& S% x
  165. 0 t4 o. p% {+ H9 H
  166. slaveof, Q7 g' c. h) O1 n  \* W: E/ T
  167. 选择从服务器- t5 p  R% A. |* p! B8 R' X
  168. $redis->slaveof('10.0.1.7', 6379);" o$ {3 I" D0 `! q4 C. y% W# C
  169. $ p$ w( f7 ~0 ?; k- j
  170. save
    ! M! f* I7 Q6 f
  171. 将数据同步保存到磁盘- Y. z0 a& ^$ k, N6 x7 [: a

  172. / K$ m; A. m: i2 q& S) w2 ~; F
  173. bgsave' h, h/ X7 J# n) L
  174. 将数据异步保存到磁盘
    1 h. t- f# }+ P3 F# m- [+ j& {

  175. 1 }& f' `% g: T% [0 N
  176. lastSave
    9 ?" \0 b- B1 S) K1 I* G
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    " S! W$ V* q' n0 \4 E# t
  178. % @+ D$ a, g" `. {5 Y$ n5 D
  179. info- B* b4 r2 U' n0 k/ k6 j
  180. 返回redis的版本信息等详情
    - @0 ^! m6 ]) n, u* l2 L" X

  181. * B$ ~( {! x1 Q- Y) [
  182. Redis::__construct构造函数3 J% ]! h4 w3 l; K# Z- ?) `
  183. $redis = new Redis();
    8 y3 K! S+ j' K/ w7 w  J4 i
  184. * f  C8 |- w! ]9 q. Q6 E. A
  185. connect, open 链接redis服务
    7 r* C. r, R. P: b) I
  186. 参数
    4 B' @7 D$ D- v. b
  187. host: string,服务地址% n/ d9 O- P7 h9 f+ U; U
  188. port: int,端口号# {9 O4 g; j4 [7 H* J( m# G6 q
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    / z8 L$ s6 t4 ?2 R( b
  190. 注: 在redis.conf中也有时间,默认为300
    / f( Y6 X+ N7 c" m& I$ n

  191. 3 }& N  r( N! b! l
  192. pconnect, popen 不会主动关闭的链接; o) P# S+ ?, t# ]5 B
  193. 参考上面
    2 `6 r0 i; F5 p: t

  194. ' _4 h. z+ k; C3 P6 f" z$ h6 l
  195. setOption 设置redis模式5 |% a' ^; ?  _
  196. . O0 w+ V4 w1 s( b! m
  197. getOption 查看redis设置的模式' t* {1 c* w$ e  \0 R' m
  198. : q( E( [7 G5 g
  199. ping 查看连接状态
    ' {+ O0 m6 m5 O4 B
  200. 8 }, F6 _+ M$ r& E
  201. get 得到某个key的值(string值)
    1 @" D9 y5 A  x0 m& k4 [6 v
  202. 如果该key不存在,return false
    5 A4 H3 J: U8 Y7 f% D

  203. ( l" k0 S- M- K
  204. set 写入key 和 value(string值)
    . j5 [& L2 m, \! T
  205. 如果写入成功,return ture
      w. |& f: G% Z% Y$ ]9 z
  206. ; i4 {- r. k9 o9 B0 v
  207. setex 带生存时间的写入值! Y$ T" L( j0 Y$ a& C0 \% c  W: ]
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.1 w0 R1 H) \7 K& Q
  209. 3 t. i# b/ Y- j( @- @2 F. g
  210. setnx 判断是否重复的,写入值
    9 m* T1 R- X  U, o$ _8 |
  211. $redis->setnx('key', 'value');
    9 c3 Y! D7 x9 G$ `0 h
  212. $redis->setnx('key', 'value');
    # x/ x5 y- p$ B

  213. ) M$ d2 H, F* c1 H, O; ]  ^& l
  214. delete  删除指定key的值1 u! f- S. d/ a
  215. 返回已经删除key的个数(长整数): x' z- N! q8 i" R- u
  216. $redis->delete('key1', 'key2');+ h1 q7 q0 `4 T0 ^" L9 p
  217. $redis->delete(array('key3', 'key4', 'key5'));* O8 {/ F6 V5 t: y! e& ?" ^, Y! E
  218. + n1 O% c! Z& ^1 r* @
  219. ttl  \7 O, x' }0 f/ `( d  g
  220. 得到一个key的生存时间5 s! a; y. x: X8 H

  221. ( c; H: w" y9 Y, f) ~
  222. persist
    # X! i* I9 U- T
  223. 移除生存时间到期的key9 @  D" N. f( h* G& V
  224. 如果key到期 true 如果不到期 false
    , x  E& P2 O9 K/ l/ c% _/ e) [  ]- e2 Q

  225. % v6 Y6 c. }0 m% ~, g
  226. mset (redis版本1.1以上才可以用)
    / }% O8 Y1 s' `2 n7 g& d( r" X
  227. 同时给多个key赋值
    + V7 C0 r7 q9 P/ v- m( e
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    2 V% p2 ^1 z1 U# w. j' _/ V& ]

  229. ( |1 r$ q( K- \; x3 J
  230. ! h! s9 O1 a) @2 V$ E/ {( A
  231. 4 T: H, f+ A" v
  232. multi, exec, discard! T+ ?% T0 I9 Q& X7 t" l
  233. 进入或者退出事务模式
    * I$ l# U+ S! Y; W& s
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    : Y1 q/ ?. T7 Z- ^
  235. Redis::MULTI:将多个操作当成一个事务执行
    ) l; {* P) _3 E
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    % C3 x8 F1 l  D" v2 t! T( O, q5 P* Z
  237. discard:删除一个事务
    6 g! y) `2 L& E4 M* t$ D3 s8 ~. ~
  238. 返回值* [2 t% g* A; l/ w
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
      [* e! I" B( M" N# Y

  240. ( F  T& E; z% g
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    ; M9 d( ?2 ]& Q7 y. Y* `4 w( l
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)" o/ g6 X* E( r7 W$ |+ ]
  243. unwatch  取消被这个程序监测的所有key
    : m' m# o5 V. Y4 U6 x0 l7 e6 Y
  244. 参数,一对key的列表
    % u1 C& A6 {* d7 l! e) e
  245. $redis->watch('x');4 y; }1 J1 L) Y$ i' b- j

  246. " u0 Z! l6 ~3 }! G+ Z& H8 u/ T1 ^
  247. $ret = $redis->multi() ->incr('x') ->exec();
    5 ~* ^; B- S, K. y8 X; B6 S" F
  248. , S! L5 s9 ?; _7 H( @, M) j
  249. ! d: ]  f! q5 @' q0 H/ ^
  250. subscribe *8 J" c, T: Q- `# s8 U
  251. 方法回调。注意,该方法可能在未来里发生改变
    * q# o4 E, @& `5 l" k$ P$ E

  252. 0 d! ?3 S& }  s
  253. publish *
    ; r6 v) O5 _7 R/ B5 z' z& d" Q
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变$ R# \& W; `7 A( ?% {1 @% W3 l4 }

  255. : j; r+ Q8 l) f
  256. exists& M3 _# u- v, J1 `
  257. 判断key是否存在。存在 true 不在 false9 Z4 ]' u( g# A# H6 `8 z

  258. ; w- @: G$ z- s
  259. incr, incrBy
    * B, f& ^( O* i
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    4 j/ Y. s( M' F4 T( o
  261. $redis->incr('key1');0 r$ K2 E; I" d; S1 D
  262. $redis->incrBy('key1', 10);
    9 L2 U$ k9 b2 n
  263. & ]9 O4 @  x* N( f$ z4 {2 u% v
  264. decr, decrBy; E& {2 o: S$ C. c
  265. 做减法,使用方法同incr$ B2 \+ T! s0 o% @' e) l9 y, ^

  266. + E" _( F3 S9 Z4 H1 D/ @
  267. getMultiple
    + `9 f" o, S; [0 q* |" Q
  268. 传参* g0 {, C3 q7 _! C
  269. 由key组成的数组
    : P" ~( l$ Y$ {( C( q
  270. 返回参数
      ^# Z" r  |+ v% P& p+ j
  271. 如果key存在返回value,不存在返回false; Q2 ~3 C9 Y2 T6 D$ u/ u
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));- m. Q) _* P7 A5 |7 q
  273. $redis->lRem('key1', 'A', 2);
    3 F- x8 u7 M- |* n; z# r; x( [
  274. $redis->lRange('key1', 0, -1);
    , e7 X& V  X+ \# |

  275. - v, K, L0 R$ R8 z5 O0 o% `7 J% J6 B
  276. list相关操作
    / g1 R1 l/ W% h* k# M
  277. lPush
    ( q/ o8 X; q* M9 }( v$ ?
  278. $redis->lPush(key, value);2 W( h6 p- N# V% E& t
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    2 x0 e) a4 U0 Y2 ^- l  l
  280. & \) h, |2 l) m9 n
  281. rPush
    ' b9 L) E, P/ S( [1 w9 S
  282. $redis->rPush(key, value);
    , _& _( A$ p4 u2 J6 @) f
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    3 P5 U: q( J. p2 y; u( D2 w6 k/ L
  284. 0 j3 @( c4 @* l! ~" b( N
  285. lPushx/rPushx% Z; v6 h; ?" H5 ?% C
  286. $redis->lPushx(key, value);
    ( N% U, S" `) _& Y: q
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加+ A+ \- A; \% z- e/ j' p' Z

  288. 3 G1 z0 h$ K+ z1 c1 U7 V! I/ m' `
  289. lPop/rPop
    ' N" w7 V# I/ `  S+ p8 v
  290. $redis->lPop('key');4 g, C2 B7 [0 r/ k
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    ) X! N- v( F) l2 k3 \3 Z- O% g5 B
  292. ! P% {% m0 |. w& `
  293. blPop/brPop
    5 a/ D6 O2 j+ a, o  E6 j$ k, K9 ?7 ?
  294. $redis->blPop('key1', 'key2', 10);4 O' b$ p& I* M
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作, a) a6 T; T* B: W3 }
  296. 1 M& q( ~% H. p' N/ U/ l" v/ C+ a  I; O
  297. lSize( u4 w. C" N$ F* X5 n  v* U6 W
  298. $redis->lSize('key');- n. L% ]% L, i  Q  L, |0 C5 ^
  299. 返回名称为key的list有多少个元素1 E# L' u+ a, S, j- l% L

  300. " @" u' j6 B5 K7 |9 {8 r& ?
  301. lIndex, lGet# k- O0 N: L9 A! V& v
  302. $redis->lGet('key', 0);
    - ?2 n, r" X8 a5 S. L) E- Z
  303. 返回名称为key的list中index位置的元素8 g  ?' X# V4 O% `) S# m& H

  304. ! |7 b9 S2 V* _; l1 m! E) s" C
  305. lSet
    1 g. q$ l* K7 z( _+ r( g; B
  306. $redis->lSet('key', 0, 'X');4 }% F( c" [0 Q* Y% t
  307. 给名称为key的list中index位置的元素赋值为value' \9 F7 i% @( l5 [

  308. . _: L7 E. H. j4 u
  309. lRange, lGetRange
    3 g; ]; J7 J. a/ I4 r% k
  310. $redis->lRange('key1', 0, -1);) p3 T# @8 @  ~9 s, Q
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有): z! Y) v$ ]& ?& ^* z# B
  312. 4 M6 L5 Q* |/ s# ]
  313. lTrim, listTrim, Y. X+ ]3 v1 ]& K2 b
  314. $redis->lTrim('key', start, end);0 A) K; w9 o- M3 U* c
  315. 截取名称为key的list,保留start至end之间的元素* ?. m  }4 u# B2 {/ N9 T

  316. . E! q) p8 f3 X% U2 x
  317. lRem, lRemove
    ; T$ }! ]+ i1 s  I
  318. $redis->lRem('key', 'A', 2);/ K# f& _3 b. u; P0 ^
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    3 `2 [0 B0 A) q$ l: v
  320. + T9 h4 E# T4 a, E. d* f- t7 y
  321. lInsert
    7 F1 U# G8 l4 v0 p
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    : }, I7 `  ~) `) v2 p, j7 L
  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');" U# R* Y, Z1 _6 ~) R) p! e/ J
  324. $redis->lRange('key1', 0, -1);
    9 E; C/ v9 q$ \! d4 K3 @3 N
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    3 }4 L6 \4 T. r9 e
  326. $redis->lRange('key1', 0, -1);
    1 }, [, ]  A( t
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    : W7 w! l  A9 r9 t2 k# ?" z4 p
  328. 8 Y$ `! A6 J9 l( Q6 y. [1 p
  329. rpoplpush; m4 s3 M9 i" }" F) w
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
      I) v) `. o* W7 {- ~6 `, C
  331. $redis->delete('x', 'y');
    ( |7 R5 Q9 P5 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'));/ \; f2 B+ h7 }
  333. var_dump($redis->lRange('x', 0, -1));$ K& Z0 s4 Z( h6 }9 N% C+ l
  334. var_dump($redis->lRange('y', 0, -1)); * P( }% G0 v7 o6 m

  335. " [; g$ E, S3 t6 I
  336. string(3) "abc" 6 Y: e/ Q2 X) ?3 i6 {0 l
  337. array(1) { [0]=> string(3) "def" }
    6 r: ~. d: C* n& Y2 x3 J
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }$ |( H( X$ ]" V! K2 U( ^! ?
  339. $ O; E6 q8 {) Q( P
  340. SET操作相关
      V1 F3 O7 H4 P% z* X8 H8 B5 b
  341. sAdd
    1 T2 R( Y9 K; s; T
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
      e. ?3 ^/ B9 t: k! \/ I
  343. $redis->sAdd(key , value);
    % b. m; G( ~- d; X
  344. $ q1 J* B  x8 r% T
  345. sRem, sRemove
    % ^" w) }. B9 A2 N% x; l. k( k+ v# A0 q
  346. 删除名称为key的set中的元素value' t4 p  H1 r" M' A, |( R
  347. $redis->sAdd('key1' , 'set1');9 G9 h( J& s6 J% m) `5 ~2 |8 h
  348. $redis->sAdd('key1' , 'set2');
    + \" j" e  o8 f1 C+ n( K
  349. $redis->sAdd('key1' , 'set3');: q% A/ ]- ]+ f4 H0 d8 S7 ?5 h
  350. $redis->sRem('key1', 'set2');
    3 n! k: E9 R( R- Z  P0 D4 u$ I

  351. 0 Y# x4 m5 I9 k4 b8 A
  352. sMove
    1 D+ S/ o" W; j' v3 g% n$ w
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    : m/ P# [+ O& p/ ^: O0 a
  354. $redis->sMove(seckey, dstkey, value);
    : M! K$ D3 G* V8 U9 b
  355. 5 y" H$ R& ?: V. F9 n) s: c& Y& |
  356. sIsMember, sContains
    1 Y" J4 l2 P2 s7 R: `1 O
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    " S9 O- D, S" R: r' v  ^
  358. $redis->sIsMember(key, value);  A- l+ u7 [5 f4 f9 w* g
  359. 1 L4 c9 H1 e& ]
  360. sCard, sSize
    2 Z2 f- X- c4 x7 {2 }( Q6 N
  361. 返回名称为key的set的元素个数. I7 h9 a, S- o. A/ x

  362. 7 @) A* p: Y3 C6 e* W
  363. sPop
    - B7 _" t9 W' M4 M
  364. 随机返回并删除名称为key的set中一个元素
    3 j) ]; m0 N( v5 a

  365. ! g4 T" h# _( F& R. \4 ^# S
  366. sRandMember
      P) k8 d5 V1 @4 H
  367. 随机返回名称为key的set中一个元素,不删除
    ; H& k- X! r9 U' R2 t$ s2 @, l3 O

  368. # f/ m/ c( D  l$ _) p  E; [+ {
  369. sInter
    4 E& |7 V- f( B- J' a2 H
  370. 求交集+ Z  {; b1 y8 ^" {2 U

  371. & M5 z! M' Z* o# D
  372. sInterStore/ v5 h9 f4 m% t1 I$ x; K
  373. 求交集并将交集保存到output的集合
    - Z+ D. p+ n) b2 Z. r! _5 y8 V/ O
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    9 d. r) X  T+ d$ v1 }) V
  375. : y4 @5 J  n1 q1 ]( a
  376. sUnion  @# M8 p  }  W
  377. 求并集
    ; _: z6 j  b" A% S% ]
  378. $redis->sUnion('s0', 's1', 's2');
    ( B& o: K* {0 c# R$ x# l" [8 m
  379. s0,s1,s2 同时求并集
    + f3 Q: P& E0 t0 q
  380. 3 D8 d, `% ~. }- g8 Z
  381. sUnionStore
    " u2 x% z+ B7 L$ t  m
  382. 求并集并将并集保存到output的集合; n7 V+ U3 R( r/ _2 s& B, K
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');1 J3 e+ _: i! ~8 ~$ L) Z! d& u

  384. ) ]; L. R5 g8 y3 y$ @
  385. sDiff- J4 o) E5 m# U/ ~. \$ e* M5 p
  386. 求差集+ L  l) h4 a7 D8 N- G  D' v

  387. ( W/ P: P% n( l$ S9 T- m4 G
  388. sDiffStore# u$ V/ b* L+ l$ L3 ?
  389. 求差集并将差集保存到output的集合
    5 J& s, k! v# {+ R
  390. 9 C8 ?6 h7 y3 C/ Z' F- y; v, N
  391. sMembers, sGetMembers
    - G' Q3 b/ G; v# _$ O' A' {
  392. 返回名称为key的set的所有元素
    0 \0 i9 D$ {7 w0 P
  393. 7 E; Z! l7 l# S3 V8 o6 q6 `: g, i
  394. sort
      t6 m' _/ G6 d8 j
  395. 排序,分页等
    1 P! R6 w  i; D7 M/ l4 |
  396. 参数" o4 W, T6 I, I. L
  397. 'by' => 'some_pattern_*',  N' _8 C9 i9 a) P2 s/ Q: [% V
  398. 'limit' => array(0, 1),
    : R* i6 V, x! h9 L+ B  ]0 }  B1 ~
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    , w, `% C; g6 b$ q) k
  400. 'sort' => 'asc' or 'desc',8 [' g; [: R1 Y% n
  401. 'alpha' => TRUE," E5 D/ {$ \$ z% p' l% a
  402. 'store' => 'external-key'
    , n$ E- ~: {  \, \
  403. 例子  r9 h- G; h1 }( Q, ~) D
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);1 c! V7 g' Y9 ]! s- i
  405. var_dump($redis->sort('s')); // 1,2,3,4,51 z+ q: Y: v0 F8 L4 U
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    * o. |) O' \# b
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    + Q. v3 K) V- ?# g4 M
  408. 3 `9 t" Y6 \- i. x2 {
  409. string命令
    . h/ k. `2 j* `  _6 G
  410. getSet/ z2 n) V7 F' w) i; K7 I+ r
  411. 返回原来key中的值,并将value写入key& c; m1 r' |, w3 n7 @9 V6 p8 y
  412. $redis->set('x', '42');
    ' s' l8 k* o) f9 i6 D
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'$ N+ O7 S% [% ?; W  t
  414. $newValue = $redis->get('x')' // return 'lol'
    0 k  d( ], |- ]3 m. x, m) u8 g1 A
  415. : p0 u3 w( l: F
  416. append0 [6 L4 f3 p1 X. [6 M
  417. string,名称为key的string的值在后面加上value4 O! h* T! G+ [2 G( e+ q
  418. $redis->set('key', 'value1');2 o0 o5 R7 H& T( _/ e, \2 O' J/ W
  419. $redis->append('key', 'value2');# K9 {! V/ W* z: Y. v6 B
  420. $redis->get('key');
    * H+ s' l9 v- N/ r& ]+ F( M

  421. 5 O, Z. k% d$ Z# `" ]; k
  422. getRange (方法不存在)
    * }: T7 r. d6 |7 K8 I* x
  423. 返回名称为key的string中start至end之间的字符6 \0 C0 N5 C  ^+ d3 G
  424. $redis->set('key', 'string value');( C/ l5 w( n+ z& i
  425. $redis->getRange('key', 0, 5);) b/ v) x3 ?! E9 W
  426. $redis->getRange('key', -5, -1);
    6 S. {7 s% G: w2 [6 ^

  427. 6 [0 C1 W6 l' m# l
  428. setRange (方法不存在)2 B  j; V) y; e7 Q& D- M
  429. 改变key的string中start至end之间的字符为value
    . @  u7 t' v' ]3 P' T# X& m
  430. $redis->set('key', 'Hello world');; u! @2 W4 d9 u4 [6 M4 l. b1 j
  431. $redis->setRange('key', 6, "redis");
    4 d, s/ t) c9 J
  432. $redis->get('key');/ L! c/ X1 T( K% Q( ?4 ~# S

  433. + ]% C' X0 x( L" E: [8 O* L8 l
  434. strlen
    8 v8 e; L1 u! G: t
  435. 得到key的string的长度5 _2 P6 s* y' a
  436. $redis->strlen('key');% U) `& G+ |2 h8 a) P& g5 i1 Q
  437. 3 p4 s  O+ g  J8 w3 B( q
  438. getBit/setBit1 t; W+ G' N+ ~, N1 h
  439. 返回2进制信息
    " @! X+ N, `9 V1 e) V9 }1 x( f

  440. 5 `+ J/ `; n; v4 T7 z5 {( m
  441. zset(sorted set)操作相关
    & v1 G4 x4 M1 p+ N
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。: ^* K2 v5 ^! A  ?% F
  443. $redis->zAdd('key', 1, 'val1');9 L$ ]4 }/ V' u! i) q  v! c
  444. $redis->zAdd('key', 0, 'val0');
    . J( r7 ]6 q: o4 u* G& [8 M
  445. $redis->zAdd('key', 5, 'val5');
    4 R0 v# j) O1 e. N8 |* A& ]
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    3 H/ s' Z6 k5 f
  447. # |% t& t- P( ~
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素; {" [7 V- Y, u
  449. $redis->zAdd('key1', 0, 'val0');+ M0 @  \; j8 ]# v
  450. $redis->zAdd('key1', 2, 'val2');
    / ]. f* d/ @. K. ?5 r
  451. $redis->zAdd('key1', 10, 'val10');4 ~! k" o1 V7 Z$ a' [5 r, {
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);# ^- K" r+ `( o9 j  g' ~& u
  453. " S5 A8 B3 t; w; ]% D
  454. zDelete, zRem
    ! n' }; q  S$ b6 T2 R4 ~( H
  455. zRem(key, member) :删除名称为key的zset中的元素member( i1 ^1 j0 T7 e# i6 y' e; ]& Y+ R8 k
  456. $redis->zAdd('key', 0, 'val0');
    0 @$ Y# `4 p% P# k+ D! z
  457. $redis->zAdd('key', 2, 'val2');
    2 w# H! |3 j) C, @
  458. $redis->zAdd('key', 10, 'val10');! \! M9 v* N# K5 D- |! B
  459. $redis->zDelete('key', 'val2');
    ; l/ f( Y' L0 X; T" k
  460. $redis->zRange('key', 0, -1); ( X: l# [; C) @# q9 ]$ M
  461. - E( S5 V) l; d  ^* r
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出& q2 k+ r0 s+ H# ?2 b
  463. $redis->zAdd('key', 0, 'val0');! ?" a9 B9 p1 q$ M5 [3 ^2 v
  464. $redis->zAdd('key', 2, 'val2');
    / g) ]3 Z% F6 |+ o2 b/ e# H
  465. $redis->zAdd('key', 10, 'val10');! ?/ Q$ \" R; r
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    8 \- h: ?( \8 `  k4 B  Z

  467. 8 `* y/ ^, }/ A8 @, J
  468. zRangeByScore, zRevRangeByScore3 e1 s2 \  {! U9 \* e( C' f" v
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));6 j4 U, a; M. s# \* i' w6 {# b
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    ) |+ T& i- v  B  D

  471. ; P0 K: @" v. O2 y
  472. zCount; H! y( o* `3 s7 Q( B
  473. $redis->zCount(key, star, end);& l* g, c$ [$ s* Z" ?; B4 f( m
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数5 u2 G% ~$ Q# n6 G# h
  475. 8 j( A6 X" ]. J
  476. zRemRangeByScore, zDeleteRangeByScore! z  O5 p* c* T  t8 L
  477. $redis->zRemRangeByScore('key', star, end);
    ' b6 j* Q/ `$ f  J* F  t6 J" K
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    4 E9 |# U! e' R' ?# X8 q4 [
  479. ' }. h' X' ~% m8 I( m
  480. zSize, zCard2 Q* c2 u9 m- U8 T$ J
  481. 返回名称为key的zset的所有元素的个数2 J, V# l! ~$ u+ @# z
  482. $ Y3 k3 o/ {2 u# h  Z2 u
  483. zScore
    ' t* k/ ?7 K: }
  484. $redis->zScore(key, val2);
    : N' ]* `1 G0 \2 w1 J+ X; t
  485. 返回名称为key的zset中元素val2的score$ ^5 P' }! Q) v6 p) e3 Y5 W

  486. ; r0 f) F0 k8 X4 g
  487. zRank, zRevRank; [  ~* j) s8 H8 l) V: b# H& ~4 s
  488. $redis->zRevRank(key, val);7 t! T! s% O* y. E1 ~$ e9 K
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序0 G8 N! F  W3 u) n9 A, J, L# F
  490. : u3 r* P1 u+ k3 h% X3 L( D* d9 ]
  491. zIncrBy5 M" C2 \8 d4 @! j' ~6 `- U' N6 [* P
  492. $redis->zIncrBy('key', increment, 'member');
    % e4 Z+ G- u! J5 T, q% f* o( M
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    0 y# A2 V6 L$ U* K0 e- {

  494. . Z- y* {% j4 E& _% L& Z( [! U
  495. zUnion/zInter
    ( S# G, o1 A. P9 T6 S& I
  496. 参数3 N' ?* O& A1 v# I: N* d4 K8 E
  497. keyOutput
    ( a* P- A, E( W, i/ s" P
  498. arrayZSetKeys
    - X6 |$ z' }2 ?$ y
  499. arrayWeights
    2 e! f) {8 s; [$ V
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.; q3 b$ z# n: w/ b; V
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。# O8 h7 A: s% o) j' P: a+ p
复制代码

, [$ U; l) v, p# M
9 h% U( z' J: J, H# F' m! x9 Q, c; C% l

( k% g& b& }( W& @1 S7 J0 U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    5 l( `' I: e  a5 w3 u% b6 N& L
  2. //连接redis服务器
    + q" {( m. `9 d' q) }9 G
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-20 00:32 , Processed in 0.167978 second(s), 21 queries .

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