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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    % R8 Q, m# O& z& u( j& W7 N
  2. $redis = new Redis();  
    $ G# K' O- Z  @1 S. I
  3. $redis->connect('127.0.0.1', 6379);//serverip port1 Z' z+ k2 {, u4 m/ H2 ~$ p- Y! `! V
  4. $redis->auth('mypassword');//my redis password ) E" C, m8 X1 {! [) o* s
  5. $redis ->set( "test" , "Hello World");  
    % T% A9 ~) C! j% m& L
  6. echo $redis ->get( "test");
    , }# ?" i2 }2 @, d  p, p
复制代码
php操作redis函数封装
  1. /**
    % w7 o- [3 D! B, q" _
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    1 l/ j/ T4 `% @3 p* {8 p7 Q  H
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    6 f* b: h, W  D5 ^" ?
  4. */
    - i! M- b" N; P+ Q3 h7 E" T
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){6 o- |$ D! L2 N2 s  b
  6.     if(!$key||!$value) return false;
    * w# S. c  W; N- s) D' o8 s* m
  7.     $host = $host?$host:getenv('REDIS_HOST');
    1 C2 r4 x9 s2 z- Y
  8.     $port = $port?$port:getenv('REDIS_PORT');
    % `8 Z) w( I% v! @
  9.     $redis = new Redis();
    - T: H; u: q, g7 O1 ~0 D! q
  10.     $redis->connect($host, $port);! B! i. M4 q( q
  11.     $value = is_array($value)?json_encode($value):$value;
    % j3 F% K# T1 _
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);0 H9 A. C! C# w3 r7 z" E
  13. }% V9 Z* u" e% Y. l! z
  14. /**
    ( |2 [& K8 }! o1 ~1 i3 g# z
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi# w1 J- f+ a1 @3 b5 X+ [, G. |7 U
  16. */
    % y5 n8 K1 q3 h
  17. function RedisGet($key,$host='',$port=''){6 t( f3 k5 w- P
  18.     $redis = new Redis();
    & X' f: b0 G- b  h( X, w- r
  19.     $host = $host?$host:getenv('REDIS_HOST');/ |5 j6 g+ }8 Z/ K* {
  20.     $port = $port?$port:getenv('REDIS_PORT');
    1 l$ f' L- S  r9 Q$ x
  21.     $redis->connect($host, $port);
      ]. h9 ]0 Y! V( H
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    ; Y% W# Y: A  r8 h, O2 y4 l
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    # [3 N1 u$ k  K
  24. }) C7 Y9 W" T% l( V8 T$ E5 j2 M5 _
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了5 `3 M' }. }8 r8 \  q
  1. setex 带生存时间的写入值
    # k3 e( L; q; o1 V# K) H
  2. $redis->setex('key', 3600, 'value');   S/ C9 h/ h) T- ]3 V) u  D
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1) Q' \2 u  f) R( S! j! U
  4. $redis->setnx('key', 'value');5 y) q9 o  K& w# |! k" h
  5. 返回已经删除key  W! d( |& }7 H# p% B! _5 F
  6. $redis->delete('key1'); 成功返回1失败返回0
    - {9 w2 E( l6 Y, a8 k: L# o
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    , E# L+ \+ ~) J& m7 u
  8. 查询生存时间
    ' O) Q2 m# g' m3 q( }
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    8 `1 J4 P3 J. S9 o$ i8 q, T
  10. 同时给多个key赋值,同时设置key0和key12 j* M1 G$ b0 ]5 ~
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));& Y. m, `3 X* C! W, M* |3 g7 b
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    , E, y  r3 s- s- O0 d% [' A7 _& t) i
  13. $redis->incr('key1');
    + a' n" k+ b7 d( Q3 m( b, F
  14. $redis->incrBy('key1', 10);
    0 }$ |8 Y) m1 [( `0 H
  15. 减法跟加法一样
    ! J, C# z  g- M9 Q+ M) ]
  16. $redis->decr("key1"); 减少14 x# E! [* J* P+ m! v
  17. $redis->decrBy("key1",5) 减少5
    $ |1 B- d' }1 k, r
  18. # S) F' y; a1 k
  19. list相关操作,连表操作
    2 w: v) l9 w0 w) h0 L0 l
  20. lPush
    & b9 Y! L' ?- [5 y* ^# d
  21. $redis->lPush("list", "888");2 a5 s/ n; [" v/ A1 T
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    3 w% r5 J2 I8 Z+ c) N. H: {
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式5 n) |8 X: b- p7 t
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    ( U8 Y3 T5 `5 ]- J, t
  25. lPushx/rPushx
    1 q; u" Y7 V0 C/ A7 u
  26. $redis->lPushx(key, value);7 M0 i/ a* M! Q
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    : L) V" A9 z+ W9 T

  28. 0 N5 r5 d9 R9 u/ h6 y
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key- I, e3 r1 T! ]: ^4 _
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key% V8 B* b6 J9 a
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1  m5 q# A8 t) L) x4 k# S" v& {
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序, |2 A2 k* p+ w3 H6 i
  33. sadd s1 zhangsan
    ! B( y' H& z) X
  34. sadd s1 lisi# z3 O! a& d- A9 m6 B0 M
  35. sadd s1 wangwu
    # t3 X9 z- d1 u5 N/ V
  36. sadd t1 yangxingyi# i; Y  b9 Y" r" ?& a, k" N
  37. sadd t1 lilei
    # ^1 Q' h' a9 d, ~2 C( H
  38. sadd t1 zhangsan3 D6 Z$ T4 y# @8 c' R
  39. smembers s1 s1的所有集合内容
    ; u, o0 r  x' V
  40. sdiff s1 t1 s1有的,t1没有的,差集
    5 @6 M: U3 l% I' s6 R7 _, B9 Z, [2 y( Z
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式6 K( @7 g( t6 x
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    $ h; v4 m1 D- T% ~+ i! P
  43. spop抽奖场景,返回集合里面随机的数
    8 Z) ^& D9 u* x7 r; k4 [: n
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    6 N# d9 j, X# }/ s3 @
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数1 ]; D, \& T6 Y1 u: O  [( g
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的: D) D/ q+ M, C
  47. 随机返回集合里面的一个元素,但不删除,重复中奖1 Q. i1 C, A* S1 [+ B  ~
  48. $i = $redis->srandmember('s1');echo $i;
    * j" w6 {* L. r
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
      P: Z5 N2 \$ c+ q6 t2 W
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false2 l) R4 v, a- ]+ G( Q% A. S

  51. ' m& S) R$ k( ?2 j  u, F; P! `
  52. zadd key 2 value 有序集合
    / E5 ^& o7 I; p1 D, n( e
  53. zadd y1 1 zhangsan;
    - X" h# O5 U7 i4 R& g
  54. zadd y1 3 lisi;
    + Y& J( }2 a) ?) f* O$ `
  55. zadd y1 2 wangwu;
    ! L+ b! f# d& Z
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    " M/ e2 N1 o" f/ V" G+ S! x
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);" q0 T9 a( l. p
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键! @/ J  Y/ E9 i
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    % m! Z* A: h' H/ S; o- O
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的3 ~# N: _* s* i- I% K, Z. ?' p
  61. 无序就scard,有序就zcard,有z没有s; {6 ?. L1 o9 |( j  [( v7 l
  62. sInterStore7 n9 y6 _8 `  D! \; T* O* ?9 {2 I
  63. 求交集并将交集保存到output的集合7 g6 X3 w% a+ D
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    : J- Y' ^8 Q; X; P0 q
  65. # @9 S  N# ?2 T$ \2 n' Y' k
  66. Hash操作
    : `( F: Z" `8 b1 P+ _
  67. hSet2 U' C- e! l7 }; K; ~
  68. $redis->hSet('h', 'key1', 'hello');
    # N' K* K, ?' T6 W$ C3 L
  69. 向名称为h的hash中添加元素key1—>hello# V3 ~% x2 T( ^/ Z

  70. / ^0 }) q: r9 g3 S' V% K' ]
  71. hGet0 P* o- E  a' s/ S, o- z/ g
  72. $redis->hGet('h', 'key1');
    - t! r, }& E5 I4 B- J. c! M, p
  73. 返回名称为h的hash中key1对应的value(hello)
    7 q9 T6 l) F1 X" v! b/ N- i, g
  74. ! j9 ]- R  x0 m$ K' V" E1 [7 H' ^1 b
  75. hLen
    0 b2 s& V* s3 q6 h9 w1 z. ~, I! |
  76. $redis->hLen('h');2 P# M' ]. q( c
  77. 返回名称为h的hash中元素个数
    / F  D  l, V% t4 ?) ]+ w& G$ g; m

  78. 4 O- ~# \; d$ j
  79. hDel
    * ?2 x/ u3 H" i' R. Z$ G8 }
  80. $redis->hDel('h', 'key1');
    1 T7 [6 f4 ?' a/ R  L3 g
  81. 删除名称为h的hash中键为key1的域$ H; p( y$ H' O2 w9 J, Q

  82. ( R# F+ w( a+ Y; Q; R( R, q/ [
  83. hKeys
    1 @$ t) x) ~2 T$ A" _7 {/ l
  84. $redis->hKeys('h');
    ' `9 m% X! y5 r1 I
  85. 返回名称为key的hash中所有键
    9 W. H! c/ @: U  |
  86. 5 z0 o" ^& }8 g- m; n, n  q
  87. hVals% d5 J) M+ m4 \: b
  88. $redis->hVals('h')
    % T5 n& p& h, {3 n: |3 n  C9 c/ k. N
  89. 返回名称为h的hash中所有键对应的value
    - m$ q9 c- A7 p, ~, l

  90. 0 I5 d+ n7 t0 l! x9 t
  91. hGetAll" h8 n3 {0 y8 J% q6 v5 x7 N9 k
  92. $redis->hGetAll('h');
    & G: ~4 c1 ?- W4 n0 \  i/ b
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    $ G* u# ?/ f( |; f
  94. : \* _! }* [" O6 O: X3 ?% {
  95. hExists0 }" l- n+ o1 V1 i" Z
  96. $redis->hExists('h', 'a');( e2 C3 t  ?6 |2 A* ^: h% h
  97. 名称为h的hash中是否存在键名字为a的域( C8 e- f' R+ l6 }

  98. ' s: M5 L5 O; r) H
  99. hIncrBy1 R4 y! P$ t$ t  p5 V
  100. $redis->hIncrBy('h', 'x', 2);# W3 P& J% F2 T* _
  101. 将名称为h的hash中x的value增加27 s. D! }8 w- c: S) t
  102.   ^3 A/ V& {1 E; `$ b; {
  103. hMset5 N0 x9 P$ u7 l1 |, p
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
      `" m4 Z( }: G( k) B5 V- v, w! q
  105. 向名称为key的hash中批量添加元素0 O2 X) r! a! T% B* \0 Y3 G- K

  106. * M( l' V* O% b9 C0 a
  107. hMGet
    - P3 x, S- K3 {  e, q  D
  108. $redis->hmGet('h', array('field1', 'field2'));
    5 S4 D! S$ w# D* F; Y* U
  109. 返回名称为h的hash中field1,field2对应的value7 Z* ^" c; f5 ?. @/ H
  110. 4 C! \1 L# Y) M# g* n" ^( V/ L/ j& ~1 D
  111. redis 操作相关
    1 K& O( g/ L- b6 t2 A& {3 Y6 M0 @4 r
  112. flushDB
    3 P# \/ c; y8 x% a) B7 ^
  113. 清空当前数据库2 h/ D+ q$ q1 I1 x% M3 w& S+ j" ]5 O

  114. * C  N, G' k: r$ o% A' k- X
  115. flushAll
    1 u0 {; r' ]* O0 @4 x4 v
  116. 清空所有数据库2 H- H9 D: l$ |" W* a" f9 s, X6 U
  117. : L4 R, }% s0 {3 p; O/ u
  118. randomKey- l& B9 T* l& n5 ]2 Z& D" Q$ B
  119. 随机返回key空间的一个key
    # b8 K) U! v- m( P: v
  120. $key = $redis->randomKey();0 R; |5 x. C) Z( p2 q
  121. & u- Q% @' t" l6 s
  122. select' s5 o: Q; C0 }/ e* z
  123. 选择一个数据库
    / p/ l, z. k; a$ t
  124. move  ^4 |6 ^7 v; E5 s' N
  125. 转移一个key到另外一个数据库
    * s6 X5 S) X- n$ F/ V; J" W& r
  126. $redis->select(0); // switch to DB 0  I" K6 p7 W- L2 G3 H
  127. $redis->set('x', '42'); // write 42 to x
    2 w& D3 k( N$ S7 U) x  G; i, D
  128. $redis->move('x', 1); // move to DB 1
    ( @# \; C) {( i/ D4 x, S# q4 \
  129. $redis->select(1); // switch to DB 1
    - f* {' W# L3 ?/ m; t( V
  130. $redis->get('x'); // will return 42; ?1 {' e9 K7 e8 l7 j
  131. 9 R  Y% z2 w9 ^8 p
  132. rename, renameKey
    - r* P6 _  T% ?
  133. 给key重命名1 }# I6 e, p+ \
  134. $redis->set('x', '42');, B7 S" `' ^& n+ E
  135. $redis->rename('x', 'y');4 \9 U4 i- j0 w& Z. ?; f" A. ~2 U* Z
  136. $redis->get('y'); // → 42
    : e% C/ Z5 c- z8 i3 K
  137. $redis->get('x'); // → `FALSE`
    ' h( W! M6 [6 P7 h- w7 M
  138. : S4 a# d, L2 b) c8 E
  139. renameNx9 t- m) I# i0 v& a& }. I* J7 g
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功7 q- e& b8 L  f9 G+ @

  141. , I" r+ _# T6 p+ M3 ?
  142. setTimeout, expire' J$ P, R5 D; T$ X) z' n. H8 e+ N8 w
  143. 设定一个key的活动时间(s)6 I' U- K4 }1 m$ ]8 p( J
  144. $redis->setTimeout('x', 3);9 s- n  w4 n4 o2 B8 A% t
  145. 1 o. A5 b6 V8 Y6 w' y* r# z0 e8 k. v
  146. expireAt# D& ^/ |) A8 Y' ]7 W
  147. key存活到一个unix时间戳时间: y; l* w. f6 c8 O4 R
  148. $redis->expireAt('x', time() + 3);
    & @( Z3 K% A. ]2 C* i

  149. $ G# Z- X1 [/ X" o/ [* |
  150. keys, getKeys
    9 m  g: n4 n1 l5 |; N% S
  151. 返回满足给定pattern的所有key; T* N0 j& L% O0 G* x" ^. q# J
  152. $keyWithUserPrefix = $redis->keys('user*');
    , r5 ]! I, ~! P  ~- q
  153. 7 c. Q. `: a, v0 ~
  154. dbSize
    0 O/ O# m6 C% P$ l
  155. 查看现在数据库有多少key
    ! `* V9 S* X0 Z# q( ?8 ^
  156. $count = $redis->dbSize();
    ! w. _/ x2 E: ~* t9 o. w, M
  157.   H; C. c% a; P4 f, D( F
  158. auth7 p3 W' N% ?5 g' J1 z# g& e
  159. 密码认证$ l& ^- M/ R* r) W
  160. $redis->auth('foobared');8 [# `; n1 ^8 f  Q% B) _1 m# X

  161. . r7 y+ i% G! O% J
  162. bgrewriteaof8 R- Q( ?! M9 C. [& }& p
  163. 使用aof来进行数据库持久化' l2 `" h0 ~! J4 o+ {. s7 d  [
  164. $redis->bgrewriteaof();/ Z5 ~- b* u7 m' W

  165. + F4 P3 }/ j& g, D. Z
  166. slaveof
    $ r; _% n/ p$ }
  167. 选择从服务器
    5 g* m: Q5 o; X9 O- U1 o0 Q
  168. $redis->slaveof('10.0.1.7', 6379);3 F  H2 S( `' i8 H1 _
  169. ( i. H% u) K- D9 v2 a; I
  170. save" g6 X2 }# p$ Y! C9 s
  171. 将数据同步保存到磁盘
    + a7 U- v& a+ N4 h- G! S
  172. 7 K  n% J4 Y; J, n1 p3 A
  173. bgsave% l; Y; d2 v0 L. m! X6 T0 j* M0 @
  174. 将数据异步保存到磁盘* j2 f9 p4 s" X1 r0 z  I9 R/ x0 |

  175. 7 p9 [5 {2 R  ~6 y
  176. lastSave: A* `7 n; I7 `4 |: r$ v6 F1 `
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    9 B0 ?8 L! f1 a0 j1 T6 Y
  178. 4 z) }* L/ o  m  @0 d: U, C# b6 M
  179. info
    ; f' G+ u% H4 G7 N7 P
  180. 返回redis的版本信息等详情
    . p4 H4 R7 `7 s: ]

  181. - Q$ B: V  m+ g  Z8 g1 j
  182. Redis::__construct构造函数
    ) o0 P! l! w2 f) v8 R% k! ~
  183. $redis = new Redis();1 s2 F+ ?5 u% {2 c& d: ~# Q

  184. 0 s  T) e! k* ^$ Q$ N, ^
  185. connect, open 链接redis服务
    + _) v3 g3 K9 d& L* e0 d
  186. 参数9 f% _* |5 y6 `& }: h  t
  187. host: string,服务地址7 D& }# p4 Y; g* [
  188. port: int,端口号4 r7 ?8 q! F: T2 [- i' W
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)' E0 C* h4 Q6 ?. s1 T$ l  v
  190. 注: 在redis.conf中也有时间,默认为3006 Z8 Y7 [3 L! p! ?% p" Y

  191. * b! |0 E6 K6 n% T. P/ C: _' \! t
  192. pconnect, popen 不会主动关闭的链接3 v& X' Q) _& l) H
  193. 参考上面  n  K' j5 j  F* m
  194. , f2 g2 t( }' @/ I5 c
  195. setOption 设置redis模式7 Q' c" {, B  _! q+ O& O

  196. 4 _! b6 h& O# R8 r  \) W
  197. getOption 查看redis设置的模式- L# f9 v0 Y: j, P1 [

  198. 4 V0 r2 a2 l$ z: p- H
  199. ping 查看连接状态
    1 y8 W9 Q4 A" {
  200. 2 k: Z1 m/ i5 l
  201. get 得到某个key的值(string值)+ f, s- b! M" U" H! z5 P# M( V. O
  202. 如果该key不存在,return false8 Q5 K1 y; l/ n( S: s8 v7 f

  203.   C& P* i: u" D* a( C4 @) i
  204. set 写入key 和 value(string值)
    % A3 w/ h, R- z; ]) b& @4 x
  205. 如果写入成功,return ture
    0 A) P- z6 E& g% x

  206. & P$ S! C: z3 E. Q2 ^: [% X; J
  207. setex 带生存时间的写入值8 c6 ^9 y4 I  U' C, L) I/ r
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    + L  U' T5 n3 W8 w% ]; }2 a+ k, n
  209. ; D" V# q; M. D9 o  J- m
  210. setnx 判断是否重复的,写入值( q- k  G1 G' W/ j& T9 v' L( A- u
  211. $redis->setnx('key', 'value');9 s2 d* W4 N/ ~- \; Q9 \( d) l
  212. $redis->setnx('key', 'value');
    . F9 N) z3 |2 p! \9 n! |+ C0 m
  213. 1 ^1 R  j7 O# r7 [1 N1 T( s
  214. delete  删除指定key的值
    2 O/ p+ D# C$ {0 H0 w
  215. 返回已经删除key的个数(长整数)
    . d% x' g9 B! _/ X$ H5 T: s
  216. $redis->delete('key1', 'key2');9 H' ]- n8 V- L5 W4 o3 `6 U
  217. $redis->delete(array('key3', 'key4', 'key5'));1 s& c3 G* l. n/ B5 o0 [
  218. ) ]$ k: ~0 q) |! V! @6 |
  219. ttl
    + ^& z2 Z8 d( z2 _& q/ h/ B2 {$ ?& h
  220. 得到一个key的生存时间! j1 x5 Y/ Q& o0 N( c8 m/ {

  221. ! b' ]; u& Y) e5 r2 S0 p2 ~
  222. persist
    / R) Q' e. ^6 t5 X
  223. 移除生存时间到期的key
    1 ?# f, H# n4 [/ O
  224. 如果key到期 true 如果不到期 false
    / k( x: h- r1 I" m
  225. 7 ?6 g$ r. g% y. S- ~- L# r
  226. mset (redis版本1.1以上才可以用)
    ; r8 L3 q" _# `& H3 Z2 W2 p, X' d$ _
  227. 同时给多个key赋值
    ( Y( z$ c" s* t% k1 Y
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    9 J1 j$ z: A- q  o! Z, S+ w
  229. 1 V/ F- S# C2 X
  230. ( C# D: c, Q0 R( o

  231. 9 ]* ~7 z( _9 s
  232. multi, exec, discard
    2 G. [0 N, c* v3 }. F" k
  233. 进入或者退出事务模式
    ( J; A6 A6 U( c' ?; e$ L; ?4 ~$ r
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI, w2 ]+ R5 M& Y8 U* Y, ?* G
  235. Redis::MULTI:将多个操作当成一个事务执行! `8 ~! [+ J  B' ~7 p& z7 k4 F
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证: U& }$ C! q; n' ~! Z
  237. discard:删除一个事务
    . W8 M, Z) g: H" S8 [/ s
  238. 返回值$ R# _. _$ {" E: S. F. J# R# Y1 k! X
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。5 u5 S5 N4 v' J
  240. 2 U5 t+ r: U# I) K
  241. watch, unwatch (代码测试后,不能达到所说的效果)0 G) b1 \( x* g! q
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    + |# R3 R5 ^) ?8 V" G7 T  D! n
  243. unwatch  取消被这个程序监测的所有key
    9 W9 Z1 y6 e. e
  244. 参数,一对key的列表- D7 _% H! M' G8 M! w: F+ e
  245. $redis->watch('x');
    ' X4 L7 I4 l7 @1 G3 r" P1 g+ @
  246. : J( ^0 y9 Q" S  a$ w, u+ _
  247. $ret = $redis->multi() ->incr('x') ->exec();
    8 `$ k: M0 N4 q8 W0 d' }
  248. " k! x; }7 q# w& F) c
  249. 8 l/ Q6 n" ^# s+ D5 A; V
  250. subscribe *
    , a+ ^4 K8 o5 K$ C
  251. 方法回调。注意,该方法可能在未来里发生改变
    % {( p. T; n" w1 m; c
  252. ) |4 }1 [6 v! g/ C5 L  M% l0 I
  253. publish *
    " R6 Y& f# g/ ?& }7 V4 R
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变; K: X: l( Y* X  b0 ~$ o- I5 k

  255. 0 Z. S( B+ F2 f( J9 h* f  o$ ^0 p
  256. exists- ]0 G+ M; w2 m( S
  257. 判断key是否存在。存在 true 不在 false
    5 |5 s  a; {! c$ y, ~% k
  258.   E, G6 V8 e6 `
  259. incr, incrBy4 e) f+ x2 [" h) w5 s
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    : k5 j" c# E1 ~! R( f
  261. $redis->incr('key1');
    ! E5 h; @* C4 [' n  E8 Y9 O: \0 q
  262. $redis->incrBy('key1', 10);
    5 `7 n# D9 p0 ?4 D" c7 |
  263. ' z% D- |" }( k
  264. decr, decrBy
    * ~+ q9 Z3 L$ E  m
  265. 做减法,使用方法同incr
    6 \/ \9 B" a6 j" l# L/ O) W  ~4 h
  266. % G- R9 N% [- ?$ F% X, t
  267. getMultiple$ d4 B  k& I! w+ T5 b0 z3 h
  268. 传参( c0 o! [/ O, n0 s, ~6 l4 g8 N$ V
  269. 由key组成的数组% F( {! Z2 n5 |# K$ d
  270. 返回参数
    * H) ]3 \( u5 j/ j4 I) i
  271. 如果key存在返回value,不存在返回false. g9 `( |% d- `
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));! F" N0 X: Z1 L) \& @
  273. $redis->lRem('key1', 'A', 2);+ \* Z9 `( l- Q" q# |
  274. $redis->lRange('key1', 0, -1);' P5 y2 p/ @$ r3 \  t8 \+ _
  275. 7 y- n# C! ]/ G4 W, m4 ^8 l- X
  276. list相关操作% s2 i. r/ b( ~3 `4 `% l3 X
  277. lPush
    " I3 M& p+ n8 ?5 v3 j4 [9 I2 `
  278. $redis->lPush(key, value);# l. ?6 L$ p& ]9 d0 \0 n
  279. 在名称为key的list左边(头)添加一个值为value的 元素/ W# N  l5 q* j% Q- S, v

  280. 7 ~2 j# l* r* \/ {9 @
  281. rPush6 R8 j+ D4 J' u) x1 a
  282. $redis->rPush(key, value);6 x& K6 M* E. A* C
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    * |) }4 w" X* g9 F& l7 ]/ d( f
  284. 5 m- S  z) Y& g5 u2 u* b& V
  285. lPushx/rPushx4 M1 b; M* V6 Y. Z) {$ n
  286. $redis->lPushx(key, value);
    ' {6 X! u9 _: f, T7 B
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加, L8 ?0 \3 W  H/ R" i, }: M1 K$ B
  288. 7 ?: L7 L2 M7 ]/ y+ E
  289. lPop/rPop
    ! O4 U. L$ A0 k+ q& |  Z4 ^* [
  290. $redis->lPop('key');
    3 I+ J. y% ^! t# ]+ ?7 j
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    : l( `+ `6 p/ N% h3 L5 A- E2 A
  292. 6 N1 Z# u8 a% \$ c  _: T
  293. blPop/brPop( t, p) g7 _- T$ y; K. G! K
  294. $redis->blPop('key1', 'key2', 10);
    9 q9 u8 @6 g. C
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作1 a" J+ R4 w3 S* P6 n5 O9 ^4 z

  296. ; K# M6 p4 i( g9 Y* w
  297. lSize7 r7 `& \# Q, f5 T) [0 o, n
  298. $redis->lSize('key');( @' c! d( E3 P4 n
  299. 返回名称为key的list有多少个元素3 A9 `: _/ P& ?0 L; b# R# D* L
  300. ; Z$ }0 S. D% M( R1 k1 I# F
  301. lIndex, lGet3 h% P0 n) n' A; v/ f5 }! d
  302. $redis->lGet('key', 0);3 f# V5 l/ t1 |3 M: s5 H0 L
  303. 返回名称为key的list中index位置的元素5 ]1 j: N& U( k; J9 ^9 v9 E
  304. + Q& q8 u2 |( J
  305. lSet
    & N9 c* c1 W$ ?5 b( h
  306. $redis->lSet('key', 0, 'X');
    + K, @" k' p2 M, ~/ `
  307. 给名称为key的list中index位置的元素赋值为value3 w& d0 _. L$ \
  308. / X/ j$ v2 U* X, k
  309. lRange, lGetRange
    ) h+ B7 @' d& d( K6 K
  310. $redis->lRange('key1', 0, -1);
    8 a8 F, U& o& q+ E1 T' N
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有). {+ R2 G' D& p$ @
  312. ' b, M0 C) x2 M! k! T
  313. lTrim, listTrim
    2 O2 @% B& u1 @* M; ]5 m' Y
  314. $redis->lTrim('key', start, end);/ u4 H8 a3 P. h: @8 }  {
  315. 截取名称为key的list,保留start至end之间的元素
    - n6 f) m+ R7 P
  316. & M, o2 V7 K4 G" X6 s, |
  317. lRem, lRemove
    7 g3 u- Q& R, u# S3 ~+ N7 e$ U
  318. $redis->lRem('key', 'A', 2);
    % B' i2 b  Q7 s2 @& E# z) Y
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素+ x! W3 I1 R0 ?5 `

  320. ) e4 K! U- Z: f6 C, w- x7 N; S& L0 o
  321. lInsert
    ' I( r+ o- A) Z2 H0 o
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    . L2 G) D& d; i8 T5 Z1 R, h
  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');9 @- ]2 _4 K% L0 P" v0 [
  324. $redis->lRange('key1', 0, -1);
    # _( q! f* d' i9 c" O
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');4 E: m6 j  [3 U6 Z1 w
  326. $redis->lRange('key1', 0, -1);
    / A$ L3 f, g% o4 Y+ S9 Q0 d* j4 |' E
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    2 c! |3 h5 {2 _! L  Q1 r

  328. 9 e1 _) {  K7 r: M
  329. rpoplpush
    : U1 I: w7 O& W  r/ w# l& Z
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部. M  I9 A/ k8 C* M/ l1 I
  331. $redis->delete('x', 'y');
    % Y7 g% I, p+ p9 h
  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'));
    . e# G" D# [- r) W
  333. var_dump($redis->lRange('x', 0, -1));
    * A7 m+ y+ S* f. R* I0 q! t) M
  334. var_dump($redis->lRange('y', 0, -1));
    ) W6 ?9 Z/ ]! |

  335. 3 j  `4 U9 W% M5 h
  336. string(3) "abc" / M9 k. H  F7 X+ T, m7 b
  337. array(1) { [0]=> string(3) "def" }
    - J2 j8 ?* g. J1 r: r: [- `
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    5 b. |8 g! x& \2 E

  339.   L# v; G$ ?* d6 e* m* h, F
  340. SET操作相关
    0 U8 n4 H% h  R4 c2 ]% A, S
  341. sAdd
    + A8 e; K* I) O% s- F
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    ; Y' i: g5 R' A9 m( |6 P
  343. $redis->sAdd(key , value);
    8 G+ v$ L/ G( `: k( \* G
  344. 8 d) t& y$ c  P7 `
  345. sRem, sRemove
    9 Q$ j0 }; {3 ]' V3 Y! U* {
  346. 删除名称为key的set中的元素value
    " D! b6 h  Z; q& a/ z  |# ~
  347. $redis->sAdd('key1' , 'set1');* B+ u7 A# k% m* Z( C' E6 i8 Y3 X3 s
  348. $redis->sAdd('key1' , 'set2');1 |" Z* t( k" ?# U  B( w
  349. $redis->sAdd('key1' , 'set3');! I  W4 c# W! z9 a" `3 b/ @
  350. $redis->sRem('key1', 'set2');
    ; Y" k5 F6 H7 Y4 a/ L# a5 g( [9 X

  351. 5 }" H$ p" d" e
  352. sMove5 y/ ?6 V# U/ ^
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合% @/ ~7 W7 I* L/ V
  354. $redis->sMove(seckey, dstkey, value);! V1 z1 |% P. P( n3 n. `! }" J- Y

  355. 6 P/ ~- n4 c* e' @/ p
  356. sIsMember, sContains
    4 Y3 c# V4 p' n# `
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false4 S: A* E; X6 `( ^7 s/ [1 e7 X1 r
  358. $redis->sIsMember(key, value);" g( `  o  s: Z9 M. F9 g
  359.   Z4 N7 g- }9 W
  360. sCard, sSize
    , e& V+ A& c& q. }9 h2 ~1 a$ P: k
  361. 返回名称为key的set的元素个数! N+ \* q: L' }5 R# x1 |8 O+ e. x

  362. 0 t8 C$ K1 O+ I  K" U' T( F, o
  363. sPop3 }4 T. A3 h* a# K, y; N0 v
  364. 随机返回并删除名称为key的set中一个元素
    * S( Y% z8 ~7 r# R$ d! m* _

  365. + H8 z8 T8 G% b! d( |
  366. sRandMember/ Q/ `, N0 ~' b3 }
  367. 随机返回名称为key的set中一个元素,不删除% h! R' K& V' D7 t5 u7 L
  368. " l  Y( A4 W' m
  369. sInter
    + W- C0 |$ [+ Q' X
  370. 求交集9 ]; Q+ B$ Y7 S1 v9 t. o

  371. # _" T, N* L5 e/ R# \/ @9 }2 `
  372. sInterStore
    3 V4 B5 ]; x2 U/ N' }. k! I
  373. 求交集并将交集保存到output的集合
      c! z# X; V- s3 y: s+ B3 F
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')6 a8 d- \8 \& u6 X

  375. 5 N* q' E$ W* Q7 u7 r" r, |2 N8 O
  376. sUnion& ~# O. n3 g9 C1 d+ u, K6 I9 X
  377. 求并集
    ' W, y+ x! I1 p4 i7 f
  378. $redis->sUnion('s0', 's1', 's2');
    0 a. \7 W7 s; @: U" `/ }% Z9 {
  379. s0,s1,s2 同时求并集! x% ]8 ?$ t- }) A" {
  380. . s$ f1 d; b/ |! _" G% `
  381. sUnionStore
    8 F2 n0 @: d9 L
  382. 求并集并将并集保存到output的集合1 O8 u9 ~* q) B9 ?' P
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    ) r! q4 M) y# Z- ~

  384. 1 v+ W$ H! f; s6 ~* l% F. P$ f
  385. sDiff
    4 J" H$ v) L9 g6 }9 o
  386. 求差集$ u, [8 q, K. A8 S$ p3 \
  387. 7 h* u, L5 @% V( x
  388. sDiffStore
    2 U, N# s8 I' Y: `# m6 c
  389. 求差集并将差集保存到output的集合
    # u+ R+ h+ l. o5 h, U! l

  390. 4 `, r- {( J- \) A1 u
  391. sMembers, sGetMembers
    ( `; I- \- P( W- _' |  V
  392. 返回名称为key的set的所有元素
    % c, K) A* ^9 P* ]6 M
  393. 9 l, E( `! h1 {3 F1 L: s
  394. sort
    9 Y  [$ q* x$ u, m' P9 \, k
  395. 排序,分页等
    / C" V6 s& ]  ?0 `! h$ y
  396. 参数1 K- E# V. i' ~: B% x
  397. 'by' => 'some_pattern_*',$ `3 ?( s7 m! M, f. a0 g  m
  398. 'limit' => array(0, 1),
    ; `* x. j, }4 I+ Y6 j5 ?6 W5 R$ M
  399. 'get' => 'some_other_pattern_*' or an array of patterns,1 _& s) f( Z; r5 V5 `. W
  400. 'sort' => 'asc' or 'desc',
    1 i8 E% g4 B7 E. r/ z/ g: t) i
  401. 'alpha' => TRUE,
    + M7 j1 p# w0 t. _3 ]1 P
  402. 'store' => 'external-key'% O! a. S: v. }
  403. 例子
    3 n. g6 I( x; [. r1 K! g) o
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    % ~- I3 r% f- U* s
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    8 G; s' z2 d0 N
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,14 U) K8 ^4 X; n( V9 `
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5( o! S# i( T4 ]- R1 M3 w  U

  408. & E$ R3 P/ m$ ?
  409. string命令* F' N! [8 V. B" l- b$ |
  410. getSet
    7 n1 G+ P  u- H
  411. 返回原来key中的值,并将value写入key9 ^" |' a* ~+ r* f
  412. $redis->set('x', '42');
    3 c3 M1 H, S/ u
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'  a4 [/ u% M1 f3 W0 Z
  414. $newValue = $redis->get('x')' // return 'lol'
    ) H0 Z) H- f% @, T, c
  415. : J! V1 ~- p' @* H
  416. append
    & B0 o& w0 B9 b1 q
  417. string,名称为key的string的值在后面加上value$ R$ f7 _+ R1 _+ G7 e
  418. $redis->set('key', 'value1');
    8 f7 M8 m+ w1 A6 ?- g. o
  419. $redis->append('key', 'value2');
    & k. A3 g/ b# t* q# ?6 k
  420. $redis->get('key');
    3 ^$ `* e: r, j9 c/ a! M6 h0 G, Q

  421. 0 m0 B5 ]* q1 B: W/ f) Z4 L5 o& U
  422. getRange (方法不存在)/ s( I0 e: J, Y" p2 L+ u1 ~
  423. 返回名称为key的string中start至end之间的字符$ I0 H7 Q, H8 ^# o
  424. $redis->set('key', 'string value');4 x4 |$ M8 x4 U, Z* j/ a1 ]
  425. $redis->getRange('key', 0, 5);
    " X( m: S. Q# y! H/ |* r
  426. $redis->getRange('key', -5, -1);6 }" R8 J6 A0 W+ D9 P$ F& E

  427. * t1 B4 P/ C, U$ |
  428. setRange (方法不存在)
    6 w5 g- {- X6 F* w
  429. 改变key的string中start至end之间的字符为value: @- f* W" K7 Q2 G4 q' ]+ ]2 m
  430. $redis->set('key', 'Hello world');
    ; p4 M$ \: c0 |; K) C  w
  431. $redis->setRange('key', 6, "redis");' }$ p' p$ _; ^# [: Q; E
  432. $redis->get('key');
    / |+ |  X# Y4 ]9 `

  433. # Q  D  D/ K% f( A
  434. strlen. q+ L  e: Y! z. ]3 S, b
  435. 得到key的string的长度
    , u( `! d; N0 D1 m
  436. $redis->strlen('key');
    - Y( R/ F9 T* p. ^* q6 C9 {
  437. + W, W5 r: M5 c: v) j
  438. getBit/setBit5 H4 t" [3 c& J  |" V- N
  439. 返回2进制信息/ `( H! Q9 g) g0 s. L& J7 x
  440. ( u% t, G( k" {1 Y' a0 j' @- G
  441. zset(sorted set)操作相关6 A8 G5 P7 O, o: n. V
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    + k; N" r& F9 O) h* |& B- }/ w
  443. $redis->zAdd('key', 1, 'val1');! X+ `& p, Z" x7 V0 ~" M1 I
  444. $redis->zAdd('key', 0, 'val0');
    1 I3 C, R6 @- L8 Z* a7 _
  445. $redis->zAdd('key', 5, 'val5');
    & d( _) L9 q6 h8 O" I7 n8 w+ R
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    ' W* M  u& P$ K+ O* n
  447. ) F$ V7 d! S, K* X* O+ d
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素$ z. O9 [; T/ y0 w" |8 K! M
  449. $redis->zAdd('key1', 0, 'val0');
    5 O- n& p6 n$ Z$ p' v: P" z
  450. $redis->zAdd('key1', 2, 'val2');$ Y) R1 _! z! x' C
  451. $redis->zAdd('key1', 10, 'val10');
    1 E* R6 I% ~' j/ s/ J( n6 W
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    1 R; n, \. }1 r) i% P

  453. # f& ]( U! |/ S3 t" m
  454. zDelete, zRem4 g5 _: ~( Q5 D9 E4 x
  455. zRem(key, member) :删除名称为key的zset中的元素member
    8 W" `* U: P7 m. A" v$ }$ `& O
  456. $redis->zAdd('key', 0, 'val0');
    & {) M- I1 `7 A
  457. $redis->zAdd('key', 2, 'val2');
    . [! q& ~- R  C) R
  458. $redis->zAdd('key', 10, 'val10');
    6 Q3 ]) t3 V7 T$ D: W# Y  |1 `- b
  459. $redis->zDelete('key', 'val2');
    $ e# j' S( s0 C+ Q8 G0 S/ N- M
  460. $redis->zRange('key', 0, -1);
    $ y9 a, k( s8 |2 A; d% Q- E6 w" s

  461. 8 l2 j/ c+ ]! G2 t
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    7 N9 b( e, k8 e+ H
  463. $redis->zAdd('key', 0, 'val0');0 y% T# O( H* c
  464. $redis->zAdd('key', 2, 'val2');
    5 U2 y0 D  w, G7 h1 f* g
  465. $redis->zAdd('key', 10, 'val10');
    9 S7 u! ]3 r2 X
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    $ U3 |4 o1 a4 d
  467. 1 H. B# M6 V/ v$ Q  E
  468. zRangeByScore, zRevRangeByScore
    0 W( H. h3 h  |. b
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    $ L; L: @2 }! b; _1 y2 p
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    % X! ?$ e- a+ x  P

  471. . f6 k" ?: P* }; }6 E. X' h- W
  472. zCount
    * C* [$ g8 k) v/ Q# A
  473. $redis->zCount(key, star, end);4 T' r7 `4 _- Z
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    8 L# h# ?0 z# B0 j8 d! F7 S6 \- }

  475. , A" f' @% C+ t0 j) W
  476. zRemRangeByScore, zDeleteRangeByScore
    2 _, X4 }9 }8 D8 w! E
  477. $redis->zRemRangeByScore('key', star, end);
    , a: ]" ^, d- {; `+ T7 i7 P
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    2 A$ ^6 H' A3 h' z( U

  479. 4 F5 {: f- V$ P, h; n% n
  480. zSize, zCard# L% o. H  B3 S
  481. 返回名称为key的zset的所有元素的个数
    % ^6 x: Y7 `4 Y' w' U( P# j
  482. + l" Z3 n' {: f5 E8 F  U( B
  483. zScore
    $ l/ W. H" X6 T
  484. $redis->zScore(key, val2);1 E! j/ f+ |' G: `& R: ]6 _9 d
  485. 返回名称为key的zset中元素val2的score$ h4 n/ J1 F7 C8 J6 d

  486. - C! s* X9 `9 c- n2 A, t( K
  487. zRank, zRevRank& b% U, i0 r) W: E
  488. $redis->zRevRank(key, val);! R/ T4 f( \  S0 g: b0 c, t2 C
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序$ Z( F! U6 [; o2 W# h8 J
  490. 6 D2 g0 |, T# W1 H
  491. zIncrBy6 N) H4 |7 E9 \8 t, P
  492. $redis->zIncrBy('key', increment, 'member');
    2 G, m! \' D2 h* Z
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment2 s% I+ ^+ s( c" C1 g
  494. : ^+ ^  ?6 b9 ^6 {- D  H+ ^; M+ e' S
  495. zUnion/zInter
    ! K* ^3 R$ v) `
  496. 参数
    % ]0 u/ n0 f& {* I0 T% U8 B) f
  497. keyOutput/ {' \9 p1 i- e2 _
  498. arrayZSetKeys
    # v5 _& Z$ L) R
  499. arrayWeights
    ( L* w) ]. T( E  d$ ?# k, n
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.( [8 q8 s; g- @$ u- B3 l( ]
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    . l: j# T  k$ S1 F0 i9 ?$ H& @
复制代码
0 V  v9 q0 J. B4 ]9 T! I5 N+ ], A7 i

4 n- p5 j# r' n* I  V. v3 h9 i# @# v: P- R

" E3 E6 x  k- l- ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); ' @( q& y/ J: W0 {) z) F( X
  2. //连接redis服务器
    ( s8 [6 q+ O3 Y4 @9 r" r
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 03:11 , Processed in 0.064662 second(s), 19 queries .

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