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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php. z- d6 m+ M7 e+ k6 S6 _% H
  2. $redis = new Redis();  
    / Q8 _9 L/ A; p- ^3 X7 P* K. i$ J' c
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    0 P- L2 H. ^# q) q
  4. $redis->auth('mypassword');//my redis password : d: m* h! L, C( u% d0 N$ v
  5. $redis ->set( "test" , "Hello World");  
    5 g5 K: v5 x! F+ S6 h* D( H( W
  6. echo $redis ->get( "test");  ^# L: @; z$ c. R, @3 V2 \
复制代码
php操作redis函数封装
  1. /**
    8 r2 |, J/ o$ Q8 N: f6 k8 C
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ; s+ z* L' y1 ~) |& k9 B  @' M
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    . W# G( D7 t  ^, c% D" K: S/ ]9 q
  4. */
    5 M5 J8 g  M) v* l, m, x
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){+ B$ D7 I$ l% m5 L( R1 @+ m* L8 d
  6.     if(!$key||!$value) return false;
    ' ~, L0 y) ?, _4 h( l% I( |* T2 d
  7.     $host = $host?$host:getenv('REDIS_HOST');' `2 Z9 X* M5 o; ^: F4 B
  8.     $port = $port?$port:getenv('REDIS_PORT');
    1 }( ?" {( M9 ^# m2 v
  9.     $redis = new Redis();5 M4 W' {4 _$ A+ J
  10.     $redis->connect($host, $port);6 i- A/ k4 v' V! i
  11.     $value = is_array($value)?json_encode($value):$value;; [( p! ~9 z* U- N/ E$ t& n
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
    4 v% M. F5 F& b4 F
  13. }
    9 f6 G7 F: G6 C4 [
  14. /**7 o) P6 P/ D7 W0 }' S3 `( |
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi6 o$ ]5 f  B4 |( m8 g# x
  16. */
    ( L1 C! o. N) W; s; j
  17. function RedisGet($key,$host='',$port=''){
    % ~6 _* v; T* h* p: F. _# ?
  18.     $redis = new Redis();) @7 n$ E( t$ g! X* ^
  19.     $host = $host?$host:getenv('REDIS_HOST');
    % m4 w9 ]( W& y2 _
  20.     $port = $port?$port:getenv('REDIS_PORT');) B6 {, d2 M) a0 f
  21.     $redis->connect($host, $port);
    % e6 G9 |! P' ^9 w/ \% A
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);4 p; t! M4 S6 |  S" l" R
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);0 ~( D3 B4 g6 j. a" p
  24. }
    + W1 N# l, F: ?0 q
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了2 [( j' c" T, }4 o& C
  1. setex 带生存时间的写入值
    8 Z. p6 g. f2 G" l( c9 o6 s
  2. $redis->setex('key', 3600, 'value'); ! k! P' s0 k8 |) M. ]+ H2 f
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    ( m- _* b' h% i) h' T- Z: A
  4. $redis->setnx('key', 'value');
    0 y6 I. g: K7 k5 C1 b7 z0 o
  5. 返回已经删除key6 B" E' ~4 ]- o# v8 X
  6. $redis->delete('key1'); 成功返回1失败返回0
    , y8 ^# c+ R) u+ g5 V
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0' T+ ]  L5 z, E: Y5 i6 s- q( `/ s% P
  8. 查询生存时间  ^) S8 S  c+ g! ?; r: I2 x" o
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)" @% |- K0 q2 m# ^
  10. 同时给多个key赋值,同时设置key0和key1
    # ], b" T, t% Q
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));4 x* h  c. K) m
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    4 p$ {2 q9 \( u  l- [) C5 S! z
  13. $redis->incr('key1');
    # W+ o# r, G- X2 V
  14. $redis->incrBy('key1', 10);
    9 N" C1 ?' e( z  h
  15. 减法跟加法一样
    - s6 d, y' \- l+ w% g6 H  A0 m
  16. $redis->decr("key1"); 减少1# y4 y+ }! y% z4 i" \5 U
  17. $redis->decrBy("key1",5) 减少5
    : L2 B7 w" E. X. L' r

  18. + |% C; F5 T( _/ }' K! T
  19. list相关操作,连表操作
    2 k, o. u( @% o6 X/ M
  20. lPush
    9 @( [0 U+ o/ ~9 X% A3 ~
  21. $redis->lPush("list", "888");/ |8 b# H" R* W6 v3 L2 }; E% F# }
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    # L" X! r) D8 t7 H+ K
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式2 ~2 k# _) g# f. U, V
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素/ P  A+ C6 h/ t+ U# e; C" g3 X, A7 r
  25. lPushx/rPushx2 [8 e8 a1 w9 ]' m$ N% l6 C
  26. $redis->lPushx(key, value);
    + f1 {& ~. |5 a% y4 f
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ' C$ j* U* \+ l
  28. 9 W0 |+ a: f7 d+ j6 x( V
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    2 W9 }; }0 d- }5 \3 R  u: s
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    / T" _1 I$ P; c: B
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1" B& v% N' C( q; U
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序/ I" ~% S$ Z" @" j4 A% h
  33. sadd s1 zhangsan/ v2 j2 p9 _5 \
  34. sadd s1 lisi. M% c  X* {  D+ H
  35. sadd s1 wangwu
    / K& J! {. w. x: p) b4 E
  36. sadd t1 yangxingyi
    ) _, v" F# r. U% X, I
  37. sadd t1 lilei3 @/ e1 g+ B$ {3 _3 z8 h1 G1 I
  38. sadd t1 zhangsan
    . w! q. K8 E& }2 s% H! t
  39. smembers s1 s1的所有集合内容
    , r9 Q1 S, M9 a: n0 C! n5 e  P# E
  40. sdiff s1 t1 s1有的,t1没有的,差集
    * N, m8 j* y+ J0 b$ n" J5 M
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式6 g0 U. t+ L7 |
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的3 O. Y2 j) z4 l3 L
  43. spop抽奖场景,返回集合里面随机的数/ f, p$ ^8 x8 `
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    & X: q" K% e+ J, F7 d
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数0 s) q) ?0 C$ _6 G! w* w
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的+ N7 k& r. f' o. v
  47. 随机返回集合里面的一个元素,但不删除,重复中奖/ O# _) H% k1 B% O/ a$ n9 G& I
  48. $i = $redis->srandmember('s1');echo $i;' u" f6 `- w. f/ E# N) a% u) B
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false* v2 I* d' X& E+ m( I" [
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false% e! O1 B3 I; O9 {) `7 o: a
  51. 1 {1 u! ]$ ~! C, O! \+ C# E
  52. zadd key 2 value 有序集合2 t7 X# R: j( U
  53. zadd y1 1 zhangsan;
    - m$ w- K7 V: h
  54. zadd y1 3 lisi;
    8 c, p7 T) K6 S" c
  55. zadd y1 2 wangwu;
    - m; \8 c$ S1 A2 t9 w$ F% W& g
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    8 n  D* t/ u$ U- Q' q
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);' |' Z8 q$ r4 J" w6 q5 a2 @3 U
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    ) [/ a2 @, l7 C9 f% g; |
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    4 ^: |# ~% d) N( ^3 R- y7 b5 J
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的# ^0 z* J- V4 a
  61. 无序就scard,有序就zcard,有z没有s
    3 x6 c2 w8 }# U
  62. sInterStore- s" c3 z7 Q2 |4 ~" v: s, k
  63. 求交集并将交集保存到output的集合
    1 e- ?, ^$ Z' u. s3 e; z
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')# N3 @! v; Q% Y: d! t6 V
  65. 4 x( u( T( f# _9 s. [$ [- S" F6 X
  66. Hash操作) M5 B( X: {; o# _0 M4 g% \
  67. hSet$ x) O8 `. \, u! u
  68. $redis->hSet('h', 'key1', 'hello');' e* S- G) A' ~% Q  I( t- z6 s
  69. 向名称为h的hash中添加元素key1—>hello
    ; D3 y/ n9 j$ t
  70. : V! F# E# O# j
  71. hGet% u( o; U0 k! S1 C: j
  72. $redis->hGet('h', 'key1');
    " Z% M; t$ }9 T/ Z! b4 G& z
  73. 返回名称为h的hash中key1对应的value(hello)
    0 ?; k- _: K% G6 ?6 \

  74. 5 j% E( i$ ?! V% \. i
  75. hLen
    # ?9 M; `  n) j4 d# ^
  76. $redis->hLen('h');
    ) J0 r8 C1 q- n& R
  77. 返回名称为h的hash中元素个数1 D: s: L5 f$ B. s0 p/ y
  78. ! Q) v; z8 ^% A7 e. p$ k1 p. _
  79. hDel
    & @  `4 n$ R* @% g" T
  80. $redis->hDel('h', 'key1');
      P2 m- ^6 e  c" l# f
  81. 删除名称为h的hash中键为key1的域! H# m0 }1 x4 S( _+ p, E7 G

  82. 3 B9 [/ k1 @. S# L1 u3 J
  83. hKeys6 h& k; d& o- `
  84. $redis->hKeys('h');
    ' V+ g9 j  R! b5 a2 b& _
  85. 返回名称为key的hash中所有键- X( H/ c# R: A% z9 B

  86. , {# I& I7 D5 X  @4 M3 [8 t# r: |
  87. hVals
    , f6 A3 j" ^, r% b' L: p6 x
  88. $redis->hVals('h')
    $ W4 s, a' w5 E( y, v
  89. 返回名称为h的hash中所有键对应的value5 N  l' Y7 h! H4 b( V6 x$ q: L. t
  90. 1 B. {' T! {' S, r
  91. hGetAll) |! ?% \* b$ x. ]# ?& a* k
  92. $redis->hGetAll('h');
    2 x/ {8 z% J; F$ F
  93. 返回名称为h的hash中所有的键(field)及其对应的value. R1 s) Q" g$ k; K1 \

  94. . |5 _1 y; x* u* X9 A/ k
  95. hExists# F3 A% }# [. c0 ~; F, z' g, q
  96. $redis->hExists('h', 'a');- H" e* O* {, Q( |) {5 A
  97. 名称为h的hash中是否存在键名字为a的域
    ( z6 f/ H" `, ~
  98. 8 C! X" }/ c" G; F8 T3 O
  99. hIncrBy; K, W) w# Y+ B7 @6 I
  100. $redis->hIncrBy('h', 'x', 2);: Y7 a, w- b6 s
  101. 将名称为h的hash中x的value增加27 x% }+ t# i% i

  102. ) S5 P; b: i) N9 K6 y( h) r" \0 y
  103. hMset
    : O# U0 O' F- O4 G
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    9 K9 Y7 n9 M. ?1 ]7 C
  105. 向名称为key的hash中批量添加元素1 w' O, r/ `( ^! c

  106. ' g5 k" |& R- e  Y/ x9 g
  107. hMGet) F/ J$ k& X% }' `
  108. $redis->hmGet('h', array('field1', 'field2'));. Y1 ]1 `: ^2 |% ~9 v9 y
  109. 返回名称为h的hash中field1,field2对应的value0 O2 r. D1 V8 d' @2 U

  110. 0 `& Z# K$ O( D2 ^+ f& I
  111. redis 操作相关- [. \7 p( x% i& V$ {) s
  112. flushDB3 j' V+ u3 V. n0 |
  113. 清空当前数据库
    ) M+ C1 b8 b& P2 J) ^
  114. + F, {/ ^8 X. B8 F3 ~
  115. flushAll
    $ Z$ v$ x$ T9 K* J: ~
  116. 清空所有数据库) i/ y: W0 f" T% R; X+ c1 `9 ?
  117. $ L* c- W( ?! ^  l; X9 V" R
  118. randomKey
    ! w5 A8 \" O! o  e& G( B, O
  119. 随机返回key空间的一个key- b0 C# C0 p$ [
  120. $key = $redis->randomKey();( q: @- |& m* u0 j  r4 [
  121. 5 D6 z- L0 N* ]3 v, s& x+ f2 R! S
  122. select
    , c3 B( j. J$ b7 T
  123. 选择一个数据库
    ! o1 W% Q" e, e7 ~) J/ @/ X( H9 t
  124. move
    " _0 h  s$ Y0 j- G/ @
  125. 转移一个key到另外一个数据库4 H! s! @) ?& g- j8 Q3 H
  126. $redis->select(0); // switch to DB 0
    ' B6 f# h* H/ K' z
  127. $redis->set('x', '42'); // write 42 to x
    5 x+ u7 y9 R7 b4 [, N" L( A
  128. $redis->move('x', 1); // move to DB 1! @/ E. v  J. R0 r$ W, V4 @
  129. $redis->select(1); // switch to DB 1
    2 e% k$ x9 P) [" O$ h$ [
  130. $redis->get('x'); // will return 42
    ' U2 ?1 X& N/ Y9 I; a+ X4 {, R
  131. 6 M( S+ ~! x8 l. Q) a" D: ^
  132. rename, renameKey; d" T  H3 Z3 l6 M
  133. 给key重命名4 `* V# }) N4 T* o+ I# |$ }& X( {
  134. $redis->set('x', '42');# ]# y5 j8 q* ?
  135. $redis->rename('x', 'y');$ M4 W9 L! e" q) b/ j' l0 H
  136. $redis->get('y'); // → 42
    9 T: o$ U8 v& N. A( }" P
  137. $redis->get('x'); // → `FALSE`  G3 ~! K4 l& x' O+ X

  138. , j, `! W( b% v& E% T+ d8 o: i
  139. renameNx- ^  y' r( P; t
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功, K) F0 ?. h1 c8 q$ l# {/ S+ u5 }
  141. ) [9 ?; {2 l4 s$ s
  142. setTimeout, expire
    6 H! P3 `, O# K# Q" j
  143. 设定一个key的活动时间(s)0 [7 e4 A9 b( c3 B
  144. $redis->setTimeout('x', 3);
    & e9 u6 b$ N5 ^3 S

  145. 0 P$ k; J& ^; Y. Q# R2 g
  146. expireAt
      t* i7 X4 G0 Y% e) u( x
  147. key存活到一个unix时间戳时间; c& T  s4 O7 P4 l( N" J
  148. $redis->expireAt('x', time() + 3);8 Z' o7 h# m$ S% N. ]- N9 [
  149. 1 J( o- O6 ?9 d9 Z: T& w; ?/ Y( f. B
  150. keys, getKeys
    & @2 K, F. p6 L1 K* I+ ^) G
  151. 返回满足给定pattern的所有key% X: X* f: B7 e2 T( c0 v, O. r
  152. $keyWithUserPrefix = $redis->keys('user*');
    0 E( v$ f* o7 }! L; e4 ?
  153. 9 k9 r) P* t3 S6 G/ ]
  154. dbSize' B( m. ~" B! h1 `+ N* w7 f
  155. 查看现在数据库有多少key
    , E( @8 [# P" ^9 [/ D- y7 c
  156. $count = $redis->dbSize();. K- z: b6 t2 d$ r4 W- A
  157. ; F4 f, I6 M3 ]" G! Q2 [- T
  158. auth
    ( l# U' C3 e+ W0 \+ d5 F
  159. 密码认证: \7 c# Q  _" `8 W& w
  160. $redis->auth('foobared');4 z1 e. Q( L% b+ e
  161. : q4 P; B4 Q8 j; Q% q
  162. bgrewriteaof  _% E  d9 ?) @8 h
  163. 使用aof来进行数据库持久化  v" W$ k2 q( C' X
  164. $redis->bgrewriteaof();
    ) G+ f& I+ o! ]' E5 b& u
  165. ! E3 s9 a6 {. K. J
  166. slaveof4 [# W) a! q) @% H1 n
  167. 选择从服务器
    5 y0 P! s( R7 J8 E' x
  168. $redis->slaveof('10.0.1.7', 6379);
    1 O! D& O" S6 s1 N2 T
  169. * o+ k1 u- Q6 P  [
  170. save/ v8 Z; C1 D1 A& K/ z6 Z- C
  171. 将数据同步保存到磁盘
    5 G" x+ Y9 U5 t; X" }
  172. ; }0 Z0 l) h- M3 C2 S5 W. R
  173. bgsave
    6 V4 n$ y! Y8 b5 w; k7 r
  174. 将数据异步保存到磁盘; h5 W4 ?, |% ~) h9 l2 z

  175. " H$ }8 z+ ~. X1 Q6 i
  176. lastSave, Z' {; K: _! y
  177. 返回上次成功将数据保存到磁盘的Unix时戳: c# c8 _1 C) [% A# E. m$ s

  178. 9 p, {! r/ g" X! X
  179. info
    4 U" U: O8 W) c7 D7 ~, W
  180. 返回redis的版本信息等详情6 F0 ^% ?3 c2 o& N; D
  181. ' t6 t3 W5 v# V5 O8 r
  182. Redis::__construct构造函数8 x. y/ ^6 u) ~0 F  F
  183. $redis = new Redis();" X) ~! p4 ?% ^# x$ K8 i& z5 v  e

  184. 4 D# ?$ ]; j3 Z! A1 \
  185. connect, open 链接redis服务9 l: T- j4 _0 e1 c5 f# @7 R( }! A
  186. 参数5 E9 m4 d4 D, Z( C( b
  187. host: string,服务地址
    8 \8 ~1 }& T% S
  188. port: int,端口号
    ' h  U# i7 I6 B6 ?8 r0 H
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)4 q& {( X2 _+ l) x! G
  190. 注: 在redis.conf中也有时间,默认为300
    " _8 d: ^( Z) K4 X6 X6 F5 g$ t
  191. / ~6 R2 t/ f# k8 M
  192. pconnect, popen 不会主动关闭的链接7 `4 `1 p5 \) `* Z
  193. 参考上面! D$ K" W2 y# u# }; ^

  194. - f& \% f' a% Z+ V1 q
  195. setOption 设置redis模式
    9 P5 U- |, \# R& Y; Z# U( q

  196. . a, m# v/ v4 f) f- f9 d& A
  197. getOption 查看redis设置的模式6 W$ e  s; f* M& _

  198. - ?8 g3 ^: F, f$ @. B( Z; X
  199. ping 查看连接状态
    6 K% e* o( k3 Y& O6 l, s2 F5 P
  200. 8 ?/ ?# _8 g5 W
  201. get 得到某个key的值(string值)
    ' H& K/ a/ o7 g& X7 D6 ]
  202. 如果该key不存在,return false
    ' K# ]3 Q) w7 t) E5 q

  203. + @" C* J- s5 N( ?  t% Y) c3 Q
  204. set 写入key 和 value(string值)
    " T: E$ ^- H' I! E6 ?, D
  205. 如果写入成功,return ture
    ! ]/ y' ~$ a/ N: t

  206. 2 v5 i3 N* Z3 ~2 F; l6 R/ y7 |
  207. setex 带生存时间的写入值
    . [) i* n! V! O2 @
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
      p( ^. D6 s/ h% l' V4 }

  209. ; F6 K7 ]+ y0 h6 [& q- e2 z
  210. setnx 判断是否重复的,写入值" ~) Y' R$ ]. q% z% a& C
  211. $redis->setnx('key', 'value');5 t( p9 A5 p5 z6 ^( r
  212. $redis->setnx('key', 'value');
    2 {, I  o  n/ i* l4 }3 T4 s

  213. ! D' N+ \' f" d! ?, K# ?( R/ Y* K: [
  214. delete  删除指定key的值
    8 B8 R& [3 X8 w
  215. 返回已经删除key的个数(长整数)
    - X7 e7 d5 v' L& S6 i+ n
  216. $redis->delete('key1', 'key2');
    ; f: D# A0 J! P; x5 k& D5 j# O
  217. $redis->delete(array('key3', 'key4', 'key5'));
    5 n6 T* O" S$ p8 T) n2 a

  218. 1 l! R9 t3 a4 d: J
  219. ttl
    6 _5 I/ r! I% E7 I2 I( w! u& f) d1 M$ G
  220. 得到一个key的生存时间+ M8 [- m3 ]9 j$ ~" @
  221. 4 p9 D2 ^: q% [: T0 c% {
  222. persist
    - ^, d' N9 \$ v
  223. 移除生存时间到期的key
    ! R; p! G6 I4 o! k; C  t" d
  224. 如果key到期 true 如果不到期 false+ O0 v/ R8 N$ F( }* i" C
  225. 7 {. E& l  r7 P0 P7 V8 h4 R. M
  226. mset (redis版本1.1以上才可以用)' j  d+ A9 b4 Z4 B8 U
  227. 同时给多个key赋值& x6 S! e7 j% f* i# C/ |- U
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));5 x! p* M! U! {# p6 q0 f, ?
  229. , J: O4 t% g, h1 `9 V8 u# ?

  230. , h# z0 D7 ?- b% h- a6 }+ E1 E
  231. 3 N! |) ]  J3 a1 L( p8 q) F  X
  232. multi, exec, discard, w$ \* W8 }. `4 p* `( Y
  233. 进入或者退出事务模式" l& Y% a9 X) [/ W
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    / N, b( L+ v8 G4 w3 s/ {
  235. Redis::MULTI:将多个操作当成一个事务执行1 I: L5 e1 j" H4 z' n; I7 K
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
      E; O# h# w4 h7 l7 E
  237. discard:删除一个事务
    2 ~6 F/ W( |- K9 q
  238. 返回值8 ?  [3 g; y  W" k; X
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。+ f' L# M/ t( A. w$ U

  240. 1 i3 L1 r2 d. A" [( O& }8 ^3 s
  241. watch, unwatch (代码测试后,不能达到所说的效果)7 R3 A' Q2 e7 F, ]" I, P8 o
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)8 U5 R) @- r2 z- Z2 M; b$ u
  243. unwatch  取消被这个程序监测的所有key( A, j% ?% D4 b0 L
  244. 参数,一对key的列表
    3 h2 V! ^0 S+ P2 z4 ?
  245. $redis->watch('x');1 F0 g# Y; w2 i( O0 |# ?3 a
  246. 5 [* G- Y8 D6 ?; L3 f' [# `) C1 m
  247. $ret = $redis->multi() ->incr('x') ->exec();
    & v5 z  s: e" [1 I+ d
  248. $ w# c8 q: b& N$ m0 g

  249. 3 H, ~7 ?, i' o
  250. subscribe *
    ( `. }1 K# K! _3 ^6 ?; b  x& Y# \
  251. 方法回调。注意,该方法可能在未来里发生改变
    ' \; k; p' p0 J
  252. 8 t( E7 f: v' e
  253. publish *4 h% [# Z& V" U, K% o
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    5 O# u! v$ t7 a+ l5 J! n) y$ S

  255. ' n+ Y% i( r( ^5 N9 A7 U2 p
  256. exists
    7 @9 j* Q. w7 f  C
  257. 判断key是否存在。存在 true 不在 false
    2 B% k/ u6 X2 `3 k7 ~

  258. 3 E# Z+ |* @8 @' m" _! ]
  259. incr, incrBy
    8 g# g( d! j3 U1 h$ O7 R/ p" i
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    4 @3 G" r) J9 d# g
  261. $redis->incr('key1');& k# X' H4 I9 `* k: q+ E( Y/ X
  262. $redis->incrBy('key1', 10);
    & A! R% @, ~* G7 Q+ f

  263. 4 c- y9 _& J  E* \* {, O) N( ]6 E' g2 u
  264. decr, decrBy6 g. w7 b$ k4 [# F7 ?8 p6 x9 q$ }
  265. 做减法,使用方法同incr
    " p& f9 H: i' B# M; b) x0 k

  266. 1 N6 `0 U& Z8 E' ^
  267. getMultiple
    % b! ~$ O: M& `7 @* E
  268. 传参
    9 K. J7 U3 Q- T3 m2 {
  269. 由key组成的数组
    5 C+ B0 K1 o  {* l4 A4 I( t8 A
  270. 返回参数6 K3 o# H# r* U$ s4 w, u
  271. 如果key存在返回value,不存在返回false+ ]4 b* D) _! U8 a
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));0 Y+ K9 z. c; T5 d. A. z* S
  273. $redis->lRem('key1', 'A', 2);: j5 E- q, O7 A$ e
  274. $redis->lRange('key1', 0, -1);# q3 \* u6 k& G) v" ?9 h8 j1 D/ a

  275. 2 T. Z! N5 ^. r- R! K- Z
  276. list相关操作0 G$ m! q+ g4 J5 O" J
  277. lPush2 E* R- e' b* I$ R3 m" T1 Z
  278. $redis->lPush(key, value);
    8 E+ V, x( N4 L& t9 [2 }
  279. 在名称为key的list左边(头)添加一个值为value的 元素* D: ~7 c: q3 T: Q+ `/ N  Z
  280. ) J" b  N, k$ A
  281. rPush
    ( g1 n# J/ \! Y9 ]$ P) X
  282. $redis->rPush(key, value);) L0 N! e# u( n( [7 T* ^: i4 E1 Y) w
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    ' ~3 }2 S, B. w0 k3 B( a% u
  284. * }' a- v2 N0 A8 m
  285. lPushx/rPushx
    ! A. ^1 @. k; Z) A# B4 E4 K
  286. $redis->lPushx(key, value);! k+ X7 ?& t& J# L( z8 v0 H7 J
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    4 F1 u0 \) h% j, K+ |8 h  M! w2 q
  288. + f0 z+ L& b! A* g1 b& j
  289. lPop/rPop  f# {' i- `& w  B$ H: g. Q; L
  290. $redis->lPop('key');
    6 n, W& A1 O# F# \$ H) N3 ^
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    ( d5 \8 M7 [9 W( |  p5 n/ X

  292. / c9 p* `& L" m% c; d# v
  293. blPop/brPop
    % ~) _' I! U" \% N7 T, |- t
  294. $redis->blPop('key1', 'key2', 10);
    * u( a( `. t# u
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作3 a4 a6 p6 Y' D& v  z
  296. / X% ?9 f: x1 C. l  s
  297. lSize2 K! f7 U) `6 g6 X1 D
  298. $redis->lSize('key');" t7 W( Z: r1 ?  l/ A" `
  299. 返回名称为key的list有多少个元素9 Q! A* g) b+ D+ c# S$ K1 \

  300. & q" ~+ n: |' {; H
  301. lIndex, lGet7 j( X# h+ Y: m. J) y8 U- Q/ M) H
  302. $redis->lGet('key', 0);
    * J+ r3 A/ @: Z. t; v
  303. 返回名称为key的list中index位置的元素5 Z: Z: i( D/ x- z  z

  304. 9 C( k7 _9 }* u' W  C
  305. lSet
    + b+ y7 F0 j& t/ r3 o9 A& |2 F6 B
  306. $redis->lSet('key', 0, 'X');. V+ F  N( a6 y0 D& W
  307. 给名称为key的list中index位置的元素赋值为value) q7 E& S! V: W# V; W
  308. - p$ C: E# x8 R. ^" J6 P9 `" l# k# M
  309. lRange, lGetRange! X+ P* F  m2 m* p9 `+ P' K
  310. $redis->lRange('key1', 0, -1);
    1 A  h( \/ D  ^, u! K+ n, j
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    9 v/ l, @6 F1 t- ?! o9 k! o

  312. 8 U( z1 K" h% u" K- I! Y: W
  313. lTrim, listTrim) `  p4 X) r! X* C$ g; R
  314. $redis->lTrim('key', start, end);
      W2 |/ G& F4 {
  315. 截取名称为key的list,保留start至end之间的元素+ v; z- P( j8 r7 g

  316. 8 b- V- {: m1 x$ W; \: \* ?. S
  317. lRem, lRemove' }3 A  {6 H; c1 i
  318. $redis->lRem('key', 'A', 2);+ [1 E, ]/ q1 x! T+ C
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素$ k, q+ g- q+ f0 Q# h2 ^  m/ f" R
  320. # C' g6 t( O3 w7 X
  321. lInsert
    ( d- X( g7 ~, S3 a8 D! Z' C2 {
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    : h: @5 p; l4 O/ H0 y
  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');" g# u5 t7 Z2 y. }" K
  324. $redis->lRange('key1', 0, -1);" W$ \6 M0 A4 t* c7 @- ^" I
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    ) O$ s5 _' J4 U% G& P# d- F% J
  326. $redis->lRange('key1', 0, -1);7 o. N8 \/ F; v. }  y7 I2 W
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    7 i6 K" i) G: u4 d

  328.   ]5 n/ d# R4 P: I1 ?( q# X
  329. rpoplpush
    . C, [/ `! r) _+ d  E7 K4 W7 J) Q$ a3 t
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部9 U- F4 `: W# K* t( P
  331. $redis->delete('x', 'y');
    ( ~* a  J) P# T! _6 g3 g
  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'));8 d. q. D9 W& w5 P) N+ R
  333. var_dump($redis->lRange('x', 0, -1));
    6 o- |  P* ]+ B3 D& I, `! R3 W  @
  334. var_dump($redis->lRange('y', 0, -1)); ( y' n7 Z6 t  O' Q

  335. ! n# T8 M) U$ V0 i6 G: k! j% f
  336. string(3) "abc" / m4 A3 v7 K; \8 B, k3 D
  337. array(1) { [0]=> string(3) "def" }
    $ q: r3 J9 }; q  |/ \' G. Z. x
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }( {$ m: C, w. e# Y

  339. " l! L( N' ^- H) X- j
  340. SET操作相关
    6 T/ R4 q# ~" @7 H: B
  341. sAdd
    4 o# N- z9 `8 f) _0 d2 X2 q
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false0 ~' ]" `5 F6 Q& |& K5 K
  343. $redis->sAdd(key , value);
    , s5 W' v- r# v$ }4 U% [1 L

  344. $ E) u1 x) R. ^* }% m1 n* \2 Q
  345. sRem, sRemove% n* A! t. x/ N" `7 X' j- E/ C
  346. 删除名称为key的set中的元素value
    9 d7 e- y7 m2 m2 P/ D
  347. $redis->sAdd('key1' , 'set1');
    7 p0 G% G( {4 Y* Z) q  S) l  z
  348. $redis->sAdd('key1' , 'set2');# E, X% `2 X* y' c) J
  349. $redis->sAdd('key1' , 'set3');
    " I8 Z) x6 m6 u
  350. $redis->sRem('key1', 'set2');0 B1 ]6 P0 S1 f" |, C0 g! T# h
  351. + ^5 s; a, e( i' G% g8 c
  352. sMove/ y8 k7 _$ s, f5 U2 F
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    ) h' y( L9 p- P+ K; N
  354. $redis->sMove(seckey, dstkey, value);
    5 u* t" p% g) _  h, s* y

  355. 4 f- }+ X1 I/ ~* m% M+ m8 N: L
  356. sIsMember, sContains: D6 A3 |$ X1 M
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    - E; T( f' l+ l8 \4 A7 t' ]
  358. $redis->sIsMember(key, value);
    $ ~5 j, }8 j- G5 W
  359. * \6 q4 ?# M, \3 }  O
  360. sCard, sSize
    * P5 P6 h% H: m& h, n4 v% e
  361. 返回名称为key的set的元素个数
    ! w9 t8 a- l/ X: `

  362. 7 _9 Z) X8 A- Z" S5 m5 b
  363. sPop; f' `$ I3 c9 F2 j4 a+ {
  364. 随机返回并删除名称为key的set中一个元素
    ( \- P4 {- b5 p. e: P$ D' y( B5 e
  365. - w( C; y& g2 t8 R1 q! K
  366. sRandMember
    4 Z) O3 i1 w  F: E" [
  367. 随机返回名称为key的set中一个元素,不删除* V; U" ]+ l- F8 Z

  368. ! N  Y+ d7 W0 a2 `0 P) ^
  369. sInter8 d/ v$ n( r3 a, Z9 ]  e# j6 |% n/ E
  370. 求交集
    ( N+ D6 j2 U- D0 p/ w

  371. 2 x' K; ]! B& D
  372. sInterStore
      y% A$ N8 l0 f' U, E" A& A: G/ C
  373. 求交集并将交集保存到output的集合
    * U7 d% P5 L/ E
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    * G  ]" ~+ A- L3 {1 V
  375. . t' s) U* M( ^# x0 b$ h+ X' s
  376. sUnion7 d+ d- {1 l' D  a5 [% Z! o) |
  377. 求并集2 |% s7 U/ E% w
  378. $redis->sUnion('s0', 's1', 's2');8 u+ A) @: s0 r/ h2 R
  379. s0,s1,s2 同时求并集, N0 q! K! x8 p4 Y

  380. . T) s0 {- z3 V$ h
  381. sUnionStore
    ! C7 g" K6 b8 [. C
  382. 求并集并将并集保存到output的集合3 r' [  W6 p. T% z' ^+ x9 g  x
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    " B; @: h% @* ~# d
  384. ) c& d7 u! b# C/ S/ u
  385. sDiff  A; K8 E% s' n5 ]; V5 H. o: f
  386. 求差集/ T) |' ^0 R$ s, B  r
  387. 1 x$ S% `2 m  t" A9 y3 p3 \
  388. sDiffStore
    % M# Y% x: w' L% z! d
  389. 求差集并将差集保存到output的集合
    3 f9 V" a5 H8 l- D5 E# c% R
  390. 2 G6 L; f. p7 A5 T* Q1 t
  391. sMembers, sGetMembers. l6 m2 a9 p) D9 o0 [( B. ?
  392. 返回名称为key的set的所有元素
    - M* ?8 p" J2 X- J0 q, m' d  f' \

  393. 0 e: p- H7 S& Y
  394. sort$ V( R- B+ K! L/ {7 r. a+ x
  395. 排序,分页等
    $ g* Q6 W/ H% G- R6 s8 f/ ^
  396. 参数/ T7 Z: c% A2 o  Z# u, f
  397. 'by' => 'some_pattern_*',9 A" X5 z% _  a4 {; Y) Q
  398. 'limit' => array(0, 1),
    0 n) r& o' r6 j: M
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    7 P# i6 ~- s$ K- Y  M  n
  400. 'sort' => 'asc' or 'desc',9 i. Z  y. V2 K7 H
  401. 'alpha' => TRUE,- V, X  S5 W+ A* x# {4 I3 U
  402. 'store' => 'external-key'+ L5 f; ^9 b- _1 d. x
  403. 例子
    ' `3 f2 d8 d' A, o* ]
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    # s. P* `1 o5 o* U6 ^
  405. var_dump($redis->sort('s')); // 1,2,3,4,5; D+ v- S6 Z* x( U2 v
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1. e: M/ K6 W# C/ F5 V; t( {
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    ! y  s+ ?9 v' N( A

  408. 5 P8 c. a( _5 h7 e
  409. string命令
    ' e  h6 X4 G. H3 ]4 f
  410. getSet4 Y7 R9 H; U7 O0 w  z
  411. 返回原来key中的值,并将value写入key
    ) W; d0 d% k! _# w, h$ l3 ]+ K
  412. $redis->set('x', '42');
    ; Q: m4 j( C/ \3 S
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'5 B: D6 v- r# E
  414. $newValue = $redis->get('x')' // return 'lol'" |) F5 X3 r7 L/ Y1 J; j0 `% y
  415. / ~! C9 v2 ?6 P; E
  416. append
    8 d1 C6 x- a) _  b. V# Q/ r
  417. string,名称为key的string的值在后面加上value
    & P5 o* I! y' w% S2 q) D
  418. $redis->set('key', 'value1');) u) b+ C: N3 O4 T" \/ w/ E
  419. $redis->append('key', 'value2');
    - O6 u* m$ k* @! v  Z7 r' k+ E
  420. $redis->get('key');
    : s, O5 X( D# y2 x- w! R0 K: J, N

  421. ' ]% M! R$ S4 X$ h0 R
  422. getRange (方法不存在)
    * ~/ t1 B2 E8 U" P  ?0 k3 U# t7 L* O
  423. 返回名称为key的string中start至end之间的字符# a2 f& n7 d8 V* I
  424. $redis->set('key', 'string value');
    1 ~: e. [/ L: R2 M% `
  425. $redis->getRange('key', 0, 5);% B1 }; i; q" J- ~
  426. $redis->getRange('key', -5, -1);
    / o6 |6 l% F9 ?# c, u
  427. $ j! L& w; y$ J  p
  428. setRange (方法不存在)
    9 M- s' Q( S% P% z9 t  ~1 ^/ S2 G
  429. 改变key的string中start至end之间的字符为value. Y$ J5 J; `# d* n( V
  430. $redis->set('key', 'Hello world');
    - z* D& i- X# A8 @% F' K- B
  431. $redis->setRange('key', 6, "redis");
    . w' ]* I( S5 Q% Q- c7 \( r
  432. $redis->get('key');
    9 O1 j  r1 u  ~* u9 R

  433. - @3 o) S4 Z# w! Q
  434. strlen- c4 v+ G$ ], U. v+ `+ T
  435. 得到key的string的长度
    ' j! L* @% |7 G# T5 I
  436. $redis->strlen('key');2 m) K# q7 S! A) X" p+ D" A6 g& p

  437. 2 G( S0 Y+ w0 h& k* a
  438. getBit/setBit; I9 n/ l/ L8 {% p! E9 ]
  439. 返回2进制信息
    # J/ N5 C: Z4 w7 c. R( F
  440. 9 p7 Y* S- A$ [7 D
  441. zset(sorted set)操作相关
    . Y' z2 `) I! q  h1 y5 w# k- x
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。1 L: g2 S4 W. Q8 ?% t
  443. $redis->zAdd('key', 1, 'val1');
    / |: }0 j  P  J* Q( ~  M$ ^0 H) N# H
  444. $redis->zAdd('key', 0, 'val0');( l$ A: F( b% r+ ~+ j: |
  445. $redis->zAdd('key', 5, 'val5');
    % E& m% ]9 a2 H- u% y
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)3 A7 _# l9 P/ O% i7 {

  447. 4 R6 Y6 i1 A: Y4 T
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    $ K# [9 n$ d' y  {" S. d, }) Z
  449. $redis->zAdd('key1', 0, 'val0');: v/ c/ u( P2 u0 c
  450. $redis->zAdd('key1', 2, 'val2');- B; B5 @9 x8 y4 v
  451. $redis->zAdd('key1', 10, 'val10');! V1 Y% G9 p/ T6 S4 k) N
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    * K5 g5 _( h+ B5 @7 ]) @: k- l3 c5 G

  453. / M( S! `+ I! B+ S' _2 k' Q
  454. zDelete, zRem$ c* ~, v& s+ c' x) L
  455. zRem(key, member) :删除名称为key的zset中的元素member) q) @. Q5 ]1 V  }  S+ g
  456. $redis->zAdd('key', 0, 'val0');
    3 W* o( q8 ?( a: t/ f' D  W
  457. $redis->zAdd('key', 2, 'val2');
    * e/ S  y# e2 g# {" f
  458. $redis->zAdd('key', 10, 'val10');4 t; ]) G4 ^9 s  @
  459. $redis->zDelete('key', 'val2');3 E3 }9 H9 i/ E: U; z
  460. $redis->zRange('key', 0, -1); / u4 @* U9 w# _

  461. 5 S* ]1 H0 j$ x) ^
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出! }7 i3 N+ D  {7 p6 Q7 F
  463. $redis->zAdd('key', 0, 'val0');$ [% F9 a* `6 ]% H0 p
  464. $redis->zAdd('key', 2, 'val2');/ K! o9 o( {9 F& R0 j
  465. $redis->zAdd('key', 10, 'val10');
    ; q  K  g9 H$ i8 m! h  M
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    0 X. |6 X$ q8 }& {) ]$ a

  467. 7 L& T7 o, E5 S8 x# L
  468. zRangeByScore, zRevRangeByScore1 r# I9 f% E! V# d* v% c, }8 l
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    2 Q2 ]% k8 S* y* C3 t2 g
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    * L3 V, R) d6 V2 p7 H
  471. , W6 L5 c7 c' v' C
  472. zCount
    0 ]9 `6 J0 H! y9 L0 z  B
  473. $redis->zCount(key, star, end);' \' {$ q/ [1 o; X! A
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数; Y3 ?+ L  x) ^) b  l

  475. " d4 B; Z" t  z6 x9 k! E
  476. zRemRangeByScore, zDeleteRangeByScore7 G8 s* \0 j5 }1 F
  477. $redis->zRemRangeByScore('key', star, end);6 a3 z% P: c3 m9 o- R2 L
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    4 N- q0 M2 d! P! f" P9 Q

  479. ) a7 x6 {5 @# o# ]7 v
  480. zSize, zCard9 A0 V0 }' `0 R% F$ @
  481. 返回名称为key的zset的所有元素的个数, p3 @  _9 e3 [; ~' J! m+ Z$ V' M

  482. 1 [3 @; z, c  S1 V% k
  483. zScore
    3 ?3 w  U& k: t5 }3 f' K/ R6 o  v
  484. $redis->zScore(key, val2);4 }' h% H: R- l( D  F2 E, }2 \4 ]7 p
  485. 返回名称为key的zset中元素val2的score1 x1 I0 x# W$ o9 X- I

  486. : @  K1 n9 E4 Q
  487. zRank, zRevRank) C$ ~! ^; ^2 E8 z
  488. $redis->zRevRank(key, val);/ K0 ]& F6 A; |2 G$ {
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    ' b2 n3 p3 r0 u& k6 ^

  490. . z# z6 C- Y4 E7 U! _  ^7 o: J
  491. zIncrBy
    ! o9 c* P7 S: }) Q4 t3 H9 L
  492. $redis->zIncrBy('key', increment, 'member');+ C) f; p: e& K& E0 S, G- V  O4 V2 @
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    2 Y* P+ P  [, v0 h1 w
  494. * ?3 L1 }- W0 C* W
  495. zUnion/zInter
    * T1 F$ w& T- H0 i
  496. 参数
    & i0 x( _( d/ |0 a( m
  497. keyOutput: D$ p0 x4 w0 l( ?" ]
  498. arrayZSetKeys! {0 w) g. ^: ~* l- x  s1 j
  499. arrayWeights
      z/ S# X4 ]9 \6 j
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.( c0 f2 Y! ?4 O# `7 f
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。4 G* e; I8 e' W$ E# W; _
复制代码

( }; \1 u7 w* W. _4 L
' {; a$ Z# B$ w; ^- d& `+ o. ~7 F. ~6 h6 j8 Q' _

, r3 K; R3 l& k; c: |$ E+ d2 P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); / v2 s) Y8 b4 Z
  2. //连接redis服务器
    ! l' V7 s- c# y. Q1 M
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 20:54 , Processed in 0.136041 second(s), 18 queries .

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