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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    ' a+ T- I: O9 o( L0 E
  2. $redis = new Redis();  & |' Y# s# E; R- q1 d8 D4 X' @
  3. $redis->connect('127.0.0.1', 6379);//serverip port/ d1 \) X) x- F4 {1 h( R
  4. $redis->auth('mypassword');//my redis password
    0 C% q% \) O4 |9 L  ^9 `2 T
  5. $redis ->set( "test" , "Hello World");  , Z. _* ~4 e5 K5 D
  6. echo $redis ->get( "test");5 K/ k- _& ^6 p1 Z0 h- F
复制代码
php操作redis函数封装
  1. /**$ k/ g, T/ |. Z0 T( r5 `- z
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    % s, S2 M  N/ D9 z0 ^
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    + Y1 o+ n7 C, G7 F' i+ X
  4. */
    4 ?. d! X$ U" U/ S1 ?* I0 k
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){! j- z4 T$ w, ^* q1 Q" C
  6.     if(!$key||!$value) return false;! w/ I; p. ?5 `% L- O+ x
  7.     $host = $host?$host:getenv('REDIS_HOST');' }5 f5 I* W& y) c- L
  8.     $port = $port?$port:getenv('REDIS_PORT');7 n2 U4 ^3 F1 Y' y& y8 ?0 F
  9.     $redis = new Redis();: v9 L4 J: m0 q4 T+ a) d# j  q
  10.     $redis->connect($host, $port);9 B9 i( l5 v5 |: {/ W) v% h; o. |
  11.     $value = is_array($value)?json_encode($value):$value;- U1 t! ~6 l3 L: {+ [: E
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);- _4 L% @6 d0 K' t5 d; A
  13. }
    7 v2 ], {1 E% l1 r  L
  14. /**
    3 n0 h8 G2 L4 ^. u$ m2 P
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    9 f3 [: ]. Y$ b
  16. */
    6 `) J3 L/ V! [& k. l0 r: L9 i8 x
  17. function RedisGet($key,$host='',$port=''){; b% m2 ^8 G  l& A
  18.     $redis = new Redis();
    ' U5 }$ i$ v' k9 \% S
  19.     $host = $host?$host:getenv('REDIS_HOST');
    6 }8 p. t) V  p- U7 @% g# l
  20.     $port = $port?$port:getenv('REDIS_PORT');
    5 {/ u- k; q" o+ [, q0 t8 n: P9 |
  21.     $redis->connect($host, $port);
    9 F! r1 N& Q' R& i( U) F# Y
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);4 Q3 y4 E! V2 _7 ~" s- r% h4 k) O
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    " }. A  \2 p) Q: Z
  24. }) J% I0 @9 O4 x6 m+ Q3 y- z
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了7 m3 z6 v  @$ K/ C8 j/ [
  1. setex 带生存时间的写入值4 J: f* m. ^4 U9 Z" W) N
  2. $redis->setex('key', 3600, 'value');
    8 D3 a+ _5 }8 B
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1' Y0 C: |/ G  N( d- [3 a
  4. $redis->setnx('key', 'value');
    8 p! r9 }; f# }. M4 b
  5. 返回已经删除key
      P0 y3 @% u* w7 O- G3 B# `$ H/ a
  6. $redis->delete('key1'); 成功返回1失败返回0( J7 i9 R1 T- X9 d
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0: b, D  p- O5 K4 x6 G, t
  8. 查询生存时间
    4 n2 A0 e& Q5 G4 F; V6 d2 e& o
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    ' M! O: V% s0 O# K
  10. 同时给多个key赋值,同时设置key0和key1
    / \+ r3 U: b7 w3 P$ A
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    & G2 B" g6 F0 J- k9 f* q
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值  q- N- |" w+ \; P) [  O
  13. $redis->incr('key1');; Y6 q) l, @! i4 n" T7 s
  14. $redis->incrBy('key1', 10);% e0 h; m" t3 a8 U0 `
  15. 减法跟加法一样7 S4 m4 l2 T3 G4 g# d1 I( F
  16. $redis->decr("key1"); 减少1
    , Q0 s, Q( q. `( N! Y' n0 X4 q
  17. $redis->decrBy("key1",5) 减少5
    + h  m; Y4 _  {- i  y

  18. 9 H3 B/ x7 B1 o: d; ^
  19. list相关操作,连表操作( y1 Z8 i+ N6 @
  20. lPush
    7 [- B1 [3 s/ ~  e, j
  21. $redis->lPush("list", "888");* k  d4 Y* @7 U5 I5 g& t$ d
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数1 G$ K4 V( Q3 E
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式* Y$ Y/ F( ~& e
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
      C9 c4 ~5 X5 m# o9 b' R
  25. lPushx/rPushx% c* N3 l' \* ^9 u9 V
  26. $redis->lPushx(key, value);
    - ?5 O- j8 F* ?4 T7 N9 c* {/ v6 S
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加/ [9 S& L8 T$ C' [0 K8 n3 Z) z
  28. + f( w3 j  L. g& n
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key1 P8 c9 x4 A+ x$ g- }! f! K2 d
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    ! @3 I7 o  S0 ~; W0 Q$ ~5 ?
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回10 X) t3 I" x9 Q! F# b- \+ T# L7 X, e7 F
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    3 k/ }: _* V0 g- |; |; w& f
  33. sadd s1 zhangsan0 P4 a6 y  |' j+ x2 l
  34. sadd s1 lisi* K1 q4 a" E/ A7 L
  35. sadd s1 wangwu
      [; d# D: i4 O6 m
  36. sadd t1 yangxingyi
    ) D( q7 {" G" l4 {" D# {2 i4 T
  37. sadd t1 lilei" _, v2 Q/ i9 M7 ?# \" v* t$ B
  38. sadd t1 zhangsan
    5 G* Q5 C0 r% p' V  R8 q
  39. smembers s1 s1的所有集合内容
    & \! E( v3 X" `
  40. sdiff s1 t1 s1有的,t1没有的,差集" Y7 Q* e/ s7 ~* ~9 n* `: b4 \2 R  V
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    0 o4 {" w, X( f( [. e
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的0 \: _$ X* |3 {  ]) Z# P
  43. spop抽奖场景,返回集合里面随机的数" ]7 R7 i3 J& B1 D
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了" Q, R' V* a0 p- w1 ]% v: P( {/ i
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    2 g+ w- z0 @/ \' S
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的1 a$ b/ I" j1 x- u- t
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    ! T' s) [8 o; f# n6 ^' ^. ]( X
  48. $i = $redis->srandmember('s1');echo $i;
    3 Y2 O: A) Y7 \- w& _% u
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    4 m, V8 r; f2 z: D/ F) j6 l& \
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false1 J1 u6 g7 H, Y: C7 P( U& T! h$ y

  51. + Z) s& P, C. q) Y5 B1 a
  52. zadd key 2 value 有序集合
    6 B; E$ X5 N. }# d
  53. zadd y1 1 zhangsan;+ }) b- O) K9 ^6 W  n1 h' L1 \
  54. zadd y1 3 lisi;. _. H9 \. y! @3 `0 |9 s  m
  55. zadd y1 2 wangwu;
    . N# _2 Y( N0 c
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi2 `3 p+ ^! O, i- ?8 k2 }% ^4 N
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    * i: a# |: W5 `6 ^& Z% {
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    0 {0 v. }( g5 }) h; v, }
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    * h& [& x; b$ f/ q
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    / u2 c+ a$ V# N( V5 W. B( G, Q
  61. 无序就scard,有序就zcard,有z没有s- A4 B+ T0 @  R0 k7 ]5 w, T: d
  62. sInterStore
      s  N; v2 J$ b" o5 h
  63. 求交集并将交集保存到output的集合
    ! X6 W- B9 h( T. m6 @5 ?5 l
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')( [! e! C. p3 l  g* {
  65. 4 y, p1 C; x; }1 g
  66. Hash操作, ^' W; Y+ K/ x' J
  67. hSet
    8 u2 R% A* T7 v* x
  68. $redis->hSet('h', 'key1', 'hello');
    - m1 \( `; a0 k. O; B0 Y, l$ }" Q
  69. 向名称为h的hash中添加元素key1—>hello/ t  {, ?9 I3 V
  70. & ]  p8 i, R' d! t5 H6 A: z( Z
  71. hGet
    # ^0 ^- z/ c3 g; h  |1 m& ^
  72. $redis->hGet('h', 'key1');
    + R  n3 V* k4 L
  73. 返回名称为h的hash中key1对应的value(hello)
    : W; E5 A4 ^! {" }1 T, b

  74. : G4 o% e% l! X& [
  75. hLen5 j0 Z$ ]" a  |9 Z
  76. $redis->hLen('h');! D  y( I) b" `: t0 ]. t
  77. 返回名称为h的hash中元素个数1 p# z2 ?* b2 f* J' t* R& @" ]
  78. 1 g. p+ T( \2 q& _/ k
  79. hDel" r9 {( V8 B6 n/ L) b' j7 O
  80. $redis->hDel('h', 'key1');
    : Y6 v) v. G) I) D7 A; V
  81. 删除名称为h的hash中键为key1的域
    ) P, h" H6 B+ _2 N

  82. 9 O0 ?: Y8 \- O5 ~
  83. hKeys6 t, ^4 K7 [1 V
  84. $redis->hKeys('h');
    2 m8 [! H- X% c! T
  85. 返回名称为key的hash中所有键8 w) j8 U! l1 H: ?
  86. * C- q+ u2 |$ k7 A
  87. hVals+ }6 [$ f: ?, e1 z$ [; Z
  88. $redis->hVals('h')& s, V. t& i! h  n: e% t5 j
  89. 返回名称为h的hash中所有键对应的value
    : Q/ a. @! P4 _
  90. : b; x- o$ L7 ?( d) i/ m; G# \7 u( F7 G
  91. hGetAll( U0 m; W5 S2 x8 c) l% A9 S
  92. $redis->hGetAll('h');
    , J2 C4 L/ \  h" N; L8 `
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    ; W% ^6 r. W- F: o6 @9 \$ h+ D

  94. 0 a" e! ^! H" ]
  95. hExists
    2 U6 A- ~/ l" K
  96. $redis->hExists('h', 'a');
    9 {6 ?1 T5 r: n, T" `- ?4 b
  97. 名称为h的hash中是否存在键名字为a的域# b. U  O3 H4 E' x

  98. - @) a+ p/ v$ M2 ~  B2 w  w  [# ?
  99. hIncrBy+ M  A3 c) t8 y/ w8 v
  100. $redis->hIncrBy('h', 'x', 2);
    8 i# l4 I% X7 j7 s& G8 M; E
  101. 将名称为h的hash中x的value增加2
      f" z$ @  e0 Q5 F9 L* p. _- V
  102. - Y" \7 C* q- z8 l% y
  103. hMset
    ( E# b6 L9 }: y$ _6 x/ s9 u
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    9 `1 ^8 v* l5 A# o" l6 L
  105. 向名称为key的hash中批量添加元素% c; W' f0 Y& k/ x# I
  106. ; C  S4 C" W/ c1 h4 f6 J9 U* L3 A
  107. hMGet7 F" A2 }$ x% }0 f. [  r
  108. $redis->hmGet('h', array('field1', 'field2'));
    4 V7 z* Y' ~/ B. Y# M  ?# I" }' r
  109. 返回名称为h的hash中field1,field2对应的value% p" x% @) Q' x; u0 h6 s( M

  110. ( T$ Q3 B% C" y3 }
  111. redis 操作相关
    - [+ `7 c! Y  p
  112. flushDB( Z: l: g7 `8 m
  113. 清空当前数据库
    - P# ?7 J0 {/ {, `& Z
  114. 0 M$ Y' U+ X$ \# D. Y9 V
  115. flushAll) ^2 z6 H. n! y! e6 z* D0 ]
  116. 清空所有数据库2 n( i( |2 C: Y6 Z1 l) K

  117. . O1 z. S9 S, [2 i* h6 ~5 i
  118. randomKey
    . x' K" u$ e' e8 K% f
  119. 随机返回key空间的一个key; R8 z- o3 @: X. V
  120. $key = $redis->randomKey();) q$ U+ N" x5 t$ ], |2 H0 ]  A
  121. ! ]% Z+ M' Q; o( o  P) q
  122. select
    ; Q2 u7 y) g  Y0 P5 B8 O
  123. 选择一个数据库
    + k2 y' U& g$ D( i3 ^
  124. move
    & O. Z5 u  {- ]
  125. 转移一个key到另外一个数据库) j; d4 k) `% _( A" v$ y
  126. $redis->select(0); // switch to DB 0
    2 X7 s/ a6 _+ I( X8 M
  127. $redis->set('x', '42'); // write 42 to x
    ; d8 y0 n1 T0 h' z
  128. $redis->move('x', 1); // move to DB 10 Q4 ]. H4 s# ~- W5 {
  129. $redis->select(1); // switch to DB 1
    ; `* u) `$ {; E+ ~6 H0 `
  130. $redis->get('x'); // will return 42
    3 E9 @4 j( u5 r: ]. w" t  Q
  131. - X( i( b6 U2 G' G' R4 J) y$ p6 _/ ~
  132. rename, renameKey
    . b, C8 p: ?( B
  133. 给key重命名
    & f7 L8 J8 b9 Q0 P/ R0 w
  134. $redis->set('x', '42');
    & k* B8 y% |! }& P0 G5 @4 S
  135. $redis->rename('x', 'y');+ x- l! O8 w: D  b& |
  136. $redis->get('y'); // → 425 [  e& p/ {5 q9 Q$ \2 l
  137. $redis->get('x'); // → `FALSE`1 G! V) X4 m; {/ S: P

  138. 7 A& z9 x% Q. |+ ]2 K
  139. renameNx
    5 B* Y: V' D/ ]7 V8 ^; c
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    " D* e# }1 C+ B7 n8 J
  141. 6 Z; z0 R1 ^% q$ ^. \
  142. setTimeout, expire1 `. Y" X( A9 a6 K6 {! v
  143. 设定一个key的活动时间(s)
    ( G, M# C' \2 L, T. t/ Q2 S
  144. $redis->setTimeout('x', 3);& z/ Z  \) L' E  m; q+ Q: O/ m
  145. 3 \+ U9 J  |& i* f1 \
  146. expireAt
    9 O7 q6 O$ x; y3 t. q1 O; v
  147. key存活到一个unix时间戳时间
    1 i0 k- p& z& w: G! j) f% W
  148. $redis->expireAt('x', time() + 3);' k+ p; K3 h" l3 ]5 j9 ?2 l2 l
  149. ! w9 q0 m8 v2 |# }2 `# j/ o' }
  150. keys, getKeys
    ' ^' {  i& ]8 p1 ?% a* b
  151. 返回满足给定pattern的所有key% @' x" k2 ~5 K* O3 C2 R
  152. $keyWithUserPrefix = $redis->keys('user*');
    ' h2 x0 ^- c" P3 D( U+ U9 S6 w
  153. 3 y, [' b/ U. b% L# a
  154. dbSize" D8 |! Z8 l8 `. U, s+ ~7 T
  155. 查看现在数据库有多少key2 h: o; N/ z1 z
  156. $count = $redis->dbSize();
    6 r& T/ R' A6 Z4 A
  157. # Z  B& B& l) h' }' m
  158. auth
    ) E5 P2 S: K' r$ J, W( h
  159. 密码认证1 a& R+ `) ]7 P, Q
  160. $redis->auth('foobared');
    + W2 h% l- e) H: ]# q

  161. & `- A6 D3 Z& b" J- K# P
  162. bgrewriteaof
    4 u: N0 R: X  e4 h
  163. 使用aof来进行数据库持久化) L! R! B( ~6 }! h
  164. $redis->bgrewriteaof();
    ! z/ Z; m: }) Y. `1 n$ s8 W
  165. 3 b+ r# Z. ?; k! A! U$ l# h
  166. slaveof
    7 C  h9 W0 Q! [, B. Z* M, W
  167. 选择从服务器' F" X' H3 r, t3 P2 _  N4 N
  168. $redis->slaveof('10.0.1.7', 6379);
    . T8 v) y; D' ?' ^) ~5 J# W

  169. 0 W' z$ b: d4 I1 v$ G2 h* o
  170. save- `2 j1 a9 J7 _/ c1 c( N' R
  171. 将数据同步保存到磁盘
    & m5 M8 Y; X3 X# y

  172. % d1 `4 A1 b7 V. H  }% N9 Y5 n
  173. bgsave, |* Q1 F) a6 a( q, C: `
  174. 将数据异步保存到磁盘2 G1 y6 l2 B. J1 r* ~& R

  175. 1 \2 d0 n; \6 N# h* M
  176. lastSave
    4 p# `6 T4 y" f* w
  177. 返回上次成功将数据保存到磁盘的Unix时戳! \- d/ q# e5 I
  178. : C1 `( m) }" d* _* _
  179. info
    % k% z# {6 a' Y6 U
  180. 返回redis的版本信息等详情
    ; l" v; c  ^" _# a5 @
  181. : G+ @+ ]& B3 l4 j
  182. Redis::__construct构造函数8 ]& I4 [& @- N* z! [" N9 x* \
  183. $redis = new Redis();8 T/ V& j5 s  ?5 C+ l0 A

  184. # n8 o" e) i3 x7 b! V/ L; w
  185. connect, open 链接redis服务; L# ~) F+ D$ \" u. c7 P
  186. 参数
    + P; o$ z' m! \* ?, `5 R8 ]
  187. host: string,服务地址& i) S+ s7 H( Y: S+ }& t0 r" C* M
  188. port: int,端口号. @% ^3 \8 N, m5 }
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    - X5 d; m' {/ m  X3 r
  190. 注: 在redis.conf中也有时间,默认为3008 o3 i( \8 f, @8 N

  191. . F( T$ V  w8 R0 m7 ~0 Z
  192. pconnect, popen 不会主动关闭的链接" C" s, O1 |8 F
  193. 参考上面/ H. R) I! z. }/ z/ J0 Q  ~

  194. 7 i; B+ w7 [) ]1 Q+ m, U0 \3 d
  195. setOption 设置redis模式
    1 H% b2 `# K7 Q5 V, r) I8 m9 ?
  196. 5 V3 K( ]# m; H% W; V3 @
  197. getOption 查看redis设置的模式" F# ?9 f$ `) {; L" a9 l$ L6 y/ ]
  198. . @4 c$ I: A9 W* B: r
  199. ping 查看连接状态3 S: y+ h6 Q$ Z; f, H3 \+ S

  200. ) {3 U* w/ M2 b3 Z9 }8 n+ T
  201. get 得到某个key的值(string值), |' T$ f/ ]  D; p# E" r3 Q3 w. J
  202. 如果该key不存在,return false
    ; G) l1 |/ ]( ~, s8 w- U5 [
  203. ( V. r; A( y: i' x- N6 H! D0 d8 r
  204. set 写入key 和 value(string值)
    4 f: X6 a* l! Q1 B  L
  205. 如果写入成功,return ture8 B7 @$ \/ T3 W7 m
  206. 3 {% u* A! Z' {# C4 J
  207. setex 带生存时间的写入值
    6 @& K; X% v5 D) ~: ]% x8 v. S
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    : D; r" V# B. Y6 `# s1 ?5 B

  209. , M4 ?/ [4 Q) @4 k
  210. setnx 判断是否重复的,写入值# q, H" T) @" d2 f1 h
  211. $redis->setnx('key', 'value');
    " D3 g7 ]# O5 `) l5 Z% _
  212. $redis->setnx('key', 'value');
    * w) Q$ {+ A5 [% M& r: f

  213. 8 I1 \; b: G$ Y1 O
  214. delete  删除指定key的值4 E, j9 O7 y3 t
  215. 返回已经删除key的个数(长整数)
    ! E- [9 Z# R6 ?7 E4 B6 X
  216. $redis->delete('key1', 'key2');
    $ q# o; U1 X) h9 w0 m  z
  217. $redis->delete(array('key3', 'key4', 'key5'));
    0 C: s( i5 X, {- [) L

  218. * z& W6 A/ M  }$ Q) q. ]4 a* z# g
  219. ttl
    5 v$ c6 X3 \2 @- G% F
  220. 得到一个key的生存时间) b0 f3 u' o% K& C/ K& n/ ~, N+ |$ W

  221. : }2 ?$ a& p* C& v
  222. persist
    , i7 t3 Z% J% @& r
  223. 移除生存时间到期的key' Q: Z4 a* G& F' V  y4 {
  224. 如果key到期 true 如果不到期 false
    3 D) P* \9 \* z1 e4 p3 T0 z

  225. 9 U2 ?. u, E9 m+ ^) ?" @0 X) m$ \
  226. mset (redis版本1.1以上才可以用)
    5 i) _8 r3 N9 {% O* n
  227. 同时给多个key赋值
    2 b; ^  Z6 R8 O- K. y
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));  Q& }0 A4 \9 H3 M5 X
  229. / D' T! m( j8 C$ T
  230. 6 L) E" e% z1 n8 N; D% S
  231. 0 r+ m( {8 l' Z" g
  232. multi, exec, discard
    + o' }1 M$ i2 Q! s6 ~# Z* N
  233. 进入或者退出事务模式
    ; _5 W1 O' _0 W2 T
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    9 k  U- p' U8 g3 d- d* d
  235. Redis::MULTI:将多个操作当成一个事务执行
    ; Z: R0 u1 J. E9 B. n/ p
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证7 ~) V5 A' p! X' I5 d2 G3 d* G
  237. discard:删除一个事务
    9 W% o, Q) r+ T3 x1 I: L2 ^  z
  238. 返回值" U$ X: }$ G; }3 c
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    # d: V" c1 N9 l$ W1 ~

  240. 3 X0 h; O$ r" o7 o/ s
  241. watch, unwatch (代码测试后,不能达到所说的效果)/ i) r  x( Z% Y/ `* j
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false), m- v  K' b" ~3 ~* K
  243. unwatch  取消被这个程序监测的所有key
    ' C3 R$ R0 u! r/ w
  244. 参数,一对key的列表
    : y$ C# \* _3 Z4 T
  245. $redis->watch('x');
    + s; @1 b& J0 O$ Q) y

  246. 2 t" c' J9 o2 T( Z8 T  g
  247. $ret = $redis->multi() ->incr('x') ->exec();: F+ e- K( K9 W& L1 h6 G6 f5 o0 `

  248.   N2 M# a# Z0 ]' e/ W" K
  249. ' \( c& J, m" @1 A
  250. subscribe *
    ! C  k5 i! f, K
  251. 方法回调。注意,该方法可能在未来里发生改变; Z3 q) o2 I: I3 }
  252. 4 g* Y1 b1 |: R' E. I5 k
  253. publish *' d  U  i" Q9 m. x' U
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变" _- I1 \; s0 E

  255. 3 X1 S) Q: }- G% a8 ?) s
  256. exists
    4 m( Z3 N/ z5 G$ ^5 v) C. E
  257. 判断key是否存在。存在 true 不在 false
    . w( ]$ M) L8 r+ D2 e

  258. " g3 d9 ~. S7 Q4 H
  259. incr, incrBy7 R3 ?9 ^+ b+ ^) {
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值1 N6 {% u; ~' T, f' h
  261. $redis->incr('key1');( k4 P, k5 @5 [& s+ E; S) q2 }
  262. $redis->incrBy('key1', 10);1 \& u' K3 ^/ p! k

  263. 0 H6 ~, Q9 U: e5 e/ V
  264. decr, decrBy
    4 J" G% N. V, U6 p4 t$ a, e) R3 r
  265. 做减法,使用方法同incr8 I& {/ A, u9 B5 J" F  c
  266. ) i/ h: L+ A! z2 F& t* A
  267. getMultiple
    4 A( X% q$ g# {& ]7 Q( y% {# A! |
  268. 传参
    ; ^) H4 S& ?# n% ^; k9 A% _" L0 a' T1 d
  269. 由key组成的数组
    & [( A; A. w& I
  270. 返回参数- f% n  k6 C3 X) \# v/ ^) U' v" G
  271. 如果key存在返回value,不存在返回false" x2 P+ T; A, r8 G6 V
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));+ Q3 x1 R. I- E/ O: J1 o: z$ Q
  273. $redis->lRem('key1', 'A', 2);
    $ {7 l/ r( W+ L$ [
  274. $redis->lRange('key1', 0, -1);
    . `( c6 B+ `# Y# c# B+ s
  275. , \+ D7 A; w9 ^& h0 L
  276. list相关操作& T2 s% z, ?; L
  277. lPush; E: L# T" q/ q! w: d7 c+ K
  278. $redis->lPush(key, value);/ \+ {  Q1 N; o$ Y0 N6 r
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    ' w, ?- Y, q- G3 V% C: p# b9 S, M

  280. 5 D7 B) _" @* q% w2 X3 y4 K  A
  281. rPush6 d9 g4 g& U8 W* ]( U
  282. $redis->rPush(key, value);. z) W1 m# l& {' t5 `$ c
  283. 在名称为key的list右边(尾)添加一个值为value的 元素" }! a" ?7 ^; s& a; y

  284. , Z; \. n% k0 r4 [
  285. lPushx/rPushx
    " ~- }* M% h) O" u
  286. $redis->lPushx(key, value);
    ' v# B( V4 _, m6 o/ v) Z
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    - b/ m* X) p8 e2 r& ]# l' z

  288. 7 l& @" R3 n4 `5 O5 ^
  289. lPop/rPop3 m8 o7 H/ B" j7 ^" j+ ?
  290. $redis->lPop('key');
    3 Y8 Z. D6 Y8 r: C; K0 F, D2 U
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    , `. X2 Y3 z" o  D

  292. ! `9 B+ p# o* h! F& X: V4 ~8 t
  293. blPop/brPop- H2 j9 T4 G' J
  294. $redis->blPop('key1', 'key2', 10);5 N# \7 ?$ j5 S6 ~  j
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作# G4 L2 e3 ^/ r1 r# c$ B/ o5 x3 Z0 ~( {4 e

  296. : H! t6 p: ~3 A
  297. lSize& L# h- E9 B3 a; t' P  P
  298. $redis->lSize('key');
    7 u" ^0 U2 [6 G( x* ~4 h
  299. 返回名称为key的list有多少个元素
    7 M& m$ V8 |3 D
  300. * P# H. \6 V, T* y
  301. lIndex, lGet
    0 H* D2 L7 s4 v
  302. $redis->lGet('key', 0);9 v- u4 d1 }9 \) Z
  303. 返回名称为key的list中index位置的元素3 n5 }- G& y+ n. T" ^* k7 F
  304. 3 Q9 z7 `- Z* P5 E, `, ~  S, @% K3 z
  305. lSet
    # _6 x0 J- n/ i& v
  306. $redis->lSet('key', 0, 'X');+ V0 w4 S( e( i- z; O9 n0 N
  307. 给名称为key的list中index位置的元素赋值为value" d0 w- S/ X; V7 }  ]

  308. 8 X2 T3 Y# f3 B* x1 \
  309. lRange, lGetRange
    * s: t+ A0 S# V: {' w7 ^# |" f4 z
  310. $redis->lRange('key1', 0, -1);
    4 t. x+ \/ U  n7 u  p' \
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    2 `6 C8 Z( H4 h7 z4 m3 r( d+ l
  312. % a: r2 C. F  a% @0 h
  313. lTrim, listTrim
    ; }2 L% o$ x5 Y( E& {: r1 I) d  A5 h
  314. $redis->lTrim('key', start, end);1 V- K+ v' M' k5 ?
  315. 截取名称为key的list,保留start至end之间的元素
    * i2 O0 f' I( P. O. X9 E

  316. / ~7 X  J( {) ?* F  E9 R/ M
  317. lRem, lRemove* g% Q, z- H# w) J+ L2 C& r# ~  H+ u
  318. $redis->lRem('key', 'A', 2);
    ' g7 F* c) G$ `2 {4 B
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素7 h: h4 w( E2 f& p3 N) {3 n

  320. 5 G9 c7 B) C4 a: a
  321. lInsert
    * C% o* r& g- N9 e5 H
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    # [% c, H, v( G+ |3 Y( ^; s( t% E
  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');4 _/ F, R, F- z  S$ l! u* e7 S9 t' F
  324. $redis->lRange('key1', 0, -1);
    ( e  d, g" s" Y  v+ D
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');) {- O% w' [; {$ E1 L) g
  326. $redis->lRange('key1', 0, -1);
    ' g/ g6 s  O& e# E4 B, L+ W- t7 |
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');  I4 h( A6 u& o1 [& K! c- ^: u* y

  328. 0 E! y8 s$ ~3 i, e
  329. rpoplpush
    / `$ Z! _' I1 o) z4 h
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部6 W/ I4 e- I3 S( i
  331. $redis->delete('x', 'y');
    . c* \9 ^+ i6 o; F/ X9 e1 j2 J
  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'));
    5 |3 p! g$ b& V
  333. var_dump($redis->lRange('x', 0, -1));1 n7 Z3 L& f; ?; k6 F, h$ s
  334. var_dump($redis->lRange('y', 0, -1));
      F0 D5 m, e8 p, i) j! a

  335. ) h. `% G4 [1 _- h2 z. m9 o. y
  336. string(3) "abc" & Z) X# a, ]) ]3 {9 k& z6 ~
  337. array(1) { [0]=> string(3) "def" }
    # @' S* q, O& j0 g$ ?, }
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    3 \  M1 L. ~' {& f, t. k1 @

  339. # A& a# l0 Y0 s  F
  340. SET操作相关
    4 P1 c) h: x/ {: Q
  341. sAdd
    ' B+ x+ }' M0 N' t; Z
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false! c8 _. P5 g% |! g- T
  343. $redis->sAdd(key , value);
    9 i. [; y1 _4 V4 A% a: I

  344. 3 t; j, g9 z; S$ O  C/ ~/ j# U7 c
  345. sRem, sRemove
    ! X0 h4 L9 d& }3 {* r' J8 r2 q
  346. 删除名称为key的set中的元素value: p" e9 h! ]4 Q' Z0 }: X
  347. $redis->sAdd('key1' , 'set1');0 a& a" e( t, ?$ x4 C6 }
  348. $redis->sAdd('key1' , 'set2');
    & Q% J/ z4 J" M7 }
  349. $redis->sAdd('key1' , 'set3');5 F! x2 S3 _3 r0 Q% |' f
  350. $redis->sRem('key1', 'set2');
    : _* q! r) _( e, J" v
  351. , |4 e/ A. h/ H7 P# ?$ k" t
  352. sMove7 v( c; p0 @8 t  v$ \) B. |
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合  y2 K; \1 k7 B; |
  354. $redis->sMove(seckey, dstkey, value);
    + [! n! H! W/ p5 M
  355. / E8 Q' O6 I. F- A& w( n
  356. sIsMember, sContains& L8 g! q9 e7 y+ G+ T, \: s( k
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false5 O) W1 |3 ?' ^2 @: A; h" r5 L
  358. $redis->sIsMember(key, value);4 C; I1 v6 i! A& z$ z! t

  359. * j9 u& P7 s8 w3 S1 K6 x
  360. sCard, sSize& W) \, c/ y7 M; c
  361. 返回名称为key的set的元素个数
    ; l5 R: ?  V" v* W' b5 r
  362. 8 z# P4 e2 l2 `& a. D: ^' _
  363. sPop
    9 L( g: B0 l1 Q
  364. 随机返回并删除名称为key的set中一个元素2 e* C6 c; D) q
  365. 1 S& u- r: }; z+ g9 i, C! l
  366. sRandMember+ N* Q3 F9 j6 {7 |  o8 Q% T
  367. 随机返回名称为key的set中一个元素,不删除
    ! v/ f/ F& @! U* g& G

  368. . `% u4 o9 \; x7 ]
  369. sInter
    % {) K0 ^5 M0 F. O' V
  370. 求交集3 \& z. q2 x9 T; |' i( A" t

  371. - K& s/ z$ k* P( e2 |
  372. sInterStore: ~+ ]' J& x! F: b! q- k
  373. 求交集并将交集保存到output的集合( f0 K& y: E& }$ v7 j
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')1 T$ B  u0 m8 _
  375. ) [2 ]! z' a$ n$ t/ P
  376. sUnion6 Q7 Y& z& i" K* ]! u  t! T
  377. 求并集, _5 X2 s$ h: O5 C& J
  378. $redis->sUnion('s0', 's1', 's2');& V7 p/ v) f1 `7 v( _9 Q
  379. s0,s1,s2 同时求并集  l' {; f8 k. b5 a
  380. 9 v1 d' \, C( c* B% x6 i
  381. sUnionStore2 o+ Z: ~$ _) t, N
  382. 求并集并将并集保存到output的集合, R" _" ^7 u& n. {# x/ F- n
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');' K3 Y! a; M; T3 Q8 v; U( K# C
  384. ! d- g4 E8 S; h- @2 M/ X% L  L
  385. sDiff
    $ `. t) M/ N+ }0 z- d7 m8 f- {% w( b
  386. 求差集
    & X- M1 R: S! ]2 N% ~& J

  387. 3 ?: {) s% ^2 }) Z$ j- N; J
  388. sDiffStore
    8 l9 K8 C; l- \& j
  389. 求差集并将差集保存到output的集合
    + k7 W8 P( h% J4 j
  390.   ~4 ?4 H% z' m2 g  Y( p
  391. sMembers, sGetMembers( Y; A! n3 J  G1 z2 j* g; U+ D
  392. 返回名称为key的set的所有元素7 @+ o5 }3 z/ P* J! i
  393. ! i2 ?: [9 q" }) q6 N# T* w
  394. sort; o, u  ]" U" ?( d7 F3 y' f
  395. 排序,分页等
    ' _: Q+ S  s$ I" \+ D( C1 M) o( g
  396. 参数
      |* X2 A  b* n6 e# Z6 `+ H
  397. 'by' => 'some_pattern_*',
    4 C" F) x. n8 u
  398. 'limit' => array(0, 1),
    ' c9 v. _. u# k6 z
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    1 _, p- d4 G1 V6 _" p6 S- x- n' ^. \
  400. 'sort' => 'asc' or 'desc',2 o* y6 m/ z  U  |6 f
  401. 'alpha' => TRUE,
    , J3 Y% F8 V5 g# m
  402. 'store' => 'external-key'7 ]1 x, n  t7 D' H. F& G: f. G$ d
  403. 例子' l$ s! s8 A. w& R! p' |( x) f! Q) u
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    ' @/ F( ~+ n( l# u
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    $ v. |8 l) m# v! i
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    ' a3 M2 H0 z  U% {+ @. h
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5$ Z5 B0 `2 G7 U1 c! e) ?: P

  408. 1 l  U- ^, N4 P; E) F, }8 P+ i3 G6 b8 v- F
  409. string命令
    0 b9 @0 j& H, X+ F
  410. getSet  x6 Q+ s- y  O" h# B6 ~
  411. 返回原来key中的值,并将value写入key# u6 e( A: _! T% B8 C. F# G
  412. $redis->set('x', '42');
    0 R, a; I( a% I1 _( a5 I& a; ~1 ~4 T
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'+ s+ n8 k/ _: {- `
  414. $newValue = $redis->get('x')' // return 'lol', M+ x# ^6 O, s6 X( ]
  415. ( D" I; Y* i1 X
  416. append8 L- W1 L+ s0 C. M6 Z
  417. string,名称为key的string的值在后面加上value
    , v" r+ u1 m* v% F$ i- a* Y3 m
  418. $redis->set('key', 'value1');
    / A* A  k- |  Y7 B& G" `1 k4 C
  419. $redis->append('key', 'value2');
    2 e% B) `0 p% O( j- t8 J/ b
  420. $redis->get('key');! z* `: n- T* B- [. t$ r& |" f7 h
  421. ' w: }% x. C; o% M$ y; s
  422. getRange (方法不存在)
    $ {+ q$ C% f% c! Y
  423. 返回名称为key的string中start至end之间的字符
    8 J! k' X- P2 ]. D
  424. $redis->set('key', 'string value');
    % T% m3 G- @" t2 T5 Z5 U
  425. $redis->getRange('key', 0, 5);6 Y9 B& l9 k, N. _+ L9 ^2 j3 D$ j
  426. $redis->getRange('key', -5, -1);: l. l8 V  U- Q

  427. , v, Z% F9 C0 n. O+ T
  428. setRange (方法不存在)4 C+ t6 \9 {3 }) h7 m
  429. 改变key的string中start至end之间的字符为value. \3 _: K3 T, ^# {  V" K
  430. $redis->set('key', 'Hello world');
    0 M$ v; {0 p3 E- I6 l
  431. $redis->setRange('key', 6, "redis");
    + y% e% G  V% k
  432. $redis->get('key');
    0 x( d& [! W( o* q+ d9 D, {6 c

  433. ! |( s* Z# F2 N7 [% N  e! @
  434. strlen" X% }, l  H7 T: |3 U: Z" |. s/ S
  435. 得到key的string的长度: r1 k# \; l% z+ O7 I
  436. $redis->strlen('key');8 y+ i$ \/ R9 u  r, A" `
  437. * V% k* ]8 \  ]" O2 W0 ~
  438. getBit/setBit
    / F. \8 m# U; b9 |5 d
  439. 返回2进制信息
    # V  Z2 H- ~! h- x/ j% T
  440. 2 {! O9 v. h6 D4 Z
  441. zset(sorted set)操作相关
    # u; A6 `) r! |( J9 f
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    9 \  Y$ n* A' Y, y
  443. $redis->zAdd('key', 1, 'val1');$ o1 X3 ?' S3 A& G- X# p. M6 `
  444. $redis->zAdd('key', 0, 'val0');
    / c2 x0 W3 l4 P: o
  445. $redis->zAdd('key', 5, 'val5');; w7 S3 f- \6 X2 R- [# w; m
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)1 V$ E6 y0 f" `2 ?4 }& P
  447. 7 d9 t7 k& m2 F4 ^9 F  G
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    , R9 D1 [( ?( ?. S5 O
  449. $redis->zAdd('key1', 0, 'val0');6 b7 C6 p. l( t: r$ u- [
  450. $redis->zAdd('key1', 2, 'val2');
    : L* J" s, A* L# F$ y" O
  451. $redis->zAdd('key1', 10, 'val10');
    + W. r- v2 d+ B2 _; g* N/ R
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    5 [7 @% Z4 F0 Z: y) v  p
  453. ; O# L2 L9 O: P, b' F
  454. zDelete, zRem, |/ S) ~* R4 e/ n1 Z( g6 y! J
  455. zRem(key, member) :删除名称为key的zset中的元素member' f# u9 f" @' G  u: I/ {6 o
  456. $redis->zAdd('key', 0, 'val0');' k0 h! h7 N# t/ q
  457. $redis->zAdd('key', 2, 'val2');
      P+ `( Y, W6 W4 {4 X8 f
  458. $redis->zAdd('key', 10, 'val10');: s4 r% {" o! C5 C+ F: l$ p
  459. $redis->zDelete('key', 'val2');( t  [( T: j; i% W; L
  460. $redis->zRange('key', 0, -1); % c$ T( i: O5 f% c' P
  461. 4 G( G& [1 n( K8 J( o  i3 N
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    ; {: C2 v! i- b8 O) F' n0 h1 b
  463. $redis->zAdd('key', 0, 'val0');0 G# i9 q1 E, l. {7 A5 X$ @3 i$ t) z! |
  464. $redis->zAdd('key', 2, 'val2');
    5 Y1 d4 S8 [. ~' {$ A- r) ~1 S
  465. $redis->zAdd('key', 10, 'val10');
    . ?6 u6 N% x4 \$ |
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);) N2 D6 C5 G" c, M0 x. `. J
  467. 0 _8 ~5 a1 W( ~/ ]: ]/ ?
  468. zRangeByScore, zRevRangeByScore
    6 b. K9 n# I1 ]1 L/ c  n
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));5 L7 D$ r" k$ T! H7 K
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    6 K5 U2 S0 P5 |! B3 f6 b( ]

  471. 3 x" o3 x0 Z8 }& [0 W/ ]
  472. zCount
    4 c6 R- a' ~1 A& |$ U
  473. $redis->zCount(key, star, end);
    - f7 s5 J" @  \$ f% G, P
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数! b$ j# a4 o$ s; ]
  475. # O: j$ O! X0 }- U, m/ a
  476. zRemRangeByScore, zDeleteRangeByScore; l4 \" I7 F+ z
  477. $redis->zRemRangeByScore('key', star, end);
    9 v  [8 y+ R7 e
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    3 J% C4 E( c( q$ Y4 L& q1 m. N! n

  479. ! i: e; q8 p, S. G( Z
  480. zSize, zCard
    & I) t+ y  f0 Z* W/ t
  481. 返回名称为key的zset的所有元素的个数
    & `3 {; R7 O5 U' k0 x& N) u

  482. , f8 A2 E3 U( v& u! a
  483. zScore
    ' ?& H( x' [  ^3 C
  484. $redis->zScore(key, val2);6 x- Z1 M* Y6 v4 N# N$ m# [
  485. 返回名称为key的zset中元素val2的score
    0 Z  ]  {- O; D

  486. , E  o( V  P% u
  487. zRank, zRevRank
    7 b: D) ]& o. X* R% O
  488. $redis->zRevRank(key, val);
      K2 ?" }" o. H8 x  O
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序* }0 g4 A  s4 }) W5 ], W9 t

  490. / t# k8 M1 |- K+ `# m) u% }- R
  491. zIncrBy
    & t( h! ]2 j- P( O6 j* d  g
  492. $redis->zIncrBy('key', increment, 'member');1 w& ^$ D6 m$ D: |
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment  `$ \6 z; w1 Z" K* Q. {

  494. - R! {/ f  ^1 s
  495. zUnion/zInter: I% q/ M% o9 j) L! _& b0 o
  496. 参数
    - V6 j8 P6 X* Y. k
  497. keyOutput
    * K2 _2 b6 M3 m9 v  D, v& j4 n' b" n
  498. arrayZSetKeys1 E- R9 j) k; a% d4 o$ K5 P+ X; ]
  499. arrayWeights# c' U1 w2 }% [8 C
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    * ?; e) C$ L- ]8 i7 N7 B" V. B& G
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    # J( O6 J0 ~$ i! D/ A& O
复制代码

0 [. g# _' j" i4 P5 q& Y% q" I' X, @7 {# C
( A; l5 C3 F' X" ]2 j

0 O( t0 _8 a0 b, d8 d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    " m7 O( K3 }3 I8 h
  2. //连接redis服务器
    4 E4 R) S- M8 j* l
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-7-2 02:11 , Processed in 0.193637 second(s), 21 queries .

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