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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php  H) r: m/ D; ?# q) W2 m( ?6 C
  2. $redis = new Redis();  
    8 n/ l* p# X+ C; ~$ N! i/ a: }
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    6 r6 y- m5 o; U/ B+ ]# L8 S7 u: ?
  4. $redis->auth('mypassword');//my redis password $ C- Q" {/ B' J
  5. $redis ->set( "test" , "Hello World");  
    - S7 _+ Q, T# t# R, |1 C, @
  6. echo $redis ->get( "test");! e. v* S6 @$ v& O# c+ ?1 v
复制代码
php操作redis函数封装
  1. /**; I" o( q+ m, B% ~$ i
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ( S/ f  ?  k* x% T( V% A1 q: P6 k
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi/ ?9 Z% s8 |$ P, E( F. a
  4. */4 L% Y4 `- {+ _# U% e; l
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){: {. N" j$ O6 ~3 S& i
  6.     if(!$key||!$value) return false;
    & q# W: F6 z- P2 @4 `
  7.     $host = $host?$host:getenv('REDIS_HOST');
    6 T3 `- j3 J' a7 R! c
  8.     $port = $port?$port:getenv('REDIS_PORT');
    ' Z7 d* M# D, \2 c4 t0 Q: L
  9.     $redis = new Redis();
    4 Q5 m4 y; o7 U5 Q: s
  10.     $redis->connect($host, $port);
      B( C, }6 V$ q' m; s3 H
  11.     $value = is_array($value)?json_encode($value):$value;- V# Z! g3 U  u3 E2 r8 y  a( f
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    3 E9 L# _4 H" k( G* t
  13. }1 m! N  v# w7 K9 f. l' ]- F
  14. /**
    : p% m7 \. `1 _- e1 B" o6 U
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi- q/ K5 O" m3 f) q7 |  C$ [
  16. */  p/ X# r' v0 w/ k
  17. function RedisGet($key,$host='',$port=''){+ g, t( @+ H& O, z% x5 z
  18.     $redis = new Redis();& ~6 D' }7 a: G7 \9 r5 c6 \
  19.     $host = $host?$host:getenv('REDIS_HOST');4 @* Z" W- V" x; A! k5 c( o
  20.     $port = $port?$port:getenv('REDIS_PORT');
    , H* A" b9 n  b7 d/ G/ o+ L
  21.     $redis->connect($host, $port);
    # A1 C% c0 `* C' f# q" `
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    " r0 F' R. d; a" @1 w6 g# ~) @- [
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);) Q, u1 ^  |4 d) A9 B
  24. }
    1 m+ z6 K* O  H
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了5 C% e+ P. q( X4 l$ a6 |% B
  1. setex 带生存时间的写入值2 E# h6 w' i$ X  _3 a% Q( t- o
  2. $redis->setex('key', 3600, 'value'); 0 F8 A9 \2 a9 N4 u; D& t
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    # w+ v/ Z% v3 w/ g  o8 Q
  4. $redis->setnx('key', 'value');
    " a2 E# H/ G4 v, u8 i0 ]
  5. 返回已经删除key
    ; P& {' i& D/ L7 b" t7 x  e( @
  6. $redis->delete('key1'); 成功返回1失败返回0
    % l+ y$ }, _0 _6 L
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0; W% q9 U7 k: k1 L  [( X6 i
  8. 查询生存时间
    ! [% w8 a: c! Y! k
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    1 Z% J% e4 L4 h4 \9 T
  10. 同时给多个key赋值,同时设置key0和key12 o" z& O8 H) q. s
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));" A" E* W  d5 T7 \
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ( C2 J4 i0 J6 y  l
  13. $redis->incr('key1');
    # h5 b+ e, S" E& ]
  14. $redis->incrBy('key1', 10);% o3 G' z$ L( @6 g8 G2 ?! l
  15. 减法跟加法一样* O0 q4 v: y0 i
  16. $redis->decr("key1"); 减少1: g& a, C6 c# c1 o6 Q& f
  17. $redis->decrBy("key1",5) 减少55 I0 v& B# Q/ v! x
  18. $ H% w- [. y' `& f, D
  19. list相关操作,连表操作
    % k: z/ q8 ~6 L. V
  20. lPush
    . ]4 g" V, M! O' ^4 {6 ]9 w
  21. $redis->lPush("list", "888");- g! [7 K! J/ e. L; J
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    . X& J/ U; A# @) f3 `
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式/ r' Q: |8 [+ V# Q, p
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素" O* W$ z  W! R4 Z$ R/ N+ c
  25. lPushx/rPushx: Q! O- F5 U! C( z$ i
  26. $redis->lPushx(key, value);7 L$ o9 L% j$ f9 M( N1 h: Y
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    9 m5 ^& X9 L2 c' e
  28. 8 j" C" ?8 c. T. P
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    6 T! ?  T' h9 f5 s& L7 ?
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    $ f& ~6 ^& u4 H/ W& H" o5 Z7 P5 D  F
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    5 n* I' W# J+ P7 x% ~* Z
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序7 o/ e; _2 l# j% }4 N' C& W2 l
  33. sadd s1 zhangsan" U3 j4 T9 u3 _, K9 n  M
  34. sadd s1 lisi2 {; w/ b# }- M1 V/ Z
  35. sadd s1 wangwu$ p0 b+ K9 @5 _6 q# n
  36. sadd t1 yangxingyi
    # Q) t9 T5 [4 Y: e( Y; x. i. l2 A
  37. sadd t1 lilei
    5 G/ s+ q/ h0 Y
  38. sadd t1 zhangsan$ `1 Q; h5 k1 |# D- V8 p9 X
  39. smembers s1 s1的所有集合内容7 F7 [9 E: ^* e4 c
  40. sdiff s1 t1 s1有的,t1没有的,差集2 e4 W( L+ L# K. F
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ' M7 N8 {% T$ v! ~; T5 X
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    # x8 j7 S* ^. j, C' ?
  43. spop抽奖场景,返回集合里面随机的数
    ) L! @: |6 i$ q- t5 K/ V! }
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了) S- W+ m7 P! J; g4 I  X( }+ [
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    $ Q4 a$ z, f" h1 U2 K! P( |4 C
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的( N$ d8 M+ P  I, r# z3 S
  47. 随机返回集合里面的一个元素,但不删除,重复中奖9 Y  E: s6 C+ W7 n; _" z2 E$ G
  48. $i = $redis->srandmember('s1');echo $i;- @8 x6 ^: l  ^
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    - }- B" n4 Z8 X: ?  x5 Z( ?
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    2 n# l+ T; k- \
  51. 1 `& B* f: Q+ M% Q$ P0 }5 M
  52. zadd key 2 value 有序集合/ c; e& n  B; C
  53. zadd y1 1 zhangsan;5 \5 E8 L" D3 i( ?7 d
  54. zadd y1 3 lisi;( {& E. B6 B2 r& `* ?
  55. zadd y1 2 wangwu;
    , [# A3 A" m6 n% \0 u
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi1 H3 u5 ^, G) k7 `5 u( P  H
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);" c& [, {( O) n' N
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键7 C; \0 A0 U2 ]' A
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    # V4 T( D  g, s# w# E) b  n& U
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的0 k7 c0 H( Z3 V4 e6 |  h) w
  61. 无序就scard,有序就zcard,有z没有s
      k7 F& c( t$ i- G
  62. sInterStore* L8 J7 L/ T2 q, I$ A; ?; Z
  63. 求交集并将交集保存到output的集合8 Q8 f& M7 z5 d. B  \! {0 h
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    9 K9 o% l! y, s4 M2 j; K, P

  65. & h. H9 P( J1 y5 P' X9 T
  66. Hash操作
    4 O3 K3 x) ?; d; d4 m# Y. W- N  P6 N
  67. hSet
    * w3 x' H1 v  q1 C1 i& ^6 c# R
  68. $redis->hSet('h', 'key1', 'hello');1 M  |$ K9 j' n1 K) Y* w3 y* M! @
  69. 向名称为h的hash中添加元素key1—>hello
    2 F& h# O% k$ v, O' @) b: Y
  70. 6 K# ?4 s% |" Q& V. d# a/ d. k8 @
  71. hGet
    , R" g/ J5 b: f4 B% r5 ~5 _% r7 A
  72. $redis->hGet('h', 'key1');
    / @! A. m; ]# K# L% C2 f/ R- G
  73. 返回名称为h的hash中key1对应的value(hello)
    $ p% G, Z  i% y- F$ D* U
  74. ! Z  |2 k: E4 [8 L2 m
  75. hLen+ k; F# c! b+ O/ b
  76. $redis->hLen('h');1 ~7 G8 w$ f$ z: f$ C4 U
  77. 返回名称为h的hash中元素个数: M$ s- |- v: z5 A8 o

  78. * t5 M# P$ f/ s
  79. hDel5 n% _2 Q' {" t' ~' L
  80. $redis->hDel('h', 'key1');% }& I8 e/ M6 J
  81. 删除名称为h的hash中键为key1的域
    8 S2 A, A0 D4 ~. V9 ?, Q( d9 j. y) P$ ?
  82. ( c+ g' \4 E9 @* S- }
  83. hKeys( ]8 p( C; O. I3 M% X5 q
  84. $redis->hKeys('h');
    - V" H7 o" s$ }& X* \' _
  85. 返回名称为key的hash中所有键
    - q; H2 p/ j9 Y: J# b
  86. $ H8 k% {2 g6 M6 g
  87. hVals0 R( e; R4 ~7 M- l  n' @4 F2 O
  88. $redis->hVals('h'); x; n6 T; d. h1 ]( ]
  89. 返回名称为h的hash中所有键对应的value
    ; {1 p% u4 x) n' Z+ J! J3 \
  90. ) c6 r  v1 R: P  C) P
  91. hGetAll
    6 F; n8 s7 r" r
  92. $redis->hGetAll('h');  O+ n: ~' M: c" u3 w) ~
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    & P$ y' {4 F" d) r6 t* [$ E
  94. , j: f" H  Q/ v2 Y' L1 T% b
  95. hExists; T8 i+ e1 F! J. Q, o6 U1 b, j
  96. $redis->hExists('h', 'a');" w5 s8 e  H9 _# m
  97. 名称为h的hash中是否存在键名字为a的域
    ; Z& G  }4 G) w( A' |+ P2 `
  98. 7 X; @  `7 G( D/ f7 {  ^
  99. hIncrBy
    ; x* h$ H3 S" x, \3 {" L$ Z4 r
  100. $redis->hIncrBy('h', 'x', 2);
    * ]$ a- S/ C' T1 [3 I% p
  101. 将名称为h的hash中x的value增加2- ^! A' J; ^' ]
  102. ' u2 _; a' X5 O6 r, u, o  Q, J
  103. hMset
    # }! y8 i8 z* j* m$ e$ O. F5 j
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    + O" i8 D8 R, s# k2 v4 @, W# [
  105. 向名称为key的hash中批量添加元素2 u4 m, q. ~, m0 O

  106. 9 Y9 k: A% ]: o. d7 j! P6 U& u
  107. hMGet
    0 E, z/ f& t; [3 z
  108. $redis->hmGet('h', array('field1', 'field2'));
    6 M' \1 m$ _- n: m, B
  109. 返回名称为h的hash中field1,field2对应的value6 F" L# M' i7 o8 F1 p4 _- Y
  110. % ^: O  N  d2 Z$ `; R. O
  111. redis 操作相关
    / L7 l& W. U  b
  112. flushDB8 M: @. [) j6 ?: T) [5 p
  113. 清空当前数据库
    $ N( N5 ?8 \3 s: ^. W

  114. , @; [: t/ x7 X2 z9 F7 }
  115. flushAll$ g7 m. u# }1 H+ ^1 F, R
  116. 清空所有数据库& s9 j5 V: j9 k: M% I) i- }

  117. 9 R$ e5 H+ q3 o# n# m/ u9 G
  118. randomKey
    1 o9 J, D. p; l9 M' ?7 c& I
  119. 随机返回key空间的一个key
    # C7 `- C9 G6 J
  120. $key = $redis->randomKey();
    " b$ i' n5 B7 _+ w4 ~' A2 {  v

  121. ! E# \3 I% i# n8 \6 I4 u7 S
  122. select
    . T0 x- H  ?* N9 s$ k- J
  123. 选择一个数据库0 [' V3 M8 T+ J
  124. move
    6 S0 v$ N* ^. N: `
  125. 转移一个key到另外一个数据库- _% c+ t/ o9 O# h5 }$ N7 R
  126. $redis->select(0); // switch to DB 03 V5 V* P8 s8 b( G& ?
  127. $redis->set('x', '42'); // write 42 to x8 E% t1 v( ~! l8 w" l8 {
  128. $redis->move('x', 1); // move to DB 10 J9 U2 S$ P/ O
  129. $redis->select(1); // switch to DB 1( O0 _( R# }- @# f
  130. $redis->get('x'); // will return 42* }! L6 `3 L$ B" e+ i) c
  131. 7 W. M6 c0 a% Q% j  ^# [
  132. rename, renameKey
    4 z7 S. E+ L/ _3 m8 G& _
  133. 给key重命名
    & D" r) f- H' m& f, f3 I8 M" l
  134. $redis->set('x', '42');
    7 g7 v2 Q- b  }( l
  135. $redis->rename('x', 'y');/ J# Y4 U  `9 P( l
  136. $redis->get('y'); // → 425 b1 U" B" q$ E5 n
  137. $redis->get('x'); // → `FALSE`
    ) V; S* \+ z! s  o/ R, V+ m5 I
  138. , T5 P* r" O3 B4 ], ?% Z# J6 C
  139. renameNx* C6 a! _8 N7 N5 D6 z9 A5 F  ~
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功7 L/ U% J/ K( t/ |4 O4 l6 `+ N
  141. 4 e. J8 [( r3 X
  142. setTimeout, expire
    * b+ q6 m3 D7 `3 [+ }6 }* }
  143. 设定一个key的活动时间(s)
    2 C. z( n: M* f) c
  144. $redis->setTimeout('x', 3);
    . u4 G1 k5 h& o2 y

  145. 9 K* m3 z+ h5 {4 y4 j2 o- n
  146. expireAt
    " j/ k5 r% f$ b) ?6 @
  147. key存活到一个unix时间戳时间" U/ P1 c: F  P4 Y  p  ~
  148. $redis->expireAt('x', time() + 3);7 ~) p0 D5 X( r6 M1 q( M+ o

  149. 3 \/ ?/ `# f1 W$ f8 E
  150. keys, getKeys8 U! S' ~( L) L" k& `
  151. 返回满足给定pattern的所有key0 D/ ~/ {; B- e" @' w' J
  152. $keyWithUserPrefix = $redis->keys('user*');* A# h% a2 r+ Y$ L
  153. 6 g: {- N7 {8 t( J2 \  `
  154. dbSize
    3 k2 }( K( `. P3 O& Q, D
  155. 查看现在数据库有多少key% o/ }8 [+ n- Y% F4 M- U+ G5 i
  156. $count = $redis->dbSize();3 k5 T! v: v' ~  o

  157. : n! L4 G# j& d! s
  158. auth
    " t! ~6 q) |( I
  159. 密码认证
    : t0 \8 }. n5 O
  160. $redis->auth('foobared');
    * P$ I( X2 W6 R  F  _2 [2 \* ]5 a

  161. . B/ M" K- {% |$ P& N' q6 w
  162. bgrewriteaof
    7 h/ P6 t( w2 P6 A9 A
  163. 使用aof来进行数据库持久化; e4 W5 G$ p1 t9 r
  164. $redis->bgrewriteaof();
    ' A* F# X5 m" ~
  165. 0 X/ \9 k, A- f- [* ]
  166. slaveof
    - n" u: s  o& s1 ]
  167. 选择从服务器
    & v# N" X5 Z5 h8 K/ {
  168. $redis->slaveof('10.0.1.7', 6379);$ Q; C2 w9 K+ T. T8 U

  169. 3 Y6 F- L+ C4 Z4 t" B
  170. save
    , L. ]( X7 a/ v/ V5 ^
  171. 将数据同步保存到磁盘
    " C+ E- ]4 S" h( z4 q/ M

  172. ; L  y, j$ v$ x" j2 x6 X5 S
  173. bgsave7 t3 T0 y  K1 G: E! s  S' N6 s
  174. 将数据异步保存到磁盘
    " O! w3 K5 O6 {- i: I1 B

  175. . w( E& R2 c6 w% |- ~
  176. lastSave* K8 s" X' z0 m: R0 a% ~
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    ; I0 I3 m) U* _/ u% Z: Y$ w+ _9 f

  178. ! {* x6 ]% m1 T3 h/ ]/ ^. I8 D
  179. info
      ~7 L) O' \' ?3 ?0 D7 j
  180. 返回redis的版本信息等详情, J7 `8 Z; _% D3 T

  181. ) n& R1 B% `. x3 |4 @- t
  182. Redis::__construct构造函数
    . e- Z9 S9 N, O  P# |
  183. $redis = new Redis();/ ^4 ^* c- d; Y% L
  184. 7 X3 o) ^" S7 _& N  h- Y  u' `# `
  185. connect, open 链接redis服务% m: N' D+ x) o& n6 T- E
  186. 参数
    $ ~4 s; ?: Y, q% p  r  ~
  187. host: string,服务地址6 t) x+ h0 b# R5 U) D- V: e
  188. port: int,端口号
    9 M/ f7 v& O4 i7 y5 q
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    & x) i. @2 K1 W; B3 ^
  190. 注: 在redis.conf中也有时间,默认为300
    1 ]: z) L9 p/ S+ g. R

  191. ( y- B: U. Q5 d' L* M
  192. pconnect, popen 不会主动关闭的链接, Q3 Y; E- Q+ c2 a4 v! n
  193. 参考上面
    1 v# I$ A# _$ H8 o& R

  194. 0 s, Q% g* I3 [/ D
  195. setOption 设置redis模式- e* s5 y8 s( d; _, S) {

  196. . S5 i6 p7 z3 f" l) F6 H& p, _
  197. getOption 查看redis设置的模式$ \; ~) Z, H, l) g, [, N! [
  198. 3 z0 I3 |$ D' L3 U9 R& f$ c
  199. ping 查看连接状态7 b2 A) y- a4 C& q& a) \8 N
  200. 6 ^- j3 q, t7 q/ m, ?+ I" s2 P
  201. get 得到某个key的值(string值); T" s# |. G* n! p
  202. 如果该key不存在,return false! Q) P+ j: {2 t' ~$ M! x  ?5 i0 d' |

  203. : x$ X  d2 o' F9 ]+ B2 R$ C
  204. set 写入key 和 value(string值)
    * ?5 L- a# w1 V! }
  205. 如果写入成功,return ture! C  E" X' K* \$ i) }5 e3 G9 Q

  206. ) \; Q) o; j( ]. ]5 P7 l" v
  207. setex 带生存时间的写入值
    & E6 a! q+ ^: ~1 T' B& `% q
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    : D( l% m$ ?4 `( _9 ]- u
  209. ! A: O8 \4 a, ^# ]! c
  210. setnx 判断是否重复的,写入值: V: x( X+ t: P* u3 j  V$ ~4 P
  211. $redis->setnx('key', 'value');
    # I) h6 }$ f8 W# {/ \
  212. $redis->setnx('key', 'value');
    9 X& x; u5 h( W3 u' E3 w& U
  213. " `7 o0 S, `5 w
  214. delete  删除指定key的值& j& t; w; A  }! @. V
  215. 返回已经删除key的个数(长整数)  Y) V0 K6 ~0 L- b, ]
  216. $redis->delete('key1', 'key2');7 s) P) x/ V( O( A5 M& X
  217. $redis->delete(array('key3', 'key4', 'key5'));9 }2 I: ^$ G" Q3 A

  218. 6 H- R, U$ d, {7 k
  219. ttl
    4 }1 {5 z" P8 K7 ~. n$ T) q# c
  220. 得到一个key的生存时间
    4 @/ a% M' t8 V+ @8 o
  221. 3 f2 E# K. {; F& r8 X
  222. persist. n( Q' ~" j2 L5 z
  223. 移除生存时间到期的key
    ) E/ W" K1 O, }
  224. 如果key到期 true 如果不到期 false
    5 a4 l' T1 T6 x' G( ^/ [
  225. & ~, G( J: Y1 o7 F* U  H/ x
  226. mset (redis版本1.1以上才可以用)/ s9 V: M  C7 P, A
  227. 同时给多个key赋值# S) U2 n3 ~& `, [& ?
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    & c- {" j# M9 W3 z) `

  229. 0 U$ z0 F" w* T4 i6 [* k+ z9 R

  230. 2 c" v- n5 ~6 r! x6 e9 v, k# R+ _
  231. ' m: p% A- p" ^
  232. multi, exec, discard
    * _; G; s6 l8 |0 n- ]% {
  233. 进入或者退出事务模式7 v; b# Y2 O1 K/ v5 J# _
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    3 t% s$ x7 y  Y( _8 j' r
  235. Redis::MULTI:将多个操作当成一个事务执行
    3 e+ t* a- l/ I2 v1 H
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    2 }2 S4 c& v1 i
  237. discard:删除一个事务) P  A; S  o, L1 J1 w) O' H9 o
  238. 返回值9 q* x0 u3 k2 r  [
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。% s# f  b9 z( F5 Y
  240. " D9 _0 h: T+ c1 K1 ?4 w
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    ) T7 v" N, L/ z) A+ s) T- e; N6 {( e
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    8 x; ?9 j/ s. \) M
  243. unwatch  取消被这个程序监测的所有key
    " l/ M0 a) `4 _. H; t
  244. 参数,一对key的列表
      |# j$ I3 W9 M
  245. $redis->watch('x');
    3 n" u" N" [# i- W: l7 d
  246. 7 p6 ?- N, J8 y6 c# l+ l
  247. $ret = $redis->multi() ->incr('x') ->exec();
    ; f" ^% m! a! K  Z
  248. " w, ], @& c/ }' P# u
  249. ; w- o2 z% S! ^6 j
  250. subscribe *
    ) _8 y* X; G6 o' F& z! }& z6 G- S
  251. 方法回调。注意,该方法可能在未来里发生改变
    6 M! [" u% t% o8 \4 m

  252. : Q2 S" e: x* ~$ Z
  253. publish *; \) d$ K. _4 h
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    6 F2 C# y) R  H( h2 Q
  255. 7 b! C; E) d% I* |
  256. exists- {4 |  W* j8 N) B3 U
  257. 判断key是否存在。存在 true 不在 false
    : R6 ~. w/ T& r% C9 M4 D$ w* K

  258. ! b2 z/ ?& K4 C
  259. incr, incrBy, `' R( M) V* S$ [' B. _+ v
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值, y9 y7 a) H: S5 B2 W
  261. $redis->incr('key1');
    / _2 B* K" D# A$ W' k' Y+ I
  262. $redis->incrBy('key1', 10);
    + }* A$ b4 s' S) p

  263. 3 ?: G; D) {7 ?4 B# d/ A
  264. decr, decrBy
    6 E  y# C' X# E0 @4 g9 [: q2 ]
  265. 做减法,使用方法同incr  w* k6 D* B7 A; X% c

  266. 1 |. P5 Y1 ^' R# q
  267. getMultiple  h7 k. Z1 }+ i; ~- K# c! X5 Q
  268. 传参
    ; r4 a' h+ T) ^) f
  269. 由key组成的数组
    ' X2 g3 S/ b: \7 B" ?% [
  270. 返回参数' v2 Z' \6 |' [; \5 ^7 c
  271. 如果key存在返回value,不存在返回false
    5 L8 V. _, W0 H0 C
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));+ c4 Q+ b8 f* p! h& a! t6 H
  273. $redis->lRem('key1', 'A', 2);
    ( I, b7 ]  q+ }
  274. $redis->lRange('key1', 0, -1);
    9 C; p3 Y8 r6 w. q4 M- I6 w* `

  275. 3 Q4 |9 x2 ~% J. J3 z
  276. list相关操作. G3 R2 t& [3 T$ }# k
  277. lPush
    $ [: a0 _" p8 m6 L6 N# y2 e
  278. $redis->lPush(key, value);7 z; @# V9 `  b' c" f; V( p4 I
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    % s7 M# S- t( {) e( l! [
  280. - n# e- P' `3 M% }2 r
  281. rPush! D* N/ r0 m, K; `9 G
  282. $redis->rPush(key, value);
    . ^3 z1 Y! D, E" q$ q  B- e5 I+ ]
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    " M) T6 r2 _8 _/ d! d5 j; C. J

  284. ) V4 T' e& V' R5 U- Q7 i- A, {
  285. lPushx/rPushx
    ) ~% n( S, Y4 h; P
  286. $redis->lPushx(key, value);. f; ]4 h$ j8 ?1 J
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加4 j, x# ~' _# B: R# O$ f
  288. / C/ I" k8 d: Y4 d) K
  289. lPop/rPop
    & R3 T: e2 Z) ~: R- M, T: E
  290. $redis->lPop('key');
    % M" B; ?* K( j4 L( F: F, z
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    2 l4 |' `* ]' A+ _
  292. ; ~1 k- X" H6 m' M
  293. blPop/brPop
    2 x) j6 q5 q9 T9 w( x- C
  294. $redis->blPop('key1', 'key2', 10);
    , s; X$ }+ K' y, Z- D
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    . n: k8 Y% W/ x5 \! K

  296. 2 G9 z8 @+ U. H: Z0 |8 u5 O% _
  297. lSize4 G4 z1 w/ }8 |4 N% _
  298. $redis->lSize('key');7 _( f4 v2 A& Q2 }9 o  \  K8 k
  299. 返回名称为key的list有多少个元素
    ! {7 ]" |- N  H' ]2 M! @4 G* V3 p" C

  300. + Y2 I* N7 b# ~: e: }
  301. lIndex, lGet0 x9 O- h& W+ {8 l3 {; P
  302. $redis->lGet('key', 0);4 j2 ]) q. V  h& B0 P3 g% h
  303. 返回名称为key的list中index位置的元素+ h- g" I- v4 ^$ L. r( r
  304. ( U% Z8 j" h  k$ ?+ Y6 B+ A
  305. lSet
    / s+ v( |. u, a% ~! E7 V
  306. $redis->lSet('key', 0, 'X');& _  _! S8 `' i2 w
  307. 给名称为key的list中index位置的元素赋值为value; B5 @/ h  _2 q! h+ v0 |# A4 j
  308. + U2 F0 c& t; P- \; l
  309. lRange, lGetRange
    2 @0 M0 J0 k) p. ]
  310. $redis->lRange('key1', 0, -1);1 W9 q$ z" R$ U
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    8 m( C5 r" C" r  e) y: N. a

  312. : c. c/ o  j+ S( m$ q% `; E' U* k
  313. lTrim, listTrim
    + `+ f$ y# }+ \6 V, T% F
  314. $redis->lTrim('key', start, end);8 @! F! m" {& m) K4 Z) Q
  315. 截取名称为key的list,保留start至end之间的元素  u( `; V4 S6 D) T3 @* \" n

  316. - s! @8 D- m+ d6 H5 d6 J* U
  317. lRem, lRemove- K# ^, M$ t7 S% Z- d9 p- j
  318. $redis->lRem('key', 'A', 2);% Y: A- s6 k' K- H, y$ `* Z8 T
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素3 e! u$ a, Q: Z

  320. # o% Q9 p1 X1 t$ j
  321. lInsert
      v  n  y( [/ y) l& v$ v) o2 @. ^
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ! h, ?5 v  g% Q
  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');, u$ S2 s9 [5 w# Z3 Q6 N" C
  324. $redis->lRange('key1', 0, -1);# C2 q; W& F. O/ H6 K! X5 `5 g
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');$ _9 b- M8 U! q/ d3 B6 j3 F) [: I
  326. $redis->lRange('key1', 0, -1);
    % f! b0 k; T$ p7 ?& X$ S( Z
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');6 v9 B* n! N: ]
  328. # E) ?7 w6 ?* X6 J) {/ \0 T
  329. rpoplpush7 r9 \  _8 c" e6 {" Z3 j- B' s
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
      K8 [# l( }, j
  331. $redis->delete('x', 'y');
    * f0 {. Z7 @! A  `4 i& ?5 \: D
  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'));
    ) S+ N4 j- U% g+ |) Z) P. O
  333. var_dump($redis->lRange('x', 0, -1));8 d2 t1 u* d6 t- m6 W- O
  334. var_dump($redis->lRange('y', 0, -1));
    , x( r; Y3 Y+ P3 g

  335. 1 m8 V8 e; {. G$ a* z0 j
  336. string(3) "abc" 0 _; R0 K* X7 C# a
  337. array(1) { [0]=> string(3) "def" } " F8 }  U% [+ B6 ~$ O, x
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    ; h- k6 T, m# G7 s7 ]$ }

  339. ) o9 N1 Z8 x) w. n0 g- v
  340. SET操作相关7 l5 p; r% y" o2 d
  341. sAdd
    6 k9 p) K2 P9 t
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    % x5 E  E6 `: S( i0 e6 [) l' a
  343. $redis->sAdd(key , value);
    ; F! \7 _; G2 {# J

  344. 5 \. Q8 H) ^7 J- `$ _# p
  345. sRem, sRemove
    6 K/ K- A% \/ e, S' n7 t" z
  346. 删除名称为key的set中的元素value: x0 y$ Z' p0 j( N' M( F/ l
  347. $redis->sAdd('key1' , 'set1');+ B9 F/ b/ I& \" V* i* q9 `
  348. $redis->sAdd('key1' , 'set2');, q" n" K# u8 ]$ k8 p4 f
  349. $redis->sAdd('key1' , 'set3');% B6 r9 {2 X! v2 [
  350. $redis->sRem('key1', 'set2');% o& p! B) z" w# Q* B3 z! |$ s- ~
  351. - }% s6 m/ O; @7 t0 \
  352. sMove8 p7 @. P3 Z1 }9 a& |
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合4 y  y  }7 Y6 H0 w: L. T
  354. $redis->sMove(seckey, dstkey, value);
    0 A$ U7 q( N; l, m1 e+ ?/ `

  355. 7 W- y3 q$ V" H
  356. sIsMember, sContains, J9 W+ g, T+ |: _( k1 p3 `
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    ' Z" F- M. b6 p( x, O4 V
  358. $redis->sIsMember(key, value);& H3 v8 k3 j& e" U& N0 U: u

  359. 2 Z$ V4 f2 i$ S1 s. ]
  360. sCard, sSize( @) T8 G% C0 V+ W
  361. 返回名称为key的set的元素个数0 _$ M# f, k7 I/ N5 z
  362. + j* i8 g: D: N
  363. sPop
    3 w0 M& n3 C( h1 C
  364. 随机返回并删除名称为key的set中一个元素
    & i% A  }/ y: E1 e% ^

  365. # |2 R& }2 I* f" H4 }$ s
  366. sRandMember: a: F& o# f+ k5 j  {) U
  367. 随机返回名称为key的set中一个元素,不删除
    . [2 V$ k/ l1 w1 H- k5 w5 m3 c
  368. ) m  x8 U4 e- e& z' t
  369. sInter
    6 w1 f: f7 S6 X; l  |7 K
  370. 求交集
    % y% l3 d8 C" C: L
  371. ) E1 Y1 j1 Y* z6 R  l4 V
  372. sInterStore
    2 _, M/ A' J4 M$ D
  373. 求交集并将交集保存到output的集合
    2 G! `% m  C$ ^9 D8 O9 F
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')$ V1 G$ l5 R8 q
  375. 0 m5 ?. T9 P! Y5 `3 v
  376. sUnion
    ! Y0 L% \  U) B
  377. 求并集& u# ^) V9 X% ^* D( V% X1 |
  378. $redis->sUnion('s0', 's1', 's2');; X, s2 X7 X* e- C% u% L
  379. s0,s1,s2 同时求并集
    ' s3 v& `/ X# c* }; w3 f

  380. & s& s8 B/ m" U% ]- j5 _
  381. sUnionStore  K4 f% t' f6 U! }: G: d; _
  382. 求并集并将并集保存到output的集合
    7 s7 T* S- L# _+ f; i
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');! j" `: X- d: D, u% o

  384. 4 N! l, ~5 b3 V4 E4 Z
  385. sDiff" K4 ]/ H+ F/ b5 H4 A  h  Z/ m
  386. 求差集
    # G+ m# Y, b( f- g* E% }* z

  387. $ o' m* s7 H) K/ U1 t2 i
  388. sDiffStore; _7 g+ i: _1 d* C
  389. 求差集并将差集保存到output的集合
    ) D3 x. u3 k4 L" O# m, c0 e
  390. 1 P; E9 d5 ^; |, i$ ~9 ~
  391. sMembers, sGetMembers
    2 S' V& Q! \* m8 R$ }! h
  392. 返回名称为key的set的所有元素" T* R1 _' {7 h0 W' X

  393. $ u9 F, W. p2 B* x: s
  394. sort. m6 @9 P" R$ K) C+ c8 \
  395. 排序,分页等
    4 N0 t' D2 H/ s: A+ U
  396. 参数0 N. `& J+ e; l6 Y
  397. 'by' => 'some_pattern_*',9 w" q5 T! r5 Q2 t3 G7 S9 |* a
  398. 'limit' => array(0, 1),& j  ~* s& R  _6 k( z7 ~
  399. 'get' => 'some_other_pattern_*' or an array of patterns,3 W" c* d5 v, }) K  \
  400. 'sort' => 'asc' or 'desc',% v; Z% S5 S6 d6 ?; ^1 r9 a$ G+ ?
  401. 'alpha' => TRUE,2 m6 ?7 v/ m0 h5 f. \1 }1 u
  402. 'store' => 'external-key'
    - R' }; b! ~) S: u! Q, B! E% H
  403. 例子
    4 H% u2 E3 d1 s5 N- M: g0 N# z* T* L
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    ( d; p- Y! a' E. ]
  405. var_dump($redis->sort('s')); // 1,2,3,4,59 A4 j4 {1 i/ ?6 v
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,11 S' a  k! @# D' S; G. s8 T5 ^
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    8 b- _+ s* ]) `2 {' u! Q) D
  408. ! i7 O3 c4 |. f! R2 i% ~% ]4 u* g
  409. string命令
    ) S3 }9 m: S' a5 A) b
  410. getSet, I) _& B/ ^( }
  411. 返回原来key中的值,并将value写入key
    ( C2 z. u' B4 R
  412. $redis->set('x', '42');7 X/ Z5 |% F8 q# c$ \! L! l4 h
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    1 ^# H# E( a1 t$ m! ^- P6 b
  414. $newValue = $redis->get('x')' // return 'lol'
    % A& i3 ^! {' w5 H
  415. 0 e9 c' H/ `: Q* l) ^2 ]) `( I0 u
  416. append' v! ~& D, L& q. ^- i2 e3 _
  417. string,名称为key的string的值在后面加上value
    * J0 v5 j% U7 u: s& D
  418. $redis->set('key', 'value1');
    ) n" o+ G0 s" N. S
  419. $redis->append('key', 'value2');7 D: r  T0 |  r; q7 {) K
  420. $redis->get('key');
    2 r6 A3 D6 {6 ]$ {$ b3 T

  421. : o% Y, D" O7 @/ Z2 w4 X. M
  422. getRange (方法不存在)
    # v3 f% f% `' C3 E1 l; ]3 H& O
  423. 返回名称为key的string中start至end之间的字符
    ( s  h5 t& a/ t" l9 Y: F0 x
  424. $redis->set('key', 'string value');( H! p1 W3 i' n) U% D
  425. $redis->getRange('key', 0, 5);# P* q, g! |) n7 q, _" s
  426. $redis->getRange('key', -5, -1);* \# h% O7 R5 }5 ^8 z

  427. ( N) K; d' d/ c. s( A! l5 R  q
  428. setRange (方法不存在)
    0 n' t4 B4 Z, @
  429. 改变key的string中start至end之间的字符为value" i, y3 Z0 |( ~" g
  430. $redis->set('key', 'Hello world');5 \0 ]. E, B: f5 j6 S" }: |8 }
  431. $redis->setRange('key', 6, "redis");
    / X; h7 J% s9 G3 J( A
  432. $redis->get('key');4 _3 P  w4 k# s! D. {( p2 N) \
  433. ) ^9 ^* ?2 b3 G% K0 S: u0 U
  434. strlen
      g+ u4 p, o5 L) G- Y. Q
  435. 得到key的string的长度8 m$ c3 z/ q$ P
  436. $redis->strlen('key');
    6 r/ F# N/ t. l* J6 |

  437. ' v  |/ c1 X$ v# k
  438. getBit/setBit
    % @4 [+ f) U* I) y3 q3 O8 G
  439. 返回2进制信息
    ; \# P# @3 \% V' `6 n
  440. 8 Y; Z" I$ V. x/ D4 a4 T
  441. zset(sorted set)操作相关
    * G  R: Y) ]1 j! f# C. _
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。1 O" a; O7 w0 d
  443. $redis->zAdd('key', 1, 'val1');; E" n$ l' \/ y1 G/ I# s% {  N1 }
  444. $redis->zAdd('key', 0, 'val0');1 v5 y( d* b; x9 q+ b1 l" W
  445. $redis->zAdd('key', 5, 'val5');& q- a, c0 y2 }8 T' Y: t
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    7 ]) J' k" v# G3 s8 J: G
  447. & H" d' P) \# b
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素6 q4 F5 `$ }. [8 J/ t. C% G- l
  449. $redis->zAdd('key1', 0, 'val0');& S' Q- {6 b# H9 s. j
  450. $redis->zAdd('key1', 2, 'val2');  S+ ^/ Z9 v- ~+ f
  451. $redis->zAdd('key1', 10, 'val10');
    0 o) U$ E+ G8 o3 P) p
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    + L2 `: s$ N: b+ x+ S# s$ U$ ~

  453. . }: ?# M5 [$ b, R
  454. zDelete, zRem
    / e" ~! G7 H* V* W& w
  455. zRem(key, member) :删除名称为key的zset中的元素member
    3 G# M& \3 V  L: E
  456. $redis->zAdd('key', 0, 'val0');2 @7 J1 I* Q' k! z* [7 c! E
  457. $redis->zAdd('key', 2, 'val2');, R4 B. f- d6 j4 s6 t. L+ R0 q
  458. $redis->zAdd('key', 10, 'val10');
    / M( A+ H8 B+ Q: U9 L
  459. $redis->zDelete('key', 'val2');
    + ?6 A/ D# X5 U: b
  460. $redis->zRange('key', 0, -1);
    ( V4 M  m6 O7 g, v
  461. ( F' {- d) _- b$ m. i* z
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出9 `& ~& L4 g! [2 S/ N' @$ S4 {; U
  463. $redis->zAdd('key', 0, 'val0');
    : R7 `+ M1 Q' o: k  n& ^  F
  464. $redis->zAdd('key', 2, 'val2');
    & H/ c0 _* ]1 ^
  465. $redis->zAdd('key', 10, 'val10');
    4 r: b- `+ o$ m, }* c9 g6 f+ V
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);7 F( ^& T0 O* o! Y) m' p/ R' F% O" h
  467. 1 G1 _; [% h' J6 N& \. b
  468. zRangeByScore, zRevRangeByScore
    4 w7 ~$ I/ e8 i- L: ]
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    3 }' |3 C8 x) T: R: j2 ?$ w- E
  470. 返回名称为key的zset中score >= star且score <= end的所有元素* p3 n/ T6 }1 k  S

  471. + M, P5 W' R* {8 z6 r
  472. zCount
    ) v/ k9 F) n3 |3 B2 H2 r$ ^: d* A
  473. $redis->zCount(key, star, end);
      O# o7 y+ n4 W9 h0 D* M2 l  H8 R
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
      {1 s$ p+ Y+ i; {" V7 U

  475. $ ]2 P; D) K/ @) `9 |  ~* _
  476. zRemRangeByScore, zDeleteRangeByScore
    - [1 j" Q: t% X1 ]. q) V' s
  477. $redis->zRemRangeByScore('key', star, end);" S. s( z1 I7 {  q
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    7 l8 x$ ?; E$ Q. X* o- I

  479. 0 j* P+ ^4 D8 R
  480. zSize, zCard9 ~+ T; P) H1 J! j, f' A
  481. 返回名称为key的zset的所有元素的个数1 \+ E$ W- @4 k' {
  482. 9 J( a3 \6 ]5 n
  483. zScore
    / j8 j" l1 J. Q; d
  484. $redis->zScore(key, val2);" C# x6 N: r6 O: j7 U* K1 O5 ]+ b* ?
  485. 返回名称为key的zset中元素val2的score
    " I4 f6 c9 K  ?' X* V

  486. 2 b/ x) s* j5 u6 Z. _8 x+ ?
  487. zRank, zRevRank+ {, t7 T7 }$ u- x. k, m
  488. $redis->zRevRank(key, val);
    $ Q2 V) X& k* U; t1 r
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序- w& }  u3 h; |' K3 S( b

  490. 2 m; Y- \$ ^8 R3 I
  491. zIncrBy
    8 X3 r% G- e0 G  Q) N
  492. $redis->zIncrBy('key', increment, 'member');0 h9 c! _0 E, j) ~6 o$ \: {
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    ' Z- j" E$ t5 l' ?8 q2 V+ C' m. U
  494. $ z: c; ]5 o0 r! E1 I3 v3 J& Z
  495. zUnion/zInter0 ]% i" @7 q2 d0 A" ?/ T
  496. 参数
    3 T. M: z$ A% k6 q' _
  497. keyOutput8 o4 \& M5 O9 E, |- x4 x
  498. arrayZSetKeys* h/ B9 C4 F( t' d4 _* y. _
  499. arrayWeights
    + x" Z8 C: E  V; v7 h$ D9 t# w
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.- n; t, J. K9 Q
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。/ ]; I8 g3 o! I$ r: j1 R) B1 v
复制代码

+ J- v$ H2 q% `( g7 y
% d# p+ W+ p% Q1 q! s/ p* }, M1 K: ^" I
9 a0 z9 D/ B/ ^" ^) ]7 ~  a5 b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); - U2 J! b& r! F& l. k6 s
  2. //连接redis服务器 % c5 B  x+ R3 o6 Y; }& x
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 17:32 , Processed in 0.141919 second(s), 18 queries .

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