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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php3 S; |; Q1 f" K
  2. $redis = new Redis();  ! }/ Q, m. F* w/ \+ h
  3. $redis->connect('127.0.0.1', 6379);//serverip port7 C  ]2 |- V" A6 f  S! R2 e6 S
  4. $redis->auth('mypassword');//my redis password
    2 E& s( _: F1 k2 N
  5. $redis ->set( "test" , "Hello World");  
    + e  `* t& c- `4 Z+ p
  6. echo $redis ->get( "test");$ R; C0 m7 U7 {1 Y% g
复制代码
php操作redis函数封装
  1. /**, Q+ S+ b9 A8 T6 p; X; Z
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数5 T  I3 |. i7 A$ G; l, ?- L, n
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi# x9 \' C. D: N
  4. */+ T& m  |' ^" d6 j- f' F
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){2 s" Y! n& N8 p1 p8 l8 p
  6.     if(!$key||!$value) return false;1 b# ?! n3 h  c* h! C7 [5 p6 V
  7.     $host = $host?$host:getenv('REDIS_HOST');
    " v- m( l- d9 j/ K
  8.     $port = $port?$port:getenv('REDIS_PORT');0 b& g" d! t- Z# q0 [" W6 F% H6 D
  9.     $redis = new Redis();7 Y" Z) q$ N  m# N9 c3 o+ e
  10.     $redis->connect($host, $port);1 K4 M. K+ l2 g, V4 f; k5 m
  11.     $value = is_array($value)?json_encode($value):$value;* q2 r; O* s9 r- o8 @0 {; R
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);# A  n9 U) t- w& |0 O
  13. }& j7 F* B" {0 u, V* `
  14. /**
    6 w2 X! W3 K4 C
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi1 d% \0 @  @5 [
  16. */: o+ ^4 G1 V& Q. H9 R+ y4 M. P
  17. function RedisGet($key,$host='',$port=''){& n- b! }  x( P$ y- i$ N  y* B
  18.     $redis = new Redis();
    & e& E7 c; h. `2 [
  19.     $host = $host?$host:getenv('REDIS_HOST');
    6 p) e3 t% o# ~# Q. A. p- A3 y" u2 P
  20.     $port = $port?$port:getenv('REDIS_PORT');
    9 W  S: j0 H6 ^& x! K% l
  21.     $redis->connect($host, $port);
    ; t7 T+ q/ f+ b( ^# Z0 S. ?
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    # ]$ a+ m* g0 X
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    + K6 `3 B' C' p! w# F
  24. }
    : k% H/ i; K, C" W! ^( z0 ]
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了# o9 z& s: m! E* }5 S( `
  1. setex 带生存时间的写入值
    ) J. c) ]4 M8 ~3 \* Q. F9 k9 L
  2. $redis->setex('key', 3600, 'value');
    . B( q- j% o. y# W! i
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    4 n& Q8 K! \. `) b$ `3 x' d" h8 j
  4. $redis->setnx('key', 'value');
    ; \" l( r$ C' M. J
  5. 返回已经删除key
    1 |& E$ L  J) `$ @
  6. $redis->delete('key1'); 成功返回1失败返回0
    2 k7 Z0 e- o# h! t4 n4 z; N$ r
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    % W$ V0 m& Z2 r/ }
  8. 查询生存时间4 c0 h/ V2 H+ V; Y5 j) B$ B- s, n  `
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)8 B# k; C& x/ h7 E9 u
  10. 同时给多个key赋值,同时设置key0和key1
    & p5 l: g# c3 `
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));2 t4 E+ Y1 W( R0 B; M7 W
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值' q4 d6 O$ x' \! j( @
  13. $redis->incr('key1');
    ) o4 v& H5 Y5 |
  14. $redis->incrBy('key1', 10);
    : E% @4 ^/ [& V! }
  15. 减法跟加法一样
    7 T+ N6 Y' O& j3 h. C
  16. $redis->decr("key1"); 减少1
    ( E( Y3 V/ N* f. A! q0 S" [
  17. $redis->decrBy("key1",5) 减少5# M9 V; E6 X( E( u% u3 o

  18. ; z4 Y4 s8 y5 f, r4 ]2 i0 c$ P
  19. list相关操作,连表操作
    + o& m8 S! U8 ^) z3 j/ H
  20. lPush
    5 @* P2 |8 i; w: K- m; ]% q
  21. $redis->lPush("list", "888");( `, H- c) L* a4 R
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数9 Z/ B1 p. }2 Y- @. n; {- d
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式7 l6 P8 Y/ R8 X" l' D. f
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    , B" t2 ~% K+ t1 i' \6 Y' m
  25. lPushx/rPushx! z8 v: O. [8 L8 C. c0 J0 Y
  26. $redis->lPushx(key, value);
    ! e. t  k3 r9 U. o
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加! y5 P8 A5 W; g9 E

  28. ; y6 c' J, t0 i0 D
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key# Y: l0 b- _: _7 @7 ~
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key* |, W  q$ P8 K- |, k  d& t7 c' h6 B
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1& y+ X5 A" ?, K
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    3 W7 ]- R5 M/ b* `
  33. sadd s1 zhangsan
    5 ^" Q* j6 ~* t8 H* v' D
  34. sadd s1 lisi
    ; I6 J" I! t# @/ V9 F% D( p5 `
  35. sadd s1 wangwu
    & ?- o4 T; ?" f+ n+ u
  36. sadd t1 yangxingyi* v/ O4 L. `0 L% o* Q) Z5 n+ w7 C
  37. sadd t1 lilei. q, z& Y/ a0 g. @. B
  38. sadd t1 zhangsan
    4 K/ T) l& T, k# o$ d6 s
  39. smembers s1 s1的所有集合内容4 D! |5 V# m5 F# R2 B* R; D
  40. sdiff s1 t1 s1有的,t1没有的,差集( g6 l: T6 q' q$ r% M2 e
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    3 f  b* L4 T" s! j. u  {
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    " n) T/ `- Y( W. z. J" G1 }
  43. spop抽奖场景,返回集合里面随机的数
    & s& [8 i; M+ t  I
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    0 A! u& _% m6 Z% u9 ^. O
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    ' N4 W9 e, a) t# M4 [  D
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的6 h$ c, K& \. u1 E- u2 d" x
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    1 G! a) ?) ^" o( T
  48. $i = $redis->srandmember('s1');echo $i;
    ! b. t" `7 _4 C
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false9 m& ~/ _" Y$ m- a; y
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    ( G, S9 L0 Y! @% p4 C
  51. 5 [) i  e$ c' {! K0 _  A
  52. zadd key 2 value 有序集合5 J3 M- U: e) o9 |' x
  53. zadd y1 1 zhangsan;
    8 \" `  \1 J* _: L4 k) Q7 ]. L* B
  54. zadd y1 3 lisi;
    0 e5 Q2 F. V* T( J- r
  55. zadd y1 2 wangwu;
    ; U  N7 c7 ~* O/ |, m6 ?
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    5 K0 A* y8 O8 r: M' ]: v8 Q
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    2 C* S: T# ^. r/ b* z
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键  _& }" `' L8 G$ ^% _# f
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先3 ]( Y1 i! O% x& C8 Q2 n6 k/ [
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的3 W7 S; [2 V+ b. ?6 a
  61. 无序就scard,有序就zcard,有z没有s" `% ~* u* O2 Q  q; P: h9 x, U6 h% `& ^
  62. sInterStore9 S  R7 f1 d$ U* [- j; v
  63. 求交集并将交集保存到output的集合2 D& T9 z4 b$ @* L
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    5 Z8 l$ e& Q7 w7 o) v9 R  J/ a( i" ^
  65. 2 c; ]' p3 V$ b. i! Z  G+ R
  66. Hash操作
    1 U5 @7 |3 i( j/ s4 F
  67. hSet
    ' z- e, ~, h  G+ p5 H6 o
  68. $redis->hSet('h', 'key1', 'hello');8 h, e! F6 o; h4 b1 `6 P# q
  69. 向名称为h的hash中添加元素key1—>hello
    - l1 E3 \# r2 f

  70. 5 P* N! z: N- o5 I, j) V1 N3 i% E
  71. hGet
    , j# ]# r' @4 C2 d- k* F- a& M
  72. $redis->hGet('h', 'key1');3 j' m4 Y8 n4 |) r( o7 h2 X8 y
  73. 返回名称为h的hash中key1对应的value(hello)
    4 W; {- k3 t9 u! [
  74. 9 g0 ~$ M5 i5 f
  75. hLen
    $ m  j# u! O" B# I5 A; i5 R$ D4 }* x2 x
  76. $redis->hLen('h');1 L* q+ J3 R/ O$ f0 M/ T# i8 G/ Q
  77. 返回名称为h的hash中元素个数
    & ]& c' Y; M  t5 K# b3 p

  78. # E8 g7 i1 W6 g% ^0 n0 v
  79. hDel
    2 A5 S( U1 a) d' x* z( D0 y% T  r
  80. $redis->hDel('h', 'key1');
    * u# x/ F; K& @. _9 B3 g
  81. 删除名称为h的hash中键为key1的域; ]0 v" f0 k, L* W9 E" B

  82. ! ]& j& j% B( A6 E" }- e
  83. hKeys, D, J) c4 @) k/ e4 p2 t+ T3 v
  84. $redis->hKeys('h');
    3 }" N9 o* Y* ?" o
  85. 返回名称为key的hash中所有键
    , l' l) e8 z6 x( r3 D. i3 s. G& |

  86. 0 |* F8 _9 J- Y8 K- _
  87. hVals
    2 E! }- s# ~  B2 W( j  U
  88. $redis->hVals('h')8 z0 @" w) w% _+ Q
  89. 返回名称为h的hash中所有键对应的value
    1 y0 D% ~( Z/ G1 E) L

  90. 0 O4 D6 S3 Y. O+ B2 ~! t
  91. hGetAll
    6 k+ u( E, S7 C3 x
  92. $redis->hGetAll('h');
    7 M6 o- u& X8 a- R9 v( }; k
  93. 返回名称为h的hash中所有的键(field)及其对应的value0 u! G- k5 i% \# B3 s

  94. 0 j; d3 ]: ~+ _0 M& W5 G. q' M
  95. hExists
    0 ^, c& s7 |, {- C
  96. $redis->hExists('h', 'a');' p0 {/ a( F" l: R# F% \- H5 I% X
  97. 名称为h的hash中是否存在键名字为a的域
    7 C. f4 Y3 Z. y+ g2 m
  98. 1 G& t: |" Y$ J+ ^5 y
  99. hIncrBy
    3 K2 ?* K$ ?) I$ U  w: U
  100. $redis->hIncrBy('h', 'x', 2);+ v: ^. A# S( G
  101. 将名称为h的hash中x的value增加2
    ( C1 S& A2 A. |  t( b* ]1 z6 X

  102. 2 y; S0 n' N. V* q2 d2 q
  103. hMset
    % R! j2 z. H. B2 z  f" \" r
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    $ A4 n4 \3 T7 b. S( m" {$ U
  105. 向名称为key的hash中批量添加元素
    $ v1 E+ W; H5 B3 b/ q0 Y; m

  106. $ P. u1 m1 `: g( P
  107. hMGet& d: [  [8 w6 Q
  108. $redis->hmGet('h', array('field1', 'field2'));
    : T- r7 D$ ]/ [3 b0 B, {: Q7 H
  109. 返回名称为h的hash中field1,field2对应的value
    % u) w( |# I% L+ ]9 H1 T5 i

  110. / l& k" h/ u8 ~1 k/ ?
  111. redis 操作相关& z! V# F/ n' t8 L
  112. flushDB
    ( q. [6 U8 r" x0 T2 F- U4 V8 y
  113. 清空当前数据库
    $ H& F* y! e5 Y6 ]3 u* z+ e0 V
  114. ! I$ A! v- Y5 s; c8 p3 D
  115. flushAll
    4 @9 j/ A, `, H( x
  116. 清空所有数据库* U0 N* G& c- w' U. {! `- o

  117. 6 d2 H4 s9 }5 a6 g: X, @4 S, N
  118. randomKey
    9 @1 X/ U/ N: V, `6 d; D5 g% I. y
  119. 随机返回key空间的一个key3 d& _' {# p+ |, d# x; z5 ?8 `
  120. $key = $redis->randomKey();
    0 ^6 t  u9 @7 V& L
  121. - f. }7 S! f! M& X4 h
  122. select- y  Y- l0 l6 |# X: b# M! ?
  123. 选择一个数据库
    0 g/ m& O  Z3 U1 S* \+ `
  124. move
    / v0 P7 e& y+ h
  125. 转移一个key到另外一个数据库) y: L. \/ x# n# I2 V. m
  126. $redis->select(0); // switch to DB 0
    " u; K' g% z1 Y) b" h
  127. $redis->set('x', '42'); // write 42 to x6 G/ N; O. ^& T; k9 D9 b$ ?( G: v- E
  128. $redis->move('x', 1); // move to DB 1
    , C* ^$ X8 F- t- o9 D$ \4 L" R5 B
  129. $redis->select(1); // switch to DB 1
    3 `6 o1 h, E: O8 R
  130. $redis->get('x'); // will return 42
    ! Y( H+ Z6 N- d7 r7 n

  131. * i0 p. [" ]' m/ h, z3 d8 g
  132. rename, renameKey+ L8 w0 l$ q6 H+ ~! s
  133. 给key重命名1 v. P1 J; |9 c5 @: P, ]
  134. $redis->set('x', '42');
    9 B$ K9 u  O4 [* X) O% t2 A
  135. $redis->rename('x', 'y');7 e6 V" I4 ]# J8 `
  136. $redis->get('y'); // → 429 Q  o# g9 h7 N+ E8 U
  137. $redis->get('x'); // → `FALSE`7 @, o9 o) P+ z- h' s7 l+ }# M5 _8 B

  138. 5 ^. b- @$ w: h, B0 w
  139. renameNx
    8 K7 x6 w1 m. J4 y; j
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    0 F& W9 _2 v% \( U$ f

  141. / A9 N5 @9 @: q2 ^$ M/ X; b7 M
  142. setTimeout, expire" b% }% Q6 i5 |4 |
  143. 设定一个key的活动时间(s)
    " u! C% U; u6 w
  144. $redis->setTimeout('x', 3);: x) T& {0 \$ C4 B8 N+ z
  145. % B, c) ~# ^7 g2 K: ^! O  m# }$ m
  146. expireAt9 X1 y: ^3 ?0 u* y# R  P
  147. key存活到一个unix时间戳时间, f9 t! ~1 W9 z; `) M5 v  E5 }
  148. $redis->expireAt('x', time() + 3);  b. C, }8 d( Q% j- v" ?! G

  149. . Q( y; h7 y7 s0 c' u5 n
  150. keys, getKeys
    & i' g- X4 O! [9 |2 K3 j
  151. 返回满足给定pattern的所有key2 p/ k1 D. l4 v; e
  152. $keyWithUserPrefix = $redis->keys('user*');
    " e+ A: D5 _1 H! s# N

  153. / p% \; ?: Q, u( g7 b
  154. dbSize
    / X. C0 `' \6 T  R+ \) q
  155. 查看现在数据库有多少key: j" v# C3 O: }( p6 s  W3 [
  156. $count = $redis->dbSize();
    % u- x! b) ?4 U/ _; z: y; A% P& }
  157. 1 u2 _' S1 _5 u' g/ g3 B, e6 n% k
  158. auth
    ' O* B" {6 p+ u# ^4 s; L# j0 c
  159. 密码认证; Y- t" o2 G4 ~
  160. $redis->auth('foobared');* u4 t6 O# S0 L

  161. - c! L2 v/ F- D
  162. bgrewriteaof
    ; ^0 D, D. `: g; H3 m# v/ J
  163. 使用aof来进行数据库持久化6 c- u! C0 }3 C4 l' n# q
  164. $redis->bgrewriteaof();( |; [& T2 C/ ]+ n7 d/ q9 \7 g
  165. ! c% H; }$ _: p. B
  166. slaveof) f2 L' I8 s# }8 z3 B# C+ P
  167. 选择从服务器, t& x( B9 T9 L. T2 b
  168. $redis->slaveof('10.0.1.7', 6379);% N4 t9 c7 o4 |% |9 F* g) q8 N

  169. 4 s. y4 t4 s4 s: m, Z# l+ {
  170. save$ Z( ~6 k, N/ L1 N  t
  171. 将数据同步保存到磁盘
    & E9 F$ P7 M/ y  d* q7 T; k% l  m
  172. , H8 W& ]3 V3 X2 w* n: |% Y& C
  173. bgsave
    6 W+ k2 b& M( I4 }
  174. 将数据异步保存到磁盘/ E% F" x! n* G1 f- h% n

  175. ) u* X# ]7 s2 j) R! W* P) f
  176. lastSave# T' `% }2 z! z
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    * N/ g, d9 E/ Q- v1 b3 ~
  178. ) W- H1 N  L, ~' v6 ^
  179. info$ Y$ Y2 A7 r; J8 h" ]; j
  180. 返回redis的版本信息等详情
    ) b3 U3 H# H$ M5 L' B8 @9 E

  181. . t+ {! i6 ?* g* e. Y7 ?% ^, O
  182. Redis::__construct构造函数
    $ z3 j; K- o" Y! l+ [4 w
  183. $redis = new Redis();4 E5 A$ V& _$ X4 a$ m8 Y* i
  184. 5 j- q) h) a) @) K; K
  185. connect, open 链接redis服务4 y; o- ]% q! f/ ]& N1 }
  186. 参数# ^( R. _  z1 D1 j3 ^# _" z' }
  187. host: string,服务地址: y  S, n% ^2 j8 n( }2 g
  188. port: int,端口号0 R: y3 v- I7 Y3 z4 `
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)% Z7 b, l0 f7 f+ M) d( m
  190. 注: 在redis.conf中也有时间,默认为300* P% e( O; i# H, ]

  191. / k6 c: L( H% v) H  s
  192. pconnect, popen 不会主动关闭的链接/ E9 i3 J1 T% N* x" R5 G$ M
  193. 参考上面$ Z! u$ M0 A7 R" ]& _. j$ h

  194.   Z( A( |9 q. @; {
  195. setOption 设置redis模式' s' }- R' O4 z/ X. H
  196. & i# F# E: o/ d$ |9 F
  197. getOption 查看redis设置的模式  ]- v- p) a3 C
  198. ) d7 m* _1 g' v) S3 f
  199. ping 查看连接状态
    + {9 o" @; c  d* P/ h: S  K

  200. 0 H- \" M% t# ?0 t# M  H
  201. get 得到某个key的值(string值)
    8 a1 C) n3 _* D5 h8 O- {; J
  202. 如果该key不存在,return false
    + |! ~0 E- t; G4 z% }) l

  203. ; \0 I9 ^1 B  v  h# M
  204. set 写入key 和 value(string值)& w0 z1 u& E( J
  205. 如果写入成功,return ture; ^! N& O. R: Z7 q# i
  206. 2 F: C! L* |9 j8 z- @0 n
  207. setex 带生存时间的写入值
    - G8 O% n% s2 r% d5 E7 a( H6 R" Q
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    . R' B$ |6 n$ ]: n4 ~
  209. * L$ ^/ Y; |9 N! p) H
  210. setnx 判断是否重复的,写入值
    ! l% s+ L, ^" R( z9 l& u5 Q
  211. $redis->setnx('key', 'value');! c* G2 Y/ L2 C$ C
  212. $redis->setnx('key', 'value');
    / ~8 F* a' J8 V0 Z: ]  g
  213. # B! k. D6 O9 [4 N7 M  B8 s2 Z3 {
  214. delete  删除指定key的值
    8 x  R( k5 p! n- n  Y+ Y4 C
  215. 返回已经删除key的个数(长整数)6 _+ Y* e  u# g# N# d1 v
  216. $redis->delete('key1', 'key2');' v; Z: P+ Z7 w3 d; m" s! |
  217. $redis->delete(array('key3', 'key4', 'key5'));' V4 Q  ?. |9 N, s0 F6 L# f
  218. % m7 A! @) e/ H! X9 t4 q
  219. ttl  R$ @% L- P3 b' C3 ?, O
  220. 得到一个key的生存时间) U* ?; z  g/ K% i

  221. 0 p9 Y7 E/ \- I" i* I; o. A
  222. persist
    7 R( [8 w1 [+ _& {( f
  223. 移除生存时间到期的key
    ! L1 L% U. d5 M9 a$ u
  224. 如果key到期 true 如果不到期 false3 k9 }, C, {5 W
  225.   I' ^) H' f0 @$ i* w3 F
  226. mset (redis版本1.1以上才可以用)
    ) y1 i" \8 e) W0 C
  227. 同时给多个key赋值
    # s( h" P- H) c( T' ]
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));7 z$ l, [/ z4 t% \* ^
  229. : Z: j+ Q! W6 C6 e8 P8 R: j; w; A
  230. 2 I: x" ^& R/ ~5 q$ C

  231. . t6 F4 c8 [" X- e  g" U2 H
  232. multi, exec, discard# p( V7 p. |$ S5 R$ ?
  233. 进入或者退出事务模式: H5 O- M! h, @, ?, v( w5 f
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI. p. i9 Q2 H- x& R% V
  235. Redis::MULTI:将多个操作当成一个事务执行) c- B9 |: t4 F: D
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证6 |( R7 W4 t9 S3 I. ^# k6 |- }" M4 B
  237. discard:删除一个事务
    4 G8 P5 b& X- F; j
  238. 返回值
    / L$ p/ r9 a2 s) P9 K
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    ! J/ j! \- C% R6 y3 \
  240. 9 S2 ]4 G' o7 R: J8 f
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    : d6 O3 T& G; }' Y6 T
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    ( }# d3 `  p: h2 R6 y/ f7 A
  243. unwatch  取消被这个程序监测的所有key: Y; p- N9 P1 o& k7 K' ^
  244. 参数,一对key的列表6 o+ t! ~5 |, Q" ]; w' l
  245. $redis->watch('x');
    1 \3 t$ P1 w& d

  246. $ j6 `4 _+ D8 U1 |0 W, M5 k
  247. $ret = $redis->multi() ->incr('x') ->exec();3 n$ u% q% }3 G7 a& w( u

  248. 2 _, m' i7 o$ H, Y& `9 i

  249. : e% W" v( T- f: ^
  250. subscribe *
    . X+ R. O; K$ _* |; X. C+ R  S% v
  251. 方法回调。注意,该方法可能在未来里发生改变
      ^$ I) k2 ]' ?! j4 ?- H4 v2 i
  252. 6 ]& |( S5 c$ w& U( ^0 h! v
  253. publish *
    3 ^. `1 {+ [- u
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
      f1 p" e/ h: {% w& W& \7 r! [

  255. 4 {7 h/ X1 V( S9 _9 q2 ~1 o
  256. exists
    # ~. P. ^# F# @* _' Z! B  x
  257. 判断key是否存在。存在 true 不在 false/ k" t( k9 j& P0 N3 X& k
  258. 8 o" K) i) @+ v2 O1 r; M. }: U; n7 x9 m
  259. incr, incrBy
    % ]: i+ e" y8 J% C
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    8 M" {3 }4 p! b/ H6 a/ O( e6 X" A
  261. $redis->incr('key1');/ J& h4 w# y* |9 e" w
  262. $redis->incrBy('key1', 10);
    7 X* C/ L" j( z" |4 s$ c

  263. # A3 {& X6 k& O% m
  264. decr, decrBy5 x9 F1 g( o) W0 d
  265. 做减法,使用方法同incr
    # X/ X- {; o1 u/ o& S7 E+ e# }( p

  266. & ?7 X) {9 j* {2 R5 I* P$ m
  267. getMultiple, u3 Q" a) k2 L* `% L0 e
  268. 传参4 |& G, h: G; O8 ~' f0 X
  269. 由key组成的数组+ {" w. r$ k7 U2 o% l, d! L  v
  270. 返回参数$ D0 L9 P& H0 H
  271. 如果key存在返回value,不存在返回false4 I3 t" i* W$ M
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    6 m* f3 v2 g. D
  273. $redis->lRem('key1', 'A', 2);
    + Y, W# Y8 {# X. ]
  274. $redis->lRange('key1', 0, -1);7 C" K! A1 b3 D( P

  275. 5 f5 m, X' x  h/ m, Y, u7 a: ~8 g3 R6 _
  276. list相关操作
    ( ?& L+ ~, s/ t5 M7 C6 {! x8 h
  277. lPush
    , K. o  r) i# J; ~5 [- z
  278. $redis->lPush(key, value);7 }4 u6 g8 E- i! A
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    8 L8 T9 c- m" T0 G& [# }

  280. # _; c  e; v1 ]( y& F! f7 R
  281. rPush% o- e$ z- a$ B$ X7 Y9 O% |
  282. $redis->rPush(key, value);
    . c; a( L; y1 g: l) J: s' u
  283. 在名称为key的list右边(尾)添加一个值为value的 元素, \! g: e! y9 b) y0 I
  284. ( @+ i/ y1 Z- A2 v! k% q9 q
  285. lPushx/rPushx
    2 {0 x" v: m5 z
  286. $redis->lPushx(key, value);4 [+ g8 _$ g1 q" T2 j! B  s
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加% c' Q( {( e) q6 ]# {* H  v
  288. 7 K5 |! x4 M2 f) R
  289. lPop/rPop
    1 o! P& ]3 N! L
  290. $redis->lPop('key');7 G2 ]. |1 I, W& a' O
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    * n- J0 b/ I0 N( `# J: _) s
  292. % p7 |) R# ]$ A7 j# I. c# N1 a, B) K
  293. blPop/brPop* a8 c/ W- ]9 \3 ~9 E( P7 E7 q
  294. $redis->blPop('key1', 'key2', 10);
    1 P9 o7 E% {& I: C( N
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    * b6 v9 ]( |5 y# Z7 M) y" Z6 [4 p
  296. 2 z; w4 E1 M& S7 h
  297. lSize
    3 j" u) ?9 g) V5 D
  298. $redis->lSize('key');5 v0 J# E$ I  G( y- f
  299. 返回名称为key的list有多少个元素
    5 E. g8 k$ g) Z. H/ O5 `
  300. & l/ a( m% V/ m* B: ^
  301. lIndex, lGet
    & X% m5 ^+ i5 f- h  L2 h8 M0 ^
  302. $redis->lGet('key', 0);
    . R' m/ C& y+ G
  303. 返回名称为key的list中index位置的元素
    - |/ o% h. x0 o

  304. ; Q9 o. v; ~7 V) {! @' z; a! i) N
  305. lSet
      |7 t( P3 w  C! ^4 W) h" T+ I" e
  306. $redis->lSet('key', 0, 'X');0 W6 K+ x! q" U( N
  307. 给名称为key的list中index位置的元素赋值为value5 M: k# _' R0 [( p' r! M

  308. 6 ~0 l: u9 x. Y9 G# u' f3 p
  309. lRange, lGetRange& v) G" {# F& @; O
  310. $redis->lRange('key1', 0, -1);. C, `; q- {& m: s) @: N; d% V$ ?
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    * `2 v, ]" x/ B( P; h. q0 v7 J
  312. ! G  i8 K1 a0 `: a1 n( Y; O$ {% E
  313. lTrim, listTrim
    5 s2 I6 X; ~3 k2 \: W
  314. $redis->lTrim('key', start, end);
    + F/ y7 j- {, X  x; z2 A4 g
  315. 截取名称为key的list,保留start至end之间的元素
    - F2 {9 |$ M# `) ?8 a

  316. * `4 c0 [! ^+ o) A1 ~% s5 e
  317. lRem, lRemove
    . M  C6 ]* r1 @' S
  318. $redis->lRem('key', 'A', 2);( k+ n; v  t0 k
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素0 ]! p5 S+ g/ q8 Y6 ^- I
  320. 7 D+ i# A! c: L5 Y: j# r/ f
  321. lInsert0 C$ s# R' l2 x. V3 j2 }
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ( A5 ]& E# u- {& i$ Q! i, R0 j+ U
  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');# h5 H7 j( {' D9 p8 F  ^
  324. $redis->lRange('key1', 0, -1);
    4 z) f7 z& D2 I4 T0 E; b$ U
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    : I/ _/ S" f: t1 T1 Y( v1 F; M& b5 o
  326. $redis->lRange('key1', 0, -1);* ?: r3 S! v  Z# Q- H- j
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');$ ^( z0 t! q0 y& U% M5 x% j7 ?
  328. . n" L7 Z6 u0 h& v7 ~* U2 P' v
  329. rpoplpush4 M9 @; E/ @- p1 K. P0 P
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    , H/ G( H  F$ ~
  331. $redis->delete('x', 'y');) Y8 j( p  r5 L# k1 I4 M( G2 R
  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'));% p# G/ a& v% D, S6 f
  333. var_dump($redis->lRange('x', 0, -1));. f  ]% C8 O' ~, v! F- r
  334. var_dump($redis->lRange('y', 0, -1));
    6 w' u$ ~( T' l9 [4 `- T9 M

  335. ( p9 z1 Q6 ]& B$ L: m
  336. string(3) "abc"
    ) I' A; K, l/ ~/ x: c$ {' `& X! j
  337. array(1) { [0]=> string(3) "def" } 6 @3 B0 B2 ~0 l/ P, {0 Y# @
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    5 z, ]1 c  i* U! k* w% d

  339. & D3 V! t8 o# [6 l+ j/ t3 q
  340. SET操作相关
    0 {9 `+ H1 y, j5 B! i6 z8 g
  341. sAdd
    2 s3 r. s1 @/ X( t( ^
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false6 k, X$ S7 V  U$ t: F1 J- F
  343. $redis->sAdd(key , value);
    # z1 \: F. V1 B/ ?. Y
  344. " F6 f/ p, Y" B
  345. sRem, sRemove
    % P- N; @3 h, i
  346. 删除名称为key的set中的元素value! V5 y9 {( |( Q3 G" R
  347. $redis->sAdd('key1' , 'set1');
    2 K9 {- @; d4 x+ s2 Z
  348. $redis->sAdd('key1' , 'set2');+ V5 p1 W3 M! X) Z7 c! P" L
  349. $redis->sAdd('key1' , 'set3');
    . D: g, H. x7 C- L2 J% _
  350. $redis->sRem('key1', 'set2');
    2 z( n# z% O* f: i) T/ p* C
  351. ' v0 {1 _. e1 s) d" `' A7 ~
  352. sMove: c; j" N1 Z, a8 J! q
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合' j" B2 P" U# [; y
  354. $redis->sMove(seckey, dstkey, value);
    ; I. K* \6 a6 b) m: u
  355. . `' [9 [: c3 N, g/ p! ?% b$ q
  356. sIsMember, sContains
    7 h+ `8 U. `( Z+ R
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    5 B9 l& h' d! v; v
  358. $redis->sIsMember(key, value);) w4 O1 X/ v: r  t; j

  359. * d8 [1 [; k; {$ v
  360. sCard, sSize
    0 c, {& S/ P4 S& [
  361. 返回名称为key的set的元素个数
    . i$ j( O- r) E( k8 z) W$ H: I
  362. & O- H/ Y3 c/ J; }' g
  363. sPop
    + y4 Z5 z7 w" R! @. Z$ G9 J+ _& C! Q
  364. 随机返回并删除名称为key的set中一个元素! P" R8 y2 F3 F4 x4 U
  365. 6 \& T$ S0 y, {7 o( d* m
  366. sRandMember
    + P: \+ @/ y! K
  367. 随机返回名称为key的set中一个元素,不删除
    + e! j: t% T  p5 h$ T' D

  368.   z6 C! e5 o# K
  369. sInter
    , Z7 {  L3 n8 \
  370. 求交集8 ^6 \) X$ ?; M
  371. % m. s5 m' K' x8 k/ U0 E
  372. sInterStore
    % C; v; }6 F  X4 \  o/ w% ~
  373. 求交集并将交集保存到output的集合- l2 `/ V  c7 D5 O4 Y/ L
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3'). `; j' _. F1 l2 G
  375. + A% H6 N; ?; O: ~  T) J
  376. sUnion
    2 v& B0 m8 b% W- \2 c' r5 G4 k; Q+ U6 x
  377. 求并集* K6 {) H8 Z4 X1 ]+ \! B) E3 T
  378. $redis->sUnion('s0', 's1', 's2');( R& ~) T' D1 B0 F3 i. @1 B
  379. s0,s1,s2 同时求并集! _- z8 t- _  K% P. i7 [# f

  380. " a" q( J8 a+ I
  381. sUnionStore5 e0 h$ T' _* v8 ]- i$ L% I
  382. 求并集并将并集保存到output的集合& W3 P- ?, a" Y5 t/ m9 l
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');+ P9 F. O5 \! c! X# x7 f' t% t
  384. ! s0 ^- g7 Q# j" Y1 M7 E. S
  385. sDiff
    / Q6 [8 p" d- [6 s& ~: B; I
  386. 求差集  o& g+ O" l' ^- A! q# N
  387. 8 }; L8 a3 o3 S- {
  388. sDiffStore
    & m+ j) J6 ~% V/ S1 ?' |
  389. 求差集并将差集保存到output的集合
    ) y/ L: G0 g/ r( Y$ z3 L
  390. ; g- k4 R3 |1 p# }$ v
  391. sMembers, sGetMembers- Q. X2 h" y) v7 K, r; d
  392. 返回名称为key的set的所有元素
    ( [% S% l. }% L/ O, w+ ^

  393. % V* B5 E7 C. r, U
  394. sort) P6 i! C! U/ X5 {6 Y6 J, E
  395. 排序,分页等- c5 c. u: A4 y# a$ d8 W) h( P
  396. 参数
    3 E  U8 n4 ~! ?  M
  397. 'by' => 'some_pattern_*',1 k) n: a8 m' C$ V; N
  398. 'limit' => array(0, 1),. W* `- j) n( |8 E1 ]6 i
  399. 'get' => 'some_other_pattern_*' or an array of patterns,2 w2 \+ }3 s+ F4 K" m
  400. 'sort' => 'asc' or 'desc',5 k& N) j( G/ [. i7 }8 a' [1 ~7 J
  401. 'alpha' => TRUE,
    8 G8 I' G& _: a4 _7 N9 b) S# s
  402. 'store' => 'external-key'
    * _* A7 F4 A2 A) i- Z
  403. 例子
    2 v2 x: i, q4 N5 `
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);0 ]) f2 S4 d7 ^
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    7 |: f7 [7 x3 B) T& W6 X! t  k
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    3 e  v  J2 e9 o% j) N4 |
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)53 R; i2 I8 F% V) ]7 R

  408. ; v. X' o0 D: y% z, N: d
  409. string命令8 g% s% p$ i% ?5 ?8 x$ S; W; m
  410. getSet
    6 X; G$ u1 H% p8 T2 ?+ M1 J; h
  411. 返回原来key中的值,并将value写入key: T& F# @$ `2 K/ |. U
  412. $redis->set('x', '42');
    , o; T1 m0 i4 L  M  Q, h7 P8 l
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    ; Y$ k2 _/ C  o$ m: l. w0 ]
  414. $newValue = $redis->get('x')' // return 'lol'
    - S7 x& [  d: ]* y/ _
  415. % Z, `0 i% d5 h# E( J0 {
  416. append
    ( A4 w3 R- t9 x
  417. string,名称为key的string的值在后面加上value/ D3 M: x6 X2 ?( g- ]8 B" D5 f
  418. $redis->set('key', 'value1');2 n, D6 d7 r7 l3 u5 l
  419. $redis->append('key', 'value2');7 ~5 n0 H2 Q: T' I3 K
  420. $redis->get('key');
    " G& O$ f" K- U! a% N: {
  421. . d; u# |( N7 H( X" P" ^3 j( U: i
  422. getRange (方法不存在)
    ( E& Y; z: k; C& p3 H
  423. 返回名称为key的string中start至end之间的字符9 F; Z4 Q% c: p/ t; |2 u
  424. $redis->set('key', 'string value');
    ' v  _. E' l8 J1 }$ S1 n- Y
  425. $redis->getRange('key', 0, 5);& O5 e" l+ ]! b% r# F% o2 c9 k
  426. $redis->getRange('key', -5, -1);
    3 M- M, @5 r2 V* X) V6 U' |( S$ Y
  427. 2 o3 C- q  x4 {! a, A
  428. setRange (方法不存在)' W1 x& t+ n( y% _# \9 n
  429. 改变key的string中start至end之间的字符为value
      k' S5 s5 E* C
  430. $redis->set('key', 'Hello world');0 `* s7 i" \: S3 _7 S+ J
  431. $redis->setRange('key', 6, "redis");1 _2 q, [4 d, V( j; Z) e
  432. $redis->get('key');- R' Z8 C4 I( _6 O; E; R( ]# S

  433. 9 {4 ~; w7 i0 M' S
  434. strlen
    # p0 Q5 O6 u% F
  435. 得到key的string的长度4 _* d+ C0 o9 i! W) D% S+ w0 Y+ C: V
  436. $redis->strlen('key');
    ! Q" Z- i; a+ v% u: Q: S8 ]! |
  437. ' g8 }0 r5 \6 D  j
  438. getBit/setBit
    - J$ p2 n" {! `7 l$ D
  439. 返回2进制信息
      _  @+ Z; Y- A" P0 J" D3 i

  440. % e3 o+ w# u% D7 b
  441. zset(sorted set)操作相关
      x: ^6 `, y$ z$ I! o7 W9 l
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。- W2 P. ]6 x6 ?! M* A
  443. $redis->zAdd('key', 1, 'val1');
    & a" I$ Z8 r0 w/ j  n8 _
  444. $redis->zAdd('key', 0, 'val0');$ y- L/ w0 c; a8 G
  445. $redis->zAdd('key', 5, 'val5');' J& c7 \0 I7 h9 n- P- Z  r% `+ k; J
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)/ \! S6 G4 C  q) \
  447. , [: a1 \9 k7 Z2 L- _
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素& @" ^& d4 E( S0 ~4 h
  449. $redis->zAdd('key1', 0, 'val0');. F) J& s9 H( I5 A% K8 M! B- H$ X
  450. $redis->zAdd('key1', 2, 'val2');
    & v  \; C7 o( {
  451. $redis->zAdd('key1', 10, 'val10');
    4 j  j$ e7 `; P2 E- P( X
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);/ o3 s1 A+ e2 n/ k! F- z/ f

  453. * o. J- ~0 D8 Y  H) u1 L& k
  454. zDelete, zRem
    / a9 {6 ]. }: a
  455. zRem(key, member) :删除名称为key的zset中的元素member7 ]" k) ~6 q2 |
  456. $redis->zAdd('key', 0, 'val0');
    - ^$ G0 C: k& B( V  j& r# W/ @4 n
  457. $redis->zAdd('key', 2, 'val2');
    5 K6 B% f! G9 {. Z
  458. $redis->zAdd('key', 10, 'val10');
    & L, ?! A. Z9 O
  459. $redis->zDelete('key', 'val2');6 n5 d4 g& o9 S5 J; \
  460. $redis->zRange('key', 0, -1);
    , l, H" w5 Y  o, u- [

  461. # w; v; @3 j8 X4 C
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    $ b- Q+ _% _$ a/ S$ x5 J
  463. $redis->zAdd('key', 0, 'val0');
    3 E3 v- h5 s1 v& y. K2 d
  464. $redis->zAdd('key', 2, 'val2');; z; `6 i. a6 v9 e1 E
  465. $redis->zAdd('key', 10, 'val10');
    " V4 Q  Q6 z- Q9 M! J9 E' X3 B
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    # W. n$ @- H8 H, x

  467. 1 h) G1 j& }0 q) l! r1 c
  468. zRangeByScore, zRevRangeByScore" q$ p) }0 x) q* O  Q  Q
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));4 J! r  i: ^2 n/ E
  470. 返回名称为key的zset中score >= star且score <= end的所有元素$ \) T: Z" a) X0 r7 \! e0 ^

  471. ! ^* H1 D* s2 n/ z/ @: x
  472. zCount% n% p; L" k: d5 m0 Z
  473. $redis->zCount(key, star, end);
    - H. T' d1 L3 ^4 b2 t# M3 V
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数5 ]2 d/ }& K" Q5 q: ?+ [8 o

  475. 7 d  }$ @5 s+ i. o
  476. zRemRangeByScore, zDeleteRangeByScore# M8 M1 c) n: V9 \
  477. $redis->zRemRangeByScore('key', star, end);  I% N5 J9 X' z3 ?8 ^' m# K
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    % h- {$ Y. k7 r! ]+ Q

  479. 1 n2 o- ~& A& @
  480. zSize, zCard
    ; k: J; c" ^: s7 y4 i
  481. 返回名称为key的zset的所有元素的个数
    5 K  [! U8 ^5 u% h& l, |: u
  482. : _: g' l  q9 t  C* L" x
  483. zScore
      `# q% ]1 H' k  W
  484. $redis->zScore(key, val2);1 y4 A0 D. w$ A! C5 j! U' U, \
  485. 返回名称为key的zset中元素val2的score
    : D: U& ^8 v% @5 k# j
  486. + g' ^& j$ w9 E7 }( ?* W. p
  487. zRank, zRevRank# M3 J( x4 e! N5 j4 u- `
  488. $redis->zRevRank(key, val);
    9 T2 p5 {, q0 O5 g  ~$ @
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序* [/ Z' H2 z" Z1 F6 g. w

  490. / e, j) z, K. l! {: ^. R& y. c
  491. zIncrBy
    ; M; X& t& s8 s
  492. $redis->zIncrBy('key', increment, 'member');6 q" x2 r6 Y' W" n
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment+ p: M) f$ m( d3 d

  494. 9 ~, {" S, |" v3 I& E& C% ~$ Z
  495. zUnion/zInter
    ( I7 e$ P( i; u
  496. 参数
    5 j: f# ~5 I  H# R: R; z( L
  497. keyOutput3 H1 v, g! L8 ~5 x- M% U7 T- w
  498. arrayZSetKeys
    . @/ R4 z. a9 `/ p' f7 p
  499. arrayWeights$ ]2 c3 y  D& E, X4 s
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    % i/ Z* `0 l1 {9 g, Z9 Z4 Z# G
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    * a. f$ o( y! q% |  g# B2 U
复制代码
/ {# I3 i# C# A( y& y8 Z

+ v+ K' `5 K5 v* R9 U/ r# j4 Z: X* \3 D( L) r4 s+ b

  Z' v7 @1 H' n2 K/ P; X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); * O. z- x8 C& E
  2. //连接redis服务器 ! c* \7 U! j5 e
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-3 12:19 , Processed in 0.139394 second(s), 18 queries .

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