cncml手绘网

标题: php操作redis大全 [打印本页]

作者: admin    时间: 2019-11-26 16:58
标题: php操作redis大全
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php/ n8 C$ d% n4 Q. q( B8 k
  2. $redis = new Redis();  " e3 V; {) t) m
  3. $redis->connect('127.0.0.1', 6379);//serverip port* m9 i+ e/ _% _9 H; r# N
  4. $redis->auth('mypassword');//my redis password
    ( A1 R1 v6 E9 P$ i
  5. $redis ->set( "test" , "Hello World");  
    / A1 T$ m- {2 ]: q) L2 l+ b
  6. echo $redis ->get( "test");
    ) z- r6 z3 D' J* Y
复制代码
php操作redis函数封装
  1. /**$ s8 ~& x" S8 t$ m% {. m; A
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数* A6 I4 }5 X' ]" a/ v
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    4 S% @- D& p7 o0 R) s7 u
  4. */" N/ i8 I7 c: Z/ j, H$ ^2 ^  ?* ~' h
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){8 l; M8 ]  Q' V
  6.     if(!$key||!$value) return false;% d* U5 i$ r1 |# {
  7.     $host = $host?$host:getenv('REDIS_HOST');( y9 g, Y  c  M; z' W
  8.     $port = $port?$port:getenv('REDIS_PORT');
    & v3 ?! S% @; m) Z# v, d
  9.     $redis = new Redis();! {# y! `6 W( R0 E
  10.     $redis->connect($host, $port);
    6 p5 _' p0 `1 r) s: n: L( L5 [9 h5 g
  11.     $value = is_array($value)?json_encode($value):$value;/ R! v2 [# S/ L! I0 T7 C
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);5 I# X/ b, q4 C7 N* i! C$ v# \
  13. }
    . o! ^0 ^5 P8 e3 t
  14. /**" E4 A/ F  [, B0 @
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    2 P2 _, L2 f3 u' U9 j! R9 i
  16. */% B( w' r9 E' b- X
  17. function RedisGet($key,$host='',$port=''){
    2 |0 d- n, H/ F4 H+ m5 k
  18.     $redis = new Redis();$ z3 g! |5 J+ h8 D4 I
  19.     $host = $host?$host:getenv('REDIS_HOST');$ p- ]6 N0 b9 z) {/ r2 I7 M) ^3 d
  20.     $port = $port?$port:getenv('REDIS_PORT');2 ~( a8 ]7 W* C3 ~5 j) }
  21.     $redis->connect($host, $port);
      U  G$ o1 [( k% \, U3 s- f3 ]
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);  M* X* w( p) q  ~3 S3 ~' K
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);# t3 ?) D5 V8 t  R: e
  24. }9 ^1 i1 P6 [' Q: o
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
% Y& ^1 N, S! v* j. v' I$ z0 t) \) b, G) c
  1. setex 带生存时间的写入值8 @, ~- N  C3 _! [* p
  2. $redis->setex('key', 3600, 'value');
    9 b: \. W5 I$ ^5 H$ z; e2 T
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回12 P: [9 P* E3 N% V! o3 S7 X
  4. $redis->setnx('key', 'value');
    4 o2 h; H2 [8 d  u
  5. 返回已经删除key
    8 R! Y) K; c) H) R" i" F8 E8 Z
  6. $redis->delete('key1'); 成功返回1失败返回0
    : @0 V5 H/ v9 Z: ^0 A3 l& ~) _9 O
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回04 i7 r! K8 Q: B$ G
  8. 查询生存时间
    $ }. x4 z4 \# o* x9 I0 ]+ v
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)0 z+ n8 s3 g7 N) k7 ^; A
  10. 同时给多个key赋值,同时设置key0和key1
    8 w, T) j' ~  H1 j; J: a+ c
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));0 U8 q  d/ p% j0 L3 }
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    $ B4 i1 w: ]+ T; n# G( n  ?" b
  13. $redis->incr('key1');
    . `* R& R) r6 Y; j
  14. $redis->incrBy('key1', 10);
    - h% t1 K/ H3 D/ ]( A* o
  15. 减法跟加法一样
    ' ]5 }) h  ?% N( X+ i) j( E2 [
  16. $redis->decr("key1"); 减少1
    1 J3 X7 n1 ~" _. L# X. |
  17. $redis->decrBy("key1",5) 减少5
    * R+ U2 }( l0 W$ B& b$ A

  18. 2 w6 f& |# Q7 Q, A
  19. list相关操作,连表操作
    , d  G* q! w# R$ ~
  20. lPush
      |- C% f. B8 b
  21. $redis->lPush("list", "888");& A' L/ a9 ~4 A! G9 W; Q1 H
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数& g& }- s% ~7 U$ a. X' e/ p; u
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式% G5 ?2 R* j) P0 j
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素/ O5 t$ `" G/ r& y, N" N
  25. lPushx/rPushx' {0 e8 V4 [1 w9 O/ n" z
  26. $redis->lPushx(key, value);8 ^# l  L! n# u) K4 [+ x* Z
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ( A& N  M. l! ^" R2 A/ N. J7 a; B

  28. # h+ _$ R, O! A) `$ m& A
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key6 z  E. z- f& G. B$ H# m0 B2 d" E
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key8 |& S  d$ |# W, K* v
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    ; T; p$ @2 X# r
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    8 R6 e" ?+ g, v. f
  33. sadd s1 zhangsan) S9 M: O+ R4 F6 _5 k( }! t! H
  34. sadd s1 lisi" E  E( b9 W* L6 J7 i
  35. sadd s1 wangwu
    7 n2 T  O$ d0 Y& r( x4 h
  36. sadd t1 yangxingyi; G2 j. r7 a, U4 |. T
  37. sadd t1 lilei
    ! i: B4 w4 _( Y, W! y, b
  38. sadd t1 zhangsan9 g, Z3 w7 }) a8 O* ?2 e
  39. smembers s1 s1的所有集合内容
    ! D( S. V& B4 o; X# T' a) K# _
  40. sdiff s1 t1 s1有的,t1没有的,差集2 M% k" L6 k1 N/ l4 |& \
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式) }$ ^" D- q, v
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的" o- K3 z/ G3 b9 g0 y2 Q/ U' G, u
  43. spop抽奖场景,返回集合里面随机的数
    $ T  t* L% G/ r& j& L8 r
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了8 ~/ U9 a4 q" y6 }
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数- t* L* `+ E" V$ a6 u( L! Z& o5 ?% Y
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    * c, c7 c6 a1 S8 S" L  }+ f) u
  47. 随机返回集合里面的一个元素,但不删除,重复中奖$ }5 T' Q; Z4 Q8 i6 d$ c2 r
  48. $i = $redis->srandmember('s1');echo $i;& |: \. r+ ^5 i; B# f- b0 f! V9 X$ D
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false3 _# S3 ]; F/ }
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false, _! w. u" \% u: @! v3 P
  51. # j$ a; N! y" r% k! @9 [/ n* h3 E( e
  52. zadd key 2 value 有序集合
    - l: ^( i$ e3 Y! t% C
  53. zadd y1 1 zhangsan;1 L4 D) [) C$ W; m) }3 i; y; L
  54. zadd y1 3 lisi;
    8 U5 K- k. R& E, o* u7 t! |9 c
  55. zadd y1 2 wangwu;1 {% Z& f6 m" P
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi+ E) Y5 `0 {6 n1 ?9 z
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    - d5 w2 `- k$ S5 m5 g
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    5 q1 I8 ~% ?, P2 U3 T+ R0 {
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    , M' k' X% a' F- h6 m$ m1 r0 H
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    $ K0 F( n- i4 l& [
  61. 无序就scard,有序就zcard,有z没有s7 C2 ~# |, A! P& t" B8 C, k% l! u
  62. sInterStore4 D6 S7 g# z, k- ~# i
  63. 求交集并将交集保存到output的集合7 h" ]8 o5 c) L' h  s+ a$ j
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')' W( @3 m9 o- }" Z6 Y
  65. 3 f  V( |# L' y- _5 }& u- G
  66. Hash操作6 `' w# v# E) i. k
  67. hSet
    8 `! y$ x4 v  t0 w
  68. $redis->hSet('h', 'key1', 'hello');
    3 s9 F9 B2 n/ J2 E+ e
  69. 向名称为h的hash中添加元素key1—>hello
    . g+ {  P( H: Z1 v/ a+ h1 L( g

  70. % A& g7 j/ K& R: Z# E7 ^7 ?2 X
  71. hGet
    ' x! r$ o0 k; `. L
  72. $redis->hGet('h', 'key1');
    * m& K. X7 ~& @) ?2 y* e& ]  m
  73. 返回名称为h的hash中key1对应的value(hello)
    0 n2 k* ]- l0 d5 T. s+ v

  74. : P4 P9 j* S$ m; `
  75. hLen; b  v) Q. ^4 d4 W
  76. $redis->hLen('h');5 M* B: m% ~6 x" O" J. D' r
  77. 返回名称为h的hash中元素个数+ E3 d. L# E" [; z2 O
  78. $ d- {) W8 D) p! Y- {. y; ]' M8 k
  79. hDel
    + g* |# q. C1 w( \- `% O( w! f
  80. $redis->hDel('h', 'key1');
    % W  N7 `0 I( s2 R/ y( ?
  81. 删除名称为h的hash中键为key1的域
      a4 @& h" |0 W' q3 @$ J: p9 k
  82. , ]1 h& R% R  h
  83. hKeys$ P1 J/ q6 {1 f" D# _9 {9 U  m
  84. $redis->hKeys('h');
    8 N4 |! E$ \0 w
  85. 返回名称为key的hash中所有键/ ^  m; U" T! S- o- E
  86. 6 C) \7 t. r4 N; j! I- L; L
  87. hVals
    1 v) \: J) R4 `- \! I
  88. $redis->hVals('h')
    / P! f& S1 S6 _5 O0 X; e/ H( X2 Q
  89. 返回名称为h的hash中所有键对应的value' @3 Y$ w4 ]* c' i2 l7 P7 N0 ~3 n
  90. 3 p" p' \3 Z; ~
  91. hGetAll
    & E! D) W3 j4 N; b3 g& N
  92. $redis->hGetAll('h');
    # j9 }- l/ y5 U# `. R  K6 f( N6 y6 H' x
  93. 返回名称为h的hash中所有的键(field)及其对应的value" }' H: m7 y  v+ K7 M' D3 @

  94. 9 [. i' h) p# ?9 o6 A
  95. hExists
    ) C4 `2 f0 O6 n/ J$ m% E2 _- w
  96. $redis->hExists('h', 'a');
    + B% G# q2 M/ A, I& D8 ^
  97. 名称为h的hash中是否存在键名字为a的域
      v" h' T7 N, d5 B9 ^

  98. ' Q; I# `7 A* }0 J
  99. hIncrBy& G6 Q* _1 ~& `
  100. $redis->hIncrBy('h', 'x', 2);' n% |7 ]6 h  y$ S+ b" ]; Z
  101. 将名称为h的hash中x的value增加2
    ' j7 O+ {5 J; W
  102. 3 W. D( p. `. S' F: D. G9 N
  103. hMset
    ' E) z$ {( b9 b0 d8 h2 h6 }- ~
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    9 f( m( Q5 v0 S0 @# `  v
  105. 向名称为key的hash中批量添加元素, I4 X' h/ Q9 E  m! m
  106. , l$ `9 Q; {4 N* f1 G6 j
  107. hMGet9 N5 _' I- j2 E7 z3 [2 N9 [
  108. $redis->hmGet('h', array('field1', 'field2'));
    / T% A3 b0 D3 e1 b. ^" e- G: {; w5 y
  109. 返回名称为h的hash中field1,field2对应的value6 d0 @7 J( x+ t2 ^* g
  110.   E2 A' T2 S0 x/ e6 @2 B
  111. redis 操作相关
    ! [8 L" {3 f1 l
  112. flushDB# w3 _; u5 z# `' _3 n; `
  113. 清空当前数据库
    " `7 @# o' U! ~: G; F/ J+ s

  114. " i# j+ P9 j- q' y5 A) k0 e
  115. flushAll/ `- D! Q3 A) h# C7 M8 e8 V
  116. 清空所有数据库
    + q) t% u# M8 X
  117. 5 Z9 m, L# U2 Q9 x+ k* l0 n
  118. randomKey
    7 J" ?5 M& ]3 e: D  r8 N/ ~; ?
  119. 随机返回key空间的一个key! J" E4 F  p9 N2 z
  120. $key = $redis->randomKey();6 z7 E# x$ f! `4 _7 S
  121. 7 W( H4 F) x  w
  122. select
    $ S! \( N6 W# N. E
  123. 选择一个数据库
    ! Z9 K2 ^  G2 f6 o
  124. move6 _( }9 b( @; b) G: H  x' K2 |
  125. 转移一个key到另外一个数据库! r0 h. h5 I# ^
  126. $redis->select(0); // switch to DB 0
    ( D2 f7 z/ C, ~4 d$ y6 G7 X
  127. $redis->set('x', '42'); // write 42 to x
    ! F/ y( L8 m! d9 r, o3 ~5 k5 P
  128. $redis->move('x', 1); // move to DB 1
    3 y5 B/ g- l7 ^
  129. $redis->select(1); // switch to DB 1
    8 }3 m0 k; h* p- w. Z8 d
  130. $redis->get('x'); // will return 42+ h; V% j0 x- G0 {

  131. & Z4 i" m) @$ r, {# {
  132. rename, renameKey) `- x' h/ P, U
  133. 给key重命名/ c! j2 n) |% k, ~0 C
  134. $redis->set('x', '42');
    ( a* U5 j: k1 ^9 V
  135. $redis->rename('x', 'y');
    9 p  b9 x+ Q6 b3 P+ B0 ]9 L
  136. $redis->get('y'); // → 42
    1 k( Y- p( v1 `7 c4 H& Y
  137. $redis->get('x'); // → `FALSE`4 ^7 D$ j( d2 f
  138. $ y5 V% p+ l, w* c: N
  139. renameNx
    & y7 a' u! g8 L1 _: H) x8 y) c) m
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功6 [- Z  Z* W+ b  m
  141. , F8 v  p( F0 @# z- G) L) w8 z- a
  142. setTimeout, expire
    1 u9 A- [5 i( j, ^" R. P" a: N# S
  143. 设定一个key的活动时间(s). J0 a: R  l" ]% u$ L, [' c! G
  144. $redis->setTimeout('x', 3);. p/ W- `: u+ Q! }  T! [2 c

  145. ( n# L: F7 _& S2 W6 n1 J
  146. expireAt
    9 j% N. e. e7 r1 y1 O7 g' u: x5 p
  147. key存活到一个unix时间戳时间
    6 m* h( |, I, j. Q% E' z
  148. $redis->expireAt('x', time() + 3);
    * |& B0 w" P- [  I" T

  149. 9 i  T5 H6 l& T6 g
  150. keys, getKeys
    ! \5 a% k# T0 ~+ W; Q
  151. 返回满足给定pattern的所有key' D- J. [1 w0 o- X' z3 Y. x& m
  152. $keyWithUserPrefix = $redis->keys('user*');
    * c5 j% V, O6 [' ?2 F) s
  153. 7 l0 o& c! }+ Y. q4 s0 j1 L3 n
  154. dbSize
    $ [! {- A7 C$ x- C; M+ G2 c, W
  155. 查看现在数据库有多少key% G8 ~/ S7 i5 m1 c; O6 k
  156. $count = $redis->dbSize();: G) [9 |3 k1 |; _

  157. * \. [9 |" W+ ]& O9 F: H# {
  158. auth$ g9 q# W1 {$ s+ K2 I
  159. 密码认证" ~+ a9 `* O7 M9 ~) n; s/ R
  160. $redis->auth('foobared');
    2 H7 v; x* z+ V3 W% Q6 R$ T2 ^0 m7 [2 k

  161. , A. M, b- n% x! E
  162. bgrewriteaof  B  p0 p6 A" H' r2 d
  163. 使用aof来进行数据库持久化
    ( h6 N; Y0 M2 @& [5 z- Y9 o: U+ v
  164. $redis->bgrewriteaof();
    5 E5 ?0 E5 ~& ~: m

  165. ! y! x0 a8 ~$ @7 Q6 {; H8 H/ {8 y4 _
  166. slaveof+ u/ [6 x- k. y  w
  167. 选择从服务器, A% e- A% Q! A! N+ [
  168. $redis->slaveof('10.0.1.7', 6379);
    " V) Y+ e! B0 }5 y

  169. - ?$ Q8 r1 y% \
  170. save) Q! U, v- p9 O/ B5 }( a) y4 w. I
  171. 将数据同步保存到磁盘# J8 g- D/ Y& ~/ Q3 s3 q* k

  172. " h! G5 \. ?- G' P0 O
  173. bgsave0 s9 D. v! ?& W. i
  174. 将数据异步保存到磁盘5 z+ J. ^2 z4 \# q% s1 H/ i% G) J
  175. ; m; Q, x) T+ c9 g7 u
  176. lastSave: Y; o, w; y" q  C( E
  177. 返回上次成功将数据保存到磁盘的Unix时戳1 p( z4 h8 w2 m& |) G1 z
  178. # e& H8 ]7 p7 M- d8 y6 g, ]
  179. info/ w' K) x. X3 D8 \
  180. 返回redis的版本信息等详情1 r3 m+ {5 F: N1 g+ X: g7 Q
  181. $ t4 C. Y8 u+ @* o
  182. Redis::__construct构造函数7 \' W* s8 P5 u  ]1 u9 K) x# d. i
  183. $redis = new Redis();1 L2 K2 t2 h, R6 P+ L- k6 Q( a. F/ J
  184. 7 K9 G; D' ?+ C5 c& t- R
  185. connect, open 链接redis服务" I5 n6 e! ?) O7 n
  186. 参数% E) Q1 i- J% _6 g4 z+ l% j
  187. host: string,服务地址0 q2 [, W, o% d% f% c  p3 }$ R1 _
  188. port: int,端口号: A% b- J8 P+ b. s- z) B4 N" b
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    % K7 t* Z$ S5 \+ C+ d
  190. 注: 在redis.conf中也有时间,默认为300  h* r3 V+ g; K0 b. K
  191. & V" I1 V# a# E2 ]
  192. pconnect, popen 不会主动关闭的链接
    6 i3 Y3 Y! q0 O: e( b
  193. 参考上面
    ' f4 M$ x/ k7 A

  194. & P: H- r$ L9 H# f) }
  195. setOption 设置redis模式  X* M& b/ c2 i0 ?$ Z

  196. . n' P9 H$ Y. S2 K/ h7 h
  197. getOption 查看redis设置的模式
    / Y9 j1 n( b0 _5 K3 a% ^( N
  198. - N# j. x3 c% X; b' Q$ V
  199. ping 查看连接状态
    ! q. Q: c+ M! ]2 {/ m
  200. . U% i/ K# u% v" N
  201. get 得到某个key的值(string值)
    8 J$ u; h  v8 m2 T* ^
  202. 如果该key不存在,return false
    , Z0 @8 I9 J, ?. B% a
  203. # z+ a5 U3 f" N" E
  204. set 写入key 和 value(string值)0 Y' S# c8 f/ j, m* R( p
  205. 如果写入成功,return ture9 A1 S$ N% Z6 n4 q" ^/ i6 d; X
  206. , T% n- C2 D6 ?
  207. setex 带生存时间的写入值+ ], b" `5 f# V( x1 \' Q  k
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    9 R# S; S5 I' H' b* m7 X1 u+ i
  209. + Y3 f  S0 I' H" Z
  210. setnx 判断是否重复的,写入值' B0 k2 Z/ w+ G7 i. N6 L) x
  211. $redis->setnx('key', 'value');3 d* f0 i+ T# J  n* t  f# H3 R
  212. $redis->setnx('key', 'value');8 h2 Q2 }, U: u* Q: w/ @
  213. # b/ ]3 O9 ?& }; u6 z
  214. delete  删除指定key的值" Z+ h! f' G' [7 Y' H) Q7 w6 t2 Q
  215. 返回已经删除key的个数(长整数)
    * I& e0 O7 C3 {; M" s9 w, i5 X
  216. $redis->delete('key1', 'key2');& d( S7 [, S4 p( m5 T8 c! b
  217. $redis->delete(array('key3', 'key4', 'key5'));, K8 v: Y8 p! Q  d5 m

  218. 6 v$ L. Y* Z: @! {
  219. ttl
    9 n. P! k* r$ [- L2 B! Q# S( f
  220. 得到一个key的生存时间
    + L+ u& U) r' R* L; K  [
  221. ( U# B8 c/ h, W7 Z5 ^
  222. persist8 A* m2 x- }; p# P1 j* I) w: a0 U
  223. 移除生存时间到期的key+ E2 Z( t) b- D. K1 i' a
  224. 如果key到期 true 如果不到期 false4 L$ y! G6 m" l8 Y3 Q! ^' `; G

  225. - l! C" O. N% z& `  F
  226. mset (redis版本1.1以上才可以用)
    9 O# y5 |2 B+ q- T% O
  227. 同时给多个key赋值
    ; x6 V2 W# h# V; h! B) q8 [
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    8 a  I* H1 e6 ^# n
  229. # a. ^$ R2 R; e2 T
  230. ! e0 v7 C/ x+ }+ t
  231. , g" v$ [" S8 s4 Y: g
  232. multi, exec, discard
    / b# _2 S* I; N5 t# P5 F
  233. 进入或者退出事务模式% r9 S% S/ |  B! o+ }; ^& k4 B7 u
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI9 b# v6 b- w" [. E( u  C5 b* O
  235. Redis::MULTI:将多个操作当成一个事务执行
    . U( D* l* h4 }, I
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    ; w1 }' t5 P" t+ c; |* e- w. A6 O- r
  237. discard:删除一个事务
    : S2 `; ?/ x! J
  238. 返回值: E3 i; s0 ^; [4 W+ U
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    ) C( Y! G+ e5 l. ]* S# V

  240. 7 P+ X/ J, i( ?9 f- |, l
  241. watch, unwatch (代码测试后,不能达到所说的效果)2 V& t# @+ h4 j) r5 r" d1 c
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    0 d- z; j' x6 l. s
  243. unwatch  取消被这个程序监测的所有key
    " @3 O$ P' Y' Y- ^
  244. 参数,一对key的列表" {0 ~) [3 _- f$ X$ |. M* d) M
  245. $redis->watch('x');
    , n& O. B8 X5 s. C8 _3 V3 j+ k

  246.   S) l0 Y8 j2 @4 k1 K+ w
  247. $ret = $redis->multi() ->incr('x') ->exec();6 }/ {6 Q+ m- P; M2 Z5 _6 p

  248. 7 W+ Y$ o5 q7 }3 J

  249. 6 u' S$ p+ S8 m" C8 K: z0 i; U
  250. subscribe *+ `9 H4 j8 F$ _: ~8 M, A
  251. 方法回调。注意,该方法可能在未来里发生改变
    ) v3 v/ j( H- |6 f: O* v5 u8 \
  252. $ R9 s; K: a: M6 I
  253. publish *% y5 h5 B* V/ R- @. K
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    : K. S# K" E! g" E4 q
  255. 1 \& S+ ^; d! x8 Z- {) f5 L/ h
  256. exists$ V: ?0 _8 U; I9 z1 S0 u
  257. 判断key是否存在。存在 true 不在 false/ ?" v* Y3 ?5 p

  258. " X& Y6 X2 x" {4 m* V
  259. incr, incrBy
    ) ]- s" z- Z* @7 n1 a
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ( T: O; Q( o- ?- {+ e) K% y
  261. $redis->incr('key1');
    : G& ]/ E- C$ M, I* F) ~7 u6 H
  262. $redis->incrBy('key1', 10);  G3 A8 t4 s2 B% z. @  i

  263. & ^5 H! e; F2 P0 m3 ^5 N
  264. decr, decrBy% P/ ]8 T! a4 R
  265. 做减法,使用方法同incr
    * ^3 y- w- F) N1 W
  266. 5 c1 M/ j& x4 o5 x- F
  267. getMultiple" i. D; H0 J* K
  268. 传参
    * U, K. w1 D0 Z7 K& j
  269. 由key组成的数组
    8 |4 ]0 m* g! P" f: e
  270. 返回参数% R; w9 l8 E' k8 @
  271. 如果key存在返回value,不存在返回false# O( i: W8 Z/ L, }" \8 q. W$ j3 a
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));% R0 {/ ?  B- W" F
  273. $redis->lRem('key1', 'A', 2);
    , B& k4 A6 W9 C5 Z% S  M
  274. $redis->lRange('key1', 0, -1);' ]6 C, U, P- a; t) |) n- D- g

  275. 4 k! h% h" V# G5 m( Q% F% E
  276. list相关操作, {; j  H- _! m% V% q7 E6 j" G
  277. lPush
    ( F8 M% v! i$ w# W+ `" n
  278. $redis->lPush(key, value);# c! N4 R+ p8 U9 R
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    , J' r6 \+ v  Z7 s3 ^1 P0 l

  280. ! G4 _% X$ P( O9 C) Y+ J3 B
  281. rPush
    0 S! J9 K9 U5 g5 \8 @
  282. $redis->rPush(key, value);( ]3 e, M3 g  }' e6 {6 c
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    * x% V  j' U* k7 n, Y: U# v
  284. ; @' w. \* A; ~6 s% g, k7 t
  285. lPushx/rPushx
    3 D0 q/ x  H! E. X% I
  286. $redis->lPushx(key, value);) Z; H) f; D* z, y7 {
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加9 x2 X% m* d- K7 a- `, K1 {
  288. % L7 M, t3 g- i! T6 C
  289. lPop/rPop: ?1 [* Q7 L2 k2 @$ U0 b. i' B/ i
  290. $redis->lPop('key');
    # T' G) a5 \! h7 ~9 N. [
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素9 R% a  y6 J8 Q/ p: {
  292. 0 m' O; Y$ W- q  S* O- \% Q+ n
  293. blPop/brPop9 g# s0 S9 L/ G: F
  294. $redis->blPop('key1', 'key2', 10);
    # _: ^5 ]7 _- \0 U1 E9 F- i$ z% i( b6 r
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    : {* K; W; H, ~% k( g
  296. # A/ s& v" K1 [: E7 }' S  @) S
  297. lSize
    0 R) u1 A: D) q) o; D8 D( W# I, e1 i
  298. $redis->lSize('key');; D. J  C+ h* k% N5 k! M& z
  299. 返回名称为key的list有多少个元素" A2 ?* h) S& `2 C4 D* f" L
  300. : T" M) T# K9 Z9 D
  301. lIndex, lGet+ _4 C: w; u" G% M7 \
  302. $redis->lGet('key', 0);
    1 M8 ?  S, ~, y; u
  303. 返回名称为key的list中index位置的元素
    ' @. W& i+ q& N( q6 ]
  304. " w! R2 z- m* j4 |6 b* }; U
  305. lSet, X6 L! {$ O/ D& t6 K1 D8 f* Y! U
  306. $redis->lSet('key', 0, 'X');
    ' B' ?+ U" Q  s7 ^. Q6 E1 }) ^
  307. 给名称为key的list中index位置的元素赋值为value4 h1 g2 k/ W. h! g- P% t

  308. * O0 m" G8 ?4 G. [
  309. lRange, lGetRange" x4 [2 `9 g" Q1 H
  310. $redis->lRange('key1', 0, -1);
    . U' ^& l1 C: F  l8 `* Z
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有), z* l. I7 ^! y4 H, A  h9 X

  312. ' U/ e! F5 c7 l5 u
  313. lTrim, listTrim6 J0 F9 w6 n) s7 J
  314. $redis->lTrim('key', start, end);
    * g- F: T! ^9 i' I, R- N* A8 w
  315. 截取名称为key的list,保留start至end之间的元素
    7 [' @  W% l' b2 J3 u
  316. 9 j5 a/ A0 _1 F% c
  317. lRem, lRemove
    8 Y" F. n; K1 ^# F
  318. $redis->lRem('key', 'A', 2);
    1 I  M" L8 ?) e4 ?7 s0 K
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    5 z6 M. z0 V. H4 ~: ]
  320. ( l+ g7 W* S/ O3 A( x$ P% t
  321. lInsert  b  U7 Q. d' }6 G
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -12 j' C- x8 U, b6 n" T
  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');
    ' R9 v6 C9 l% o: U9 X6 Z* N; N
  324. $redis->lRange('key1', 0, -1);: P3 h8 w/ s1 I# X" e
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    3 I7 {' P" k, x5 L. F8 G3 @3 ]
  326. $redis->lRange('key1', 0, -1);
    , A( o2 e' }7 _# `- I- T
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');( R4 C3 r$ D& b, K' \0 }
  328. 9 q7 C8 L$ @) J/ W3 }* S* a: D
  329. rpoplpush: U; D' {/ L4 J% a
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    $ ~4 p: o  m! ~  ~0 [0 _3 J2 N
  331. $redis->delete('x', 'y');
    ! A/ {2 Q6 c: p) c' 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'));
    / W( J: }! y+ r0 k( P) ]) l
  333. var_dump($redis->lRange('x', 0, -1));7 y4 J3 ~3 j* X: n
  334. var_dump($redis->lRange('y', 0, -1));
    - Z1 f( _5 C; j8 F) k* Z% [

  335. , Q* C6 Y8 B2 P0 W) A
  336. string(3) "abc"
    " }( V# a2 \+ S5 p1 @  O7 i
  337. array(1) { [0]=> string(3) "def" } : W% F' l7 L1 q3 r$ G
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    6 C0 `8 D. R# y  K0 J

  339. " A0 @' Z- O1 @: q
  340. SET操作相关" l' y2 u! c/ y' ]' m' ^+ f6 f4 r
  341. sAdd
    + @7 |2 `; W/ c
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false/ Y5 J4 R2 m, A
  343. $redis->sAdd(key , value);& d5 V8 Y9 q$ T2 c* u

  344. " X% M% s2 c# l. b- f# y- c
  345. sRem, sRemove
    / ?' O$ W, k/ S# k# F- \
  346. 删除名称为key的set中的元素value7 R4 M% w. C4 }) F/ h& D- {3 t
  347. $redis->sAdd('key1' , 'set1');0 e  f- K) \1 b
  348. $redis->sAdd('key1' , 'set2');3 h4 ?. P& ?7 f0 _
  349. $redis->sAdd('key1' , 'set3');: T( A" F% V: p7 q4 C1 B4 l, m
  350. $redis->sRem('key1', 'set2');
    ) A0 x, z' U% T( `9 U% i
  351. ' \. [& I, N9 c! \
  352. sMove
    2 W; A! I( ?( B8 [0 Q
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    : {5 W6 X* C8 h! z. d
  354. $redis->sMove(seckey, dstkey, value);
    6 \) u9 j" s$ ^# M& r! @! b, [7 `

  355. # _) ]: F4 M/ {) F- a
  356. sIsMember, sContains" G1 y8 Z" [) u5 b
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    # O  ?/ V/ O, ]
  358. $redis->sIsMember(key, value);  H% N' l9 @7 A( K9 w

  359. 6 i$ H$ A$ A  O6 g) C; ^0 {! l
  360. sCard, sSize  P5 z, D5 N/ a# V3 C
  361. 返回名称为key的set的元素个数
    1 E: k# j- W3 ~4 E1 l; \: L  ?" c  Q
  362. 3 k- |* w7 ]3 @2 Z
  363. sPop
    $ z& Q& Y5 ]$ X* M; _# K
  364. 随机返回并删除名称为key的set中一个元素" i5 B2 p  T  W/ b/ o2 i7 L4 `; z
  365. , C3 P( \" o/ _% A
  366. sRandMember
    ! q2 Z' l- s& a
  367. 随机返回名称为key的set中一个元素,不删除
    $ D4 O# M' w* r) q, d

  368. - x* T* j$ i1 C8 P" Q) p: P
  369. sInter6 \& V- w9 Y: e* G; Y9 r5 R
  370. 求交集2 D5 E/ E7 \& n
  371. 4 ?* G2 D5 J7 T& y" B. h
  372. sInterStore
    0 }+ g9 D" s' G4 {7 [. ^. ]" N+ A
  373. 求交集并将交集保存到output的集合
    % C0 [2 _- Q8 o6 J! B
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    9 Q% t$ ^' R, ^! S. F! [

  375. # K6 z& j0 z; ]( \
  376. sUnion% a8 p1 W0 U) ^% p- h
  377. 求并集
    : w/ \3 Z! H& z3 ^; q
  378. $redis->sUnion('s0', 's1', 's2');7 v7 M1 K7 v/ ?* p
  379. s0,s1,s2 同时求并集
    / K7 J5 d: _( N/ w- b

  380. ; @7 c) @$ R" J, x+ j" M  |$ Q/ O
  381. sUnionStore
      P+ P) r. ]- N, x0 T
  382. 求并集并将并集保存到output的集合
      ~& f+ z- `8 ~9 f" ?& N
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');2 P% W- f4 u0 g" J4 H6 Z
  384. 9 k+ x1 s% u, |2 p4 X, m1 i
  385. sDiff! L; W8 R+ ?/ I; Z4 ?$ W- w
  386. 求差集
    " }3 f' W5 l% T3 U* N

  387. ! U9 c8 u! U" L: [2 I6 _  }: T
  388. sDiffStore. s; Y/ g0 p; L% M" J, G
  389. 求差集并将差集保存到output的集合, o  Z$ P5 |! D9 l; F- T7 _

  390. , x$ p- E5 t. a" O
  391. sMembers, sGetMembers
    $ p3 \% _9 ]6 t$ v1 \6 c
  392. 返回名称为key的set的所有元素- N1 |& P) P/ ^  o' H" j" k

  393. 6 W' j) B8 ~7 X- q) R
  394. sort
    7 C/ H6 I5 @& m4 ?' P
  395. 排序,分页等9 y7 x# K/ V( Z' r# V8 B7 ]
  396. 参数
    : C: A7 m5 \0 Y# m8 }
  397. 'by' => 'some_pattern_*',8 D! c  P/ H8 L8 O8 x6 L8 |, F
  398. 'limit' => array(0, 1),
    4 X* ]3 s: n5 S1 X& e
  399. 'get' => 'some_other_pattern_*' or an array of patterns,# S5 h- D8 T$ y' X# ~
  400. 'sort' => 'asc' or 'desc',
    9 Y9 u6 [/ t7 d# s. Z0 T5 E8 p
  401. 'alpha' => TRUE,, J4 g1 p9 c1 ?' [+ H1 R
  402. 'store' => 'external-key'  L  z! n* a, ]& b# {- e
  403. 例子- ?. q- ]5 C/ L$ [2 n
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    8 W  J9 u( C) D: k9 I& c0 F1 q
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    2 [4 `* n7 U& b6 j+ }: B
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    ! F* B: r8 X' n4 D5 D, ~) }/ E0 [
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
      k0 K- c" i- \. W- K
  408. 1 |7 u2 k# [% M: V; t
  409. string命令
    7 W3 O4 n4 n/ l4 W& Y
  410. getSet. p) q; b' ^; g& q9 w3 _# u" z0 ]
  411. 返回原来key中的值,并将value写入key* g# ^  J# e3 V* Z9 L
  412. $redis->set('x', '42');' K9 m6 }) D" H8 j
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    ' j; i) x, e' l# W
  414. $newValue = $redis->get('x')' // return 'lol'
    3 Q$ V# k# G1 n; ]7 K
  415. 6 J% N& X  d! @2 y
  416. append
    * u/ _& z: |$ B  n, `7 l
  417. string,名称为key的string的值在后面加上value
    ; F) @- ^. U' z$ s
  418. $redis->set('key', 'value1');9 n& `0 O9 @4 M) |! o
  419. $redis->append('key', 'value2');
    ' y* u6 y+ ~2 ?6 f
  420. $redis->get('key');1 e  ^) Z7 N( `2 r% j0 @" o
  421. 3 y. @0 H5 |9 T5 A' l3 Q4 Q
  422. getRange (方法不存在)( a, r6 |+ a9 ]% w3 H
  423. 返回名称为key的string中start至end之间的字符% Q% |0 Y  X0 ?: ]& Y, a
  424. $redis->set('key', 'string value');% d4 J* R) {9 ~, `
  425. $redis->getRange('key', 0, 5);% j; i( }. U% l7 z5 F# z1 L0 E, T
  426. $redis->getRange('key', -5, -1);4 E! t) P3 G- x! D" J" Z2 C3 d3 s
  427. 1 q% q" F' J6 T+ J& |9 u. q5 d  k
  428. setRange (方法不存在)
    0 P' @0 v5 T; {1 z
  429. 改变key的string中start至end之间的字符为value6 k: B# S# D( l' [( v1 r
  430. $redis->set('key', 'Hello world');7 P. H+ e2 t; T8 h7 s0 x$ V
  431. $redis->setRange('key', 6, "redis");# D2 g9 o. x3 C2 O' `( j, M
  432. $redis->get('key');+ w# \4 @5 u3 L8 L2 b

  433. : w% z4 N- r3 W: w$ y+ c* c1 }
  434. strlen
    " s$ I& N# l0 D) C$ {
  435. 得到key的string的长度. D4 X* I) v* ~1 o  d0 `
  436. $redis->strlen('key');2 V; b& K- T: h" V6 b
  437. " T3 S; M; {# ~6 O+ u  l1 u; Z
  438. getBit/setBit, X3 q5 V  G; N1 L3 _( F: R3 J7 ]
  439. 返回2进制信息
    2 ]; c: K7 S# G0 B
  440. % U" Q! L, X* N2 D; q/ @
  441. zset(sorted set)操作相关
    ( Q, _/ z/ k3 b+ f, U( ]' |
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。0 X% P* |) _) s, y+ G5 t8 u
  443. $redis->zAdd('key', 1, 'val1');  s3 w* c* M! g4 o  V/ }$ ~
  444. $redis->zAdd('key', 0, 'val0');
    % e; i7 O- h3 L/ y
  445. $redis->zAdd('key', 5, 'val5');
    ! ^6 x; ^5 _8 }6 N1 r  u$ U3 u
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    9 T: q  N* S8 o/ n2 k
  447. # n  g6 j# N; k  F2 A
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    9 K& W! ~! ^4 m% q4 v/ d+ t6 L/ u
  449. $redis->zAdd('key1', 0, 'val0');7 y, `9 v1 @1 X' r0 }) \: ]) ]# a5 K  _
  450. $redis->zAdd('key1', 2, 'val2');# `8 J: c0 K& J( g" j7 M1 ^& o$ P
  451. $redis->zAdd('key1', 10, 'val10');2 |8 g" `4 u9 U4 h5 ?9 [, ?
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);7 a; o, w* ^+ {' k
  453. 7 B' A$ U! ~; i1 t; B/ W- F/ f5 Z) }
  454. zDelete, zRem' z% M! V( N, u4 R- U* l6 V: M6 B, D
  455. zRem(key, member) :删除名称为key的zset中的元素member
    ! `: a$ O# y) J! p7 L
  456. $redis->zAdd('key', 0, 'val0');
    0 L9 P! ?6 V9 Z: f& A
  457. $redis->zAdd('key', 2, 'val2');+ s1 W8 y- X* n! n( f8 {1 q
  458. $redis->zAdd('key', 10, 'val10');, X+ a4 l, D: J) f- E' Z4 q* p2 m
  459. $redis->zDelete('key', 'val2');$ u3 |9 q3 Y" \) D7 }7 z! E
  460. $redis->zRange('key', 0, -1);
    . a0 P. Z% W' b- i$ }

  461. ! Y; r; [" K$ {/ J
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    , p" @) @3 h* ~3 F
  463. $redis->zAdd('key', 0, 'val0');' r% R: ]: l' ]! o/ R' q# T
  464. $redis->zAdd('key', 2, 'val2');! O3 k1 Y6 V5 Y1 J. }( L
  465. $redis->zAdd('key', 10, 'val10');
    3 c( ~: i0 m1 c! }9 g3 a! C/ V$ K4 u
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);) v! U) s2 z$ U; e' p9 V
  467. + m9 W* t8 c' y: l  Y( x6 B* R
  468. zRangeByScore, zRevRangeByScore
      c' W6 @5 B8 q2 I4 [2 m5 X3 f  E
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));) f  n& O( k# N2 `+ s' E1 K2 `
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    / s3 `4 A8 M8 w  |/ m4 `
  471. 9 q  k0 k) b6 d
  472. zCount
    ' T6 T& |  o7 C& g9 h
  473. $redis->zCount(key, star, end);
    # S3 N) Y0 u& a. c, c7 v! |1 X
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    " c9 p* ^/ e+ w8 }$ Y
  475. , O6 a1 G( b* s8 H; m$ }/ q9 J
  476. zRemRangeByScore, zDeleteRangeByScore
    8 B7 C# h4 z1 n
  477. $redis->zRemRangeByScore('key', star, end);! I( d& ~0 s& j% W5 X3 [+ }' G1 k! U
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数# o6 F( z3 {) J' R, N, t9 }0 L3 Y
  479. 1 V+ ]1 O/ o# T; c
  480. zSize, zCard
    " Z( c8 g9 {8 z. O7 S/ t/ }
  481. 返回名称为key的zset的所有元素的个数
    & r) }0 q" D& ~6 _; E# V3 j# [3 A

  482. : z( a: x1 z6 n8 {
  483. zScore
    ( @6 ~5 S8 ~; y3 i) C3 _1 Y- h: ~
  484. $redis->zScore(key, val2);
    4 w+ @2 H4 T0 R1 B; i; |$ m% ^
  485. 返回名称为key的zset中元素val2的score7 A5 ^# c/ j  J, V" t
  486. * ~( g* f' B0 O& |+ Q7 x
  487. zRank, zRevRank
    8 ], s3 d& J3 }) z$ o
  488. $redis->zRevRank(key, val);
    . ?% b6 a4 r* ^% n% O4 w
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序9 x9 M0 Q. s# g, A7 D& E
  490. 5 {) ~: K6 v# m1 @/ h
  491. zIncrBy
    , q1 D& H/ L+ b" y7 l" P; i
  492. $redis->zIncrBy('key', increment, 'member');3 Y$ T1 y$ P. l( }
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    3 r7 p/ S* j" F9 s& z" n

  494.   T! o; Z  z: R- l) |; i
  495. zUnion/zInter
    . c4 M7 }( |$ `5 H- l  {1 Z% n, n2 r
  496. 参数
    . W+ E  Z* ~3 i% k) j% X/ X& i3 }; R
  497. keyOutput! @. O' p6 R" @3 q& L2 M
  498. arrayZSetKeys: x; w0 c& i  [2 @
  499. arrayWeights$ J1 D3 O& o. _. K) `/ b# z4 l
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.4 O. A  e- g0 \3 ]/ D
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    # w3 G$ ?. f- c9 X, k0 H
复制代码

  [  t* `7 |6 G8 U- f- l. V$ D" a0 P1 P7 v0 Z% G
" Y/ N. e7 \, |( Y  @2 ]
1 c+ F- ^  t/ q* A

作者: admin    时间: 2019-11-26 17:06
  1. $redis = new Redis();
    0 n1 B7 E; N! x+ \
  2. //连接redis服务器
    ! Y9 ]& J; o: m. ]0 F: |. w8 v+ \+ ~
  3. $redis->connect('127.0.0.1', '6379');
复制代码





欢迎光临 cncml手绘网 (http://bbs.cncml.com/) Powered by Discuz! X3.2