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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php" Z  Y0 b$ V0 ?& h) A  S: ?( c/ ~  @9 O
  2. $redis = new Redis();  
    2 |5 n1 f) E, O! ]; i
  3. $redis->connect('127.0.0.1', 6379);//serverip port$ [4 ?' T& v  d0 M
  4. $redis->auth('mypassword');//my redis password
    4 {2 d/ z& a4 `/ \$ P% B8 o7 R8 c
  5. $redis ->set( "test" , "Hello World");    U0 g/ G& g* V5 K$ f8 d
  6. echo $redis ->get( "test");/ y0 g- W# l* H  Z% [0 D% w
复制代码
php操作redis函数封装
  1. /**. d( c$ t, {! Y, Q9 I! Q
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数: r( b% _. E! U8 S# W4 ]/ U7 ~
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    / T* l4 x% q, S
  4. */
    9 d- H9 s8 \7 ?/ w8 G- A
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    $ h0 ^! e% @( W9 U. d" w- C: t  r: N
  6.     if(!$key||!$value) return false;" C. u, p( O" F6 \" |* |
  7.     $host = $host?$host:getenv('REDIS_HOST');$ }/ T/ f8 g4 M
  8.     $port = $port?$port:getenv('REDIS_PORT');0 G. r4 _% w2 q/ q1 c
  9.     $redis = new Redis();
    . d8 n4 {' n7 {  A+ x
  10.     $redis->connect($host, $port);
    " _0 d% G" d9 p+ n$ o3 h- P, ]3 V
  11.     $value = is_array($value)?json_encode($value):$value;$ q7 W8 `9 m4 N, j2 K& {9 [
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    6 [! y* w  X, t4 \/ `
  13. }
    7 y1 w( H" V. \5 k
  14. /**# e' M$ S; V$ ?
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    4 E: _0 Z* p7 \
  16. */5 |* e6 M9 Q, Y1 a: t
  17. function RedisGet($key,$host='',$port=''){
    % U3 P/ G: Y% a* ]& k0 K
  18.     $redis = new Redis();
    ! P2 w8 y( s6 R) y2 i
  19.     $host = $host?$host:getenv('REDIS_HOST');5 F( y" _3 P  l3 k+ Z9 K4 ?
  20.     $port = $port?$port:getenv('REDIS_PORT');
    2 f+ V0 r' ^. D. l" Y4 y
  21.     $redis->connect($host, $port);# l( D1 N. s1 I. @' x% o& D# l$ q
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    - S2 z2 C3 M6 k: Q$ ?0 K
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);* f' W9 V4 K+ q  H  ^# C* [
  24. }5 ]2 \! I- ?; W8 Y9 t$ t; D1 T
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了! c- j# w% t# }; O' [
  1. setex 带生存时间的写入值
    1 I9 t: d7 c0 \# M6 B) ?
  2. $redis->setex('key', 3600, 'value'); ) G. X1 M- C5 b4 G
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    # x( m( n/ t/ U6 d$ S8 @1 r
  4. $redis->setnx('key', 'value');
    2 N' m; ~9 u5 R9 h6 R
  5. 返回已经删除key% S" x/ r* L; t+ I6 ?
  6. $redis->delete('key1'); 成功返回1失败返回0! O/ P3 T' N. G, E6 V
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    * V0 V6 n# l; a2 }: L& z
  8. 查询生存时间" m/ e# F* s$ R: h
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)$ A" N( o+ j& q
  10. 同时给多个key赋值,同时设置key0和key1
    ( h2 a* F7 ]2 t  K
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));- m2 B; h% I0 u+ P: L4 j% ?+ c$ a
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值1 }- |1 G8 T/ `6 U8 P9 N  J5 K
  13. $redis->incr('key1');, d: \+ b1 k% ~- |
  14. $redis->incrBy('key1', 10);9 V9 Y, \. T" @1 T
  15. 减法跟加法一样
    7 }. d" ?8 d( F
  16. $redis->decr("key1"); 减少1
    % j9 z; L, x; B* M: M/ o; |2 U
  17. $redis->decrBy("key1",5) 减少57 y$ ?: v: d" l
  18. / q$ u  f; {+ p7 g
  19. list相关操作,连表操作1 A1 C+ H3 ?3 ~0 m5 f0 n1 V+ T
  20. lPush3 }  u2 E5 \" w# g0 U: m2 v0 L, @
  21. $redis->lPush("list", "888");* b4 s: Y0 F; Q# d; o
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    4 \* X9 e7 S9 X8 Z5 ?3 Y9 F
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    * }1 s. D3 H" P
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    0 Y* G. Y. Z- n6 E( [
  25. lPushx/rPushx
    5 A5 T; p! K4 C% I- ?
  26. $redis->lPushx(key, value);
    4 I, G5 @. O# x' I. u
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加, C* W) W' ^2 B8 k
  28. / `0 X/ E( K+ W9 {2 l. o4 e1 |
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
      r: o, g7 N" q, x
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key' c/ \, P% E7 m  a2 s1 n
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    7 _/ h6 t2 T/ h& P" n8 K
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序  A, I* L4 W1 X# \) Y! U$ j9 q% d
  33. sadd s1 zhangsan
    * x1 ]+ L* e$ F" h" y
  34. sadd s1 lisi
    ) A* O% V0 n% |! P# F+ d4 t
  35. sadd s1 wangwu
    + C% G" c1 Q6 A8 x. H
  36. sadd t1 yangxingyi& ~9 h5 j7 A! _6 X" x2 s7 [
  37. sadd t1 lilei
    . \/ S$ G. o# w
  38. sadd t1 zhangsan2 u( o. I% W3 B2 D2 O! d8 l! r
  39. smembers s1 s1的所有集合内容- c1 q4 U: F: b8 @4 n+ e% Z  h
  40. sdiff s1 t1 s1有的,t1没有的,差集) H4 E# n0 k9 |* j  E  U( p
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    3 y% E# u9 @  @
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的& r, o6 L: q4 u- S
  43. spop抽奖场景,返回集合里面随机的数2 l6 w$ ]+ z1 j) F6 r: a$ d
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    6 C; {5 l5 B: J0 g0 z
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数3 m1 E' K, i0 b5 O
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    # Y/ {' v1 O6 r# r" y
  47. 随机返回集合里面的一个元素,但不删除,重复中奖! A. ~, ~; T" v# _( h& k. ^# s
  48. $i = $redis->srandmember('s1');echo $i;- g2 _( w2 {' F  k/ w- B
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false" g! s# \* [  Q! w
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    ( _% S! e' A% `% G; a0 z* T9 _+ T4 U
  51. # U7 S+ C4 Y% {4 b' J
  52. zadd key 2 value 有序集合
    / T: n; o' E2 _! E
  53. zadd y1 1 zhangsan;! _* l6 b  z5 N5 \
  54. zadd y1 3 lisi;
    3 Q7 n; o; U+ }  W  ~; j4 L
  55. zadd y1 2 wangwu;
    + `8 w1 S+ o% }! C
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    4 b2 N: u$ \4 r& Y" D+ L' ]5 \
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    & O& M2 |" l9 e$ w2 f
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    : c  J; q! ]$ @4 Q* X& d
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    " G  ]* G; K0 q! ^& L
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
      l& F+ ~# f2 c$ H4 l* |: X
  61. 无序就scard,有序就zcard,有z没有s
    ( E! Q! _. B6 k7 n
  62. sInterStore
    , S9 }: B3 H1 t" v. [; k
  63. 求交集并将交集保存到output的集合
    / G5 E$ K% u8 D/ m
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')" p0 m9 I2 i: M- t) }5 \
  65. ( ]4 B: G( B' g0 t
  66. Hash操作
    % \# [) p/ v' F* I$ x0 X! L
  67. hSet
    ( }" p+ x9 G8 m; M
  68. $redis->hSet('h', 'key1', 'hello');
    - Y" q2 P( H' _; y3 h* X, a# V6 B! J* X
  69. 向名称为h的hash中添加元素key1—>hello
    ' U7 _7 V7 G4 a( b- N5 P
  70. 3 I' x3 }& }- f% A3 n
  71. hGet
    # s6 h: ^; [6 T: q
  72. $redis->hGet('h', 'key1');$ P- `9 C+ E/ `' F0 y2 D
  73. 返回名称为h的hash中key1对应的value(hello). T8 B! i' x7 q9 r

  74. 8 {( V7 H- R% j8 S  V
  75. hLen
    6 W& d9 n6 R6 a2 ]9 b  q0 P
  76. $redis->hLen('h');- s/ @- b" C0 h) S9 `4 j
  77. 返回名称为h的hash中元素个数& M" G/ c7 E' ~% J! ^

  78.   ?/ C4 T& ^  L; r
  79. hDel
    1 u" \' J8 a( G- Y
  80. $redis->hDel('h', 'key1');  x" k+ i# M4 D3 `
  81. 删除名称为h的hash中键为key1的域
    0 J: X0 D. U+ B" B

  82. 8 @& R4 Y8 b1 E9 y; f3 ~" A( T5 o
  83. hKeys/ z5 c3 g& s3 O8 ^
  84. $redis->hKeys('h');/ S6 O& t% N1 R  I/ Q
  85. 返回名称为key的hash中所有键. S/ [! x+ U% u" b/ y
  86. 2 p2 Q, y3 Y6 y1 r& g+ j- J0 F! P; H
  87. hVals( Y+ b5 [+ ^1 \# S
  88. $redis->hVals('h')
    9 v( ?/ m6 n) i! |% e7 F
  89. 返回名称为h的hash中所有键对应的value" ^8 X6 _5 X5 V8 A3 A. R2 x

  90. # s$ p. o' O0 _
  91. hGetAll
    $ X0 p* U7 G$ W9 O7 v. ^: i. H: m
  92. $redis->hGetAll('h');
    ) v& M9 t" B' V
  93. 返回名称为h的hash中所有的键(field)及其对应的value* k$ O1 a* Q5 O3 q+ w- a
  94. 7 t9 u. g0 k* l! A0 Y- \* d
  95. hExists
    * i5 [3 V+ w% F& B
  96. $redis->hExists('h', 'a');
    0 k* A  Z5 v+ f/ ?
  97. 名称为h的hash中是否存在键名字为a的域/ M, P2 P! m/ T! C% c" z
  98. : W  o  p  {* L6 F, R
  99. hIncrBy
    ' w7 T+ ]  \% H, O- Q
  100. $redis->hIncrBy('h', 'x', 2);
    0 ^* L' p- j! C0 @7 B/ S) m+ Q
  101. 将名称为h的hash中x的value增加2
    5 H$ {% M- h; G# \; s; |- W

  102. ! t: z  X1 s4 x0 H- v) J7 n
  103. hMset
    4 @* }) O* E8 \4 ~* A$ r
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));% P$ E9 E5 G. k5 J; g+ M+ t. _8 R
  105. 向名称为key的hash中批量添加元素
      n+ i& O5 F3 A0 w5 E. o  ^1 d, g

  106. . ]! V% G0 g7 [6 k# a- k+ c
  107. hMGet
    : B* m- B& Q7 X: u& X
  108. $redis->hmGet('h', array('field1', 'field2'));
    # {9 Q8 h. M  G' a6 U
  109. 返回名称为h的hash中field1,field2对应的value
    ( V$ [0 p( J1 D  R1 S' a3 c' s: v
  110.   `7 |& t! ^9 W5 F* c1 P
  111. redis 操作相关
    $ `1 H9 V7 X3 \0 c: ]4 ]
  112. flushDB
    , ~5 P! f3 ?+ Z) A
  113. 清空当前数据库
    - X& d! \% M" U3 F! m
  114. 0 k# o5 l* c/ z, k7 M% i+ _% _% K+ L
  115. flushAll, {# e0 E' z6 l8 Z
  116. 清空所有数据库
    0 e5 {; |. J9 k$ T. s  i

  117. ; R" s- a: d/ y8 C/ f4 k; ?
  118. randomKey1 j# U6 X: J* a, P5 f
  119. 随机返回key空间的一个key& I7 P  b* z% `1 F& _
  120. $key = $redis->randomKey();
    3 h' ?) R6 l) c$ E: D

  121. : V0 A* l# ]9 s: ]
  122. select
    , ]) X: v, K! Z0 Q- z
  123. 选择一个数据库
    ' a5 ], l( A) V! K
  124. move1 v9 m$ n$ N5 K8 s9 d- J% \
  125. 转移一个key到另外一个数据库  B+ b- H% K+ V" q( ?2 O+ s
  126. $redis->select(0); // switch to DB 0
    / x$ s! [' p6 x1 ^7 z! r0 {. T
  127. $redis->set('x', '42'); // write 42 to x
    / [% V7 G4 N, H: n# E% k
  128. $redis->move('x', 1); // move to DB 1
    4 J% o3 f- o  G" s$ D( \+ A
  129. $redis->select(1); // switch to DB 1
    7 A  W- S+ U8 F, X- {9 E
  130. $redis->get('x'); // will return 42
    " F4 [1 q8 {1 z8 S* M& D

  131. 7 f  j5 t3 E0 D
  132. rename, renameKey
    3 i; i7 a  c6 d- o: V
  133. 给key重命名. O% z9 P9 x0 N! S$ A
  134. $redis->set('x', '42');
    ; W( G) P* G& ]" k- q$ Q4 ]
  135. $redis->rename('x', 'y');- a" y  @. k6 n
  136. $redis->get('y'); // → 42$ [2 f) u+ M- `
  137. $redis->get('x'); // → `FALSE`
    ( p% T' ]* m8 k$ ?! C1 m
  138. : Y' f9 x% k; I; w4 Q7 ~& ]( |
  139. renameNx4 ^& _1 z4 o$ x
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功  F- {) M0 C; G; c1 R1 w7 o, _
  141. , Q3 o$ A5 t* A0 U& J
  142. setTimeout, expire0 H$ c/ f: ^4 }) T$ ?+ v) `8 u
  143. 设定一个key的活动时间(s)+ L7 ?) p; g  W+ _' m9 `
  144. $redis->setTimeout('x', 3);: d9 i" U3 ~2 k8 ?1 _
  145. : S5 z1 T% P& k# l# d9 k: W
  146. expireAt
    4 v5 x3 d" ^* S  \3 L$ z5 L
  147. key存活到一个unix时间戳时间
    9 z5 M% A" K4 r, |
  148. $redis->expireAt('x', time() + 3);; F9 t; M: {; a3 z

  149. # M. q( e0 k# P/ [( e* a
  150. keys, getKeys/ m* x* _/ C$ s# u  c; n5 y
  151. 返回满足给定pattern的所有key" j1 ?" \, r  X8 _1 v' q- @9 N
  152. $keyWithUserPrefix = $redis->keys('user*');+ p0 [1 i8 U& p6 v" z; E, V

  153. 0 `7 ~4 ?6 |# g. h% G' [7 {6 K% Q- w
  154. dbSize& [$ W' n0 g' L( t$ s- W4 t  ^/ X
  155. 查看现在数据库有多少key
    ) Z! [+ T1 E: e8 n  o9 |0 R& M
  156. $count = $redis->dbSize();
    * E% m. v) m5 x
  157. + W$ p/ Q9 F& r# ^8 g" ~$ h; f
  158. auth
    0 i+ g& p& M& ^0 f* p) p
  159. 密码认证/ S9 _( E- t+ @4 Q
  160. $redis->auth('foobared');2 C  |% }1 s; J: N" @  q' a4 q' [
  161.   z( t2 H' x' h
  162. bgrewriteaof* a: W+ H( G) y% K3 _0 V- A9 e
  163. 使用aof来进行数据库持久化8 ~3 g# t! H1 R
  164. $redis->bgrewriteaof();# J- y: Q$ S; V
  165. 4 v4 G( @8 D  Z3 G/ }# w0 L8 F, k+ l$ }
  166. slaveof& ]# A# x" `# ^
  167. 选择从服务器- V: C. S* k) }5 Q: |% M6 j2 R4 D
  168. $redis->slaveof('10.0.1.7', 6379);
    + L* ?" I! p! J9 b5 R

  169. 9 ]; F# V# Z+ r0 F
  170. save
    + B) J  E2 n8 c* L2 ?" Q
  171. 将数据同步保存到磁盘
    * Q& S1 ~5 I& l0 i( }( n+ D
  172. / Z9 y* F" p9 {1 I& ~1 O& G+ r
  173. bgsave
    . s, ~! r  W/ r, X  }( C: r
  174. 将数据异步保存到磁盘
      G' V( {) ^% R0 s; x/ S
  175. + \' z5 k) j# ^
  176. lastSave& R( Z4 H5 D+ ~) q1 |
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    % O# S# E: N; p

  178. 7 Y9 ~' M* t" Y5 k# v
  179. info
    * j$ [/ e8 [) X& a) u
  180. 返回redis的版本信息等详情
    ' C3 I& C/ j/ R% [

  181. - F* `, W9 v5 A0 j9 O$ D, k
  182. Redis::__construct构造函数2 h; t9 S$ j' t. q+ L& n7 L  Y
  183. $redis = new Redis();' f; ~! {' H' r0 L+ w* }7 g

  184. 4 Q7 R/ N6 K7 C( B" ]
  185. connect, open 链接redis服务  H9 B9 D9 l' ]% n
  186. 参数/ I' k( v0 l4 W% I7 ^
  187. host: string,服务地址% X& `2 k% w$ ^: u2 q
  188. port: int,端口号0 S; ^, |* d! p" S) I
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ) u' f- ~! ~9 N& |, i( L7 L
  190. 注: 在redis.conf中也有时间,默认为300
    + \2 i6 E; ^6 r

  191. * s' L0 h; v! u+ d; }
  192. pconnect, popen 不会主动关闭的链接
    1 S' s% {+ m' c! c
  193. 参考上面! ]8 T: H/ Q" a" m
  194. 1 D- n6 K# ^# Z5 s
  195. setOption 设置redis模式6 P8 u2 B! I* @; E

  196. 6 S4 [, C3 Y& u) N" C
  197. getOption 查看redis设置的模式/ p  \7 f$ Z+ H0 a- f! l4 }! T

  198. 6 K2 F$ }$ w; H  x) _! N, K0 r# u
  199. ping 查看连接状态  g4 P( |7 x& M! J7 F6 {
  200. : h1 d2 Y5 S, ?# }1 {) m  g' l8 T
  201. get 得到某个key的值(string值)
    ' l5 d' U! i# O3 {0 P+ F
  202. 如果该key不存在,return false
    " S% G# P$ V7 I+ u3 g* p' Z
  203. # \7 x$ u, c! B8 O. u! d8 }3 A5 V
  204. set 写入key 和 value(string值)5 Y4 G7 f( n4 |- A7 ?- T' k- v$ Q, k
  205. 如果写入成功,return ture7 U3 ^/ I! x, I- E

  206. ! c1 L, k  u" V" z9 o1 ^, `
  207. setex 带生存时间的写入值
    ' Y4 B2 A4 H2 M5 {, l2 g! W3 o
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    ' D  I# b5 u* D# W8 Q- h

  209. 3 V' [7 R, P$ v* W+ b! E! i! B
  210. setnx 判断是否重复的,写入值! a0 a6 F6 E' r6 m1 k# j
  211. $redis->setnx('key', 'value');
    + Z& w. F1 {: ~% I/ N
  212. $redis->setnx('key', 'value');
    * P  a. f+ u9 f9 @  z  Y

  213. 5 f$ o, P9 G4 m7 ^" k) e
  214. delete  删除指定key的值' X0 H. h& t# l  ^; V
  215. 返回已经删除key的个数(长整数)/ P5 K5 y7 n2 S! Q* P
  216. $redis->delete('key1', 'key2');1 Y/ O3 [7 ]& H7 k- k
  217. $redis->delete(array('key3', 'key4', 'key5'));
    , o; M; ]: Z! _: `4 R( Y! X

  218. . \% o+ k" |5 P+ T
  219. ttl
    0 S" W$ ]9 C" O* v( i0 P
  220. 得到一个key的生存时间* h6 n0 I6 X2 X$ R# Z1 {; h) F# q; L9 ^. K

  221. 4 ]5 A; n$ G% E7 d2 A
  222. persist
    9 z  h. |& t) o3 t
  223. 移除生存时间到期的key, s1 K  c3 V) y9 s/ V) P
  224. 如果key到期 true 如果不到期 false; Q, D/ Y7 n) P3 ]

  225. - V6 p# F2 N$ T+ ~8 A0 T5 F
  226. mset (redis版本1.1以上才可以用), g! M, M# i: v5 F. x
  227. 同时给多个key赋值
    ' G) T/ N: u/ @* o; {* D" g- @0 x9 Z
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));; N, d: X5 \$ W* ]0 @" H

  229. 1 V3 B5 W. ~7 j- g$ U
  230. : G& X; o4 T9 R

  231. 0 X1 H! [' Y' O1 K; y( C
  232. multi, exec, discard
    # m7 T, E% n6 v; m1 l1 D2 F4 t# @
  233. 进入或者退出事务模式
    " K$ l" D  T9 v( R# {
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI8 d* g: [2 R, t2 J, e, r5 A+ O
  235. Redis::MULTI:将多个操作当成一个事务执行
    9 @& k% C8 I% x
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    1 }, X* h4 T; V# y  v* P
  237. discard:删除一个事务
    1 ~2 g0 `7 W2 [2 I, [
  238. 返回值
    / a) }0 u3 p0 J9 N
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    3 K6 h/ P. B0 ]% j3 [* p) B
  240. ; Y1 j" p" e) f( a+ a  Q4 S& t& S' z
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    % E# @; G$ b) L& `) b
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    7 v# _* s1 c( g5 Q+ z) w
  243. unwatch  取消被这个程序监测的所有key5 N( _% P% Z: u% y5 m6 h4 }
  244. 参数,一对key的列表8 _& C2 T9 L) B, y
  245. $redis->watch('x');
    ( Y7 c7 i7 ?8 e# [9 n
  246. 4 G9 e% B& X" N4 Y6 i% Z* j
  247. $ret = $redis->multi() ->incr('x') ->exec();
    . c, U- n& U0 }! P
  248.   Q# s' `/ N3 o. L- r5 c3 t

  249. + ^' B& ^, u! V% f: P; L; y: Y& [
  250. subscribe *
    9 z- ~! c2 `* s2 |; s$ g: z% y
  251. 方法回调。注意,该方法可能在未来里发生改变
    , F$ A: V/ W: D3 B; }) H* ~
  252. : U/ c4 q6 m7 [* I4 Q
  253. publish *$ y( x6 W* B. z8 h7 q
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    4 ?# E# ]) B/ l6 t. V6 S: X# B+ @

  255. 8 W6 h( H1 e/ e8 O! ~% t
  256. exists
    9 P$ O! ^5 r# z) B: i. ^3 o# t7 w
  257. 判断key是否存在。存在 true 不在 false" e, l: c5 h9 [; K$ k
  258. 0 Y* b  T6 [- q) M' F+ o! D
  259. incr, incrBy
    * H$ `) z9 b+ G% A0 j7 P% j% `
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值2 I. J$ L" h. L5 V8 a! }3 r
  261. $redis->incr('key1');
    9 Y/ ~3 T( E5 r! j3 B
  262. $redis->incrBy('key1', 10);
    ( q, W- c0 p1 R4 M+ a4 N6 k
  263. % T* v, S* L  [2 E4 ~
  264. decr, decrBy4 e5 q" |9 Q$ |/ d, n# e5 f0 X: V
  265. 做减法,使用方法同incr* ]$ J: @# m3 W2 L/ }/ O* h
  266. 9 Z* P' e6 }% h1 ~( {/ q
  267. getMultiple/ o4 n  a) E! v2 \. U& Z3 ]6 f- u* Q
  268. 传参# M2 ]% ]; b- _; J6 p
  269. 由key组成的数组
    8 N7 w+ S! e8 ]/ E. [
  270. 返回参数4 D8 Z& l& \. }- {
  271. 如果key存在返回value,不存在返回false$ I9 L% G' \- L
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ) u+ |3 E. m7 k) Y# e
  273. $redis->lRem('key1', 'A', 2);
    ) ^0 G) c. h  N
  274. $redis->lRange('key1', 0, -1);+ |1 r" S( S4 P  ~. Q0 `

  275. $ {5 J* W& v! Z. g  W6 x  B) @# R
  276. list相关操作  p. a. |6 y9 d, Z: I) O
  277. lPush8 q. f  b9 I+ I5 U) C5 g% S: T
  278. $redis->lPush(key, value);% I6 u1 ]. k5 P$ Q; ?! X; t
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    & j2 {7 r5 F! {0 J# o: z' d
  280. 3 B/ x1 \7 y* _- o; c
  281. rPush" A  h) X" G% n0 D" @! s6 p# s) T5 H
  282. $redis->rPush(key, value);
    2 \0 U5 A2 X! C; ^5 R/ |
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    ; I. |5 _3 i5 {# `

  284. 4 N& @3 I0 W9 x. O4 ?6 Y  i) _: ?
  285. lPushx/rPushx4 f* t) `) f; C% c4 o# H5 V! T
  286. $redis->lPushx(key, value);
    0 X% h" d: J% c  `. P
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加0 b+ |9 Z* l2 [+ z5 r9 R
  288. * X4 Y- U% t/ c# C
  289. lPop/rPop$ p2 b: U- r! U! n
  290. $redis->lPop('key');+ X$ p' I1 N' X" j7 g
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素: `! [+ e: E" ]
  292. 6 t, _/ U8 c; d. ]
  293. blPop/brPop' E, e7 U' V7 b9 j* M
  294. $redis->blPop('key1', 'key2', 10);
    1 j5 L4 H) `- n0 J, ]( U6 ?
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作2 \7 ]6 S. @4 ~( X
  296. & P1 G5 ~3 o5 f' ?. f
  297. lSize
    , M/ j9 e0 C0 y  j
  298. $redis->lSize('key');
    ' B1 L4 `! N$ r7 t" n! O
  299. 返回名称为key的list有多少个元素
    ' @. Z5 z3 b9 P2 X( [6 B! z
  300. & M! b. Q$ ~% [! R1 t8 L
  301. lIndex, lGet
    8 t1 c9 e7 }' O$ @, M4 r* e# E' {% D
  302. $redis->lGet('key', 0);
    - j) l% C% I( @7 R' ?7 R5 O
  303. 返回名称为key的list中index位置的元素
    + ~4 ^: V( G! Y+ n# v

  304. ; w! p% K3 ?  F' P
  305. lSet
    & C  _+ p0 H1 a& [  B3 c, A
  306. $redis->lSet('key', 0, 'X');( Q. \1 @! |, G: {. H
  307. 给名称为key的list中index位置的元素赋值为value, N9 {' h5 K0 C; {
  308. # k$ a- o- {* x! A
  309. lRange, lGetRange
    3 q, o9 C- Z- k( C8 h; E4 N
  310. $redis->lRange('key1', 0, -1);
    3 r# m* v: C* ?6 C* G7 w
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)1 C4 K7 A! ]3 b* E1 {: w. g

  312. + J8 w. O9 q) G; ?# Z8 Z; X3 {
  313. lTrim, listTrim1 o, k; f! n! t  v: c2 [
  314. $redis->lTrim('key', start, end);7 W: J- b$ M& m0 P6 L! h7 K7 |- {5 e
  315. 截取名称为key的list,保留start至end之间的元素
    + W! {! \( m8 ?4 p# {4 E3 J

  316. 9 a# ]7 Q! _0 j4 J; H
  317. lRem, lRemove
    ( \9 O7 ]3 a1 [, q) A8 t  B* k
  318. $redis->lRem('key', 'A', 2);
    # c4 V  D1 _/ L" T6 L- p7 x
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    . {/ k+ I- k4 }. \& w; g6 L
  320. . E& q4 R4 a! L. \/ q1 j7 k, l2 Q
  321. lInsert
    ! i" I+ L  m  f9 M! E) \; ~: F. K# F
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1  h* j. ?) n$ a) t# J
  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');7 o1 M0 E+ I. F4 q
  324. $redis->lRange('key1', 0, -1);8 B& Z0 ^2 u9 h8 m# Y$ t9 k
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');$ ]* Z  I+ c. S& {
  326. $redis->lRange('key1', 0, -1);$ i" Z9 U$ Q- V
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');' h2 x5 O& n& N. n$ }
  328. 5 Z: E& v( U: H7 K, _/ m; `
  329. rpoplpush$ d+ O- p5 E: e4 Z$ }0 a
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    / x. ~- k0 W! T, w
  331. $redis->delete('x', 'y');
    , V; G' ]7 }% c4 e$ @5 x* o
  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'));
    ( \2 G; k7 {0 Y/ ^1 Y5 P' J
  333. var_dump($redis->lRange('x', 0, -1));
    & u" L$ t8 \! T6 b" T* @
  334. var_dump($redis->lRange('y', 0, -1));
    0 F) Z4 B; \1 y3 F( ]

  335. / ~. o7 m. _% B+ R2 g
  336. string(3) "abc" - Y5 I2 y  P1 f% J. R+ j/ O6 B- z
  337. array(1) { [0]=> string(3) "def" }   Q% o6 j4 b" h6 k0 _" i* d
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    2 y9 W- T/ R- M/ g: {! h

  339.   k6 Z! K) `3 K- _
  340. SET操作相关) o/ S  P) |1 y, }2 ^
  341. sAdd
    & Q2 [9 H5 H' O; j0 L. [: u
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false, h9 n0 C) d$ `8 y- }4 w
  343. $redis->sAdd(key , value);8 k5 W7 o; Z" o- V* R0 K; {  B

  344. 4 y8 |! [6 o, c
  345. sRem, sRemove
      A/ \! a9 c9 o7 X- G9 @
  346. 删除名称为key的set中的元素value
    . z+ t% k6 B6 }7 G! C
  347. $redis->sAdd('key1' , 'set1');
    # ^7 j3 h, k1 K. b' x
  348. $redis->sAdd('key1' , 'set2');: q, H5 k" p2 D! n
  349. $redis->sAdd('key1' , 'set3');
    + s4 G7 v: k- V; X  z. \' T
  350. $redis->sRem('key1', 'set2');
    ! b/ e5 e5 P/ L6 Q) u9 R- a" \2 f
  351. 7 j: V) Z: F+ F; [
  352. sMove
    ' D1 p4 A7 ^# o, a8 S
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合& ^/ e( E& a& M% i
  354. $redis->sMove(seckey, dstkey, value);
    % G6 s: |/ G& u  E* u
  355. 6 T& \  C! M) ^+ y; V3 z  X
  356. sIsMember, sContains5 O/ w% O. q  Z
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    9 S5 @1 ?: A) _
  358. $redis->sIsMember(key, value);
    4 B) M- F$ Z7 |' S! }

  359. 9 ?, e, h" w5 ^) K. K0 S& R5 o
  360. sCard, sSize5 S0 @8 h1 u, q0 ]8 v+ p2 J: p% s
  361. 返回名称为key的set的元素个数+ K' f& g, {/ p3 L

  362. ' ^+ ]; W5 i* p6 G: ~: }
  363. sPop
    / c5 k; w3 W$ }, J7 ?% ]
  364. 随机返回并删除名称为key的set中一个元素( d! b: }( ?- X" O
  365. 0 W* I! a0 P. u( ]6 a; _
  366. sRandMember; _2 d) u8 D3 b2 _
  367. 随机返回名称为key的set中一个元素,不删除, g/ T, ^- A. D+ z  U
  368. % P5 ~3 f* S( R7 F# E
  369. sInter
    4 v( y) W) _5 h8 P# [$ x
  370. 求交集
    # m) q& i  ]. ^1 W2 M' j
  371. ( {( S" n5 H9 M0 y5 @+ M4 Q
  372. sInterStore/ }# n& u) V0 D' O4 d
  373. 求交集并将交集保存到output的集合: k. @- f- t. k8 _) ?* Q
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')) u+ J( H  M8 C* T! J$ @
  375. % I4 ^+ B4 B6 i' g5 J
  376. sUnion
    # z. g$ `( Q2 @% @. r6 `" @* e- j3 ?
  377. 求并集
    5 A4 q. `1 I9 q- V, Z1 g2 ]
  378. $redis->sUnion('s0', 's1', 's2');3 I4 |2 x. W! d2 P/ X3 z
  379. s0,s1,s2 同时求并集
      u  s+ K. _  I+ z
  380. ! }( R5 r5 B8 y( X9 _$ r  i, \
  381. sUnionStore5 v( ^2 O) ~/ z; X8 x4 Q
  382. 求并集并将并集保存到output的集合% g) s' t/ K$ C. ?# n
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    9 U& T4 G0 H4 s' p: N, g0 N+ ]/ I3 e

  384. 8 q' E  s9 U2 Y" `
  385. sDiff% W1 a' q1 v9 l: V7 m
  386. 求差集
    0 W+ x9 p7 }  v8 z1 D

  387. 1 \3 t) E4 u4 T/ j
  388. sDiffStore7 \% W  G8 g* x1 X! j0 V6 t
  389. 求差集并将差集保存到output的集合
    . T8 S. o/ V  {

  390. * n$ u( i  w) ^# L/ ~& H
  391. sMembers, sGetMembers
    5 a1 @0 ?: Q% B3 ?9 E% k
  392. 返回名称为key的set的所有元素
    0 Y0 ]' Y% j1 t% \( S9 ?5 [
  393. % i' q7 ^4 |' C
  394. sort
    9 r) n) e% W; y! I
  395. 排序,分页等
    " a( ]7 b* G7 ?" \6 V# T
  396. 参数+ e, V* E7 M$ a6 f' r$ L
  397. 'by' => 'some_pattern_*',4 j6 H! S% ^6 z2 z. m' D; R6 {2 |
  398. 'limit' => array(0, 1),
    2 d7 o2 m, ?% g+ l8 o! s% b
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    9 j5 w$ o0 W* d
  400. 'sort' => 'asc' or 'desc',: Z6 k$ F4 \8 M) D3 h/ H
  401. 'alpha' => TRUE,* l9 J( l% k0 t6 p+ E
  402. 'store' => 'external-key'
    % s# x4 H3 d! N
  403. 例子+ e3 l$ \, H( @7 d4 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);# f' g! x6 }& g4 W* w5 r  v
  405. var_dump($redis->sort('s')); // 1,2,3,4,5' M2 l; r0 o9 ~& F
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    + ^/ O4 p) W5 k# B& u- _
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    - Q: z8 j4 E8 v$ p0 z6 u+ L
  408. : K4 k1 W7 ^% n
  409. string命令' N: j7 Z5 T# ^
  410. getSet
    8 y! F7 P* S$ O+ T- [$ y2 R5 d
  411. 返回原来key中的值,并将value写入key
    $ B* O% m* x" u0 U: H& ~
  412. $redis->set('x', '42');
    ' w2 p) o. c( I( H: B3 B
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'$ X: x0 |$ {( p+ R4 E0 e, j
  414. $newValue = $redis->get('x')' // return 'lol'9 A# ?3 H: U2 F; j# ~) o5 ?& ^
  415. $ `' p$ g# }* k: z6 J: s
  416. append0 B7 u6 h6 Z- ]4 N4 S7 s9 f$ j* x
  417. string,名称为key的string的值在后面加上value
    : u; y$ e0 o) v
  418. $redis->set('key', 'value1');
    & w" `' H( h4 D' Q2 A. @) ~$ Y
  419. $redis->append('key', 'value2');
    4 b  C& ?, O9 O; w7 h
  420. $redis->get('key');7 k7 W# j9 B; q# m& i# y" _
  421. , L( D' T' b% z; z
  422. getRange (方法不存在)
    3 E8 T/ O2 V' Y, b. v8 z+ }
  423. 返回名称为key的string中start至end之间的字符5 ?; _. Q5 N& A. I
  424. $redis->set('key', 'string value');  q$ X* d7 T% q: s
  425. $redis->getRange('key', 0, 5);& r+ f$ S( r, ]8 P! x" x
  426. $redis->getRange('key', -5, -1);0 m) H( G/ ~* Q2 f( `! ~
  427. 9 ?% L& A% ^- y! ]  E
  428. setRange (方法不存在)
    # \1 D3 ?! y8 l) @* N5 ~
  429. 改变key的string中start至end之间的字符为value
    6 }) x4 V% ?* y) i) l4 |1 D$ `
  430. $redis->set('key', 'Hello world');' N" z# b8 d( o, H
  431. $redis->setRange('key', 6, "redis");. T  z$ P+ ?# t1 h) S$ c+ W
  432. $redis->get('key');
    - a0 ^2 {- T7 [+ t& c) S$ h" Q

  433. - o) D1 y; F1 ^7 U1 U' S
  434. strlen- N2 X! L& h5 w8 p/ z: h2 l" F4 |
  435. 得到key的string的长度
    " k# c3 h4 R# m- N
  436. $redis->strlen('key');
    - {& j! e) d4 X6 l

  437. 4 l5 n6 d  r/ T( `& M; i" y' u- ]) B! p
  438. getBit/setBit, C1 V" p" n; I( R! c9 o, \
  439. 返回2进制信息" j9 y! [) V. Z6 m$ J' Q8 ?
  440. 3 r5 b. F$ P9 R: k" e1 U
  441. zset(sorted set)操作相关
    5 |" p$ o% `. H- E
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    6 V) ]. i: S8 _8 X
  443. $redis->zAdd('key', 1, 'val1');% A: ^+ ^9 _0 x. H
  444. $redis->zAdd('key', 0, 'val0');! a* ]) s7 @' ~9 n) O3 z/ C$ b
  445. $redis->zAdd('key', 5, 'val5');
    4 U( t  c: T4 s9 p( G* }
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    & E2 I6 U9 J5 X% p8 ^

  447. - V4 K3 j' Q0 K
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素  ]( ~3 j# P! Z/ k
  449. $redis->zAdd('key1', 0, 'val0');. ?6 e& k  }1 b8 I) p
  450. $redis->zAdd('key1', 2, 'val2');
    ! ~  ^( v9 N1 o
  451. $redis->zAdd('key1', 10, 'val10');* W* h' B2 [2 M
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);, ~( ?$ U: b; F. E6 C* E4 M
  453. 1 @% `+ Z) q- K- B8 _
  454. zDelete, zRem0 L5 T8 K2 r4 I! Z3 `
  455. zRem(key, member) :删除名称为key的zset中的元素member$ w5 a6 k+ C) L- J) p/ A, ?0 o7 d
  456. $redis->zAdd('key', 0, 'val0');
    ' q3 E" m  f' K) I& m7 w9 w
  457. $redis->zAdd('key', 2, 'val2');
    & d7 w6 j. v3 O  o) q
  458. $redis->zAdd('key', 10, 'val10');* n3 `2 S$ c* U7 p% ^9 ~6 i2 S/ y
  459. $redis->zDelete('key', 'val2');
    . H; y+ Y; Z8 u+ s, {* h! Y8 s
  460. $redis->zRange('key', 0, -1); $ {$ x/ z. z% H+ I
  461. ( A# I6 D% ]; }- p( f
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出: R' ]1 B( p! t1 J0 w
  463. $redis->zAdd('key', 0, 'val0');+ |# W( y! D1 S1 f( @" z
  464. $redis->zAdd('key', 2, 'val2');
    & z. X0 y4 [: R2 A& `# x6 c
  465. $redis->zAdd('key', 10, 'val10');9 ~0 K- `- y; M' w. W6 G
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);3 l2 C5 S; j4 w6 A9 J
  467. - t/ n% b) ^, `+ r5 p" S1 I- L9 O- a
  468. zRangeByScore, zRevRangeByScore$ o0 K& i% `% B' \5 g
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));5 C8 l( l& ]5 w5 [( X/ s
  470. 返回名称为key的zset中score >= star且score <= end的所有元素$ i% P, N& ^$ t1 Z3 K
  471. $ S7 i' s/ g+ o4 d  M
  472. zCount
    & c6 ]+ B- x& U. i
  473. $redis->zCount(key, star, end);
    ' \' O, o, v2 e) X; i
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数* I$ x8 \* T+ `' j  T0 R

  475. ' n% o( }0 x" U5 _. F# M
  476. zRemRangeByScore, zDeleteRangeByScore; G; `5 l9 e% l# ?, y: c
  477. $redis->zRemRangeByScore('key', star, end);
    # Z" X; I# Q* t% I1 P
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数0 ^+ i4 T. _4 U: v0 Z# W

  479. : `& K  a2 r6 p. Z' e
  480. zSize, zCard
    + L5 U7 e( A. U1 Z
  481. 返回名称为key的zset的所有元素的个数0 c' o8 f, G2 e$ g: `7 r

  482. 4 n" v- C" K- r: i+ y
  483. zScore1 o4 k7 d. t( W
  484. $redis->zScore(key, val2);  x' b$ ~) O: w3 I# U) K
  485. 返回名称为key的zset中元素val2的score
    , j& X& x% ~. e1 R! @' _& }
  486. % a& S7 V1 j; {3 u
  487. zRank, zRevRank
    1 l$ c) z- k$ J/ l  p4 W
  488. $redis->zRevRank(key, val);3 D/ O" F( c% `4 i% \; X! B0 |
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序' t1 u9 q* K; i( v9 H; @

  490.   h0 O; Y# V( _8 n6 I" g
  491. zIncrBy
    $ K7 }) v- ?; C$ d# `* L5 |* t
  492. $redis->zIncrBy('key', increment, 'member');  p: I7 S& A6 e/ l5 u. g* I6 j
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment+ g: F' B+ ~/ H: K
  494. 6 @' \* w: C) ?
  495. zUnion/zInter
    2 Z4 d) y: a0 |& [/ O% J; S
  496. 参数: d4 n/ U* z) I6 _
  497. keyOutput2 R% b9 B8 _* D4 S
  498. arrayZSetKeys
    " n2 [/ l  B) c3 D& U6 d4 X
  499. arrayWeights
    : B0 E0 i2 t& V& a& N: A
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    1 e& U- m0 [5 {; Q, i/ y' D
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。( ?+ z) M; L0 W7 ^- ]# Y; Q- u
复制代码

- W( X" V, B& `$ m0 p8 i  w  O7 X8 {% q! ]- m. ~8 x3 {2 e# X

& j$ f8 t& p3 W, u4 M
) v. B0 m. }/ X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 4 ?# q8 S3 d* m+ N" P5 J9 r0 M3 N0 {
  2. //连接redis服务器 ! G0 `3 I" s8 i  k# y1 I. b1 ^/ [
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 10:57 , Processed in 0.054973 second(s), 18 queries .

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