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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    * q5 O7 ^" h7 v: _0 ^: U: s
  2. $redis = new Redis();  ( g4 d( M* V7 `
  3. $redis->connect('127.0.0.1', 6379);//serverip port( h! r6 r; Q& u' e: o8 `5 Y
  4. $redis->auth('mypassword');//my redis password
    ' K8 {) I; Z% q! \% D; t
  5. $redis ->set( "test" , "Hello World");  . g) n8 b8 _+ A+ t4 i5 A, K
  6. echo $redis ->get( "test");
    - Y' `; H5 Y; p4 G. Q: |! H/ C
复制代码
php操作redis函数封装
  1. /**1 s1 {& Z9 x9 S9 T( i
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数: P) J  _1 O; K' i; N
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    5 ?# H: C: K+ B5 J
  4. */9 T# v& Q, Z5 o6 s: N+ @
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    * W, ~5 d8 o: [6 N
  6.     if(!$key||!$value) return false;
    . B! R/ t7 q. N2 c4 Y, G# M9 F/ O' ~
  7.     $host = $host?$host:getenv('REDIS_HOST');- D/ W# o$ A& H4 V; ?1 X2 Y. {
  8.     $port = $port?$port:getenv('REDIS_PORT');6 z1 p( c3 Y1 M6 X% K
  9.     $redis = new Redis();
    1 @5 o' l, l8 ?- J* L
  10.     $redis->connect($host, $port);
    ) E" _( R  q/ k# g1 Y0 K. J$ |5 C
  11.     $value = is_array($value)?json_encode($value):$value;" r# t, x/ E9 g  V. A
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);) o. F- C- I. ~- j8 S1 e- F5 N
  13. }
    ! V( p3 Q" x% ^* {
  14. /**
      [1 _& i+ \) L+ x% H0 p3 y. V' D( G8 S& g
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    1 e) K8 s" J, O
  16. */0 r' d8 A2 ]" C$ w
  17. function RedisGet($key,$host='',$port=''){
      I4 J# G( h. b
  18.     $redis = new Redis();4 K$ F% f) L- P; C
  19.     $host = $host?$host:getenv('REDIS_HOST');
    3 c- |4 q# Q  g5 n9 X. F# s
  20.     $port = $port?$port:getenv('REDIS_PORT');
    8 k' P( K  g4 m! _
  21.     $redis->connect($host, $port);
    2 i' x. Y  U/ n; a5 J% Q( N9 U0 s( T4 W
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    % h" m0 J5 ^6 p3 Z
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    2 S- v/ g, n! Y2 T1 w
  24. }" q3 y, ^. A1 u+ \+ f- W7 v; B
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了8 c  {( X+ m' C- |0 R
  1. setex 带生存时间的写入值
    ! J! t3 l' B' Y/ Z
  2. $redis->setex('key', 3600, 'value');
    0 q* }0 E8 V, A5 A4 G( F) S" x
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    . ~. Y8 k& h1 L0 ^3 _, C1 W6 G' j) ^
  4. $redis->setnx('key', 'value');1 @9 y) W0 A2 a$ G
  5. 返回已经删除key7 h, F' v6 m! T5 Q' {* K
  6. $redis->delete('key1'); 成功返回1失败返回0
    , @; d% ?  A3 X# o( O, T
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    8 o- g8 B8 x3 L8 L
  8. 查询生存时间0 @6 A/ Z5 E) f* _/ b6 l
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)! s+ [- L' |' [8 j# U  I2 X* k
  10. 同时给多个key赋值,同时设置key0和key1
    2 d& v+ p4 C7 \
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));$ ~$ m/ U1 w( P8 e+ M
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    2 G/ x. `3 |& Z2 t
  13. $redis->incr('key1');$ H9 Q% i& t" Z! T( W& V% H2 O
  14. $redis->incrBy('key1', 10);; ~( G  p: A0 I+ k' B( M6 M
  15. 减法跟加法一样
    5 c5 [8 C. @% K9 }0 T3 _8 m& L6 e
  16. $redis->decr("key1"); 减少1
    ' D0 Z# E( {+ E/ {' a
  17. $redis->decrBy("key1",5) 减少5, c. V  {% U- x$ g
  18. & p& z, ]3 o: G" ?& H7 D
  19. list相关操作,连表操作
    7 W) M3 k  H7 f$ o  ~+ ?$ H+ J
  20. lPush  F  W' J, k8 x" ^) W
  21. $redis->lPush("list", "888");3 `! {) n' }) e2 D, A& f$ [
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数7 h1 Y& B+ @$ J" T0 g
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    % F8 D) H, p4 }
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    + V6 A' J: a4 j
  25. lPushx/rPushx& l4 H6 H; C5 f- l
  26. $redis->lPushx(key, value);- \% P" b9 C$ x/ K& O
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    $ N; y) k4 i; b( E% y5 y4 o

  28. 1 Z" V( W4 u) S$ u
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key* A3 D$ X# e+ Z& f, L! T
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key- d' K- F; W* `8 |
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1, C+ Z/ ], @' g& m6 {: f, d2 Q
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    * d1 z) G% j8 x
  33. sadd s1 zhangsan+ J1 U# V5 G9 ]$ R& q+ b9 b" m' B
  34. sadd s1 lisi1 J% l7 h, P' T( s3 \; a# ?
  35. sadd s1 wangwu. e- @+ L% U5 O4 {5 ]( o
  36. sadd t1 yangxingyi/ }3 {2 i0 e+ q) N/ m
  37. sadd t1 lilei  K2 K8 |5 G! i2 M! f
  38. sadd t1 zhangsan! K4 L+ n$ J' i! ^7 F4 I' A. M
  39. smembers s1 s1的所有集合内容3 Q( B4 X4 A4 u2 t
  40. sdiff s1 t1 s1有的,t1没有的,差集
    0 c. E1 g9 m! O) w5 f, ?0 k, P
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    & m/ ?; z2 P$ z  F9 q* M' j
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ' D  K9 [  o% Y" T+ v8 u$ J0 E- E* g
  43. spop抽奖场景,返回集合里面随机的数8 M3 W! p* n# d/ {( P
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    8 O8 T0 `6 o3 q5 O
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数4 Z3 V$ u+ X# e- ~
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    6 S3 ~* W, D$ k$ I' F
  47. 随机返回集合里面的一个元素,但不删除,重复中奖& r- m7 J/ Q: V: Y- m; q% l+ K
  48. $i = $redis->srandmember('s1');echo $i;
    0 X% _. t# y# ?! T0 M
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    " D1 B0 P8 m, a1 P% m
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false; M* `  G. n/ g; X$ G1 y  T

  51. * o5 H* ?' D! Z  j! R! P
  52. zadd key 2 value 有序集合
    & k, r/ L7 D" ]  E8 V. ]
  53. zadd y1 1 zhangsan;
    ; ?* ]' j3 w. l; ^
  54. zadd y1 3 lisi;  |" {- X; t  Q" s; e
  55. zadd y1 2 wangwu;
    9 U, v4 w5 C$ K8 {( ~8 m6 v
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    7 f9 N. r$ d& f  j9 y/ \
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);+ u0 x$ _$ d1 @
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键3 V! `1 t* u# Q' Q
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    0 ?6 Z. p  I9 ^
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的+ ]' s1 E# {9 B8 v# H' r0 {6 o
  61. 无序就scard,有序就zcard,有z没有s6 L' w+ T0 _/ l: v' x  F- f
  62. sInterStore
    7 u% a5 [, s0 e; Y  [% {: R
  63. 求交集并将交集保存到output的集合6 [3 U' P& x, C( [" s
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    1 [. l, |; e# [

  65. - o9 u8 X8 S9 v; o" \+ s% i  C
  66. Hash操作
    & T6 l& t4 N$ \# |; U3 ^4 }  e
  67. hSet
    * \4 Q/ g# B: T
  68. $redis->hSet('h', 'key1', 'hello');' p8 S! h2 w8 U7 o) }
  69. 向名称为h的hash中添加元素key1—>hello
    2 q4 n/ \7 K9 S9 S6 m3 j
  70. 6 S6 k1 ~* L8 u5 S7 [) F+ \
  71. hGet  ~: [$ X; Q4 n2 c# ~
  72. $redis->hGet('h', 'key1');
    , P; ?9 }3 Q* n5 N1 }, q5 U
  73. 返回名称为h的hash中key1对应的value(hello)
    . ?. `+ j1 d9 @6 x5 K5 K
  74. 0 V: e& {- D5 G
  75. hLen+ X+ d0 O3 R# k7 L  m4 I
  76. $redis->hLen('h');
    9 ]" E% @! U! h( C  B! @) Z6 K
  77. 返回名称为h的hash中元素个数. }9 i) m' n$ U: j5 m

  78. * E) I: v9 n( {1 |
  79. hDel8 p6 w3 [9 O4 I+ D6 E
  80. $redis->hDel('h', 'key1');1 n$ ]0 J% i7 b- j6 k2 X( u7 A' C
  81. 删除名称为h的hash中键为key1的域$ o* r0 `  u3 u3 _# G

  82. & n5 _/ N, d/ U1 I$ P
  83. hKeys
    & _* O$ Z8 e' f/ [
  84. $redis->hKeys('h');
    ; x" v0 j6 E0 P0 k
  85. 返回名称为key的hash中所有键
    9 R# f: M, ]$ b. c- t4 E

  86. 0 l0 [- P: e: u, A1 M5 Q; Z
  87. hVals
    % R9 v3 O/ U# o9 F0 C
  88. $redis->hVals('h')
    ) i. x2 G& t1 I# a
  89. 返回名称为h的hash中所有键对应的value
    " ?7 t+ Q4 p# E
  90. ( F; j9 L* v# p  [
  91. hGetAll$ e2 e$ Y: d2 k* U4 C9 V
  92. $redis->hGetAll('h');0 N9 a0 i7 @/ b* p" D2 Y, _) u
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    ) Q" `' @; C/ V6 M

  94. ; Q5 u0 \- ^( H+ j9 P7 i5 A
  95. hExists+ u- D8 I0 y) f* j+ \! `8 B2 v
  96. $redis->hExists('h', 'a');. z7 K1 C/ |  [$ ^9 x! b
  97. 名称为h的hash中是否存在键名字为a的域
    % E+ R, W8 [6 e
  98. . k# L8 r. I  d  J2 {
  99. hIncrBy! b+ k) H, W! @
  100. $redis->hIncrBy('h', 'x', 2);' _( g$ o- k) w, P' V: c5 T; T
  101. 将名称为h的hash中x的value增加2
    7 s4 K) K* ~* g$ R

  102. 4 k: \- H/ M; `4 h+ X( ]
  103. hMset
    8 b  w' P& g& Q' k6 C2 _& ?" s
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    0 e( ?6 p# ^0 X6 Z; o2 z, t$ f' V
  105. 向名称为key的hash中批量添加元素/ D0 R+ e; \5 s' k. y
  106. 2 W' |9 N3 `! {5 s
  107. hMGet
    2 ^5 q  q5 s4 n) x5 y1 ~
  108. $redis->hmGet('h', array('field1', 'field2'));9 g1 |0 Z- ?0 Z! {+ {
  109. 返回名称为h的hash中field1,field2对应的value$ d* k/ T2 h" F6 h2 n0 q
  110. : i7 ~4 H9 j; V4 o8 |
  111. redis 操作相关9 E) n; F% {. t+ X& k  X/ t$ ?
  112. flushDB% H6 [9 g! B1 d
  113. 清空当前数据库
    1 h$ J# s# J: C/ |  w1 ~
  114. - e  [9 I" u" l% m
  115. flushAll1 P* T% a& u- R+ m) e, ]
  116. 清空所有数据库
    $ \* l3 N( N$ |& d) @2 P. }

  117. ) ]5 W# k1 B2 l7 E; }
  118. randomKey1 u5 O# F" Q- B- a
  119. 随机返回key空间的一个key
    9 K) K- q+ Q+ I; \. g" }
  120. $key = $redis->randomKey();& t- Q2 M- a# C: |) v
  121. 5 Z8 Z% v, A) X' O- \. q
  122. select
    6 G0 P- L; O1 N" l5 s& |9 r
  123. 选择一个数据库
    8 C1 Z0 J1 a$ ^; h- G. z
  124. move' L/ O4 O. A8 V6 o! K
  125. 转移一个key到另外一个数据库% ?- p; c6 _+ ?% z  ~. b
  126. $redis->select(0); // switch to DB 07 O& \& v* o- |. Z: g( ?: p
  127. $redis->set('x', '42'); // write 42 to x
    ' u2 U" Z/ p# _. `2 w% p
  128. $redis->move('x', 1); // move to DB 1' o1 x8 Q0 x! W! r$ j
  129. $redis->select(1); // switch to DB 1
    : y* @# ]/ I4 A: x- D* E0 X
  130. $redis->get('x'); // will return 42
    ' u; G) k" P+ r& A3 p3 @$ d
  131. 2 h0 j' x& F- ]
  132. rename, renameKey
    ' ]" w+ `7 D! L- l6 [4 X: T
  133. 给key重命名
    1 R  \) _% C& k: ]7 d! e
  134. $redis->set('x', '42');
    - s7 g4 O5 Z1 \2 g! R  p' z
  135. $redis->rename('x', 'y');! b  A9 k7 b# s& Y
  136. $redis->get('y'); // → 42
    2 I" U- o' k7 }% j6 b, u+ T9 z
  137. $redis->get('x'); // → `FALSE`
    & k% Y0 z" s5 w- _6 u+ }, `4 Q6 P
  138. 9 p2 g! k9 q1 Q) B- U
  139. renameNx
    * ~, x; s; q# r, \! o5 P5 D
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    9 k  @! w' ]0 m! Q) ?# l% n

  141. $ ~0 S9 ^+ ^% W; @+ Y. f/ t
  142. setTimeout, expire0 d7 ?* B( @  a+ m: n6 A
  143. 设定一个key的活动时间(s)0 k8 O& w. ?6 s3 N2 @9 V$ x, |
  144. $redis->setTimeout('x', 3);7 D/ N' h  x3 M& F0 h4 `
  145. ) Q; ]- l& ^6 L& p2 x
  146. expireAt5 T5 V. m: }# G
  147. key存活到一个unix时间戳时间; E0 S+ {8 c: ?0 U4 f. Q
  148. $redis->expireAt('x', time() + 3);5 l7 ?; N( _3 A% \1 P, t4 |

  149. " o+ f( M: m/ [3 u% O8 r; S7 s
  150. keys, getKeys9 d+ v# h( ]; a/ p7 `! X6 _
  151. 返回满足给定pattern的所有key
    . ^0 U1 H: y  I$ E: Z
  152. $keyWithUserPrefix = $redis->keys('user*');; I$ Z, _" D: n) X5 P, f7 B
  153. ! i. [& p1 V- w6 ^7 S. s& k
  154. dbSize/ G; Z# @+ u; I. x2 x( y
  155. 查看现在数据库有多少key& W1 ]: b: v; Y$ g7 e. i
  156. $count = $redis->dbSize();) J) Y- P& w! S) v
  157. ! U, J+ M2 e0 P# Y
  158. auth
    , U. L5 J2 G* {, \6 E: L
  159. 密码认证* C- }. s9 `# S6 v
  160. $redis->auth('foobared');5 C7 H) [& \" ]1 F; `
  161. ) _9 f  n& x7 O/ p# A5 n
  162. bgrewriteaof
    0 @: i" l- q% ?2 k. `/ P1 U+ w- a
  163. 使用aof来进行数据库持久化
    9 h6 {. H' E" P1 \
  164. $redis->bgrewriteaof();2 Q7 S# ~3 ?0 r2 F

  165. $ R4 x" N* O7 Q7 \, g  `. c
  166. slaveof
    . v" J5 U& h6 |3 S% E
  167. 选择从服务器
    + t' `# Q5 v1 b' Q5 O1 [; i0 T+ r
  168. $redis->slaveof('10.0.1.7', 6379);( g+ P9 G/ j' d0 t. h; C7 n3 o
  169. . M2 I4 C9 g& R5 y+ F4 f( C5 S
  170. save
    # X, l- t/ v( T" N7 I3 A+ ^
  171. 将数据同步保存到磁盘' X: X* L( \1 S) o
  172. 4 E. L; Z) x! o, Z" K
  173. bgsave% X4 ^; ^& L7 u) a0 J9 T4 J9 {1 e
  174. 将数据异步保存到磁盘( K. {3 S0 Z" B1 I& t* N2 |
  175. 8 I% q+ j* V" `3 H
  176. lastSave
    6 O1 \2 \/ G4 K& A
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    - E1 \# R, v6 ^5 s, R! [
  178. 2 ?/ v& s& M1 |4 w/ f4 O
  179. info- u: e* G8 _& d1 e/ B3 v- Q4 b
  180. 返回redis的版本信息等详情( P* y, y/ \. _0 u: q( `) c
  181. $ ]% M6 s' x& @* L* V* X0 w" W
  182. Redis::__construct构造函数
    ' a: |7 |: \8 e1 ~* W# d
  183. $redis = new Redis();
      V/ A) ?3 ]6 Z4 e( H1 ^
  184. 1 K8 E1 a* x& M# j. F1 M/ |8 w
  185. connect, open 链接redis服务3 O$ p+ A  W* o+ T, X3 g9 Q; `
  186. 参数6 c0 g% T3 q# a. d+ B
  187. host: string,服务地址9 l. k" q; G6 s! n
  188. port: int,端口号- X9 }1 g2 w* q$ m. [7 p4 O+ I
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)7 L" O; H$ m; b
  190. 注: 在redis.conf中也有时间,默认为300
    3 w6 L/ n! q7 u# p4 }- W
  191. $ J* {5 ^( V7 H. C- P7 M! `8 P& p
  192. pconnect, popen 不会主动关闭的链接
    , ^6 f+ J; w! k* I4 c: L6 H3 A
  193. 参考上面
    6 q, x+ N& ^3 Q# C, M2 r
  194. 5 C1 r# v$ u# e; d, l! b
  195. setOption 设置redis模式
    " `* I/ n0 G( C; e$ V8 o- k1 I: N0 y
  196. 1 m: w# g( w* J+ l9 i
  197. getOption 查看redis设置的模式) B! o) n& C; T# [$ L$ h
  198. ! ^, x9 Q( V/ `# n' u; }0 s' p
  199. ping 查看连接状态
    4 I, ]! c" z- y0 F& d. \$ Q7 v; {

  200. 1 }- g: M* `# z9 w' j" p9 a
  201. get 得到某个key的值(string值)9 h, s& ^! V" A- r2 `* E1 F& y% t
  202. 如果该key不存在,return false) @$ M% |' f, a4 l  ~% Q( E

  203. 3 d2 N* j* G/ A# m, L$ w; I
  204. set 写入key 和 value(string值)" L  o, V* o# T9 n# A; f0 k4 f
  205. 如果写入成功,return ture! Z3 A2 I  @5 O* [  ]1 a
  206. ; p; b5 v4 V$ K$ t/ u8 ^0 J: e
  207. setex 带生存时间的写入值9 x6 J3 `! A# B1 f" B9 ], y
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    + _$ _3 E1 N5 s9 t# e
  209. $ n9 G3 r! j. P
  210. setnx 判断是否重复的,写入值
    3 G: C/ X& y7 G4 w7 t2 T6 h
  211. $redis->setnx('key', 'value');2 A+ v4 I: A, z/ U6 \1 x' j0 a4 a
  212. $redis->setnx('key', 'value');" X0 i; `8 r, H. N9 b
  213.   c( Z# H* Y" H- |0 S- m5 N
  214. delete  删除指定key的值
    . I0 i6 f1 O' X! R$ m/ L
  215. 返回已经删除key的个数(长整数)- O2 ]- e  o3 H0 n$ V2 N3 G
  216. $redis->delete('key1', 'key2');
    ' }$ }4 P) y" f+ s, h8 Z
  217. $redis->delete(array('key3', 'key4', 'key5'));( w; }3 ~$ I8 v$ }! D& N
  218. % k: D3 z) r; ^% M. z" p0 o" ]
  219. ttl9 n/ U( d  _" {  C8 _4 M3 D, C/ G
  220. 得到一个key的生存时间- ^5 S% ^& A& ]; {; j2 D

  221. ! m9 E) e' E  @& w% C
  222. persist
    + z! c  I% c; l  _
  223. 移除生存时间到期的key) F/ w2 M' [4 i8 W& D# N6 N) q1 w
  224. 如果key到期 true 如果不到期 false
    % r/ j4 }& i; `" E

  225. ) c' }; @0 G* L& p+ k$ n/ s3 T# s/ K& c
  226. mset (redis版本1.1以上才可以用)3 d& a  k: V3 c* D
  227. 同时给多个key赋值; h9 Q! w9 G) p5 F
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));5 x2 [. X- h: N3 w

  229. ) E7 w% [* G# A
  230. 2 [( u3 x* p: Y# V5 u( X
  231. ; N+ Q2 w' \0 r, A7 i3 D0 y
  232. multi, exec, discard
    ! r) J( c% Z* x$ V" A+ q, L
  233. 进入或者退出事务模式
    + J4 L, w  J: w' E  U
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    ! e; g. ~. B6 s, G& ?
  235. Redis::MULTI:将多个操作当成一个事务执行
    7 B3 M* D- n; c* H5 f
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    8 N4 Z. I( [1 j- C+ \. D% a: J8 z
  237. discard:删除一个事务
    7 k& \0 x. E5 {3 Z% ?( F0 Y
  238. 返回值
    # ~  V9 s% F  V" |
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    8 m; E4 e7 y* H$ q- n

  240. * e4 k% m( q3 v5 t* i
  241. watch, unwatch (代码测试后,不能达到所说的效果). l* l' Q8 c$ k8 S) C2 l
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    % w, E) @. Q* R5 _
  243. unwatch  取消被这个程序监测的所有key) M% c/ b$ ^6 t% c
  244. 参数,一对key的列表6 ^( L1 ]" i; v) e' c5 ~8 Z
  245. $redis->watch('x');
    # [5 `+ o7 r5 s( K' w% c

  246. 0 g" S; K$ K# u, q3 z& N0 L5 d
  247. $ret = $redis->multi() ->incr('x') ->exec();* F0 z8 i8 G( T& C. |. t) C4 M

  248. 5 j3 q$ ~& o7 T" \

  249. , p& l: M' n/ }1 U# G& @2 i
  250. subscribe *
    " k# ]- R' {, n
  251. 方法回调。注意,该方法可能在未来里发生改变: }& d6 |8 h" I* l6 i8 k; z
  252. / T& Z2 X* B, Q9 [
  253. publish *
    ( `" `( n0 U* l$ E& ^) N( ]
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    ( r" M) f; V$ u  `0 n% ?! e3 m
  255. 5 k! y5 e: o% m+ H, y% Z, V% Z
  256. exists
    / C- P* h( K+ U" @2 d* y  K- S
  257. 判断key是否存在。存在 true 不在 false$ A( C. M0 c2 c- O3 {& {& `5 }. G

  258. / l6 |% B3 F3 _- w$ ]
  259. incr, incrBy0 J& w- m0 a9 t4 U  G. Q/ p0 f0 [4 V
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值$ \! l, e, b- Q/ @
  261. $redis->incr('key1');+ r& B  v0 l; ~" {
  262. $redis->incrBy('key1', 10);
    4 t% ~2 E; z; {: T6 r2 C9 s0 v9 }6 r5 H

  263. 7 V: |7 R5 e- B7 W/ L6 L
  264. decr, decrBy
    + T8 z  c4 }; i$ g! D  {! Z7 I
  265. 做减法,使用方法同incr. ?& T# i: ~2 o

  266. 6 `, e3 W9 P$ f* \' X
  267. getMultiple& P( q- E& T6 g, H* [
  268. 传参
    3 P# \' t, q6 v) X
  269. 由key组成的数组
    - ]# K( h9 ?  C) ^* J: l
  270. 返回参数
    2 \4 O# o  K9 f$ j1 n
  271. 如果key存在返回value,不存在返回false4 b0 y9 z" B+ f1 L
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));- h. K) X: ]3 W. P0 ], s& z
  273. $redis->lRem('key1', 'A', 2);( ?" G: N1 J" k" f
  274. $redis->lRange('key1', 0, -1);
    2 Q) s3 d8 U8 Z# u

  275. ' k* Z* F' u* {7 K" J' V
  276. list相关操作
    1 |: z- J$ O- K6 H9 w" M
  277. lPush) P" |0 U& z* d
  278. $redis->lPush(key, value);
    6 [$ p; ~( U9 [& I, I/ ?6 F. E, M
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    8 L* a; e9 B9 ~! \' f! u
  280. . l/ g, V. n6 i$ {2 J( U
  281. rPush
    . Q- _8 J5 Z, Z$ y; o+ r4 y
  282. $redis->rPush(key, value);! G& g8 D3 y! N- }# A
  283. 在名称为key的list右边(尾)添加一个值为value的 元素% m% c8 d4 ~; H1 D1 D
  284. $ G- Y+ p+ q' Q# Z5 d0 {/ R2 n
  285. lPushx/rPushx
    ' a+ B1 S/ h6 X; {% g
  286. $redis->lPushx(key, value);  C9 @& ?9 `2 S9 p$ r; s% m+ g% I
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    % P8 Z, ]) [8 a  ]

  288. 6 `- P* {6 U# B/ ~- b$ g- A5 Y  i
  289. lPop/rPop
    9 [/ ]) ~0 |3 _% }% Q
  290. $redis->lPop('key');; R0 b: P  ~3 i4 I+ c* {
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
      K0 }; w& C1 ~" S* z) f/ r7 o6 ?
  292. ' B$ r; p9 O+ M2 w6 t
  293. blPop/brPop
    3 u! _1 R: y  K
  294. $redis->blPop('key1', 'key2', 10);2 m, G) C( |5 P6 |/ b& {, A
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    3 ~3 [! `$ P% X  e2 r/ G. m, h1 S+ K
  296. " }% b% p( \$ @# B5 u
  297. lSize
    $ p  z9 V& T4 q1 C6 }, h
  298. $redis->lSize('key');; R' t" N2 y! p7 D; Z3 g9 |
  299. 返回名称为key的list有多少个元素
    ' {# ^0 D" S6 f9 u6 t+ s

  300. 2 P. P7 h( N) r
  301. lIndex, lGet) T  e6 z- |/ f& r4 d3 h/ b4 I: n
  302. $redis->lGet('key', 0);
    . G6 K4 f1 Y! }& n" H
  303. 返回名称为key的list中index位置的元素$ ~6 H9 d, R% K6 N! u/ [

  304. 5 n; n1 q8 D1 l5 w$ d7 O; {( y
  305. lSet
    + `- \! a+ N( q2 R' g9 O6 u& R
  306. $redis->lSet('key', 0, 'X');; ~$ I/ c5 k4 `! r* x, D
  307. 给名称为key的list中index位置的元素赋值为value1 B% N6 t; e& T% _! e& e3 C
  308. 5 J, ?2 u/ ]6 b, G! h
  309. lRange, lGetRange
    ( \7 w9 k' U$ p/ T/ ?$ I
  310. $redis->lRange('key1', 0, -1);
    0 C% @! ~( M2 t. r
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    $ V; Y: `1 u. b0 F0 u+ t# J
  312. 1 J8 @9 `6 C3 b/ W* G
  313. lTrim, listTrim; E7 h) V- g$ Y$ y! u
  314. $redis->lTrim('key', start, end);8 m1 Z& x0 @$ D3 P3 U' C' O7 N
  315. 截取名称为key的list,保留start至end之间的元素
    * {6 q2 v2 C! i% C( F( W/ t
  316. 6 M! U6 ?3 L. n, I- f
  317. lRem, lRemove' [% ]6 O$ s) f0 D
  318. $redis->lRem('key', 'A', 2);5 }2 p) w+ e8 Y
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素! O/ I  y- n* ?% Z2 p* |
  320. 1 L+ q0 x6 Y. }$ N+ @, Y
  321. lInsert
      {& X" @, ]: D0 X
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ) j0 n& |) `8 k7 O, |
  323. $redis->delete('key1'); $redis->lInsert('key1', Redis::AFTER, 'A', 'X'); $redis->lPush('key1', 'A'); $redis->lPush('key1', 'B'); $redis->lPush('key1', 'C'); $redis->lInsert('key1', Redis::BEFORE, 'C', 'X');
    7 Q  q7 w/ C9 X
  324. $redis->lRange('key1', 0, -1);$ h/ G2 F& y! l) D
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');, \, M' S2 K# E( X
  326. $redis->lRange('key1', 0, -1);
    6 t; G, X8 U% ?" n- v, n  i. X6 f
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    9 V9 Y( F& x/ A9 {
  328. " ^( `# {& K2 ~: j+ T
  329. rpoplpush
    " j: B0 L' e! O% R
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部# w4 N% |/ f8 F
  331. $redis->delete('x', 'y');
    ; ^. ?. |# r3 w0 B- L
  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'));# E% Z# l5 v% q' s& s& w
  333. var_dump($redis->lRange('x', 0, -1));8 S1 e/ u$ b# X. n
  334. var_dump($redis->lRange('y', 0, -1));
    % U/ M3 d# ~; e
  335. 7 X% Q* O9 g+ [
  336. string(3) "abc"
    : W9 M: y7 [7 H
  337. array(1) { [0]=> string(3) "def" }
    ' Y: T$ ?, X" l1 k% Y; Y
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }0 B+ F! J9 `) Q' C5 y9 r& x
  339. 1 ^  S" g$ D. i. Y% F- p9 J; f1 T' _
  340. SET操作相关
    % F7 a( h8 C$ m/ D) m
  341. sAdd
    - l: T& i. E- f/ A
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false, l. W  R; m* i3 i' @" Q" z: n3 x
  343. $redis->sAdd(key , value);
    / R" p5 u* V7 q+ {

  344. $ v- y, a# O  ~0 H( [) i
  345. sRem, sRemove
      v" R  ^0 V: [; \
  346. 删除名称为key的set中的元素value
    5 ~( @+ v( M( [6 W* g' r
  347. $redis->sAdd('key1' , 'set1');, k( t3 M$ C! S  s
  348. $redis->sAdd('key1' , 'set2');8 X9 L$ |; {/ t1 c9 b
  349. $redis->sAdd('key1' , 'set3');/ ^: D; v$ Z2 y' a4 _: I
  350. $redis->sRem('key1', 'set2');! A0 W- w* S/ b' b) u

  351. 4 r% L: a, Y1 c/ k4 R) {8 w
  352. sMove# ]6 J6 r: q; m* ]/ B5 C0 R
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    4 m. l$ E5 @& u, U+ E
  354. $redis->sMove(seckey, dstkey, value);
    3 f* |  b9 J, N

  355. 4 u- e# W6 t2 [+ T$ y( _- t
  356. sIsMember, sContains0 Y! v7 m$ L& c6 j/ A
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    3 o; _+ ]. ]4 ~- Q! z# {  k
  358. $redis->sIsMember(key, value);! E6 Z" P+ \  J& s  X) e4 y% L

  359. ; R) ~$ w. ~. R( L3 U; h
  360. sCard, sSize( S1 s% W' j5 Q# s$ e
  361. 返回名称为key的set的元素个数
    / |& E8 z7 N- _) q$ N+ w. z

  362. ( n) B1 l, h; e, O0 r
  363. sPop0 x3 v1 E8 K1 J0 \$ U
  364. 随机返回并删除名称为key的set中一个元素/ [. e& w0 p. N: l! D4 d8 ]# N. E0 g

  365. / U. ^5 l6 i8 A" c7 z; d) e: L
  366. sRandMember
    9 w9 h9 L+ x8 q8 n
  367. 随机返回名称为key的set中一个元素,不删除
    % s' K4 W& o$ P1 Z' X, x+ y

  368. & \  W  f. q0 Q$ D2 o6 F8 a/ k
  369. sInter
    ' C5 u; x0 c) U
  370. 求交集
    : k- ]. \# d# X, d

  371. $ b! @8 X8 a9 K, J- }. P! F
  372. sInterStore+ N) _1 b3 L4 y( W8 |- [
  373. 求交集并将交集保存到output的集合
    ( v9 V& W: Q& D; h
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    0 v3 _4 \4 p* J# N  z2 @% l
  375. ; W1 B6 \$ k: j+ P2 X$ K! _
  376. sUnion# I4 ~. L& Q0 L$ n$ v3 D9 K
  377. 求并集
    : a1 R/ L4 F# h1 B, w' y$ g
  378. $redis->sUnion('s0', 's1', 's2');
      D7 `% k) K) A: @) }/ `* W# F" `7 v
  379. s0,s1,s2 同时求并集5 X- M" k' |& _+ f% ]. q+ [) [; d

  380.   l; l' i: l) z2 d( K
  381. sUnionStore2 A+ Y3 S; ?3 S4 G' ?3 ^
  382. 求并集并将并集保存到output的集合( d2 _9 b, H2 ^6 I& n9 `' N
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    0 o! d3 S7 Y# M; B7 I) {# S
  384. ; x5 _) s! t. `$ w2 d; q
  385. sDiff: Z8 c2 G" i  m! w3 B8 p/ X
  386. 求差集
    " Q0 R! P+ O* ^, @- u7 H! C! ]
  387. ; Q# L2 J  L+ j* \, H  p
  388. sDiffStore
      N+ N$ N: S! p
  389. 求差集并将差集保存到output的集合+ d8 ?; |0 a/ I( c

  390. 3 ?' ~# k! w( s* j- U" L
  391. sMembers, sGetMembers
    0 m: Q* q5 d- J) `6 _0 Z- S+ V; E
  392. 返回名称为key的set的所有元素
    4 n: K; s; _6 X! D6 O
  393. 2 H( E" D9 n, g8 W& `4 H
  394. sort  X" v" d+ H* I, \. Y6 F
  395. 排序,分页等* _7 Q0 T$ q: s7 f+ l$ H
  396. 参数
    3 O+ U0 m5 \8 r! V7 v  K
  397. 'by' => 'some_pattern_*',
    9 x) Y- J4 G+ D& b
  398. 'limit' => array(0, 1),
    . F6 A3 N' u+ k
  399. 'get' => 'some_other_pattern_*' or an array of patterns,! U2 B9 v* W3 I3 n' `
  400. 'sort' => 'asc' or 'desc'," X0 r; N) i0 \+ \1 y5 i: d% G
  401. 'alpha' => TRUE,, |  G9 l( k. `; L6 w' b
  402. 'store' => 'external-key'
    9 E$ \1 r3 M/ s4 ~6 z+ N
  403. 例子% t# Q& Y  y4 x
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    % y. I8 }0 }  t' m8 u
  405. var_dump($redis->sort('s')); // 1,2,3,4,51 N& j- C: a% q2 i+ n
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    $ k: E6 c$ }8 @& o( ^3 I
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    , K' Z! S0 ~, H8 S  U7 O

  408. , x; F( m4 s7 J) r: a
  409. string命令
    6 |. a1 T4 J( ~  b# X) a8 t3 H
  410. getSet$ n$ i( V9 i! d% ?6 d8 ?
  411. 返回原来key中的值,并将value写入key4 ?# K0 M/ X1 m! t( F2 Q
  412. $redis->set('x', '42');: N9 `5 ^9 }) j0 ]. f: J
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    2 P# R0 W3 J/ s& G. o8 p
  414. $newValue = $redis->get('x')' // return 'lol'
    3 Y. Q( w3 N) m# P6 G
  415. * ]& I6 S: n* o) \0 \
  416. append
    : l2 Y' D2 T* ?3 m9 o) n# U  B
  417. string,名称为key的string的值在后面加上value
    7 b# x1 u6 ^; ]: R% o/ \
  418. $redis->set('key', 'value1');
      y* S) U" I, m9 E) t+ ]  Q
  419. $redis->append('key', 'value2');
      {$ P( a0 w0 f
  420. $redis->get('key');0 m' D/ `) H6 p' I' U& @

  421. 9 ]5 d2 f$ S9 q6 l, X, v9 `' q. y) Y1 q
  422. getRange (方法不存在)
    0 x$ h; s* v9 [, t  N; g
  423. 返回名称为key的string中start至end之间的字符
    # ~/ ^: @2 G  ~% Y1 b* H
  424. $redis->set('key', 'string value');
    % h1 a! Q! f6 r% H2 j5 _$ `
  425. $redis->getRange('key', 0, 5);. S( V3 k1 X. ]" x4 O2 X! v
  426. $redis->getRange('key', -5, -1);
    : K, t8 c; \! O$ p- N# \
  427. # T3 r3 g, @/ @3 ^
  428. setRange (方法不存在)
    1 Z) ~! r0 f# b
  429. 改变key的string中start至end之间的字符为value+ U6 G. I6 C( A- U1 J$ v9 O
  430. $redis->set('key', 'Hello world');8 u7 s' O. B1 H
  431. $redis->setRange('key', 6, "redis");$ c, J6 Y7 s+ C0 ?. X+ t. ^
  432. $redis->get('key');7 z& Y7 n+ W1 T% l0 Y

  433. % _2 n0 K6 y, M3 P* p
  434. strlen
    % J( J$ h: Z9 D8 L
  435. 得到key的string的长度" X& n# x; a" ~0 p# t3 i1 C
  436. $redis->strlen('key');- r3 a0 M* v4 B' l4 k/ h6 S" ~

  437. 6 G$ y! k3 n1 K5 R( }7 \! h6 Z
  438. getBit/setBit
    " e1 a% c  ~$ q. R- V
  439. 返回2进制信息
    : \' x0 t; {# [1 r, G1 }- y
  440. 7 O$ _8 m6 t7 l
  441. zset(sorted set)操作相关) n* A0 \& v% Y  ^: k9 X
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。/ T/ Y; V2 J" n) E
  443. $redis->zAdd('key', 1, 'val1');
    3 k* a- [- C2 i8 V  |
  444. $redis->zAdd('key', 0, 'val0');
    * u3 c* u+ k" z5 K4 M/ w* J
  445. $redis->zAdd('key', 5, 'val5');- o( g4 u) P* W( f1 _
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5): D$ M0 I- ]" B0 j( Q) H7 O: s7 h

  447. ' A8 E- F3 z+ X: R" o
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素( I4 U; }$ J% b2 I7 e  V+ z
  449. $redis->zAdd('key1', 0, 'val0');
    * h* V9 Y  F& ~
  450. $redis->zAdd('key1', 2, 'val2');
    : G0 c+ g& A6 Q# M% q& V# j
  451. $redis->zAdd('key1', 10, 'val10');
    8 L1 e. c% ]5 W; z! `- r/ G7 S: i' b
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    * q0 ]/ z4 R8 j7 @8 W. g

  453. 6 P% W& g' C, r9 D
  454. zDelete, zRem
    * R9 v! U9 P9 u, R8 c
  455. zRem(key, member) :删除名称为key的zset中的元素member
    8 O* v9 J/ I. c2 @$ V7 A
  456. $redis->zAdd('key', 0, 'val0');
    ) ?) Q7 Z5 `; G$ x/ m, _; i4 b
  457. $redis->zAdd('key', 2, 'val2');' U1 E9 \4 f: m
  458. $redis->zAdd('key', 10, 'val10');
    . u+ e2 H6 e; E7 G3 J/ x
  459. $redis->zDelete('key', 'val2');
    ) ]/ F$ P+ W+ h$ v
  460. $redis->zRange('key', 0, -1);
    + V% F6 ]1 l' J; e; C) g! ~* K
  461. & O0 l5 y& T, P4 b+ Z. {
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出; D/ V: C' p; s. G. G
  463. $redis->zAdd('key', 0, 'val0');
    : t: A+ F( y9 X. g
  464. $redis->zAdd('key', 2, 'val2');( T4 |& F# k3 T* n0 u9 @* _6 T
  465. $redis->zAdd('key', 10, 'val10');
    3 V" S7 y0 g- [# W6 K) D+ ~
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    2 h. \! L7 H4 Q

  467. ! z' g% M6 k# S/ {* B# N% T
  468. zRangeByScore, zRevRangeByScore
    6 O& j' o) {% i# f% _, g- T
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));6 c% a& @4 Y$ a) J
  470. 返回名称为key的zset中score >= star且score <= end的所有元素& [" ^: u2 G" c4 c: P
  471. ! ^2 _9 H$ f5 q0 z
  472. zCount& q# i, X3 M( {( a: H' Q  m
  473. $redis->zCount(key, star, end);" e% c1 J) n) U$ g+ X) |
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数1 }# v$ w+ q* d; d/ B
  475. ' R- L* [5 ?  e7 U' S, j- u
  476. zRemRangeByScore, zDeleteRangeByScore
    ) r9 j  A0 {7 r) q
  477. $redis->zRemRangeByScore('key', star, end);$ \3 [# M! z& _, l7 W; ~* D
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数4 u1 V* Q/ w+ R# ]) B7 N$ C+ j

  479. % [, T( @* {5 k) T. y( m
  480. zSize, zCard* ?' M' c& v0 x( Q
  481. 返回名称为key的zset的所有元素的个数5 V. s8 }( z$ b" F
  482. ( b, Y5 `' l# I1 G/ _! f8 u
  483. zScore; i. @' B$ v) T+ u4 [7 R  w
  484. $redis->zScore(key, val2);: C4 N2 z' `- l/ k; R
  485. 返回名称为key的zset中元素val2的score
    ! @4 `0 k# L  k) q
  486. * b  z8 _& ~2 ^& Y8 v3 l
  487. zRank, zRevRank% v8 E& `* W! T1 i& l- S9 v
  488. $redis->zRevRank(key, val);( Z" a+ L8 p5 D7 p
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序4 P1 C( l% Z2 y
  490. 7 G4 K) R' ?! y1 o. O1 Q5 A
  491. zIncrBy" d1 ^% W( I1 i) Y: M
  492. $redis->zIncrBy('key', increment, 'member');
    6 o* C( b) ^5 p% `& S
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    2 z5 ?" M8 ?/ g) o7 c7 P
  494. 7 K& ~- v8 [3 M( O+ C
  495. zUnion/zInter
    " j% x% q4 [4 J! b3 b* A! _
  496. 参数9 P' `3 ?- [% W, a, T8 L$ r
  497. keyOutput
    9 w) V! x  P! o) u% {
  498. arrayZSetKeys' G  a. H1 S- ~5 L+ Z1 M9 E6 P
  499. arrayWeights
    + ~0 W, ^' v4 ~; y8 @# @# |, K5 f
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.% B# l6 y0 {9 z4 b4 n
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    - b3 ?/ A' T% d* c
复制代码

' ]* y+ R' h- n- P. J$ x
: f9 N9 e# |4 D% i9 [
" e6 B3 t% H9 S* ]) e
$ w$ h+ N1 {' [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); , x+ n3 v6 C# p1 s% b
  2. //连接redis服务器
    ) v/ O9 s6 D( Y
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-4-30 21:47 , Processed in 0.083390 second(s), 19 queries .

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