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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    - l! Q4 D' v. {9 @- C/ I
  2. $redis = new Redis();  
    $ l/ v( V2 o$ S9 g+ e1 f5 o4 T7 k% \
  3. $redis->connect('127.0.0.1', 6379);//serverip port# {6 P0 w8 w6 n
  4. $redis->auth('mypassword');//my redis password
      d( s4 {. x8 l7 P4 B; x  t' ?
  5. $redis ->set( "test" , "Hello World");  
    2 Z1 O  h3 J' B1 y3 P
  6. echo $redis ->get( "test");
    / \0 P! e/ P7 D, x. `$ ]
复制代码
php操作redis函数封装
  1. /**2 ^( v1 ~9 C$ J$ F8 Z* c2 P
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数' V: \* J/ T1 G5 e4 R- L4 x
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi+ F6 k5 {5 A) ~* l2 C4 o3 {
  4. */
    ' c8 |8 `( i, ]2 h0 r6 \! S
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    " \0 R: g9 u, ^7 H, V. }( ~* y
  6.     if(!$key||!$value) return false;
    2 i) T/ F: H7 ~+ z6 M
  7.     $host = $host?$host:getenv('REDIS_HOST');) C8 p/ y2 Q# a$ e; l  T
  8.     $port = $port?$port:getenv('REDIS_PORT');3 k/ w& E5 d+ P/ {- ^) p2 J
  9.     $redis = new Redis();
    0 }8 o1 S$ u, O) F
  10.     $redis->connect($host, $port);( s0 _9 n5 r' k4 p
  11.     $value = is_array($value)?json_encode($value):$value;' [/ n# p3 ]% R- b% e( ~
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    0 ~: {% U7 t% P4 F# N
  13. }3 e" m: q8 I3 U4 ]3 F4 @% T
  14. /**# K' m# _8 A7 R6 p) u& s3 t5 N
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    . I- f8 |* u" _: D( G
  16. */
    # ^3 \4 P- R7 e2 [' Q9 Z5 m
  17. function RedisGet($key,$host='',$port=''){
    % e3 h; K4 i& W' J4 [
  18.     $redis = new Redis();' O1 b7 U" a( W) O4 h
  19.     $host = $host?$host:getenv('REDIS_HOST');3 b# O3 i/ F7 c; O0 V5 Q) D1 X2 v
  20.     $port = $port?$port:getenv('REDIS_PORT');& ]! Q. H+ R4 C
  21.     $redis->connect($host, $port);
    " o2 G: D2 x) F  b! k9 ]
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);( w% L7 W, S2 Z! O- g  p
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);; N' k/ p; w" p9 c8 ?, x" |$ j
  24. }  G+ e1 A( U! |& o) v
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了* M" b' ?# `1 ~5 w" m4 L' L6 }' U
  1. setex 带生存时间的写入值
    ; D9 O* R% Z7 {
  2. $redis->setex('key', 3600, 'value'); % M* m) y. X6 T8 t* J6 V4 J" t
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    5 h3 ~# L6 W8 a; t0 ]
  4. $redis->setnx('key', 'value');* m" P% \! b  d2 z: X
  5. 返回已经删除key- K1 a0 u, X2 x
  6. $redis->delete('key1'); 成功返回1失败返回0
    , @& Q. ?8 |! v
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    2 M/ D. f2 n1 q
  8. 查询生存时间, r/ l5 m$ m9 K9 L  M3 b
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)( i; l) @: V1 D: P2 b
  10. 同时给多个key赋值,同时设置key0和key1% z  ~: {* f# Q4 S6 @
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    * ?0 T% @$ N5 t1 i( W) {' ~
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    5 e& Z. v, Q1 g9 N: \
  13. $redis->incr('key1');
      ?: e+ X4 o: F9 u) o4 S; J
  14. $redis->incrBy('key1', 10);
    , d/ B; |% {. `6 r& c- _: x6 |
  15. 减法跟加法一样
    8 v8 P, y; c4 M2 F& s2 R
  16. $redis->decr("key1"); 减少1
    : b' k0 A# b7 ?+ Z) Y1 N
  17. $redis->decrBy("key1",5) 减少5
    ' \8 F! k, a2 N; z8 ]" Q- G5 J

  18. ! x. n' y. O$ d! f
  19. list相关操作,连表操作0 Q' g0 Z) X2 e; g& o, v- L
  20. lPush
      ^. I  q- f4 l  m/ s/ G+ ]0 J
  21. $redis->lPush("list", "888");
    " P  [/ n% u; g0 X$ ]0 X
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数( z9 J4 d) b' s
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    & M2 x. J1 y$ N
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    * U. Q- f, |. c  q  L' ^
  25. lPushx/rPushx0 R5 a( R+ k& p; l$ e! x4 f
  26. $redis->lPushx(key, value);' p- d8 z6 r; p/ A
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加" g+ q. i' g. ]7 y

  28. $ I$ }" f' F  @1 D) b
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key* m1 c% ~7 l0 ~8 a8 G
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    / r: ^/ \0 A% A) {3 J: @9 _2 i
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    ( t& @. d- }8 Q* w3 I1 U! X+ k
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    6 `. S/ @6 S' t3 F" X: _
  33. sadd s1 zhangsan
    * t9 S7 j# k. q; Q2 E
  34. sadd s1 lisi
    - z$ C7 P5 c/ c8 S6 `
  35. sadd s1 wangwu
    4 Y" S( K1 L# N4 z. \6 i8 R
  36. sadd t1 yangxingyi  \& h: P# c6 c  J
  37. sadd t1 lilei
    9 E; M1 c' d5 G$ T: T( B0 \& J4 x
  38. sadd t1 zhangsan; Q! `4 J/ L+ [0 \% v6 G* `+ a& V
  39. smembers s1 s1的所有集合内容, W; q  q) v7 W* {$ F1 U, `) `
  40. sdiff s1 t1 s1有的,t1没有的,差集
    2 {" V5 Z+ p3 L9 m( Q+ F* o, c2 C
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    * m( O: n2 K6 Y% g1 m0 E' k) l
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的0 `8 w6 f# E6 Z8 H
  43. spop抽奖场景,返回集合里面随机的数
    0 N8 b# O( E4 R7 y- x
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    0 G4 a5 I; s, s$ d
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数1 Y1 m9 U' i* a' U5 `1 V
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    ' p+ n$ S2 ^( x( h4 K! o1 u
  47. 随机返回集合里面的一个元素,但不删除,重复中奖5 O$ R- @) M* y2 c- C9 V8 a! k$ ~
  48. $i = $redis->srandmember('s1');echo $i;6 K4 D( n/ I& |  g# @1 B3 \4 X- u
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    1 y$ `/ y! X; f5 r% V
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    ( i  _- C$ G# w2 s* y
  51. ! I9 K$ r4 Q" v7 r
  52. zadd key 2 value 有序集合
    1 O4 g: K3 @& k$ x
  53. zadd y1 1 zhangsan;) i8 q' \$ G6 ^0 Q0 |( T% A) M: G
  54. zadd y1 3 lisi;
    1 @9 M  R& z4 i" E$ ~
  55. zadd y1 2 wangwu;
    6 O7 @- l/ f  O
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    2 {% ~" d: C* f& y4 C3 Q
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);+ o8 q2 h3 i8 f: Y, X( X' ~+ `
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    2 x# }4 S1 {, I3 |3 u7 I. l1 _
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先0 l8 I0 G# ?1 [8 ~( H- ~
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的( g6 \2 T& R/ [9 y  T
  61. 无序就scard,有序就zcard,有z没有s
    ( G. V8 ^+ o. h  M2 D
  62. sInterStore
    3 H9 u9 h5 c! U  s7 p3 e/ A3 ?
  63. 求交集并将交集保存到output的集合: ]1 ]6 Q( x: h  o
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    ' A8 n1 h: c# I) R& @

  65. : p4 i9 d5 b" x  T
  66. Hash操作
    - t+ j5 i6 N: d: n' G  G" a1 _4 Y" M7 M
  67. hSet
    * [) x2 o) {# S
  68. $redis->hSet('h', 'key1', 'hello');# G+ L! x2 e% e; ~4 e5 Z5 x
  69. 向名称为h的hash中添加元素key1—>hello- U9 S& {! |4 d" b* ^6 R

  70. / |! f! {1 g7 F
  71. hGet8 X' }2 i: I8 Y, J/ D
  72. $redis->hGet('h', 'key1');
    0 j& t! u0 w" X0 B3 A
  73. 返回名称为h的hash中key1对应的value(hello)
    5 ~' H) d3 c3 v; Z8 Q. f. \
  74. . D, v( z4 M7 ~/ N; H! M! t
  75. hLen" r. i$ Z6 U" T
  76. $redis->hLen('h');3 A) H% c- m/ V( z0 i( p
  77. 返回名称为h的hash中元素个数: q' d) \( o2 G- u# T
  78.   X: ^# n3 {  n6 S) z* Q9 L" R
  79. hDel9 g( N) }3 ?& G% p" B: V8 }! b
  80. $redis->hDel('h', 'key1');9 v8 r0 Y8 O1 m# c6 J6 ?# L, x
  81. 删除名称为h的hash中键为key1的域, [& K0 o1 x4 g# O8 s; ]* S! k

  82. & t1 v: @- O2 P) ^- T8 B  F6 N
  83. hKeys" p" ~% I" }& G& M6 B, t9 M
  84. $redis->hKeys('h');
    6 M0 ~9 e3 K2 C5 D% |  M
  85. 返回名称为key的hash中所有键
    - J% q% F" }/ [2 x) t1 s: b2 @
  86. 4 p9 {/ d! [9 j  \, M( N% q9 ~1 c
  87. hVals% e8 U/ n5 M$ j* I6 x
  88. $redis->hVals('h')
    6 \3 I- l" B  m8 E; I5 r* j
  89. 返回名称为h的hash中所有键对应的value) g: W2 `8 U' B6 ?# [# ?( B
  90. ( K+ n; _5 p9 c
  91. hGetAll
    , s& O1 Y, O0 A
  92. $redis->hGetAll('h');) x, \4 u$ B8 ~
  93. 返回名称为h的hash中所有的键(field)及其对应的value( A* h2 o$ z1 W/ d
  94. 8 Y' G6 `; W1 E+ ?6 K# \
  95. hExists  }( k. s' |7 _6 J& f
  96. $redis->hExists('h', 'a');
    " \% U, [& W0 ^: K8 F4 ]6 L
  97. 名称为h的hash中是否存在键名字为a的域, u$ f7 d2 m, ~) y+ z5 C& f" B$ b; r% g
  98. ) B6 U. o0 B0 H1 I# _. c, U
  99. hIncrBy
    2 A9 ~/ h' G0 F, I4 i0 n
  100. $redis->hIncrBy('h', 'x', 2);
    5 q% ]! t8 j4 w' d/ S; t8 I* \
  101. 将名称为h的hash中x的value增加2- R! V+ Y7 A) F7 ~6 W, G2 i

  102. ( S' w0 {' u6 @. H
  103. hMset
    8 x2 l" _7 o2 ^$ @# x1 E
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    # g4 U8 X: T- e7 m) j
  105. 向名称为key的hash中批量添加元素7 P2 u* p7 C1 v7 Y( B* w: _
  106. - K' l3 [  i) t9 m) }* c1 T
  107. hMGet
    $ h1 M0 C7 Y. s) z% \
  108. $redis->hmGet('h', array('field1', 'field2'));
    0 S  K- ]0 A! }+ z' }
  109. 返回名称为h的hash中field1,field2对应的value
    / d- s8 o  R. v5 z2 f! v9 j% ~( J6 G

  110. . `+ @/ x, ?7 ^$ g, k5 D7 f/ K
  111. redis 操作相关
    3 v( w5 I) b* T6 N
  112. flushDB
    & k) a1 B" q/ M% D1 F- Q1 j* R
  113. 清空当前数据库
    ( a& y# X. W: c$ M: p

  114. 3 h: ], H( G3 h- b: Y
  115. flushAll
    & F! W9 F1 r. E: P
  116. 清空所有数据库
    4 |: D# y. [( ~/ ?: Q. U0 F9 M

  117. 7 o$ w) T( `: e5 Z/ o
  118. randomKey
    . C5 W4 r, h# h& [2 n
  119. 随机返回key空间的一个key" h1 f* ]8 r# T" u- z5 s
  120. $key = $redis->randomKey();
    , U3 F7 |/ g! y) W  J

  121.   {0 \1 z2 `& O6 _, X
  122. select: B4 l" y( m+ x9 L
  123. 选择一个数据库) |% @  G" k1 c. L# p3 f1 X
  124. move% y! {' g( z" C) s4 {
  125. 转移一个key到另外一个数据库
    0 O! p' d: o6 `# U' _( N' j
  126. $redis->select(0); // switch to DB 03 B& o' I) W" ~7 Z5 w0 @: X8 W1 R
  127. $redis->set('x', '42'); // write 42 to x
    + c5 S7 {4 Y4 k6 t$ k2 K
  128. $redis->move('x', 1); // move to DB 1( F  v' c$ C+ l( b. H) S) x
  129. $redis->select(1); // switch to DB 1  h+ Z8 T0 J& C1 N' L* A# m4 Q
  130. $redis->get('x'); // will return 42, I7 _+ Q2 R8 S; E+ E& g

  131.   ~* l4 C1 @% i. E5 x/ p5 D( U
  132. rename, renameKey' B( V+ t; N# ~' G; V! k: z/ L
  133. 给key重命名6 x2 Z! R& a/ @* E6 d- L) z
  134. $redis->set('x', '42');) Q8 @! R3 a, ^+ Z4 a: x# _! ]* {
  135. $redis->rename('x', 'y');5 ?' w" g! M5 }5 q' w
  136. $redis->get('y'); // → 42! d) s' Y/ v/ w* K$ o
  137. $redis->get('x'); // → `FALSE`) f' d2 l) z* s

  138. + T+ K5 Q7 `; P# A
  139. renameNx' ^) w; |( h; s: x* n) J$ a
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功* B  R- _2 ^8 R; Z

  141. ' G* B" X* G* m. `) l
  142. setTimeout, expire
    . _7 L4 C) w5 L1 r0 E- C0 U: R
  143. 设定一个key的活动时间(s)+ H* ]8 \2 w- ^/ c! o+ N2 ?
  144. $redis->setTimeout('x', 3);
    ! U: x0 z+ s0 _; M

  145. # ?2 v: Y! D4 f0 E9 ?' U6 w
  146. expireAt2 |) Z5 `# P* }
  147. key存活到一个unix时间戳时间! G6 N" b9 V! |" K; ~% M  D
  148. $redis->expireAt('x', time() + 3);% r3 S4 j3 J3 @& `$ }. D
  149. 4 T+ Z. a2 a) p! U, E, s
  150. keys, getKeys
    & G$ w+ L, Q& _" o. G
  151. 返回满足给定pattern的所有key
    7 k8 E! v' V3 ]1 K: v
  152. $keyWithUserPrefix = $redis->keys('user*');
    $ }1 u' L# K) F& J2 K

  153. / T$ p7 p' l% p# D6 d
  154. dbSize' `* Z- d* S8 J1 _
  155. 查看现在数据库有多少key
    ! o1 n* R: a: @8 y7 ]
  156. $count = $redis->dbSize();" E& F9 d: h: ~' `( n8 Z$ B* a

  157. 5 W3 ~" W  m9 G4 b
  158. auth$ `9 e) Y# j% D9 ~
  159. 密码认证
    * {1 J' S% C8 w; z$ _& s- d( {; Z
  160. $redis->auth('foobared');3 p9 Q  t5 |# V. z
  161. , P2 v9 \2 y0 K( Y/ j# K3 s& k
  162. bgrewriteaof1 j* n& _- w/ V4 K* B( ^
  163. 使用aof来进行数据库持久化8 d6 T$ v+ |" e
  164. $redis->bgrewriteaof();
    $ H9 Q4 M7 F- }3 r! Z) `
  165. , y) T. f8 u6 U4 m
  166. slaveof$ ~% X+ g) R  g) t, j4 S, E1 G* |% E
  167. 选择从服务器, n4 L9 |4 j: L7 a
  168. $redis->slaveof('10.0.1.7', 6379);
    * r5 D! x1 m. x! o
  169. & U4 b. D$ i+ ~; i, B9 l- g
  170. save6 {& l7 [- Y% B2 R
  171. 将数据同步保存到磁盘2 o  d1 O" T. [
  172. ' T& N2 U9 U- j
  173. bgsave/ X! u2 A5 D  Y9 k5 Z0 q. T' ]
  174. 将数据异步保存到磁盘0 B8 _+ N( w- d
  175. 4 c6 D" B0 G) |! j$ T: X
  176. lastSave7 e% |6 g3 V" v! s; U, u. ~% V
  177. 返回上次成功将数据保存到磁盘的Unix时戳& ]8 q6 @$ d4 X% y/ O

  178. 6 i7 j, {) p9 y3 o9 c
  179. info
    3 |7 }, J3 _1 w1 c/ S, S
  180. 返回redis的版本信息等详情$ H0 s+ r/ U3 b) A

  181. 4 f8 _2 @4 R8 ?, w2 V
  182. Redis::__construct构造函数
    : T  X5 e0 ?% @" |2 s: P
  183. $redis = new Redis();' h! m3 X; l7 y# [* d( i" Q

  184. " @1 \# O3 h# q0 d
  185. connect, open 链接redis服务
    ' A* t9 n! o! U/ h( F
  186. 参数$ O3 p8 Q8 x. r. W( M2 H
  187. host: string,服务地址
    9 Y7 [( H8 t( I0 I* c' K- z: n) S8 {9 A
  188. port: int,端口号7 S% X) \2 }4 T, g
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ; r% G9 G( {- O. N% @5 C# x2 V# ?
  190. 注: 在redis.conf中也有时间,默认为300
    5 q- [# r3 w+ x' t' x8 x
  191. : s. v8 v3 I( z! {; O
  192. pconnect, popen 不会主动关闭的链接
    . Q+ J: _2 u5 N' f
  193. 参考上面% A; F% s. ]- m, C: e! y

  194. ) P2 M$ o/ f( J! y: t" t3 d( ^1 F
  195. setOption 设置redis模式1 @: ~% s- c* O# g9 W1 Z6 J# [4 w( q
  196. / e" m0 g0 a/ u) K* P5 ~/ F6 G" w
  197. getOption 查看redis设置的模式) D! N7 y9 t- ?. Z$ y
  198. 6 P5 _4 i9 M3 b: x- |6 w- Q
  199. ping 查看连接状态2 N8 ]( L5 m: f
  200. % P2 c; t, x& y5 e- Y9 T
  201. get 得到某个key的值(string值)6 `' B3 {" P# M3 E; G
  202. 如果该key不存在,return false. I+ N+ i  V" J/ l
  203. 7 Q# z0 \  l4 T( q  s1 a/ D# e
  204. set 写入key 和 value(string值), q& z. t( _6 U+ B+ g& t
  205. 如果写入成功,return ture/ e9 V. D) S6 D* d: f& F

  206. 3 K* k3 B( `, q2 I
  207. setex 带生存时间的写入值. d" E9 H# k* M# e- Y9 _; Z
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    . q, p/ L% s) @; u4 h" D  h3 K4 _

  209. $ F- E/ z( ?- o4 M) L9 J
  210. setnx 判断是否重复的,写入值
    . W6 G( [- a/ v- m% ^) {7 q
  211. $redis->setnx('key', 'value');, H9 {. I& z$ G8 v
  212. $redis->setnx('key', 'value');0 X1 ?  K& S& ]3 D

  213. 2 p0 b! c' O) n* S/ G/ m( z
  214. delete  删除指定key的值
    + e0 j  J! E0 M0 @- A+ x$ c
  215. 返回已经删除key的个数(长整数)
    * H7 u2 C6 ]' }( F( u- [- W7 R4 x
  216. $redis->delete('key1', 'key2');, R1 f% @6 x& ?  s: U) X
  217. $redis->delete(array('key3', 'key4', 'key5'));
      l/ H/ \' \9 @1 z

  218. 2 K8 s% s! ^2 @
  219. ttl' y7 p# i5 s3 q" i6 ?! _# ?
  220. 得到一个key的生存时间; P9 ~" }: s. x1 C9 B1 S3 G) r8 H4 f
  221. ' i, [" K, z* Q  u  [0 x) j
  222. persist
    % R. V9 @2 K5 n* q0 b; x' W, i
  223. 移除生存时间到期的key
    7 y9 ]  x  M% T  f& L3 {2 S) ^
  224. 如果key到期 true 如果不到期 false
    " [0 q# g/ S4 D: [. P
  225. : d% d+ `' b- p. J% f( G
  226. mset (redis版本1.1以上才可以用)
    ; M5 y6 M* z0 J, k
  227. 同时给多个key赋值
    ) u" d+ C4 |& A" M
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    2 s, t# q# o9 M, N
  229. ) i" [( e5 ^  T+ A+ X' [2 K

  230. 8 Y, t# |0 h9 j* E: Q/ W7 b
  231. 0 h  u. K+ a- @9 T
  232. multi, exec, discard' a! r& |$ l( a0 `$ j% A
  233. 进入或者退出事务模式3 A: w; a+ w% t6 W+ V
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    3 d6 B0 N% T' B. s8 T' D' T
  235. Redis::MULTI:将多个操作当成一个事务执行
    & r6 m3 p4 u5 p7 @9 |
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证! w( X9 X8 @7 v& a/ H
  237. discard:删除一个事务
    3 b0 A7 k6 b8 q1 A0 ]8 X
  238. 返回值8 t5 r! O7 G) w4 s) n
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。, i9 }% n+ ^$ g% I+ Q

  240. 9 o4 M2 N0 d6 _- n1 Q- n9 F
  241. watch, unwatch (代码测试后,不能达到所说的效果)- q) e4 j8 B0 W0 W" E
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)' }5 _  s% x+ r' W' L  ~/ b1 `
  243. unwatch  取消被这个程序监测的所有key
    5 _$ `% J, I- n( g  h2 C) D1 A2 ~9 o  a
  244. 参数,一对key的列表  c* l5 x$ Y# @+ |& b% n
  245. $redis->watch('x');5 Y; S% k0 j5 _, I7 g1 q
  246. ' [: y7 g, R" [* M9 i, U! @
  247. $ret = $redis->multi() ->incr('x') ->exec();: v: v! w0 _" X# S: A7 U3 B
  248. " u8 P" s$ b$ b. u- |% Z, K
  249. : a+ J/ u5 c" v; I" H* e
  250. subscribe *; m( Z- y4 ~1 ?8 v# h- {' a. U
  251. 方法回调。注意,该方法可能在未来里发生改变% L5 ^) l5 s2 ~& d* s: F" F
  252. 5 [+ `  S3 ~" X/ n. J
  253. publish *; P% f0 Q1 I+ ?2 `; h
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变5 q# C, d' _; S4 g: V  i" y
  255. " G" ?; K+ g1 y. W  ~; k; K/ i5 N/ O. J$ d
  256. exists
    9 k8 {+ b" F1 f
  257. 判断key是否存在。存在 true 不在 false
    + z+ i! w2 ?3 D/ K0 I5 T) f: z

  258. 5 v1 `, ?6 W" t
  259. incr, incrBy
    , r3 U7 g' z  s2 t) d# F
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值6 t  U( c" ^8 K" O8 U
  261. $redis->incr('key1');
    ' `: X" w+ T+ R2 h$ n# y
  262. $redis->incrBy('key1', 10);# U  H& U# j7 R( {; G0 W8 f  m: @
  263. + I. r( z# ]" F5 K' F& P
  264. decr, decrBy9 W* j4 ~5 H, a/ D. d
  265. 做减法,使用方法同incr1 j8 r9 U% O1 r! U/ k4 d$ L
  266. ; T0 q: n* f- C; ]/ V1 j
  267. getMultiple- \8 v% Y1 u4 W# T! M' L) C+ r# B
  268. 传参: r% u, k* L: u. L- ]1 g' D% R
  269. 由key组成的数组: {) m1 `& u3 [1 n
  270. 返回参数' I. H+ j) W8 m- t6 B! b
  271. 如果key存在返回value,不存在返回false
    2 K  R# T" b2 {! |2 F- k
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    8 }, n' Q/ g$ U2 h' t7 X5 g% M( p
  273. $redis->lRem('key1', 'A', 2);# \; w5 r( a4 o2 m& s& |  D
  274. $redis->lRange('key1', 0, -1);& k9 ?; u6 B+ [+ C' p+ t

  275. 6 h& T" B, e+ E% ^5 E
  276. list相关操作) }& w- w8 R  F7 n6 M; q+ a0 c, `
  277. lPush
    ' s4 t4 T$ {6 ?: n
  278. $redis->lPush(key, value);
    : E& k- w6 F! |1 V+ O+ f% [
  279. 在名称为key的list左边(头)添加一个值为value的 元素, e2 o" Q9 u) K! T

  280. + t& @  W% p) n! `; l5 Q
  281. rPush* _* i, M$ ^; `- U2 [& B& O1 g9 V
  282. $redis->rPush(key, value);' i! o: ]8 R& _9 d8 M
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    * I- g1 _: _) {9 |; D

  284. 9 z" d& }7 h$ e3 A- }2 b) f
  285. lPushx/rPushx
    0 W% W! L# b! o1 y0 n
  286. $redis->lPushx(key, value);
    8 X+ y4 `+ H1 j
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加8 |* y* [- }# h! f

  288. - Z* `8 A4 g/ A; ]
  289. lPop/rPop8 J  I/ N4 @2 u3 @0 r. t
  290. $redis->lPop('key');
    - S+ ^- k8 D7 i. q# ~, v
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    6 [) ?3 J, t0 L- e, X
  292. ! m/ C( n- ]9 A; k
  293. blPop/brPop( [9 d3 v$ h2 [+ _7 ~; |
  294. $redis->blPop('key1', 'key2', 10);' ]7 W- o# Q2 n0 C% c/ ~
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作" \# B! J, Z( m8 X  _! y- F

  296. ) G" z* o; L* N: T
  297. lSize3 V/ F' s# y) l* r; `
  298. $redis->lSize('key');3 c* ]3 @, N  m+ H
  299. 返回名称为key的list有多少个元素, V3 N' K8 I$ V+ z4 {8 {
  300. 9 g3 _7 C0 p0 m* {& I
  301. lIndex, lGet  A6 V" _8 K' ^
  302. $redis->lGet('key', 0);
    ! D! [4 V3 x: w" J* z
  303. 返回名称为key的list中index位置的元素# e: S- I' ?/ ]

  304. 3 K% v: M' d+ f" b& U
  305. lSet
    9 E+ N5 c. @  ~  S
  306. $redis->lSet('key', 0, 'X');
    . L5 C1 E! Z; S1 j0 t. y5 Y
  307. 给名称为key的list中index位置的元素赋值为value/ U& _5 N7 E- D# i& H

  308. 4 x; B' R5 B  O, {' w
  309. lRange, lGetRange! k9 e" ~. X8 C1 r# Z/ h
  310. $redis->lRange('key1', 0, -1);
    9 M8 j/ z9 i, I, R: E# e
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)1 [, e" _. n& v/ A; ~

  312. , [% D6 [5 W& R# A
  313. lTrim, listTrim# b9 A/ }# a, y7 C
  314. $redis->lTrim('key', start, end);
    . r; B$ t& l% j2 a
  315. 截取名称为key的list,保留start至end之间的元素
    : M! G. N+ j; }8 ^2 ~

  316. ) _+ i6 }; H# x1 `8 D4 i
  317. lRem, lRemove, ?0 t' C, u5 s1 c' p) ~
  318. $redis->lRem('key', 'A', 2);
    ( q; C" ?7 ]$ p; |7 N( ?2 n6 J3 }
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素) ?6 A9 ?* X# d9 R

  320. 0 ?: G( P# z2 f. G. L
  321. lInsert
    $ U" O* K# C& F" Z
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1, O: V( l7 B! ?) l
  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');
    # Q0 ?4 a: f& o* v( i/ b
  324. $redis->lRange('key1', 0, -1);
      @2 K# Q" u0 S9 P- f% P" P5 |
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    " X+ U9 p  V2 C/ X7 s/ |
  326. $redis->lRange('key1', 0, -1);
    * L3 [$ ^& |' R7 z$ \
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    , t; @" \$ Q' Y" A1 {5 \

  328. / Z/ g, [1 w' |3 X1 Z
  329. rpoplpush
    6 P- i% P) m0 M4 b0 `
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    # q8 d! @3 }/ @9 c7 q& P
  331. $redis->delete('x', 'y');. a6 d* A/ i+ I, @
  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'));
    $ G& B1 W2 X$ |) \1 `- q# u2 i
  333. var_dump($redis->lRange('x', 0, -1));
    3 ]0 g5 z7 u% k
  334. var_dump($redis->lRange('y', 0, -1)); ) w. A$ y! p' \7 A

  335. 3 A# v1 y4 E& X5 P
  336. string(3) "abc" . j+ M3 G& J8 g. W* o& J  d
  337. array(1) { [0]=> string(3) "def" } 1 c9 l/ D2 J& D& @: @8 M
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    ! M7 Q& d* p, Q2 m$ w. x
  339. 1 Z/ i9 O0 U- H6 K3 l
  340. SET操作相关
    8 T/ x4 W: C7 k
  341. sAdd. f9 N$ P. y. @4 j
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    . W/ ]* y5 H( T5 V
  343. $redis->sAdd(key , value);/ M. c8 _2 ?+ t0 ?" q* m/ K0 w3 e; I

  344. $ [5 y4 N/ A. E
  345. sRem, sRemove
    . ]; f3 N& w. e/ N# }! P2 j
  346. 删除名称为key的set中的元素value' J9 ~3 n) b/ X$ `- B' t6 h/ S
  347. $redis->sAdd('key1' , 'set1');
    - n  _9 w( j& ?. r
  348. $redis->sAdd('key1' , 'set2');2 J# O4 B. _0 ]$ y
  349. $redis->sAdd('key1' , 'set3');
    ' c& g8 }- _/ S! w: x3 p
  350. $redis->sRem('key1', 'set2');6 \# W8 s, q; N" {/ a  K
  351. # x" X/ ^$ H/ ~# }  d) y  c+ B
  352. sMove
    / f$ e+ C# |3 B) Y9 T# n
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合+ Q: ~% S+ M  n- v; K9 ?
  354. $redis->sMove(seckey, dstkey, value);
    " p0 x/ N" q/ r. L
  355. : z$ E. i9 x* A9 C9 H" v
  356. sIsMember, sContains
    + X9 R, \0 o% N- J
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    5 E4 P# B1 ~. o1 q
  358. $redis->sIsMember(key, value);
    + Z+ |+ E- `4 z6 O6 L8 D
  359. % B& K3 h2 ^  E. |/ y8 r. f- K. ~+ @
  360. sCard, sSize
    8 ]: N0 \: _0 Y; T# r( j9 R# ], ~8 i
  361. 返回名称为key的set的元素个数% B: M" @- ^* t

  362. $ J1 [1 C9 ]' {7 y. a6 r& r
  363. sPop
    7 Q5 H1 N  z; T) @9 w
  364. 随机返回并删除名称为key的set中一个元素2 E. z, q4 C# F' G
  365. - Q8 [# r/ ]5 v2 w* M" ^4 Q
  366. sRandMember
    8 O6 A5 v+ R) B7 s; i" b& h# {2 N
  367. 随机返回名称为key的set中一个元素,不删除
    # P0 \8 v1 G6 u7 M" k' S
  368.   v! z9 U, I+ w3 z
  369. sInter
      a  h* z: ?% G$ d7 c
  370. 求交集
    $ _4 ]' o. l3 i+ t: a3 k' f

  371. ) O: e1 Y8 A) }3 U- m
  372. sInterStore
    2 I& U- Z9 m  Y. o+ k4 q
  373. 求交集并将交集保存到output的集合% V% \6 H) h6 J1 @# _
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')9 c* j" q) @. O2 z: p" W
  375. 1 Z" L: e2 R: n
  376. sUnion
    7 l* k* {4 ~: L
  377. 求并集
    3 o6 w# g+ N2 V  b9 J/ i% x+ B( E
  378. $redis->sUnion('s0', 's1', 's2');( Y$ ^7 `6 S0 A$ o
  379. s0,s1,s2 同时求并集; M4 S, X# M" K- |; }% m8 R& \
  380. " `5 G1 |# P/ t% W
  381. sUnionStore2 J; W0 ^* `7 k! y
  382. 求并集并将并集保存到output的集合8 e4 ~  N; g- ^0 \! B. `! C
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    $ k2 [0 z' U# B& ^
  384.   J/ D7 W6 B* q* z
  385. sDiff
    $ b; v$ H1 {& {; J6 F
  386. 求差集6 m8 o3 ]6 |: f; ^2 q9 y4 y/ X0 ~
  387. / ~& K4 x2 c8 k% |6 a4 C
  388. sDiffStore
    4 C+ s0 B1 p6 W
  389. 求差集并将差集保存到output的集合
    " T$ a6 U, v) d" Q/ v6 [
  390. ) O  u8 X% _8 ~$ @3 y+ P
  391. sMembers, sGetMembers
    7 q/ G5 n( K0 r* K% x2 j
  392. 返回名称为key的set的所有元素9 J: T+ h- Z4 ?$ z# o
  393. ; ^2 }' I4 V7 v
  394. sort
    + S. N$ W+ k& E8 w% Y9 g0 `
  395. 排序,分页等
    ! z  N  S) H# f' ?1 Q
  396. 参数6 ~, H' z+ D8 i& ?: N
  397. 'by' => 'some_pattern_*',
    , b0 w8 F; l. R5 t
  398. 'limit' => array(0, 1),8 K" S6 J; U9 T5 n& _
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    4 ?- G8 s, G1 Q$ S6 A
  400. 'sort' => 'asc' or 'desc',  B2 @% ^( t, Q+ t5 r& p" ^
  401. 'alpha' => TRUE,' h, p8 v5 e$ q' |% L/ r) ^
  402. 'store' => 'external-key'
    , F  a( L& u0 @3 ~3 N# |
  403. 例子
    3 ~+ G  h& x0 J" s
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);2 L2 [' W! e! L, Y
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    # ^. L5 Q2 c0 i! L7 r9 A
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    7 s0 ]% d  O( h
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    % J8 S. i3 ]4 Y8 l/ @

  408. 3 g1 ~7 o1 K% q# f
  409. string命令
    8 G8 _9 ]$ y5 ~7 Z6 n. O
  410. getSet
    8 y# n) k: C5 o6 V
  411. 返回原来key中的值,并将value写入key; V8 i5 l5 x' m" [
  412. $redis->set('x', '42');- }: A2 _; w! f4 y
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'; W- S& O/ U1 G9 {
  414. $newValue = $redis->get('x')' // return 'lol'
      M1 F. v) l3 x8 Y  q1 j

  415. ; W4 y9 c3 z3 M
  416. append, v) m6 T2 i( C9 z
  417. string,名称为key的string的值在后面加上value' ]. u+ |" u3 s% L1 y
  418. $redis->set('key', 'value1');
    ' @7 \! Z% `  ?% C
  419. $redis->append('key', 'value2');# n0 I- z: H# ~  ^( o  u. E
  420. $redis->get('key');. o* ]" e  t  p2 }* K' I9 n) ^
  421. 5 t1 i- l- z0 o6 }% z! v
  422. getRange (方法不存在)
    % n/ [8 Y- j$ k9 M# p7 ]1 V: R
  423. 返回名称为key的string中start至end之间的字符
    1 J% {3 g" }* @/ T  f
  424. $redis->set('key', 'string value');
    4 o  z- c9 L7 D4 k- b9 [0 m  w6 k
  425. $redis->getRange('key', 0, 5);' F" i( R( G; H
  426. $redis->getRange('key', -5, -1);
    ! W  G2 ?+ a3 \
  427. 0 [0 D& d6 \: b& D% l+ l
  428. setRange (方法不存在)# `- S6 O$ W! ]. C+ ]( w
  429. 改变key的string中start至end之间的字符为value
    + U# U- `) l5 w+ T) e3 u( h" l
  430. $redis->set('key', 'Hello world');
    . `& s& q3 c# Y5 _0 U- t% D3 @' L
  431. $redis->setRange('key', 6, "redis");
      e" \7 e$ b. \% r; B& i
  432. $redis->get('key');4 v+ C$ B( |3 J' P
  433. $ u4 z$ M& a8 w
  434. strlen
    5 X( B0 ^% d3 [0 B& Z+ t' z
  435. 得到key的string的长度
    # n& I; {6 B  `5 k4 r/ @
  436. $redis->strlen('key');' i# X+ I; @2 L/ H
  437. . o0 i3 l  e& K6 n; a: h" Z5 D
  438. getBit/setBit
    " b2 J  M1 }. d- ?6 X8 [0 P0 ]! d8 e
  439. 返回2进制信息6 G+ S  v$ E2 Y9 k/ I
  440. 3 l, z: }8 l5 r. n% @9 \
  441. zset(sorted set)操作相关, C5 w1 K" S. x: x- L' g
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。/ j: t7 y' w0 G- R! E
  443. $redis->zAdd('key', 1, 'val1');1 n. z' N3 W( q
  444. $redis->zAdd('key', 0, 'val0');" l$ N  E1 q/ @) s7 ]1 ?
  445. $redis->zAdd('key', 5, 'val5');
    , B" b, f0 \# [' o, P% \" |( ?
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)9 q, b& S; e+ f7 P7 U; T6 `

  447. , s7 c3 D2 u9 R, _$ z5 p1 g, w
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    ) R! d# X9 e1 `$ m6 a
  449. $redis->zAdd('key1', 0, 'val0');  n2 V  G4 f6 C5 a# u
  450. $redis->zAdd('key1', 2, 'val2');9 ~% `. Z; T0 ^4 n2 {
  451. $redis->zAdd('key1', 10, 'val10');
    3 B0 D% C0 u4 R% d
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    2 x. H) v: h: a. D2 C0 v! J
  453. $ G: i4 T# H$ p& w6 @8 u7 H$ @
  454. zDelete, zRem( K& a- C0 s  x4 c" q6 Y$ H/ H
  455. zRem(key, member) :删除名称为key的zset中的元素member4 v- y' U6 [9 b4 I( P
  456. $redis->zAdd('key', 0, 'val0');
    : h" z! r# t3 @5 |8 f5 L
  457. $redis->zAdd('key', 2, 'val2');5 [7 j4 G, G: b, y! P6 G8 u
  458. $redis->zAdd('key', 10, 'val10');$ W. N& d+ X, ~& ]9 M
  459. $redis->zDelete('key', 'val2');7 r% Z% ^# Z( I! T7 R$ K0 Z
  460. $redis->zRange('key', 0, -1);
    , ~8 }# }; {* \: f# [
  461. & T2 u7 _. x9 D# y+ P# i4 _+ z
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    " G! e/ h' c: r; l4 n1 X& P
  463. $redis->zAdd('key', 0, 'val0');
    $ O7 v7 J$ A5 C! O* B
  464. $redis->zAdd('key', 2, 'val2');& f' c8 X. a  A, w0 [. a
  465. $redis->zAdd('key', 10, 'val10');8 U) w2 F3 \' B3 f9 ^
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    $ }: ?  a7 E' W, |6 L* L
  467. * W( ^( u! y+ T3 t6 K
  468. zRangeByScore, zRevRangeByScore
    * S2 R7 g* @6 }2 q9 G
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    9 g/ P6 x, v! k8 {. a2 b3 }
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    - l  V9 {/ P1 Q) ^/ `  s
  471. / E* G1 Y: o0 N4 j
  472. zCount
    2 }6 u$ P4 f4 U2 L! c5 S
  473. $redis->zCount(key, star, end);
    " n1 O: }* x! Y" i1 `
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数2 j7 s" `8 Z' O9 [- \& S

  475. : l; o2 P' P, q$ Y
  476. zRemRangeByScore, zDeleteRangeByScore
    & K8 r2 I0 {' @
  477. $redis->zRemRangeByScore('key', star, end);. A0 [, F: P0 ^! U1 P0 ^
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数" T1 x! e% f7 Q+ b6 g$ ^1 ]+ U
  479. ' d2 m9 g" A! l; x, k6 I$ D, p
  480. zSize, zCard
    ; m2 J3 |3 _; U( @7 p: L
  481. 返回名称为key的zset的所有元素的个数: {  H3 x6 s0 `( _0 \" j
  482. 0 }7 p, ]! x& S/ j: l  [
  483. zScore
    0 I2 _2 n0 s( y
  484. $redis->zScore(key, val2);
    , }+ a+ C5 p2 ~& y- y% J# P$ e
  485. 返回名称为key的zset中元素val2的score
    & Z* M+ N) C, M1 G) H3 w! f7 _
  486. . h% I9 ?+ A. ~
  487. zRank, zRevRank
    1 t4 o! C5 E3 N  A
  488. $redis->zRevRank(key, val);
    % S7 f. [' _) e3 V. r
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序# E3 [* X2 q6 v( q2 n
  490. ! i& s/ K4 ^; g6 j
  491. zIncrBy
    - q! Q" m# K; b! D+ ]3 q1 |# t- J
  492. $redis->zIncrBy('key', increment, 'member');
    ( T# f& h' g+ I" H
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment: ^" z+ i, @! t6 H& H; O
  494. 2 e7 d  E8 n& i5 o/ ~" U6 F
  495. zUnion/zInter
    0 l( r% e, R. d& ~4 B$ T: n$ Q" g
  496. 参数
    ) @1 [/ O) ~- c! N0 w# M0 t
  497. keyOutput
    9 l- }/ s) k) I& q- t
  498. arrayZSetKeys
    ( M& n. P( p' X8 X5 H
  499. arrayWeights
    . S1 v; x' u/ b, q: A1 g4 w
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.# h" v) C: ^% h. ]* F
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    & k/ D6 @5 {5 ]6 y$ `& x
复制代码
; v2 |; |2 m4 @/ [4 [! q% w/ ^4 [
0 F6 n7 U9 R& n4 o, x* s

& l' x$ V% M; C2 c; F5 W. [  n2 }% A. E, e; J* z, b( ~+ e* p8 S- D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    2 L5 ], I$ p, v
  2. //连接redis服务器
      P: @  y, A2 ?# B! ?  l, v8 z
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-9-21 07:04 , Processed in 0.059513 second(s), 18 queries .

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