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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php8 R: M5 r4 T, b; w; w* m$ L0 s
  2. $redis = new Redis();  ) p' x! G! s) B, a
  3. $redis->connect('127.0.0.1', 6379);//serverip port  [* \7 S2 ^/ i& V
  4. $redis->auth('mypassword');//my redis password - d) r5 N- W  O* q$ z/ B8 d
  5. $redis ->set( "test" , "Hello World");  - J( P8 X8 e% c9 T$ [
  6. echo $redis ->get( "test");
    0 n& ~, E4 o2 V: @$ N/ d
复制代码
php操作redis函数封装
  1. /**
    : o* @. i% u) G. ]+ c" }7 `0 S7 e( ?  v
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数* `5 Z# ~4 W( i* `6 S- D2 x2 c
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    ! N* h( v4 Z! J; P/ V( s$ Z
  4. */( X7 ^2 b7 _3 b$ Z) u- W
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
      d/ c8 Z2 N) f- ]' c
  6.     if(!$key||!$value) return false;
    , L9 d- d8 a0 m4 f8 r
  7.     $host = $host?$host:getenv('REDIS_HOST');
    # u: t5 Y$ f3 z
  8.     $port = $port?$port:getenv('REDIS_PORT');! h! g4 e' R0 O0 Q# B
  9.     $redis = new Redis();
    5 A% v' ]+ l: H- e4 Y& z" L( m
  10.     $redis->connect($host, $port);
    6 O2 C) D9 ~, J1 ?  L
  11.     $value = is_array($value)?json_encode($value):$value;
    8 R! L7 U* P3 u2 H- t
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    3 k$ M6 [( M% @! \" T  v
  13. }  \8 Q( _& V( v3 N
  14. /**; }8 g' g0 X, Z$ r. j9 f
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    * ?$ T0 F% L" p5 i
  16. */0 J" z8 `6 ?& J: _
  17. function RedisGet($key,$host='',$port=''){
    4 y3 R8 P  x; W0 |% {/ Q  U1 r7 t
  18.     $redis = new Redis();1 U# N# M; A+ L3 D" {5 J
  19.     $host = $host?$host:getenv('REDIS_HOST');: B6 {2 a: f& y6 \+ Q: C
  20.     $port = $port?$port:getenv('REDIS_PORT');
    ! U: S1 m* f  e  \0 g. I/ ^
  21.     $redis->connect($host, $port);
    : x9 g; ~' @4 ?' p; ]" x
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    4 U2 s8 R2 v3 W2 V
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);. m4 y) a% _2 L4 Z( C3 i2 m3 ^
  24. }
    6 K+ S7 T6 a" a
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了2 C; I4 q/ N& V  F4 }# Z" H, h
  1. setex 带生存时间的写入值
    . c" {1 R( h4 n3 G% l& t3 j
  2. $redis->setex('key', 3600, 'value'); 0 P) Q1 s) h3 x' c. b
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1, M% @) q4 V( @+ S6 c
  4. $redis->setnx('key', 'value');% i. z2 W7 n- G3 y
  5. 返回已经删除key
    - k7 r) Q9 C8 B' l7 `
  6. $redis->delete('key1'); 成功返回1失败返回0
    7 s  y. ]3 D2 I+ W# t  j& z- e, ^
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0: K) m. Y3 ?% V5 w8 H# d0 Y; j
  8. 查询生存时间
    0 a9 A( c  v4 g, k& I/ e2 J$ m
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    7 [  F' V3 N" g7 s
  10. 同时给多个key赋值,同时设置key0和key13 }' b" g, d" V4 K
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));4 z/ R: ~! x; H% g( u
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    5 t: z( c" B' s% A# [) y
  13. $redis->incr('key1');
    ! B, Q. n3 |$ z; E& D- d
  14. $redis->incrBy('key1', 10);0 |8 P3 m: [5 f0 v" j. I) |7 z
  15. 减法跟加法一样5 h: V4 L# |1 K3 k& t# B
  16. $redis->decr("key1"); 减少1/ h5 I5 o5 W3 D" f/ T
  17. $redis->decrBy("key1",5) 减少5
    ; Q3 ^$ D3 d; W% H0 R' Y! U

  18. % u4 X- b9 m+ t  B% T: J! m. v8 z
  19. list相关操作,连表操作
    " T1 X' q$ U% `# k  T
  20. lPush
    : ^5 f+ H5 N5 f; M6 z
  21. $redis->lPush("list", "888");& R" o" q4 M" \$ M( }1 l
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    ) P4 Z- D/ F7 H9 ^& x4 V% z- r% I
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式7 Q7 |% I. ]8 v# `4 N
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    8 `8 ]4 ^! C- P1 ]8 x$ \
  25. lPushx/rPushx
    ' V4 ], J+ }' x0 D3 W5 `+ g- p
  26. $redis->lPushx(key, value);
    + H3 M' q- Y8 p  j
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    . j) e+ N; @* `9 K

  28. 4 ]! F! ~5 e% c" v
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key7 J* l% H0 l* x5 N) c
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    : m0 v/ c( X  @
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回16 N( F$ p& i# |* d+ m
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    ' h$ b# ?) f7 ]$ U
  33. sadd s1 zhangsan  X8 T% b. ?! l, l4 ]7 @& {
  34. sadd s1 lisi6 R3 S8 @. Z. K" V- F3 `9 T
  35. sadd s1 wangwu
    + g( X& \# {7 x% a* u& r1 D( W
  36. sadd t1 yangxingyi" R7 g/ o4 Z8 t3 l1 o6 J. O3 a
  37. sadd t1 lilei
    ' S, ]( H- E& }. ~* i
  38. sadd t1 zhangsan5 _8 h* Q( t" D: F3 S+ q
  39. smembers s1 s1的所有集合内容
    0 L3 @: O( V4 G, p5 |1 s  A
  40. sdiff s1 t1 s1有的,t1没有的,差集0 ^* i& l1 u( F5 u5 |( t! P
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式' ]! G# }# z, W+ V- e
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的3 ?5 c- v0 O9 A
  43. spop抽奖场景,返回集合里面随机的数/ ~& N) e% g# A7 J) u' z! U
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了# ?6 N: R8 d# X" c" @! ^/ C
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数3 M3 C/ c; A3 R0 `* D2 d/ c8 t% S; W( H
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的" T) ~8 T( ?7 @, G
  47. 随机返回集合里面的一个元素,但不删除,重复中奖4 M. G6 ~5 Z" M4 {4 S4 O
  48. $i = $redis->srandmember('s1');echo $i;+ K: r+ J7 [3 h+ Z6 g, k3 M
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false; x& [$ r# R  u/ f- ?( N6 @
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    % f. l# E" f/ X5 R9 F

  51. ! B# T' a7 `% P4 X
  52. zadd key 2 value 有序集合" z4 E7 r" v9 V
  53. zadd y1 1 zhangsan;
    - z* _& s3 z6 n
  54. zadd y1 3 lisi;
    0 t. N* H, a: n/ }, O& }
  55. zadd y1 2 wangwu;
    5 ?( i/ K. n1 X* C2 n
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    5 Y, r) A# o! X1 v  ^- H5 R
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
      B  B& D0 m( g* A1 ^( x$ r4 }
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键8 g) p, d+ p* @% |- Q% ?
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先: H, ]( t- v  P$ P9 j* h$ K# }
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的# P: s& H) E1 }# T
  61. 无序就scard,有序就zcard,有z没有s1 s$ E# k8 |5 t) c: H+ Q
  62. sInterStore0 j2 N) D7 v% \# j, Q
  63. 求交集并将交集保存到output的集合
    4 d3 B6 m* l, v/ P8 {4 S
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')3 O, f; y/ W$ d! f% ^9 o4 F9 w

  65. 3 Z- T9 W2 G3 b$ }4 p/ J/ x0 B/ ?8 F
  66. Hash操作+ M9 E2 }5 [; X3 N, H
  67. hSet
    0 E8 ^! X1 {  r1 I, ~3 x0 Z
  68. $redis->hSet('h', 'key1', 'hello');
    + O. z$ d% C" h9 W; [6 N
  69. 向名称为h的hash中添加元素key1—>hello) d' g) {9 A9 I8 K" ?% B# H, d' k
  70. 5 J! j& @& ^/ n
  71. hGet
    , Z2 b' w4 X7 i& o4 r2 Y5 i& \# h
  72. $redis->hGet('h', 'key1');, k  \3 Y) D/ b9 m. G6 X( t* n
  73. 返回名称为h的hash中key1对应的value(hello)
    6 P, [1 [( f: I- P
  74. 3 S* P. d" F* ?1 l% X- }( i. y' m
  75. hLen
    8 m2 Z. m" M: L0 W. L; p  C1 j
  76. $redis->hLen('h');( J" z0 ~2 }8 ~
  77. 返回名称为h的hash中元素个数
    ( }+ C7 G1 m) m3 x' A  ^9 R

  78. ( g8 l5 I  P8 [0 \6 w! p# y
  79. hDel
    " j1 w( K5 D* Z# F3 Z- `
  80. $redis->hDel('h', 'key1');+ ]+ O, r( s" P) U* D+ F/ B/ L
  81. 删除名称为h的hash中键为key1的域
    3 S  }" n; Z4 i# C% v. Y
  82. & @6 Q' t7 W7 ?8 ]
  83. hKeys
    . Y) W' z8 v9 b: f- `, U* t6 ~5 X
  84. $redis->hKeys('h');
    . O8 G- U: _$ k3 \3 ^( g
  85. 返回名称为key的hash中所有键, v& H& N7 J" S4 y4 y2 w' s

  86. & ]* j- |5 {2 _7 e6 T- h
  87. hVals( S3 f! L0 @8 z+ Z1 c( z
  88. $redis->hVals('h')4 p6 r, n9 }% X$ P
  89. 返回名称为h的hash中所有键对应的value' D8 e& Y) w* u* X5 ?8 q8 d

  90. . u+ y- b: Y& o* V" z2 w5 o, v2 j
  91. hGetAll
    8 o- @- V+ ~2 s) b4 r2 g: U% C" {
  92. $redis->hGetAll('h');+ N. M) \9 y. f! Z. ]
  93. 返回名称为h的hash中所有的键(field)及其对应的value8 r- ]5 I" D) `* Y# R% [  F, T

  94. # B, p, Q$ p3 ~# @5 e. P
  95. hExists, c% W- ^& o% l( F. j
  96. $redis->hExists('h', 'a');
    4 i. j  E4 t) e5 x; U. x
  97. 名称为h的hash中是否存在键名字为a的域
    7 S" U5 z  k0 {% H
  98. & G* o* T$ m9 j
  99. hIncrBy
    2 B5 U( y6 l" U( i- {1 v9 X
  100. $redis->hIncrBy('h', 'x', 2);
    % m. k8 B$ c0 H# w
  101. 将名称为h的hash中x的value增加23 s4 {& @. b$ R; h

  102. " H0 z4 m, l% U; K0 L+ {1 w
  103. hMset0 }+ `. _$ F9 |  z, e
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    . Y) S' t( v4 `' C! N
  105. 向名称为key的hash中批量添加元素
    : E* z1 p: H& x$ Z# I

  106. 1 u. ?* W- G9 ]
  107. hMGet7 s: z7 v/ u7 k( z
  108. $redis->hmGet('h', array('field1', 'field2'));
    . |! e8 U* U4 R* c. z' A4 J0 p8 U
  109. 返回名称为h的hash中field1,field2对应的value5 |; M7 q8 }2 a. E$ d# L
  110. 6 R5 n4 E2 c2 {1 N2 S4 E# N- ^7 {
  111. redis 操作相关
    - y: g+ W, d. z/ \6 v5 W
  112. flushDB; o" }7 i  G  y$ k+ L
  113. 清空当前数据库9 c0 L5 G3 v/ q4 P

  114. 6 }8 d6 k( A& W8 ?
  115. flushAll
    " @7 F; k) Q0 |% J- T: ^
  116. 清空所有数据库
    8 @! @9 s2 w; L6 r: i2 H6 i; D
  117. : v( F& |+ u3 t+ [/ n
  118. randomKey
    % r2 ~5 h3 T: s* a; I6 t
  119. 随机返回key空间的一个key
    # d! _) k" h0 X$ S, j$ M
  120. $key = $redis->randomKey();
    : @5 g* n$ Z: u8 H2 L7 N6 r: c
  121. : X! [& u7 E4 ?8 b) S( t
  122. select
    , K. L3 h( ?" w/ c& u! t9 h9 Q2 G9 t
  123. 选择一个数据库
    8 ~8 F, K# n0 V- z1 n/ e: Z
  124. move% y' K8 H  y) \( Q6 E
  125. 转移一个key到另外一个数据库
      y& R2 X- \! j0 f
  126. $redis->select(0); // switch to DB 0+ p* g# C& h# m  k6 m4 t7 Z% I( E
  127. $redis->set('x', '42'); // write 42 to x
    % w1 n/ @- K, U  N" x" r
  128. $redis->move('x', 1); // move to DB 1
    * |$ [0 v" V: a; w
  129. $redis->select(1); // switch to DB 1
    - d- @3 H% G7 ~% H
  130. $redis->get('x'); // will return 42
    4 F, n) v# [0 K1 j$ Q, z: V* ?
  131. ! k1 g' c( @. d' k- [) a
  132. rename, renameKey
    / Y; M3 Q3 d( B/ w& f
  133. 给key重命名
    7 M- w: C% v2 S6 C  c" C
  134. $redis->set('x', '42');
      R" d$ P4 y8 V
  135. $redis->rename('x', 'y');
    ( X, ?, p( s7 H& J+ r
  136. $redis->get('y'); // → 42
    ' i1 Q8 x2 ]# `8 f( y
  137. $redis->get('x'); // → `FALSE`
    , b9 r! h6 M! Y! Z4 @
  138. 8 O+ _0 ?5 Q/ s' O
  139. renameNx8 l6 c# D, Z9 I' M9 t$ `4 m
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    3 L: k* E7 }/ Y2 p5 C/ D3 |

  141. ! y7 q: N* j: h& e
  142. setTimeout, expire
    % u" F" r7 c* Q1 W" u
  143. 设定一个key的活动时间(s)
    . ^  c2 I# f9 T4 r8 B& D3 l8 b
  144. $redis->setTimeout('x', 3);/ J" p* {8 c' ^$ R! G$ B3 n1 H

  145. / o6 h/ r6 G' x# o, U4 J
  146. expireAt
    2 w+ j9 l3 z9 Y  O* d  M% \% N
  147. key存活到一个unix时间戳时间
    6 }4 r  G; R8 r. V/ m
  148. $redis->expireAt('x', time() + 3);: F, k2 U; ^- F

  149. * e! p# i( b2 ]/ {6 K2 J
  150. keys, getKeys
    ) @# Y! k, q. X# m
  151. 返回满足给定pattern的所有key
    & P% U1 _5 Q4 k* ~: W9 w) M
  152. $keyWithUserPrefix = $redis->keys('user*');* \/ e: ]8 B# @0 i# E  o
  153. ; c& `) e, }) Y/ y- L
  154. dbSize
    ( c2 `; V2 ^: ~8 G1 Z/ o8 x$ A6 ^
  155. 查看现在数据库有多少key
    3 q2 v- X: ]( U* q
  156. $count = $redis->dbSize();. M3 ~9 j# d( H$ r2 R- ^+ ?
  157. . o3 E) ^% j: Y( R$ Q/ J, \
  158. auth
    & R+ ?# @; l- p( \2 R; h; f! Z# k
  159. 密码认证
    & ~, Z# [# |* T
  160. $redis->auth('foobared');( H& X1 Z6 X) N/ r7 C, z* r

  161. . `2 b' }' ~8 \" L! l& _
  162. bgrewriteaof
    6 \+ F$ ^  R) @1 u0 T  y
  163. 使用aof来进行数据库持久化9 Q! v* w1 ^2 g. W
  164. $redis->bgrewriteaof();
    % l$ K+ v" ^: K% f+ V

  165. 5 n& ^1 L7 |+ I; N2 ]% X0 r5 q8 {
  166. slaveof; P& a7 X( O6 Z- }& J; m
  167. 选择从服务器
    / \4 u% H+ E: V6 O& H
  168. $redis->slaveof('10.0.1.7', 6379);
    . ]6 E; z- ^3 r$ \. D2 m

  169. * ~; |0 k# F# {
  170. save+ a7 ]) t; k' D7 @( M9 c0 G9 U
  171. 将数据同步保存到磁盘# b  g' k1 B2 x/ [; ]& x
  172. ! L: M# h# Z2 w, ]
  173. bgsave& s8 X' Q2 \5 k' m- P
  174. 将数据异步保存到磁盘7 y& k( L0 {, Q, [7 E' y

  175. . f6 u9 p6 U8 }9 K
  176. lastSave3 a5 e; v( y/ W) m
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    + S, j9 M- A  E- @; A/ S

  178. 8 |' ~5 @9 y+ }4 E- s0 {, A/ p
  179. info
      x  `$ v- ?  q& A# S
  180. 返回redis的版本信息等详情! ]; B! \$ N/ r  I* V0 b* z

  181. ; P- z+ ]" H5 N. b- P  Y# p
  182. Redis::__construct构造函数6 E* j8 y0 m& E+ B4 N8 H
  183. $redis = new Redis();
    3 f0 d1 A8 e7 P8 W
  184. 6 x( y% d2 W3 q
  185. connect, open 链接redis服务
    3 O/ r& @& S# w& y/ d. h. \
  186. 参数
    9 w& Y2 T) V9 {
  187. host: string,服务地址
    # q3 s2 N/ \& O. {
  188. port: int,端口号1 y% r2 F  ]9 @/ I" S7 R
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)/ e7 U1 J6 I, ]( F  Z4 w
  190. 注: 在redis.conf中也有时间,默认为300: V2 z% z$ T. s# w
  191. 8 ^" @& j; E4 G
  192. pconnect, popen 不会主动关闭的链接
    % H5 \% M8 U0 G+ |; j# F
  193. 参考上面5 `7 q0 Q, ]! S3 j
  194. ; |5 v- C7 p/ a: l3 s" ~
  195. setOption 设置redis模式+ `) E) A+ L0 |! e* |9 g
  196. * p+ Q4 f# g) p9 e
  197. getOption 查看redis设置的模式
    + g) `2 S/ R3 F3 }) u! ~2 V7 w2 W

  198. - ~8 G; p8 O" l/ T! V4 K; T% s
  199. ping 查看连接状态
    . p- w' G7 J6 ?, [! q7 l

  200. . _7 L; l0 o4 t  y6 x
  201. get 得到某个key的值(string值)/ R) O1 |: g8 a7 h
  202. 如果该key不存在,return false
    , `8 B" _! R" X
  203. ! b1 @5 ]: Z  f
  204. set 写入key 和 value(string值), z1 Q. B' ^, S, u, G! L
  205. 如果写入成功,return ture
    # n7 C1 x$ i5 P- l: `

  206. + A5 R- q3 x: r4 a
  207. setex 带生存时间的写入值
    5 t+ @3 Y) i5 y% G* B
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.  A; _% ~) x3 V! {4 d' ?" Z8 f
  209. 7 n- Y/ q& }/ o
  210. setnx 判断是否重复的,写入值
      R3 m4 @% g9 L6 J$ s
  211. $redis->setnx('key', 'value');
    ( h6 K; s  L9 E: Q/ p+ P  t
  212. $redis->setnx('key', 'value');1 s% N8 J( V( U; J# a
  213. - P" l3 @0 G( O% ?- a# L
  214. delete  删除指定key的值
      d7 I- b) R# _+ e
  215. 返回已经删除key的个数(长整数)
    1 n" Q0 G8 t( H" S( |0 h, V
  216. $redis->delete('key1', 'key2');
    5 J" g8 M4 g  _6 S+ s  C! m
  217. $redis->delete(array('key3', 'key4', 'key5'));- W  g% s+ ?: l1 t. F3 a  A$ q& s

  218. " T: O. c- W/ {# O
  219. ttl
    3 Z" {/ y: U. h6 f, F' f8 Z
  220. 得到一个key的生存时间
    " i  P% f0 N" `! w" ~! u; D9 T

  221. ! L; ^$ U& d9 n$ g+ x  N% n
  222. persist+ Y9 p# l/ E7 |2 m
  223. 移除生存时间到期的key
    . O. o& Q3 t" E+ O8 S% z
  224. 如果key到期 true 如果不到期 false
    ' S6 B1 l$ F0 B- V$ q2 ?
  225. # d5 i% z" D- b/ O& k+ U
  226. mset (redis版本1.1以上才可以用)! R- z; u0 u. x( F6 u- h% b
  227. 同时给多个key赋值' {2 s- ]4 o* H
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));1 P. Y& W4 l# t# a- A3 V  d

  229. 9 M0 E* b% E/ U8 k
  230. ) Y/ e9 p/ |$ g+ X/ ~0 Z# v3 C

  231. - T4 J9 O4 Y! p8 J/ P( Z. H
  232. multi, exec, discard# g" e1 x5 x. [$ s3 H+ ]
  233. 进入或者退出事务模式* {  [/ F2 a/ H# r) w
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    0 ]- s. p: D4 T% y4 D; i
  235. Redis::MULTI:将多个操作当成一个事务执行
    / p/ }4 H$ O) d' [) B
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证1 P/ o; i2 U  k8 ^, p( ^
  237. discard:删除一个事务4 B. r: V% u1 `' t2 z5 c( U$ j
  238. 返回值
    9 `+ M! z) e) V3 N3 K# F
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。' p' l1 Z( q2 h5 a! Y

  240. 5 i; w8 I, ]2 ?9 R6 A& x( l$ F
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    - J( U7 |* y3 M* k$ R. [6 w
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    , N/ r2 T: Q, }8 y/ ?% W
  243. unwatch  取消被这个程序监测的所有key
    # Q) ~# L" S0 p  {4 a
  244. 参数,一对key的列表' _* l7 d8 N/ e7 ?% ?& S  I
  245. $redis->watch('x');
    4 ]- I8 L; O1 r% C& g
  246. 4 S/ `# k" V1 Y! `0 l8 ]6 I* v
  247. $ret = $redis->multi() ->incr('x') ->exec();
    3 H. {/ X  S  I
  248. - p( F. x6 u5 q* Q
  249. . M- ?& _, D8 B  c  C
  250. subscribe *
    0 v; `% p* _0 A$ R' ?  B% [/ j* w
  251. 方法回调。注意,该方法可能在未来里发生改变
    " ]6 H5 y0 I: A6 _8 t
  252. - g4 d8 |/ u4 k3 d1 O1 ~
  253. publish *  c4 i/ b( ?5 z
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    5 k* _2 Y8 E. n( C. a# z- j
  255. / U4 Y. C8 r7 ?' T# z, G8 U
  256. exists
    7 h5 F( }0 r$ m2 `% L9 K) @0 j& M
  257. 判断key是否存在。存在 true 不在 false: ?) v+ w* ~. _* I7 t) N
  258. 6 r0 }% `! t0 N" r7 r( \( U( e5 O+ h7 z
  259. incr, incrBy
    9 U% A, v( d' K/ T3 B
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    : ^. ~7 \! I$ U6 T! e
  261. $redis->incr('key1');
    ' Y. p; D* s. P1 k$ l
  262. $redis->incrBy('key1', 10);8 W6 {. w5 ^- g7 z
  263. 0 d4 z+ v1 F# J. @- D0 v% c  Y
  264. decr, decrBy: H# X2 B5 Y# \  U! ^& j- X! F1 X
  265. 做减法,使用方法同incr$ Z0 w0 d0 D  C
  266. 0 i& O  `5 {  K5 w  ?4 c3 F
  267. getMultiple
    & x* U, u) U5 C6 ~  `1 N! u
  268. 传参& k$ u2 y4 v* w- o# z
  269. 由key组成的数组
    0 R3 K% a9 Y$ ?2 N
  270. 返回参数, d% I$ X! e% u' g1 M
  271. 如果key存在返回value,不存在返回false
    5 l9 I- N! c2 w# _8 W; W
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));; u3 d# g7 c" }
  273. $redis->lRem('key1', 'A', 2);
    5 F* H' S3 e+ f- j& H4 z
  274. $redis->lRange('key1', 0, -1);! |5 F$ Y2 q, |) |! V
  275. % G" r/ f; i! L( F
  276. list相关操作/ J) [  A* C; @( U, f# s( Z
  277. lPush* x1 X2 N8 ~, f, }  b: R3 n5 G
  278. $redis->lPush(key, value);
    / Q3 a8 s0 N. D, i' `0 v0 v" l  F/ ?
  279. 在名称为key的list左边(头)添加一个值为value的 元素1 G, o3 \' e2 U
  280. ( h" M& [# B: |& M) [& r
  281. rPush6 g6 N- y6 ]3 g$ M6 C( n
  282. $redis->rPush(key, value);: E3 i# p6 n$ ]4 n, a+ k
  283. 在名称为key的list右边(尾)添加一个值为value的 元素! v# Y5 v+ w% t4 }' G: O. c4 b
  284. $ v' W/ p, t# A; F
  285. lPushx/rPushx
    , x4 j$ |& E8 O- r+ f
  286. $redis->lPushx(key, value);' W! q0 R# Q! Q# I2 N: L6 L: t
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    3 z- U; ~2 j' ]/ \2 H
  288. 0 p# ?' w* Z6 \5 F) ~, ]
  289. lPop/rPop$ F* }) u+ ]! d5 s/ E$ \- A% B
  290. $redis->lPop('key');8 @7 S0 v  U% I0 `. ?
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素0 O# D/ z. s0 S, x- h! U& ~
  292. 4 s' x1 B  d- C4 _/ e2 M. f+ m
  293. blPop/brPop8 W1 T; N. V* J/ r
  294. $redis->blPop('key1', 'key2', 10);
    / A4 M1 P+ q0 w8 |7 d6 P( L3 x
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    / s4 Z% `  Q9 K6 Z. M% O  j
  296. ) \) G" s% z- T; D+ s- K
  297. lSize) u, B1 l% p* q4 S* m) i
  298. $redis->lSize('key');
    8 r. X& D( g6 ]3 Y9 a5 j, x! _3 V  B
  299. 返回名称为key的list有多少个元素1 _! a7 M+ ^, Y5 v6 W3 s7 E

  300. ) _/ v) A3 `$ ^) q" a8 L, w0 [
  301. lIndex, lGet
    6 N5 i, L8 }) W! u2 G, a" g/ u) V/ X
  302. $redis->lGet('key', 0);  U4 U: C! j" @" w
  303. 返回名称为key的list中index位置的元素
    " P( J% A: m& p1 R$ }' m
  304. ; l' q: f- d6 G- ?5 |" o
  305. lSet: m% R5 k/ [! {% w$ ^5 E  S
  306. $redis->lSet('key', 0, 'X');
    8 M5 f; o( u# o( ~
  307. 给名称为key的list中index位置的元素赋值为value
    % z; d& `* ^" P4 S7 e+ u% @. A
  308. , c; p+ ]0 g' W# g; N2 p! F. u8 i
  309. lRange, lGetRange+ k9 a6 K2 D( m% o
  310. $redis->lRange('key1', 0, -1);
    . w4 P; x' O# X+ X0 {
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    * y$ O# N2 l1 L+ x) E$ m4 T8 m% M

  312. ; o$ n* |6 n8 J/ B
  313. lTrim, listTrim
    4 G$ Z$ Q: c- ~$ w: ~
  314. $redis->lTrim('key', start, end);
    ; B5 ]  v/ l5 `) y
  315. 截取名称为key的list,保留start至end之间的元素; V' h" h+ A/ q8 y1 X; a- }) S
  316. - O. q( X& C- P! Z
  317. lRem, lRemove
    ; w# }6 x" M% g% _" {
  318. $redis->lRem('key', 'A', 2);
    . i$ x' S& h1 T" y" R0 n+ z/ J, e
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    3 L* g; R% `3 P. q# I! g7 q% d
  320. ) \/ K: \+ F" C7 O
  321. lInsert! \2 i$ K! r3 |) V! U' K6 V  {$ F2 B
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    $ u: u) u; Q! 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');
    3 w1 |% W5 Y0 J2 P7 v# i6 o+ Q
  324. $redis->lRange('key1', 0, -1);2 d9 X# k8 x3 ?! \' |3 ]
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');  J; ~. G3 I# ~, L+ K9 }+ ]
  326. $redis->lRange('key1', 0, -1);1 D2 {- t3 U, U" r2 A& U" M' V
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');5 p1 I% I. R2 K  l
  328. $ y+ D/ [- |. Q. d$ \* J
  329. rpoplpush
    - s" o+ L2 Y9 ^" k" L& E
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部+ D& E) C# d# X' ^
  331. $redis->delete('x', 'y');5 ^7 g( ]: O3 ]6 x
  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'));
    + k& j5 f' G" A0 F2 [( ^- e
  333. var_dump($redis->lRange('x', 0, -1));
    5 m0 F- S, q! y
  334. var_dump($redis->lRange('y', 0, -1)); 7 G9 `' K0 X8 L1 q! x' x/ v! R, V6 f

  335. ; c6 _( [# Y; M* m. t8 u1 B$ j4 Z
  336. string(3) "abc" 1 I' f- T5 }2 X( k  @7 b; ^
  337. array(1) { [0]=> string(3) "def" } 1 b! A7 |0 d9 b4 v
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    ) x  x- N5 N, P/ n9 I/ o) a1 q: x

  339. . I: g) @; J7 I9 ]- s
  340. SET操作相关' b4 B+ q4 O4 ~5 N( U: l
  341. sAdd# ]# o) R" d+ X
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false' C+ |# l; p  L
  343. $redis->sAdd(key , value);
    1 p( N! v7 K0 G: ]) }' V* D
  344. & H& T' |4 K) A% I: Z) [$ s
  345. sRem, sRemove6 X4 F( z+ a9 ~# @; ]$ A0 j
  346. 删除名称为key的set中的元素value3 D3 i4 F6 W5 o8 f7 O6 t" a7 N
  347. $redis->sAdd('key1' , 'set1');
    3 \& [5 G. ?/ H
  348. $redis->sAdd('key1' , 'set2');2 T6 ?7 p5 }2 C# w
  349. $redis->sAdd('key1' , 'set3');  Y1 P3 b; w9 R& z
  350. $redis->sRem('key1', 'set2');6 h* b. Q, F  I  c! F  j0 q. N# B

  351. ! h0 E* j; t+ K; Z/ V7 B  a
  352. sMove$ f$ u3 r- D( k0 K# V
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合& B6 e) {% n4 @( h7 Y9 y
  354. $redis->sMove(seckey, dstkey, value);
    2 D# b, z) y; N
  355. 5 G6 Y  N3 F) b
  356. sIsMember, sContains
    8 ?# S, j* S$ P4 |; i& @/ [9 c
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false% T. |$ _! ]6 D: t" C
  358. $redis->sIsMember(key, value);  Y4 K; q3 q9 c' y9 \. K

  359. . D9 W! d8 P" w' @
  360. sCard, sSize, L: r0 h- n8 G# Z/ I
  361. 返回名称为key的set的元素个数& H4 L8 a) Z$ y1 \; O: k0 k) n: r3 D
  362. 1 T- j0 \$ ~3 R
  363. sPop8 H4 W0 A: h+ k: g
  364. 随机返回并删除名称为key的set中一个元素) i8 F% {1 _! J( `
  365. - v$ d+ S3 h  ^9 `, k
  366. sRandMember4 O; z6 }% e6 F+ r" S8 M9 ~
  367. 随机返回名称为key的set中一个元素,不删除
    # v0 Q* J. Z. |6 l' }
  368. " H1 a5 J$ z3 p- G( w
  369. sInter, e# p. y# {4 j) y
  370. 求交集2 U- F9 o8 U* S1 K. D' [% S

  371. $ f" T" _8 ^. m/ I3 v: T
  372. sInterStore+ D6 c, h1 Z+ E% Z# |
  373. 求交集并将交集保存到output的集合! X6 e4 \# }9 `* m3 [, W
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')+ T% B/ ^" J: A
  375. $ q9 }' ?8 ^, x+ A0 R7 N# E
  376. sUnion+ |1 V8 z  M. D
  377. 求并集! U+ u7 G! P. F  h; `
  378. $redis->sUnion('s0', 's1', 's2');& v# b% x. T# b* F, N3 l
  379. s0,s1,s2 同时求并集; X+ g3 |% \# \# N, i
  380. ( M; T- J, W' P% [
  381. sUnionStore
    " M, P5 r+ [3 ?6 w
  382. 求并集并将并集保存到output的集合; w8 c+ j- ]0 q5 _: v
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');5 N2 H% r3 o# J7 F

  384. ) c5 {! p- t0 z* {" r, ]
  385. sDiff/ b+ g; x" L. D  x' C9 l* g# ~
  386. 求差集
    8 M( n* N0 j8 a# e& e1 T, y6 _
  387. " S* ?  [5 l  V
  388. sDiffStore3 ?% X6 f2 u9 e( s: r6 Y
  389. 求差集并将差集保存到output的集合
    : i, J+ f  G5 _6 Z$ h

  390. ; i/ d7 j4 L3 p2 k& O
  391. sMembers, sGetMembers; ~/ q+ d. a- T% z8 N4 r
  392. 返回名称为key的set的所有元素. b* P6 @1 t5 r& k6 m! e7 u
  393. 3 X$ |! H7 C/ V8 q
  394. sort7 Q  @3 v; n# t
  395. 排序,分页等
    & r, ]! S, k2 p  U' i$ \; M, M
  396. 参数( T0 R; m* L, c. m5 ~
  397. 'by' => 'some_pattern_*',' s4 X7 y! H/ I6 n6 a
  398. 'limit' => array(0, 1),% w9 p* C  k6 G& T  C+ @
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    # N6 P9 m% R) ?3 ^5 j( r+ \
  400. 'sort' => 'asc' or 'desc',1 p. [3 W$ r" C. R
  401. 'alpha' => TRUE,& w- }8 W' ]$ V' T
  402. 'store' => 'external-key'. w, o1 N/ L, X+ K  P  R
  403. 例子
      y/ j) A6 K% _3 {. I2 P
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);" m* |, K1 `" l
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    7 {% R8 C8 X6 B8 O) [
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    . b5 C7 Q  U& |" ?
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5% R, r2 f0 p1 t2 D

  408. 9 B  s, }4 g8 _6 s. y# j
  409. string命令4 y7 `" K, C4 t
  410. getSet/ c. |9 b! Q2 T
  411. 返回原来key中的值,并将value写入key$ j, x! g- b- Q) I% q  I& N
  412. $redis->set('x', '42');" T, t; X# s1 M5 `; K6 o7 C3 m
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    / g5 F  Z, U5 r9 X( Z" i3 J0 D
  414. $newValue = $redis->get('x')' // return 'lol'% l, c8 m; f6 i; N1 P
  415. 9 T  Y% N$ B; o! d& y6 E
  416. append
    * ^6 ?8 ~7 Y7 s  U9 P/ B4 v* _0 X. j
  417. string,名称为key的string的值在后面加上value3 B$ ^) \7 N# z3 K$ l  U1 a
  418. $redis->set('key', 'value1');
    2 [. @7 Y7 W* J  w( N% n* q
  419. $redis->append('key', 'value2');
    ( g% H: A  r; N! X' G! }3 m7 V4 t
  420. $redis->get('key');
    8 a9 R" W- \5 v' _" f& Q' @2 c
  421. $ V+ b, ?* G7 |0 A0 P9 y( \
  422. getRange (方法不存在)6 Q$ ?- L9 @; p5 E
  423. 返回名称为key的string中start至end之间的字符+ W" r% \" P( [0 U
  424. $redis->set('key', 'string value');$ j; e9 ^! u# d% y! R( p- z
  425. $redis->getRange('key', 0, 5);9 L$ _" W9 Z$ i: B  |
  426. $redis->getRange('key', -5, -1);
    1 n6 M; M  C2 R. O

  427. / A( J* I5 D7 d( J( @
  428. setRange (方法不存在)' I' V6 U$ |. I, n6 ]+ y9 ~
  429. 改变key的string中start至end之间的字符为value0 t) I5 H% G. O- |) N' W
  430. $redis->set('key', 'Hello world');# T3 n. Y. J" W- Z0 @' ]
  431. $redis->setRange('key', 6, "redis");
    # `+ o2 p4 `% J7 x, i) I# Z/ R) R, H' W
  432. $redis->get('key');
    * C. t9 ^$ C% G9 n
  433. " ~, T8 p# X& C2 y  f
  434. strlen8 `0 w$ A# ]. B% C
  435. 得到key的string的长度
    % \8 g: e, e9 b" V1 D
  436. $redis->strlen('key');
    % k: @% H6 X& B7 \

  437.   H; T( C6 \& ~# }: A: E8 R
  438. getBit/setBit
    , j& Y! x: y" t; b% Q9 J/ K
  439. 返回2进制信息% d( A) P% }, \- M7 z3 b
  440. , P7 ]! s3 L$ b( L. @
  441. zset(sorted set)操作相关8 V& u- C, m/ `) |' h5 S: {
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    * E# b9 [! |  U! M6 r% s
  443. $redis->zAdd('key', 1, 'val1');
    7 w- a; m- Y' v0 b! _3 q
  444. $redis->zAdd('key', 0, 'val0');" @3 G8 `( O, T; I# @
  445. $redis->zAdd('key', 5, 'val5');8 e  Q# S. z  `( R7 t
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    % E0 O) ~  R# ^! f/ Z
  447. 9 l" o) X1 _' _; H( S
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    + n- b4 y% b* |( \2 \# g5 d
  449. $redis->zAdd('key1', 0, 'val0');, g4 X) T; k8 t! v) h6 x
  450. $redis->zAdd('key1', 2, 'val2');
    & O8 B* ~6 P( l4 U% l1 C6 q- a
  451. $redis->zAdd('key1', 10, 'val10');6 G, K$ k2 I. |. ~3 d: @$ X
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);. i. E& v! ~1 q- A

  453. 4 f- E+ E7 R" n; t$ V
  454. zDelete, zRem% v% N, E3 Y- v# u! W: V3 J" o% k0 d: ?
  455. zRem(key, member) :删除名称为key的zset中的元素member
    ; \, A, r' \  y5 ]; R) m* T$ O. W9 c
  456. $redis->zAdd('key', 0, 'val0');/ J  i' m5 O/ F. k; c6 w& b
  457. $redis->zAdd('key', 2, 'val2');
    0 s- |" x. a" m  ^
  458. $redis->zAdd('key', 10, 'val10');9 I4 _8 H- t8 M$ R' W, U& V
  459. $redis->zDelete('key', 'val2');* o. L  B0 h. Q, `/ J; f% u) W. G
  460. $redis->zRange('key', 0, -1); # X* L1 p! V; N( g, P. r: |; [) B( G

  461. 4 G, }" T! ~* U
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    4 i  E& R# H- R% Z) R
  463. $redis->zAdd('key', 0, 'val0');
    5 }4 x7 i+ F' @! A# a6 O
  464. $redis->zAdd('key', 2, 'val2');/ y3 L: f2 k& K; L" ?
  465. $redis->zAdd('key', 10, 'val10');
    8 V7 u/ X$ s$ N* d
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    ' ~9 E6 _* f5 r+ K% p; D

  467. : {& \1 G3 m0 w9 }- f; l1 p
  468. zRangeByScore, zRevRangeByScore- G8 o- V; a5 `( F2 X, {8 H
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));4 N6 D4 B! y! P9 }  |' k) |0 F
  470. 返回名称为key的zset中score >= star且score <= end的所有元素# J2 U- u* S6 h6 M

  471.   S' S# O3 s: P( Y: {
  472. zCount
    ; M% O9 e9 U7 t. U  D' q# T
  473. $redis->zCount(key, star, end);
    1 j' a# Y" [; f( ?+ ~+ z6 `
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    6 l9 `# ~* a5 q' E" l& s

  475. 6 M1 g- K7 M$ M# `! a6 H
  476. zRemRangeByScore, zDeleteRangeByScore
    9 ^% J: B0 b+ L* V  t
  477. $redis->zRemRangeByScore('key', star, end);  j5 Y' L% n- K( l1 L! `* A# X: H
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数' ?, I9 L/ l! A0 v, Q
  479. * N& @1 ]& D/ _/ E1 n% V1 a& [: Y! h
  480. zSize, zCard
    " y- k* R( n: ?" d; c- d# h
  481. 返回名称为key的zset的所有元素的个数
    % r# U% e2 s+ E' q  H

  482. 6 N) a- m8 {& O: s! M6 [+ x  X
  483. zScore
    ; d8 y' t& H' I  a/ A
  484. $redis->zScore(key, val2);8 f3 ^3 m( y  T( g5 W+ p# J
  485. 返回名称为key的zset中元素val2的score
    4 _- L6 e0 r8 }; p

  486. 7 W6 o  w6 E" W3 c4 w3 p
  487. zRank, zRevRank
      \& n7 B' K2 J, I; H& v
  488. $redis->zRevRank(key, val);) [0 x& b3 l5 m  B) r) M! d: c0 L
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序1 U4 f+ U; B9 p: k7 ~. p# A

  490. " Q' ^; z7 I, Q, a5 Y/ a  k
  491. zIncrBy% D" L+ r5 s! `$ Z& T
  492. $redis->zIncrBy('key', increment, 'member');& T3 v& c6 B( u9 `  F' o
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment2 u* F  [% ?, o) N: f
  494. & g3 K" h4 ]/ {# U% d
  495. zUnion/zInter
    7 b+ X* G( ^- B
  496. 参数$ W2 ]  p& E) {' `# f/ `% J$ I
  497. keyOutput' q2 a: I8 P" W! r. S
  498. arrayZSetKeys
    ) L+ U4 C/ T2 y/ q  l/ Q2 Y
  499. arrayWeights) a* X! o2 {: m9 e2 x
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.- ~$ U# I; u, z; C! L
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    7 L! i4 T6 w0 ?) a/ m( |
复制代码

) P/ ^; v. I$ X  p
8 [4 a8 D6 |" Y; x1 G+ N8 g  A
% x1 e, G& w" e" ^- C3 m, K  _: h$ }. d) A0 y" P# O! \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); 3 T) {: i3 q6 i- Z$ Z* _
  2. //连接redis服务器 & r' a' _) T& d. L  ]3 z9 E3 z6 a
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-7 21:08 , Processed in 0.151133 second(s), 18 queries .

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