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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php; B, s5 [; ~$ k- l- a) |
  2. $redis = new Redis();  
    6 L: W" a' k: P9 ^0 F
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    4 f' p$ z1 t. g  G. K) F
  4. $redis->auth('mypassword');//my redis password 6 K" r. S) t/ B
  5. $redis ->set( "test" , "Hello World");  
    3 P4 y5 e6 C! |" d% ^  s% @9 {
  6. echo $redis ->get( "test");
    ; {* r( T- J& A/ G* [# {: c
复制代码
php操作redis函数封装
  1. /**- D- V( e% m0 `
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    " [, g4 b2 k: ]
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    3 Q4 O1 T) i8 ^+ B0 g
  4. */
    . g1 H4 l- l# R
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    $ E/ F* _8 a6 o" J% n2 B  b
  6.     if(!$key||!$value) return false;6 Y+ O! _1 E3 S& {
  7.     $host = $host?$host:getenv('REDIS_HOST');
    % X- j$ \) I6 |: c% T
  8.     $port = $port?$port:getenv('REDIS_PORT');& u% n9 q; G6 U! i
  9.     $redis = new Redis();( k7 c4 B# \" H4 l
  10.     $redis->connect($host, $port);
    9 n7 q% @* g9 d6 F; ]
  11.     $value = is_array($value)?json_encode($value):$value;0 \( w/ `- t/ o. o. W0 V  v- ?7 v" |
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    & C& r/ I- a1 `6 P
  13. }9 P$ K1 Y" Q& f2 n: [0 N
  14. /**
    4 w8 x' ^6 U# l: Z; |8 J9 T" G; A5 `% }1 D
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi3 _% n2 [6 J1 r) J
  16. */. {- `: \( \' N5 Z, s
  17. function RedisGet($key,$host='',$port=''){
    4 \  U/ P, E& g
  18.     $redis = new Redis();2 ^: \3 k# I' l) O! q* l9 e
  19.     $host = $host?$host:getenv('REDIS_HOST');4 a7 f' N0 e. V. e5 K
  20.     $port = $port?$port:getenv('REDIS_PORT');4 y/ r! `1 p4 @3 {6 W* @0 c
  21.     $redis->connect($host, $port);) s* ?: b7 C$ y# Q
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);: P) k8 k& W7 N  s
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    1 |7 j/ o$ m* r1 T* B
  24. }
    ' L# e8 b# e" m1 n# a8 |4 [4 H! m* X
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
1 m! y8 D% M2 P9 N# [( b
  1. setex 带生存时间的写入值
    * A! c! ]9 L; ^- a" `) }7 l
  2. $redis->setex('key', 3600, 'value');
    * E/ a. U( y. T) m" I
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1/ D' T! V! V( I
  4. $redis->setnx('key', 'value');( u; _: R! f. x/ ^4 S9 X1 A( A& Q
  5. 返回已经删除key# H7 S; q, m) n7 o8 u
  6. $redis->delete('key1'); 成功返回1失败返回0
    6 N& a7 {; b: T$ `& T
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    2 y' I5 X3 I( q/ ^! Y
  8. 查询生存时间" W) S$ \5 F" Q& |/ O3 A5 G1 r* m
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)- W$ f9 Z! ^" _! V) c. Z/ }# l
  10. 同时给多个key赋值,同时设置key0和key1
    8 c' C. {$ w6 B0 ]+ ~& j9 B
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));% @; A; h# j) B0 x" p
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值$ {0 O6 b- M, Y, c8 f
  13. $redis->incr('key1');: R2 N/ r" F4 t# i
  14. $redis->incrBy('key1', 10);: S/ k" e; n. Q* v  p9 c" d
  15. 减法跟加法一样9 ], ^4 Q$ O5 T) h3 m
  16. $redis->decr("key1"); 减少1  K$ R' X1 ]7 @+ }9 [" R/ {
  17. $redis->decrBy("key1",5) 减少5; F, D; C6 {. b. E

  18. : p8 P1 p  O0 }0 F- W
  19. list相关操作,连表操作
    " L* N9 q( Q9 T0 d) h
  20. lPush% C! t) _" |' l. s$ C3 }
  21. $redis->lPush("list", "888");% I) z+ A4 l; ]/ Q$ R- ^
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    5 G: U) Y& l) ]0 s6 y
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    5 o8 L2 O- C+ B; X$ X
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    6 K2 R6 t1 s; c0 u
  25. lPushx/rPushx: Y9 O7 F5 A1 ?- _
  26. $redis->lPushx(key, value);
    , P% y* V+ a0 z/ b+ x6 V
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加0 I+ Z' j0 {, \0 J" f  O
  28. ) s8 s3 m" X" p8 W
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key2 a7 U% P, k$ `, p
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key, E( C! J3 r& [8 C' o
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    & A8 H8 D/ i. t+ h
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    ( q3 j& }9 M* g' ~9 C4 C& v
  33. sadd s1 zhangsan4 V- t% B, ^& b( s
  34. sadd s1 lisi! A6 H& V9 u# G- ?: A3 ~
  35. sadd s1 wangwu
    $ k+ P1 i% i+ z6 f" t2 ^
  36. sadd t1 yangxingyi
    2 Q* b/ F" x: e9 H# e8 R. x
  37. sadd t1 lilei6 \* r( j& b2 T1 L" n
  38. sadd t1 zhangsan
    2 G: Z, {4 y9 |8 J3 F0 v
  39. smembers s1 s1的所有集合内容5 m' X3 \1 c" ^9 Z7 [, i
  40. sdiff s1 t1 s1有的,t1没有的,差集6 E; c' \' N* \; N% N$ I
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ; d+ s0 i" p# T- j9 [& Z2 j1 Z  Z7 Z
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的1 ^- [7 |- B% P- G/ e3 f# O
  43. spop抽奖场景,返回集合里面随机的数% i4 p7 ^! B. G( T/ n( Y
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了# C! j: Q+ V  \4 [
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数3 p. o% q- T4 M) R: J
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    3 T) q& _- [: }  ]/ d' x1 D2 w
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    ! [& L. V8 J- z1 b1 @3 A: S
  48. $i = $redis->srandmember('s1');echo $i;5 m1 ?! x9 I* N2 e1 Z
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false/ l+ y( W1 X, r
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false' L9 Q- W, R* u& A/ w+ y9 V$ J

  51. " l! z! d3 c" n! c
  52. zadd key 2 value 有序集合4 C- s) u+ h) d2 \" ?( X. I
  53. zadd y1 1 zhangsan;
    3 @5 t4 S8 }( F& p# `
  54. zadd y1 3 lisi;* I- y8 y# ^* x! G- @
  55. zadd y1 2 wangwu;) ]$ k) f1 W7 P6 }
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    5 l6 `- O8 I1 L, {& |5 V
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    . i1 Q, A$ l+ z. ^
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键, G6 ?; A9 c! l7 |) X/ [( `
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先2 F. v2 b3 R% a
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的8 A: ~; X6 q  H" Y
  61. 无序就scard,有序就zcard,有z没有s0 S/ d" I1 q5 x* L$ [8 j$ f
  62. sInterStore  c8 ]/ S4 F3 l) D" d1 e0 l
  63. 求交集并将交集保存到output的集合
    / [  w& F  M' g9 f
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    # t0 K. w; q' ~+ m% [( k, E- }# Y& O

  65. 9 O; Y; b, ?) v/ F8 v- D4 |' ]
  66. Hash操作
    ' S: n3 f8 s( a9 |; `) s3 P
  67. hSet8 l) W1 a7 C4 J' F+ h
  68. $redis->hSet('h', 'key1', 'hello');
    # q( |& {- G  C3 M5 a
  69. 向名称为h的hash中添加元素key1—>hello
    % t* V( p- x) E, a

  70. - e- V- `( ]) Y" P: j) g
  71. hGet, N  k6 R7 l% M4 s& d- e
  72. $redis->hGet('h', 'key1');
    ( j& q, c) F& E- g
  73. 返回名称为h的hash中key1对应的value(hello)* N' c* u" Z- k/ u

  74. ) V  A% X5 c9 M' C/ ~7 f
  75. hLen
    ' R0 E$ L2 n) Q7 G
  76. $redis->hLen('h');
    # L$ _, Q2 Z# c( e
  77. 返回名称为h的hash中元素个数
    ) P6 p6 e! j/ B4 b) L

  78. 9 y6 |  ]- ]: Y
  79. hDel& D0 z2 Y( n1 a* F6 w
  80. $redis->hDel('h', 'key1');
      K! H: n0 `0 e) r* g1 {1 }; d
  81. 删除名称为h的hash中键为key1的域" O' s* X; U" K/ V/ b
  82. 4 e- w3 e4 k# {" |7 P) T( O
  83. hKeys0 y8 r2 n, Q  D
  84. $redis->hKeys('h');3 I( U- H; d! [. R5 L* S. D1 z
  85. 返回名称为key的hash中所有键) T" x1 n2 e' @1 @

  86. $ B6 s* p+ p3 X  U4 L$ Z* j
  87. hVals1 H" P' n5 k4 f
  88. $redis->hVals('h')5 q/ E4 w( \; v) B$ Y0 T6 _! y2 y
  89. 返回名称为h的hash中所有键对应的value3 w% L4 a$ y$ j

  90. 8 e' q$ u) F7 [/ w: F" x
  91. hGetAll( a, s; `9 [, h9 |% j
  92. $redis->hGetAll('h');  x& j2 K' x4 h* K
  93. 返回名称为h的hash中所有的键(field)及其对应的value/ u0 B" z2 V% M/ V
  94. + y: K. G% H. `5 l( `
  95. hExists
    ) T  T8 j8 l; Q' K, l
  96. $redis->hExists('h', 'a');
    1 }3 ]6 O, K  _, [8 v( B3 Y
  97. 名称为h的hash中是否存在键名字为a的域
    0 _, L# ]4 Q# l  F% _  _2 E

  98. : }* A/ [* w& X  ]! q, Q
  99. hIncrBy7 i* N) C3 J" W# y5 h
  100. $redis->hIncrBy('h', 'x', 2);) a; x6 L& E3 j* y7 e( u& @
  101. 将名称为h的hash中x的value增加2
    ' t1 Q2 }4 w  A$ m: n# @9 P
  102. ' I. ^% w; E$ `6 o6 z
  103. hMset) g, g! |  k$ d
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));" o% E, Y* p& O2 ~$ Z, J0 t; \
  105. 向名称为key的hash中批量添加元素) I; s! k% C7 G2 B9 k
  106. , I+ |8 P9 I# `/ R$ V; Y0 n7 v# @
  107. hMGet' a5 U% ~) F- F8 v* V( s- P/ X' z
  108. $redis->hmGet('h', array('field1', 'field2'));
    % E/ G. e  G2 z7 t* }  D
  109. 返回名称为h的hash中field1,field2对应的value
    " i8 D' y. e, f( N/ {" l. t
  110. ' A! ~, K) j1 J3 q) ]
  111. redis 操作相关
    & K6 \1 J( ^# S; I. u
  112. flushDB
    $ p; H; D. N6 a$ n( y. Y/ w+ u
  113. 清空当前数据库
    3 F' r# d* ^; k9 ^1 j$ M( D2 Q

  114. $ E, q3 Y  y! y! z2 w8 D* R
  115. flushAll, K7 J( T1 V; z3 g) m8 H7 I% ~5 ]0 _
  116. 清空所有数据库& P1 \+ x3 @  k# Q. }

  117. ) R( D" U6 i6 k
  118. randomKey
    5 W- q& e" E3 M( ]! h
  119. 随机返回key空间的一个key# d" j0 E: R, j* g
  120. $key = $redis->randomKey();
    2 F, n" U# e; g% n- j

  121. 6 u( z7 ^  o" k6 O8 x- R4 I
  122. select
    " t( A) q) B' V$ a; S+ A
  123. 选择一个数据库7 N0 v) @8 h; T. b8 M+ a/ ~
  124. move  l, Q) B4 H% T. \: Y  D, l2 N9 u
  125. 转移一个key到另外一个数据库
    2 \7 m5 u% p8 W: u4 W
  126. $redis->select(0); // switch to DB 09 w" k. s5 t5 c( b2 I
  127. $redis->set('x', '42'); // write 42 to x
    0 F6 z0 c9 J8 e+ c& y# A5 I2 W
  128. $redis->move('x', 1); // move to DB 1! q5 A4 @: \8 e% A2 b) P8 I" [
  129. $redis->select(1); // switch to DB 1
    1 y& T7 ?3 Z3 Q3 f# |% N, f; Z
  130. $redis->get('x'); // will return 42
    , [6 @; |' R6 L# l9 F3 o& t
  131. ! f$ w) r6 _  [- X) L$ o, P( L
  132. rename, renameKey# A: S, v2 n+ H# H* n
  133. 给key重命名4 z% Z$ o9 }  Z  n* N3 f- O6 U; S
  134. $redis->set('x', '42');
    ! @2 }6 }( g# ^9 Z* H2 u0 H3 k
  135. $redis->rename('x', 'y');
    5 ?+ v2 j- @5 O" x
  136. $redis->get('y'); // → 42
    ( I0 t" b( q* E' w: I$ ]
  137. $redis->get('x'); // → `FALSE`
    : x! y/ B- V0 @

  138. / |8 e. y9 F: J. n& Q
  139. renameNx
    $ U/ t4 S( p1 z7 q/ W/ N/ D; o
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    & u+ x, R- W4 W: D' g( X

  141. 1 X  n% _6 [! E+ h; t
  142. setTimeout, expire
    " ?& V. K) n/ h% _1 p; ]9 O
  143. 设定一个key的活动时间(s)
    ) g: m4 m( r6 k5 K1 Y) C, G' v
  144. $redis->setTimeout('x', 3);
    % o+ e9 \! ]0 F/ i" `' m

  145. " f; O: Z5 h6 |: ]; V/ {
  146. expireAt
    & C! [: C1 J% o9 D) z
  147. key存活到一个unix时间戳时间5 W$ H1 [1 V0 w. A. I% q3 t3 S
  148. $redis->expireAt('x', time() + 3);5 M0 J( ?$ s4 W5 }- z

  149. - _! y! S4 d, f  A
  150. keys, getKeys0 X; D4 T5 k5 b0 f+ n
  151. 返回满足给定pattern的所有key
    8 y* `% \+ ]! Q/ M: I! s4 y. A
  152. $keyWithUserPrefix = $redis->keys('user*');$ W# O/ L' U5 c+ B0 {" e! A

  153. * v9 _  E" q; P- D3 B; Z8 R8 j
  154. dbSize
    7 j) s# f4 T/ B7 s! z
  155. 查看现在数据库有多少key
    6 B. d! i- V+ U: Z( X9 n2 z
  156. $count = $redis->dbSize();
    8 D: Z! i; Y, A* J# x& p1 H- {" s

  157. # V* S& W- S8 R8 h
  158. auth
    ' t- G; G6 S1 T( c2 [
  159. 密码认证- d: P. d4 [# L/ F5 k1 I4 g' d7 `! J
  160. $redis->auth('foobared');
    : u! I% V7 l: y5 E! k# t+ j2 v

  161. 5 ?# y. E5 O2 I
  162. bgrewriteaof
    * c, Z5 h, s# }0 U3 \3 x: }
  163. 使用aof来进行数据库持久化  l4 Q. ]5 Z% }- i8 q
  164. $redis->bgrewriteaof();
    5 v* N4 l' H1 |
  165. 2 |/ X" z0 @/ e$ g5 v; k
  166. slaveof' [5 D: j, e( a/ |  V: c3 m+ v
  167. 选择从服务器
    + Y0 A$ x0 P2 O& E
  168. $redis->slaveof('10.0.1.7', 6379);0 ^% P* v1 Y& f$ G5 x! V8 z2 B1 Y
  169. 3 n4 b3 M9 o7 ?- _. O
  170. save! `! a% \4 m" ]/ _5 }
  171. 将数据同步保存到磁盘" {7 E6 i% ]) w7 ]: B; ?1 ^# ^

  172. ( H8 a  I& _7 W6 S( J0 u
  173. bgsave$ D- P* @' k9 y# D: m
  174. 将数据异步保存到磁盘
    " J3 C& v9 Q6 g/ K; I& h4 l
  175. $ K" E) P# O: I" ~# K5 O* C' L  d0 Z
  176. lastSave
    . _5 @3 p& d1 ^( _
  177. 返回上次成功将数据保存到磁盘的Unix时戳$ W( m5 ]1 Y0 u
  178. 3 Z# [. ]; U9 T3 v' R  C/ c
  179. info% o( l% g! b8 I" T7 g
  180. 返回redis的版本信息等详情
    : `6 o4 `9 i; x/ U  m2 C" Z
  181. 6 V9 B; F9 {4 h& n6 b# p& D# c3 {
  182. Redis::__construct构造函数
    $ A, q1 w: Q6 m) @+ }. j4 d
  183. $redis = new Redis();% V3 a, N0 ^6 v
  184. % r8 o# x* Y/ n2 E0 x, P
  185. connect, open 链接redis服务, s+ o" M; h( @* N, |0 t, P
  186. 参数4 @5 W0 ?/ `: R9 \9 @
  187. host: string,服务地址) T3 n: j( x; z% m
  188. port: int,端口号
    5 s" f! t, D* ~: d
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ! `, z* Y/ k/ G0 O
  190. 注: 在redis.conf中也有时间,默认为3002 Y0 ]7 v, p6 D3 F# @
  191. $ w+ v1 k2 @  h+ ~6 S# P
  192. pconnect, popen 不会主动关闭的链接
    & k' Z( V2 i5 s  r; `
  193. 参考上面9 G* D! R( b+ a: E

  194. 2 M- e4 i9 X6 Z6 Y4 [8 k  g9 F
  195. setOption 设置redis模式4 d' t6 r, r5 l9 b
  196. 5 o. I# Y; ]5 @, d3 H7 Y. E* }, R; p5 ?
  197. getOption 查看redis设置的模式1 S$ ^$ U# p+ `* M; t7 w

  198. + z3 ~; g$ J* o% V& n5 B2 u
  199. ping 查看连接状态0 w& l- k  M9 Y6 k5 H. R

  200. ' I& g, P  S: e7 u
  201. get 得到某个key的值(string值)
    " B1 t# {2 u5 d! F3 M5 K
  202. 如果该key不存在,return false
    % r) Z0 q6 `/ @$ J! l
  203. : H0 G7 _; r3 K% m& m8 p
  204. set 写入key 和 value(string值)
    1 S4 s8 E' \" a! j- k
  205. 如果写入成功,return ture
      O* J, e- g% ~! M4 `$ K& A

  206. $ k9 B& v3 f  a) h0 U  b8 T4 H8 a
  207. setex 带生存时间的写入值
    2 j5 g' [- _9 V2 F8 V  Y5 ]
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.1 D- n' Q* ?& _' K* \5 u, m
  209. ( x2 {; n1 N/ X+ X- _( d
  210. setnx 判断是否重复的,写入值, _& N/ H2 O* ?5 l. v5 X: H
  211. $redis->setnx('key', 'value');
    6 H$ D2 H4 a$ d
  212. $redis->setnx('key', 'value');
      s0 p& r% R8 t* E5 A& m; `

  213. 4 C1 C$ k' K# }4 d9 p# S
  214. delete  删除指定key的值
    - R- U) J8 N8 h
  215. 返回已经删除key的个数(长整数)
    1 V5 \3 _  q' t7 l$ R
  216. $redis->delete('key1', 'key2');! y$ J7 T: S: D; H
  217. $redis->delete(array('key3', 'key4', 'key5'));- p& o3 G0 S% a0 _* W* R0 {
  218. ( |# x1 l2 v' z$ P
  219. ttl
    & o6 }) _" X& P/ m$ V
  220. 得到一个key的生存时间' T6 v. `4 V% F# n: G) y
  221. ( m  B: R$ ~2 {! c' \' N7 ^
  222. persist
    5 B6 i9 h) F+ u  [0 ~6 C4 o
  223. 移除生存时间到期的key
    ) J- h# J! s0 x* A, t+ o1 O( A
  224. 如果key到期 true 如果不到期 false
    $ i- A0 E' ?  f9 O3 e% E" i. g# {
  225. # r' u# }+ W5 A# K  o+ E2 [( i3 _& ?& n
  226. mset (redis版本1.1以上才可以用)
    " r0 R* I6 h0 z$ l
  227. 同时给多个key赋值! Q6 B9 P4 i; J; {
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));0 T( I! m0 n& w* U; t

  229. - O+ p( o2 U& O* b

  230. % W) r0 \$ p, D2 O; L( Q
  231. # ]3 t9 h! c1 E  y, l4 Q
  232. multi, exec, discard/ ~6 l/ Q3 c8 C1 ~3 L6 U
  233. 进入或者退出事务模式5 n: c& |2 p) y
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    + A- o6 |( o4 o+ U7 x" o" W9 X
  235. Redis::MULTI:将多个操作当成一个事务执行
    " u1 G- R& [6 v" B) h2 Y, [
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    ( q' ?0 v( x3 D2 ]9 j6 f
  237. discard:删除一个事务
    4 U$ Q+ D3 M& }( V! @
  238. 返回值% G3 }+ I7 z7 k1 G
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。' ]: O% g( H  X4 M
  240. ) G- w0 t" ^9 z9 e0 \/ ~
  241. watch, unwatch (代码测试后,不能达到所说的效果), q- v' c/ f6 [  Q# N; Y8 K/ _% a% Y
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false). }3 v* m+ ]$ ^5 |7 i0 }
  243. unwatch  取消被这个程序监测的所有key
    0 s. ?8 W2 d- n5 E/ O9 x9 e- r
  244. 参数,一对key的列表
    ; P1 T9 |4 g6 u) u1 M& r) X
  245. $redis->watch('x');
    4 N  J8 }8 l# I) `

  246. ( z, A2 q# I2 |, T& c+ D  A
  247. $ret = $redis->multi() ->incr('x') ->exec();9 f0 ~- Z  `4 E5 g
  248. & d+ v7 f' ~* ]

  249. $ z  x$ p% J8 }0 B! d2 s, Y5 b0 M
  250. subscribe *% z/ U+ q' Y: ?6 `2 w1 v% G
  251. 方法回调。注意,该方法可能在未来里发生改变
    1 N2 t1 O3 A# M8 x
  252. ( y5 `. R! ?0 E- X6 X9 v- k( w
  253. publish *
    $ S& |9 L% R1 X8 |6 [2 m7 f  M6 B/ v
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变6 d6 P; A. `9 c# b% w

  255. 8 V4 k3 m/ o- c: |' E
  256. exists% `/ f5 h" Q* b2 Z" m. o! L
  257. 判断key是否存在。存在 true 不在 false4 s! g$ b. J) q9 P* b" e6 C

  258. / G) e% h5 |; p1 v( v& p
  259. incr, incrBy
    - _2 Q. d0 U9 G  T
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    . g6 H8 k; m# o3 M
  261. $redis->incr('key1');: b- q( B0 [) Y, U" k- P2 U
  262. $redis->incrBy('key1', 10);1 ~  r3 h( k  K, f/ h2 z8 C
  263. . |& M/ k/ u+ N7 M+ `6 b7 x1 m/ s3 H! B
  264. decr, decrBy
    " {( G& i7 E( [. b' _2 {5 ^8 @$ }
  265. 做减法,使用方法同incr
    : x: i9 v4 c8 ]

  266. 6 Q2 V% g3 i. g3 c) k$ f
  267. getMultiple
    ' l3 H( t0 K+ `8 D9 U
  268. 传参
    ; H8 Y: t+ K+ m- R+ ^
  269. 由key组成的数组
    5 Z/ Q6 i; x8 ^( o. C* w. ~) |7 e
  270. 返回参数
    / {7 Y/ T6 o9 r0 d. U3 y2 v% q9 B
  271. 如果key存在返回value,不存在返回false4 [' v1 z. W; `, t" E
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    0 b: C1 e- E; m9 p/ t8 \
  273. $redis->lRem('key1', 'A', 2);! Y/ ~# C/ q3 t. ]
  274. $redis->lRange('key1', 0, -1);
    , e+ _0 L. C9 h9 c

  275. : v- A# [* F6 }4 C3 H, b4 R
  276. list相关操作
    8 D/ U" d; C3 A% ~
  277. lPush
    # N% \+ d* y( T3 @/ G- y. Z
  278. $redis->lPush(key, value);
    / w3 f2 G+ ~) L3 i9 i% c/ W# t2 i
  279. 在名称为key的list左边(头)添加一个值为value的 元素3 m  ]4 y4 D* f" T* [

  280. , j5 t3 H1 p* @. `' x: B+ w# d& A
  281. rPush
    + J8 r: d7 e  u3 z' H, k
  282. $redis->rPush(key, value);+ _9 S: T2 N. E( w; N5 f9 Q% a
  283. 在名称为key的list右边(尾)添加一个值为value的 元素, s# O+ J6 r4 j0 a4 r' x
  284. ' Z9 }5 B/ o8 u" ?- G
  285. lPushx/rPushx
    2 e$ h: n2 l; f8 g8 Y8 V
  286. $redis->lPushx(key, value);& ^/ q! ?2 Z6 L3 _( s4 e2 d
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    $ k0 C+ E$ q- p4 x- Z

  288. , k, R* M, A; i0 E
  289. lPop/rPop
    1 p7 A9 V( j7 a3 G/ a* i* E; f
  290. $redis->lPop('key');
    1 Z& Z9 T! s8 ]9 A) w: Q* D4 }
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素7 p0 Y. J7 |, f( K* D9 S
  292. 8 Y" n1 [9 J" j( t
  293. blPop/brPop
    4 r4 b0 A5 P- k% L9 T; U
  294. $redis->blPop('key1', 'key2', 10);
    , m- `4 C* x/ ~, K  d
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    9 a2 l- P& E. c  w2 z# O

  296. + `) J# ]3 @% o) d' C4 c$ P4 y- d4 l+ R
  297. lSize
    % }  V! M: a! P' z8 H) J
  298. $redis->lSize('key');. o7 V! B8 K0 n, K+ M
  299. 返回名称为key的list有多少个元素& Q2 e& u$ Q& n- j" D; s
  300. ( Y% M8 x  r0 A; U/ U
  301. lIndex, lGet
    / h' \5 z- A9 {6 G( B
  302. $redis->lGet('key', 0);
    , E9 i0 N2 P. M$ d# |# ~2 n
  303. 返回名称为key的list中index位置的元素
    * `7 i3 x; a% F% k& Z1 S* t3 l5 p
  304. ( a( O( G( U6 Y% c/ X+ N
  305. lSet; Z$ f5 H, b. O) \
  306. $redis->lSet('key', 0, 'X');
    : T* D  m/ Y# m% f
  307. 给名称为key的list中index位置的元素赋值为value) p3 w& m4 T3 w; P# R" E
  308.   {( v- ~  x( s& \+ H; e$ A. G0 w$ O
  309. lRange, lGetRange
    2 a5 g9 R. T: r& h/ z
  310. $redis->lRange('key1', 0, -1);' U, @: |7 f/ O  @9 H" K" v2 u& G
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)3 s& Q$ p3 S% k7 f
  312. + L; ^: Z7 e8 o( G2 n/ W2 E
  313. lTrim, listTrim
    ) x, Y' e, H& ?; {2 i8 d$ f( z! `. n* e
  314. $redis->lTrim('key', start, end);/ F8 {1 P/ ~( ~1 F  b
  315. 截取名称为key的list,保留start至end之间的元素
    6 N4 F2 \2 z+ f/ \$ }0 x5 C& A
  316. , O' R7 ]% l1 @. V  Y) O
  317. lRem, lRemove
    ; x$ D" i% ~' o2 p/ K
  318. $redis->lRem('key', 'A', 2);
      d& {( A6 d; X  Z
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    & j$ c9 U5 a' T" D! w
  320. 0 g) E; P3 d5 `: Y' h( `+ s) R  F
  321. lInsert* A/ J+ i' G9 R7 ?
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    8 g* E5 r/ d; U5 ~" f& W7 p
  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');# H( q  x9 r# q% _- M+ B* n
  324. $redis->lRange('key1', 0, -1);
    ; i. ~5 G( {9 T- C
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    6 H* g* B  T4 |2 t# c0 V" C
  326. $redis->lRange('key1', 0, -1);
    9 `. F  U# g3 D. x% X
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    1 C1 O1 _( n8 D6 W0 l0 S
  328. 1 U# Z, n" I: ^
  329. rpoplpush
    ' F: e/ i; D$ w/ ?) Z
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部. u/ o) w, Y% {$ B  A) u
  331. $redis->delete('x', 'y');
    5 K9 q9 O$ {6 n
  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'));
    ' y2 m. h& U. y8 O
  333. var_dump($redis->lRange('x', 0, -1));
    1 K0 C6 R$ N7 S. e6 d# c
  334. var_dump($redis->lRange('y', 0, -1));
    5 ]% l' t  K5 K; J+ s
  335. - Y7 \% L+ x1 f, t; ^$ q
  336. string(3) "abc"
    2 {9 a3 q5 U& S' p$ X1 }
  337. array(1) { [0]=> string(3) "def" } : n: M/ T* K# Y7 V! a% P
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }" O- K, `& i9 C5 R$ E+ D

  339. 2 l) S: E' a; z) F6 y/ @, {
  340. SET操作相关5 L; X; a- y7 U; L
  341. sAdd" U9 w6 B" G7 \, ]+ h' s4 _
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false  q2 _; \/ `) r3 p4 Z
  343. $redis->sAdd(key , value);
    9 `$ v8 D' A5 `" @( r9 \9 G* z) s

  344. 1 V8 z' K* j& i4 ^
  345. sRem, sRemove
      R4 k+ u& I9 l' Z6 y
  346. 删除名称为key的set中的元素value
    " I; ]- c3 {: q7 O( x1 ]4 M
  347. $redis->sAdd('key1' , 'set1');- [5 C! X5 o6 G% b3 e* l" p
  348. $redis->sAdd('key1' , 'set2');% L# ^8 Z2 j: Q/ s* r
  349. $redis->sAdd('key1' , 'set3');* n( o' N' V$ Z  A, Y' B
  350. $redis->sRem('key1', 'set2');1 I2 f. F1 a7 H/ D

  351. 1 |! [& K0 y* ?7 {. [* O  o. Y7 i$ d
  352. sMove
    3 C; t9 ^5 j$ _; ^. a' S4 p
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合. ~- E$ E; X& \: k- h8 B/ n
  354. $redis->sMove(seckey, dstkey, value);
    # l5 \& R& l, H+ k
  355. 7 \, s' x0 ?3 I2 @# S
  356. sIsMember, sContains
    & t2 A4 T- v7 T5 A0 v. m
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    ! F. q2 ]5 k* P( D9 O8 T0 G
  358. $redis->sIsMember(key, value);- s6 n3 K3 C; s  v
  359. 9 K. c+ G6 P# U" N# m" y4 J3 t
  360. sCard, sSize
    , j/ G; q0 |0 c3 M4 v; d3 W" E3 o
  361. 返回名称为key的set的元素个数
    0 q3 L3 n5 R$ u" d( y9 X. o

  362. : k" T: A5 [7 R4 n
  363. sPop
    9 |* r, v0 e( j& A6 G7 M* W9 d$ a
  364. 随机返回并删除名称为key的set中一个元素  ?. m4 j# u# n
  365. ' h" ?/ r) H6 h& D
  366. sRandMember
    # W1 n( ^; q, ]1 _+ L( p3 W, n
  367. 随机返回名称为key的set中一个元素,不删除
    7 J# h  j) B; N8 Z: ?' Q  J/ l6 J

  368. & `9 n& e) K1 F7 |$ J
  369. sInter
    ! [- v6 m6 U/ J7 f% R( G8 P
  370. 求交集4 V0 t% g( w9 }7 d
  371. # Q9 y! \8 _* o* b
  372. sInterStore& \$ r9 {# V3 c6 R9 A  L% h" W# Z
  373. 求交集并将交集保存到output的集合* z) u$ S9 ^( b' i
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')4 Z; T) |% t+ [* G
  375. 8 h; h& h# m  l; O2 ?
  376. sUnion1 D4 g7 h% M! x4 y; d/ K5 h% ~
  377. 求并集
    + ~6 [( `/ B" i! L
  378. $redis->sUnion('s0', 's1', 's2');
    9 N3 X) q2 f3 D
  379. s0,s1,s2 同时求并集- e) I4 E) y! G0 A. Z9 e. X
  380. ! O& ~, @8 m# E8 \
  381. sUnionStore7 a  g& a& S& O2 N+ M& ~1 S
  382. 求并集并将并集保存到output的集合
    * R9 J" t- |) W0 W: O2 s4 n$ k7 |2 n
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    . I' Q% j+ a8 `/ s( O

  384. 3 Q( ]1 U8 H7 e, }+ G: a
  385. sDiff. `# x) t9 ^, P( ^" C7 m% c
  386. 求差集
    3 m4 |1 M$ l; x$ F& }# f' x$ ^
  387. , r! i0 t0 u0 v7 ?5 R
  388. sDiffStore2 ?! _# C- R5 }/ v
  389. 求差集并将差集保存到output的集合  q8 K  H3 h3 q/ W

  390. " R/ Q; f4 z; ]
  391. sMembers, sGetMembers
    : T# ]0 a5 p) t
  392. 返回名称为key的set的所有元素; Q( p7 l# ]  z' d

  393. 2 A: g) ?+ v7 d% _! M4 S+ N3 |0 N/ p
  394. sort
    ! P' b7 y# R$ L4 f) T$ L
  395. 排序,分页等
    + e. w5 s8 u0 y+ P$ h8 B; `
  396. 参数+ f8 U2 T) v% G3 ~8 [
  397. 'by' => 'some_pattern_*',( d. ]! t+ g8 O2 ~0 P
  398. 'limit' => array(0, 1),' V2 }. u6 z5 B1 K; F  M" t: F
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    7 O: ^/ X, P* @4 v3 L- A
  400. 'sort' => 'asc' or 'desc',
    & t. L- L0 U- O# v+ q8 D9 x
  401. 'alpha' => TRUE,
    8 l+ r/ u- C8 {) _0 k  g/ K8 S
  402. 'store' => 'external-key'! _. W; b2 V. b8 I
  403. 例子
    : a0 v# K( T. U' ^: W
  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 C9 n9 u: ]6 a
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    - u& P4 W) _) j! ?7 V
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,14 N2 Y  e' Y% t% t) k& @- Z
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    8 r. @2 ]8 `* {  e1 T8 j
  408. : w) d+ a  b. Q0 C0 o$ E
  409. string命令4 D- M- a% V, i4 h# q  i
  410. getSet
    * c$ m" a# b- b
  411. 返回原来key中的值,并将value写入key
    , u5 m/ c5 c0 h) g, b' n9 X& G  S
  412. $redis->set('x', '42');
    ! m: z% M9 v+ |( F: L. @
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    . i  H( G# c8 I% m; M. B
  414. $newValue = $redis->get('x')' // return 'lol'. b" @* k5 }( L2 H
  415. ) ?' H; d3 J  e& y( {% ~3 Q8 t1 n! x
  416. append2 m* D5 l8 C5 ]
  417. string,名称为key的string的值在后面加上value
    : G% w  S/ g. p. e: m
  418. $redis->set('key', 'value1');
      s5 ?7 t5 ~. {
  419. $redis->append('key', 'value2');' H/ ]  g: v, `4 r' ]% o
  420. $redis->get('key');; O6 w# v# A% ?) w- S" X8 {

  421. # T( x* |5 \9 p% c4 r( z, E1 k# ]
  422. getRange (方法不存在)
    , f) _. r9 J% B2 T0 f
  423. 返回名称为key的string中start至end之间的字符
    8 H) d$ ]0 A7 u' X. I. H2 o( r0 d
  424. $redis->set('key', 'string value');
    4 ~0 O1 p) _8 L/ H! t
  425. $redis->getRange('key', 0, 5);
    6 U( I$ Z; f2 q5 n+ Y, u8 O6 t! g' V
  426. $redis->getRange('key', -5, -1);& T% h$ A2 e8 A, _: k! ]
  427. . b! V6 ^3 l  N$ p( t* \0 |
  428. setRange (方法不存在)
    ' m1 W8 U8 v; }5 M: Z8 G/ j
  429. 改变key的string中start至end之间的字符为value1 i1 w2 D( H# r+ t6 S& G
  430. $redis->set('key', 'Hello world');
      O1 K) S) U( D3 }1 Y' u- N
  431. $redis->setRange('key', 6, "redis");
    : R- t$ N1 }" z. g
  432. $redis->get('key');3 o$ e$ [7 z; N. X7 u( h1 b! v

  433. / y- l8 G2 V% ?  k
  434. strlen
    + t4 E/ m, j+ U. r
  435. 得到key的string的长度
    8 N% Q5 S* S4 J  T( b$ ~2 j
  436. $redis->strlen('key');+ M3 W, F7 J5 d, y# y8 ^2 m+ K

  437. 4 F7 K& Q! H4 Y+ ?
  438. getBit/setBit
    * V4 Y3 s0 c9 F$ n
  439. 返回2进制信息( v" {* |" l4 s* F

  440. . ^2 n* {4 T  k) G* Q
  441. zset(sorted set)操作相关
    1 K4 s4 Q9 |& r+ H. j; T8 V
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。* c+ b, B( f2 U' Y' C3 Q) B& R
  443. $redis->zAdd('key', 1, 'val1');
    " U& x8 f7 y7 j
  444. $redis->zAdd('key', 0, 'val0');6 ~% Z9 T( L$ T: a3 H1 ]
  445. $redis->zAdd('key', 5, 'val5');
    7 H' r$ S( Q* ^- \
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)2 t- A8 ?. [6 u& W. O

  447. 7 P/ \% R# E0 Z
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素& T+ I+ f- D2 F, b
  449. $redis->zAdd('key1', 0, 'val0');
    + D; H+ J# i1 A/ @
  450. $redis->zAdd('key1', 2, 'val2');
    + ^) n8 b( v' P# A% j
  451. $redis->zAdd('key1', 10, 'val10');4 \" M1 Z" \2 ^3 g3 Q' z2 J
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);; ~$ @1 A, z# Y+ h
  453. ( w. a: _/ C$ f/ G# M# z+ e' a
  454. zDelete, zRem
    . h+ \5 B  O1 c" @& `3 |
  455. zRem(key, member) :删除名称为key的zset中的元素member+ ~) X: `7 q1 \0 U
  456. $redis->zAdd('key', 0, 'val0');1 \0 Z( Q( |3 T, U" v
  457. $redis->zAdd('key', 2, 'val2');
      w9 L- r. M/ e
  458. $redis->zAdd('key', 10, 'val10');% ?* W, E) t2 I- Z: x) w* l- f7 L7 _
  459. $redis->zDelete('key', 'val2');  j$ _' b8 ]" L- ]3 ^
  460. $redis->zRange('key', 0, -1);
    % }& c+ e0 E" b8 e2 t& a$ K
  461. 2 U8 k- l5 G+ {' b6 e/ j( M
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    6 P. q; H: k4 k- d1 E
  463. $redis->zAdd('key', 0, 'val0');
    " J1 |' d+ M  ]2 x9 A  I
  464. $redis->zAdd('key', 2, 'val2');
    $ c: `, p/ y2 {* X" I+ I
  465. $redis->zAdd('key', 10, 'val10');
    % h; x& v4 v) I3 z: }/ u% s1 A6 b
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);" i) r9 o  u# N$ }
  467. 5 b( z' l+ Z: i  }6 k' z
  468. zRangeByScore, zRevRangeByScore
    + B0 U6 Q- k8 G3 H
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));: T# w! k' t0 c8 s; W3 H
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    , J# x) e/ B: V" A7 q' K! w) l- y: w
  471. + y! E" O$ T1 v/ k: }1 ?
  472. zCount' r$ l) ?$ Z3 D8 u
  473. $redis->zCount(key, star, end);5 F8 R- @7 w2 n4 {5 K
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    ( d8 k9 N) V: v: b+ k' H; X! \: q

  475. 8 j; Q+ \) L* q
  476. zRemRangeByScore, zDeleteRangeByScore
    7 k3 x% y! e1 {- F
  477. $redis->zRemRangeByScore('key', star, end);( @1 {" X, `0 n3 M' [
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    + b( Y/ V6 x) O0 N! G5 T

  479. 9 Y2 W$ r1 v0 \  Y; V0 K8 m( }
  480. zSize, zCard( c) A7 G3 _+ z5 e% N8 l
  481. 返回名称为key的zset的所有元素的个数/ `) ~: ~4 u- {
  482. ' f( x' ~0 z' o7 p
  483. zScore: {& h0 e+ c2 o, Y- e
  484. $redis->zScore(key, val2);6 n, H1 N+ T& T9 m1 G/ F& Q
  485. 返回名称为key的zset中元素val2的score
    ! ]# d- P" B  @5 g; F

  486. . g" z; ~' ~4 y+ ]# R
  487. zRank, zRevRank6 P+ J) v- l5 s1 G) k# T
  488. $redis->zRevRank(key, val);
    ; N; r9 K) S4 E9 q3 `" t# X
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    ; y; ]  A% P. N. {# P8 T) a4 n
  490. * k4 h( N3 b! x" u5 l' {
  491. zIncrBy
    ; G# \1 g3 \+ U5 i$ B  N
  492. $redis->zIncrBy('key', increment, 'member');' z4 O& z- k- w
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    8 u$ G- W+ G5 k0 F# \

  494. % W# U1 a- g2 b# E& K
  495. zUnion/zInter  {# i" b" e- c1 x
  496. 参数
    . ]) _. W3 M- o2 O- z
  497. keyOutput( x1 Q# i- `/ @9 A$ ~
  498. arrayZSetKeys7 i/ H, E4 f) o5 F" S$ T( Y) [+ L
  499. arrayWeights
    2 A2 O3 S& |! T6 |- _6 [
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.0 Z. ^9 e; S9 \, c0 }0 Y
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    / }* M; e: M. ?  ^* p+ E' q$ n
复制代码
, r% X5 s# c6 n3 p, {- o' F# M
: [1 Z# g9 ]  f: ~

( _* p( A6 T7 d& C4 B. s
* Q  W7 W0 j; s; p5 b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    $ g- |1 i0 _: E/ h7 g1 N/ ~- S
  2. //连接redis服务器
    1 s' x% ^2 f+ h1 u7 ^
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-20 04:37 , Processed in 0.094346 second(s), 19 queries .

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