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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php. \! r3 g! o( Y7 ?" ?
  2. $redis = new Redis();  
    , R% i; x1 r! @" q5 N1 W/ m$ j5 D
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    9 B7 R( @, N" z2 p+ g, g8 _- F* e
  4. $redis->auth('mypassword');//my redis password
      H% Q- d6 F* i
  5. $redis ->set( "test" , "Hello World");  " Y/ V; }7 h. `# U' c6 K9 ~
  6. echo $redis ->get( "test");* F! y" ?0 U! d% B* s
复制代码
php操作redis函数封装
  1. /**
    & g+ B, e! X$ }+ A4 }. {
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    * w5 g8 @& |% I- m% S
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    6 k2 l- h3 D. f0 K/ r" \! H' T
  4. */* `8 y) b, n: H, J3 E
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){" {) c9 H4 S2 d
  6.     if(!$key||!$value) return false;$ l6 M# Q! r  }5 p
  7.     $host = $host?$host:getenv('REDIS_HOST');
    # M2 j& d- f3 d7 H' e
  8.     $port = $port?$port:getenv('REDIS_PORT');  p7 n" I: Z  ]$ L1 P# w
  9.     $redis = new Redis();
    $ P$ h8 V7 _, ~: w+ b( w
  10.     $redis->connect($host, $port);6 d8 Q1 s3 w4 l: u3 I
  11.     $value = is_array($value)?json_encode($value):$value;
    , U. _6 e  h# B, O& @; E
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);" x2 q5 J$ \* a6 n+ L9 o2 O4 t
  13. }
    0 z2 A1 d  Y$ s$ x: _( u( W
  14. /**
    0 C: Z, K# V. f7 K+ N
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    + y3 M$ S+ R5 S. _$ w
  16. */
    : h0 G3 e; Z$ o8 H( c& S
  17. function RedisGet($key,$host='',$port=''){, _* I, r5 `% g0 q+ C
  18.     $redis = new Redis();8 {& s7 R) O1 K2 E! F' n) B. u
  19.     $host = $host?$host:getenv('REDIS_HOST');8 d8 T/ b' Y7 m
  20.     $port = $port?$port:getenv('REDIS_PORT');
    ! g& ^+ R9 A/ R' S' S2 w
  21.     $redis->connect($host, $port);+ t: m3 r% G! ~' \
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    . {8 P& c0 c- I5 c+ v$ \
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    7 l7 z! w5 X5 W/ q* u2 |
  24. }
    # k4 m' b" m: g
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
+ o; j& i5 x* ~+ G2 Z- b* d( T
  1. setex 带生存时间的写入值$ b8 @) W4 g: V4 H3 l& ?
  2. $redis->setex('key', 3600, 'value');
    ! B4 A  H: G- U9 I2 @
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
      ^) ?: R# R" ^! g1 i1 g6 @
  4. $redis->setnx('key', 'value');$ P0 Y) S& ^; D* X
  5. 返回已经删除key1 i, d/ p' @1 W0 ?+ K
  6. $redis->delete('key1'); 成功返回1失败返回0
    9 V+ k* W! r* @1 D% b/ x% r5 X
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0: o0 O2 P$ c6 \# C4 A
  8. 查询生存时间
    6 E1 ~. E  }7 C# R! Z' n+ h/ F
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)' F! R$ X" a- _. T
  10. 同时给多个key赋值,同时设置key0和key1
    8 [+ w- g  H3 O
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    : M( h# i( Q7 Z; k& t" J- Q
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    2 a  J* x* m0 X$ O6 ]5 q7 X
  13. $redis->incr('key1');
    8 Z! o' I4 B0 H4 z; v1 p8 X: H
  14. $redis->incrBy('key1', 10);2 L+ d8 B7 A2 y% W) V! R
  15. 减法跟加法一样
    0 K7 E  ?1 L4 \/ ~( v* l- d3 b9 p
  16. $redis->decr("key1"); 减少1) D: X. W1 ?# K) g* @* G
  17. $redis->decrBy("key1",5) 减少58 d' D. z1 N1 `2 p
  18. 1 P+ N/ O  v) y3 A  |
  19. list相关操作,连表操作
    * I# i; W* Q3 h. [+ ?' u
  20. lPush5 ?7 k1 }3 O5 Y. {; ?; m' f5 |4 F
  21. $redis->lPush("list", "888");* }' L+ O+ |$ Z2 r! U$ E% X
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    8 d& ^$ \6 W; f" @
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式# K/ K- H; {! a3 q/ R/ c0 |
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    4 g6 ~2 ~* k; W9 p9 N) s, ~
  25. lPushx/rPushx
    / B/ x% Q+ _; j) E% S0 }$ X
  26. $redis->lPushx(key, value);1 J3 B+ D3 Q& w& R* W( Z3 T) {
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    % o) C* J6 @1 Y# k5 q

  28. # ?  n( B/ {5 G5 h6 g; k
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    & z: Y/ R+ Y. E% a0 l
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key) }( u* Y* |% g: ~$ p$ a
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1  d2 \# Z" U, t: `( H0 Y, p: Y
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
    8 S$ S. s5 R. t5 t. Z4 H' M! ]
  33. sadd s1 zhangsan5 p) V1 ]0 k0 _( F% X
  34. sadd s1 lisi
    0 {. L) }) t, @+ k0 d4 x7 I
  35. sadd s1 wangwu
    " K0 v  c4 a0 ~: [# A  k# x+ W
  36. sadd t1 yangxingyi
    3 w" b  ~/ x" k' c( q
  37. sadd t1 lilei
    3 z# M1 l# j% V
  38. sadd t1 zhangsan- ^/ ^$ ?: }0 J& t* D6 x* `9 X2 U% W1 r
  39. smembers s1 s1的所有集合内容
    + T+ H& \( g/ Y- ]* E0 [: A
  40. sdiff s1 t1 s1有的,t1没有的,差集3 j4 e0 U% E" N
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    2 f9 f9 m7 {; B! c
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的: o, ]5 O( w2 {& w1 r* p% b3 f
  43. spop抽奖场景,返回集合里面随机的数: `' ]" Q# j8 D, E) q2 e
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    7 A, g+ i0 z9 F( _$ W) G6 i2 G
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    $ B3 _0 Z  F$ U- }9 k) \, Q2 N
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的# e7 K8 N: V( l8 ]
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    & J& ^& y+ j* D
  48. $i = $redis->srandmember('s1');echo $i;2 ?& x/ ?7 `% }2 L! @/ t1 ]. w/ ]
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false  b2 I8 P, x9 H  O; d
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    % Y) m1 @2 V* Z9 c' ]% `9 z
  51. ! P4 w" I8 Z2 w5 P2 l& @9 @  N, ]
  52. zadd key 2 value 有序集合
    / ~, z% s1 l( E: x1 Q3 x9 A9 z
  53. zadd y1 1 zhangsan;0 h7 i/ ?6 `  `- P- g
  54. zadd y1 3 lisi;2 a2 U8 f- U8 D3 b+ V4 N
  55. zadd y1 2 wangwu;+ ?5 ~1 S2 t) J" q% j  Y+ D
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    - e3 m2 a6 N7 ?$ N( z
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    3 B" l# C( B- d5 F
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键# ?7 X( b. b- [
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    6 c4 g2 {+ q' Y  S" E( `0 ~
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的( A$ ?# N% \1 x2 T# n
  61. 无序就scard,有序就zcard,有z没有s
    + U0 r* N. L" a) f& {+ H
  62. sInterStore
    1 _0 `2 C+ i: ^: k  k
  63. 求交集并将交集保存到output的集合
    5 p1 }' y# W# E. g; \0 B$ z
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')4 B5 e/ |! B7 g, k: b$ B

  65.   |9 h/ t5 N* Y% ]7 D  b
  66. Hash操作
    ; ^, G: \8 X$ M+ K1 b2 W& ~% D1 U2 ~
  67. hSet. S  c! ?: S' P! P( {. P& ^; ^# G
  68. $redis->hSet('h', 'key1', 'hello');% g0 }; X6 E9 }! b
  69. 向名称为h的hash中添加元素key1—>hello
    $ {* A# N5 o8 U7 u! Z
  70. 9 q- k, e8 j9 f  v" G
  71. hGet
    + Z' z0 a0 ~& m( G
  72. $redis->hGet('h', 'key1');
    , ~% Y4 x0 ~& Z1 @. m
  73. 返回名称为h的hash中key1对应的value(hello)
    6 m* F. A( L2 _9 {
  74. + o. I$ [6 h* f, h0 \6 X/ b
  75. hLen
    4 [6 `; t1 b: o5 W! ?
  76. $redis->hLen('h');& [% \5 n2 q2 _
  77. 返回名称为h的hash中元素个数
    + x0 l0 K/ ^4 D- ^" l" q  _

  78. $ g' A+ ?  }: R+ X* ]6 S7 U
  79. hDel
    . u) c8 O5 t" H
  80. $redis->hDel('h', 'key1');
    1 _( S; w, C+ W. d0 _5 J! a. _
  81. 删除名称为h的hash中键为key1的域( h7 f) |9 q7 v

  82. 6 {9 G! Z; C( t, Z5 l
  83. hKeys
    7 R. |  z1 e- u( T
  84. $redis->hKeys('h');7 S. X. @, ^" r3 A
  85. 返回名称为key的hash中所有键
    # X  d/ \! h( k5 ~
  86. 8 Z2 p4 |, X9 |, F9 h
  87. hVals& f4 I# P+ c2 U, p" g
  88. $redis->hVals('h')$ B: S' E* B! J: M7 s. g
  89. 返回名称为h的hash中所有键对应的value
    % C+ ~$ c( k$ e) S
  90.   L: H- F2 @% c, I: r( D7 u, ~
  91. hGetAll1 g5 \* k0 ^3 T/ N+ q, B
  92. $redis->hGetAll('h');: l, ~' l$ p% D, l$ ~4 Z7 P
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    9 P5 M& H' x8 N2 {8 q% p

  94. ' W  M: H( l, S) ?! W4 Y
  95. hExists
    " n( H8 H. X* q* H% N6 d# I0 Q
  96. $redis->hExists('h', 'a');2 h) c( Y2 f  f$ ]$ a
  97. 名称为h的hash中是否存在键名字为a的域
    ( o/ i8 W) e( O: V2 |

  98. ' F* Q! ]7 p4 b4 M) _/ ~# N' s& N5 J
  99. hIncrBy
    + j8 c, A$ S9 a
  100. $redis->hIncrBy('h', 'x', 2);
    ( H3 u$ E, m' t+ c
  101. 将名称为h的hash中x的value增加2
    $ J! o: g/ ~# Y0 K: w
  102. # z% R2 Q+ ^* i# \, e
  103. hMset& ?( Q& \8 I2 u4 c: Q
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    1 p# |9 g2 ~3 I; r9 g' }9 L2 G
  105. 向名称为key的hash中批量添加元素; {$ P7 i7 @& {5 h! c3 U

  106. 7 Z5 u4 ?6 J) Z, _; H8 I
  107. hMGet; \; `0 E' Q+ X7 O' I. `
  108. $redis->hmGet('h', array('field1', 'field2'));
    # S0 M. K0 a6 v  f% ]; X" u' L/ z
  109. 返回名称为h的hash中field1,field2对应的value9 H% t& ~/ `7 q# i% \  L6 ~. m
  110. . ^1 m5 |; P' J0 k& P4 ]2 q# a
  111. redis 操作相关
    ; ~7 L/ f" A, ?; x2 i% o4 i
  112. flushDB/ \3 [; E! ?* a3 K) [& r3 @
  113. 清空当前数据库
    ; v1 L% g- t6 U7 ]! h  U, e

  114. ) }$ G$ D8 o4 t1 c6 j
  115. flushAll
    8 \# y% `5 X. r$ ~
  116. 清空所有数据库
    % Z2 B% i9 n2 p9 f3 y
  117. * s* y4 P! J0 J# E4 V; h/ n
  118. randomKey5 l# e3 C! a0 J( |
  119. 随机返回key空间的一个key
    ) k  D! {( ~( ~* X# W* u
  120. $key = $redis->randomKey();
    1 I6 N, S) h( S" |2 j  L8 `7 i3 ~8 f

  121. 2 y3 j5 z/ G! \* H/ k# J
  122. select
    6 W" F. W# s  K
  123. 选择一个数据库2 E, H  J( m( i8 z& F% z+ Y9 c9 H
  124. move
    % A, k5 j4 W0 y2 W
  125. 转移一个key到另外一个数据库
    5 ?/ O) G. Q3 F
  126. $redis->select(0); // switch to DB 03 n! B" K8 E6 }- v/ q1 {5 ^
  127. $redis->set('x', '42'); // write 42 to x
    : F1 `- {! w3 ^. V: j9 C
  128. $redis->move('x', 1); // move to DB 1& _$ Y  L' c# K8 `* Y
  129. $redis->select(1); // switch to DB 1
    % k9 c1 q3 P% `/ h
  130. $redis->get('x'); // will return 42; s, ]& m9 v+ g" H9 J1 c5 n

  131. 5 v- l5 }! f: u& d8 @, c
  132. rename, renameKey1 l* T+ g- m9 b6 E( P
  133. 给key重命名
    ! o" ]( M* T0 M! S
  134. $redis->set('x', '42');
    1 o; B4 Q! _" S8 ~4 ^, u5 v
  135. $redis->rename('x', 'y');7 t2 ]0 v7 \) ^3 F1 o. `& t
  136. $redis->get('y'); // → 42* A# j* P3 p0 b
  137. $redis->get('x'); // → `FALSE`
    3 d' x8 M8 p/ o  w6 _% I/ a, p
  138. " o! |4 k. c! N* u) K2 n
  139. renameNx
    - ]( M. t$ W  e
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功8 x8 C. Q5 i  V/ H

  141. # s0 o& j' p( u/ I3 f7 P
  142. setTimeout, expire
    % K1 ]+ C1 o2 d2 k) }. e8 M
  143. 设定一个key的活动时间(s)- t( X$ P* i7 g( i* c, e
  144. $redis->setTimeout('x', 3);) N8 c* E( Q( k0 V
  145. % X+ ^! n# ?! _
  146. expireAt
    ) f% j' h: X& m3 g
  147. key存活到一个unix时间戳时间- ?6 J$ W4 e* X8 u7 N3 z
  148. $redis->expireAt('x', time() + 3);
    ' [' l2 A) p# H" }0 b
  149. 7 d7 C1 F$ ~, o1 t0 e; u
  150. keys, getKeys
    7 b* i7 |! @+ w8 Z! g
  151. 返回满足给定pattern的所有key" ^# {" I# y2 m0 _
  152. $keyWithUserPrefix = $redis->keys('user*');5 z6 s+ f) ?" R- h: P( d
  153. / p* p1 w3 @) f  p
  154. dbSize6 r' Q1 Y  }, `: t
  155. 查看现在数据库有多少key5 c8 A, t- y1 l* l' _
  156. $count = $redis->dbSize();
    7 |5 ~* O4 }5 J$ X/ D
  157. ) q. U3 a7 w- M0 }
  158. auth5 q4 z, ?8 {4 s( L8 U
  159. 密码认证
    $ _9 h9 r4 W5 e8 D$ ~& J2 l3 J; ^6 v
  160. $redis->auth('foobared');- D2 X' o' v* w- l* z4 x
  161. , k, U1 B, e  C3 E
  162. bgrewriteaof" C% Y: ~8 P, o+ o
  163. 使用aof来进行数据库持久化7 I$ }# ~" N' W  M" P
  164. $redis->bgrewriteaof();
    ! I' s) G3 `; Q$ J

  165. : H/ E0 }; x3 g( O) R
  166. slaveof% F3 N! J6 G3 A! c! E
  167. 选择从服务器1 D+ l/ H1 g9 Z; P7 i, R7 V
  168. $redis->slaveof('10.0.1.7', 6379);
    ; A, E$ `/ ~5 ]& r! @. B0 V
  169. 5 v1 I$ I. m. f- B. d9 n) H
  170. save2 w, z& |9 E0 C
  171. 将数据同步保存到磁盘  O  N1 p3 s8 E2 ^0 {

  172. ) w. D, S) D% o2 {- a6 N$ i7 k
  173. bgsave
    " z3 u9 W; ~5 o. {6 ~& c
  174. 将数据异步保存到磁盘
    0 t) W% n# a' \  ~$ a7 M  T4 B
  175. # M$ }. K7 Q+ h4 `, X1 d: I
  176. lastSave
    * A. k% Y1 Z' {/ u+ T6 b) K6 a* D
  177. 返回上次成功将数据保存到磁盘的Unix时戳- W% a5 V6 D0 F' ]* A8 q9 e& o
  178. 3 s5 k, S: {1 E1 ^) c! \
  179. info
    - ^/ l1 H& c( M
  180. 返回redis的版本信息等详情% O! F6 @& ~$ ~3 r) @3 B) L

  181. 4 r+ T% {  H9 ^9 b
  182. Redis::__construct构造函数
    8 C9 }; \, j6 h- A; ]/ t* T
  183. $redis = new Redis();8 s9 p  ]+ a9 F3 v+ |

  184. * t$ O, q1 U* D2 L/ p
  185. connect, open 链接redis服务
    6 O7 r% \' L6 v. {' v) N) T+ |$ B. c$ N
  186. 参数3 h" f* P/ j, K$ B
  187. host: string,服务地址; E3 T: ^9 ]6 Z: l# G' G6 r
  188. port: int,端口号0 g; @) _8 A/ R8 L5 J; p( o
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    2 [+ A7 b$ ~  l' K/ B  I9 A8 \
  190. 注: 在redis.conf中也有时间,默认为300, Q! q& |) O6 X' }6 S& y( T
  191. 7 L; T0 \/ I- q  E" p# d# C
  192. pconnect, popen 不会主动关闭的链接
    - j# j$ s2 @4 o7 |
  193. 参考上面
    8 r( H, A" C6 i- R1 g
  194. " n  v" @4 |2 G& h6 k
  195. setOption 设置redis模式
    ' T# `$ N0 o1 N* k

  196. 0 e0 o# S$ ]8 a( c+ z9 T& s! l& d6 f
  197. getOption 查看redis设置的模式6 U2 b5 j- _$ c3 G) M( o$ K1 F5 k

  198. 9 j6 t2 n' w& S% K3 H
  199. ping 查看连接状态5 I- D( N5 c" V

  200. ! V. [# X( v: k% i
  201. get 得到某个key的值(string值)
    6 m' p2 t6 i% [
  202. 如果该key不存在,return false
    ( b; E. \; {2 o, ?$ ^) Z

  203. 7 Y& e* `& K1 s( b) |2 E. D5 C0 z
  204. set 写入key 和 value(string值)+ C9 S7 C- f4 R# h1 v
  205. 如果写入成功,return ture' X/ V+ ^" s2 O; B; l' H# f. f! P2 K5 S

  206. ' F# y: ]. v8 W/ Q. K4 G
  207. setex 带生存时间的写入值
    ( Y  ~. g( F* I- l8 S0 k
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    , l* A& I  c$ R4 `1 P( I
  209. 5 L+ O1 }& h1 T% ^. u; }% P
  210. setnx 判断是否重复的,写入值% o# d! `3 s' ]6 E  G' R
  211. $redis->setnx('key', 'value');" x' p0 e7 ^/ z
  212. $redis->setnx('key', 'value');# \7 i9 k! Z- [  k  A
  213. 9 g# T5 C& n+ F: l$ H
  214. delete  删除指定key的值& L/ |( i( G/ K2 B+ C$ C
  215. 返回已经删除key的个数(长整数)9 O) V% ?  J/ a# b. ^+ S% b& ?1 O
  216. $redis->delete('key1', 'key2');
    1 J& \; v/ @' U. O
  217. $redis->delete(array('key3', 'key4', 'key5'));9 H9 l) d( I) h5 ~* g) W
  218. % m5 }( z/ r( y
  219. ttl
    7 j; Y' o4 I1 p- h" R
  220. 得到一个key的生存时间" i" L! g2 c% a8 |9 z  C  t9 b

  221. # |  \; U# F3 W' x3 P
  222. persist
    ( L" A4 ^0 O0 [, W( j( p
  223. 移除生存时间到期的key/ k, v4 d. V/ L% c
  224. 如果key到期 true 如果不到期 false
    7 y+ i6 W6 H  }
  225. ' ~( A3 k! R5 u9 A# ]
  226. mset (redis版本1.1以上才可以用)
    + f5 F$ e5 P3 W& Q  Z7 E- |6 p4 ^3 a
  227. 同时给多个key赋值4 o, v" Q* g4 h( H/ t6 |
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));' c2 c6 g$ n% c+ b

  229. " X& D1 s) I, N/ C9 j

  230. 8 a3 \  H/ T4 A+ ]6 X
  231. ; @6 n, N: T4 i& I4 [4 t5 l, W
  232. multi, exec, discard# e; Y* y3 l8 `9 R7 b0 q( C& h
  233. 进入或者退出事务模式  s' l$ l" b* s  ^( O
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI( T. E, Q! ]* o$ ?3 s; |& H& L
  235. Redis::MULTI:将多个操作当成一个事务执行( h% V7 ~' b. U  K0 C
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证0 {, g% F  m- w: g7 M
  237. discard:删除一个事务# n% n. x. S* f5 \4 h/ J
  238. 返回值2 D) e- K0 F" O9 w/ ?' y3 ~/ k( ?
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。3 w6 r: g9 m% F' D5 h
  240. 8 [: H8 o5 v# e# F/ k
  241. watch, unwatch (代码测试后,不能达到所说的效果)& ?+ D$ _( U4 H; c9 c( Z
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)5 M7 }! a' c( [) I# @3 m' J
  243. unwatch  取消被这个程序监测的所有key
    + M$ Z+ x: u8 j7 R% {* k" x' H
  244. 参数,一对key的列表3 p: a$ X. E1 j1 i
  245. $redis->watch('x');
    * j( r$ h! ~( W) ^% ^

  246. : |* B! }, x3 N8 n1 v9 J  n
  247. $ret = $redis->multi() ->incr('x') ->exec();! m' v/ @5 w- ^0 o( e
  248. 3 V6 a: V5 z9 l8 G$ [& @+ G
  249. 3 ^: p4 S* i/ j( d& ^" k* T
  250. subscribe *
    7 i# M+ u1 M/ c/ G. u2 Q6 U
  251. 方法回调。注意,该方法可能在未来里发生改变( f6 @8 m) ]* t' B3 X

  252. 4 ]" \" X9 z6 o8 X' G' ]1 @
  253. publish *% F% D; H# s: L* w" {* ~' E
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    7 M. F8 _( P, O0 y/ V, h
  255. 9 t- ~6 {" U! r, a
  256. exists
    6 g6 h0 c* w4 n3 y) @9 L6 c
  257. 判断key是否存在。存在 true 不在 false! W# L4 ?3 M- K5 e

  258. ! T6 c. O* S' J( w& c# a3 s2 C
  259. incr, incrBy
    1 m! I# _/ V# o" r
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值& Z) M* \4 D8 @! Q& a: @( S
  261. $redis->incr('key1');
    ' X7 Z4 e7 U! {9 o: Z* N$ [
  262. $redis->incrBy('key1', 10);4 h- R0 ^1 d; o5 W, ^% b, u

  263. + H( U9 ^9 N3 G6 A0 K# \! N( W0 A* J; ]
  264. decr, decrBy* ^6 H. u- A: f) q. b0 X
  265. 做减法,使用方法同incr* S- G: I3 f" \+ k' x$ A. p9 }$ b% }

  266. $ t. n  x* X5 I5 @' m, Q  X
  267. getMultiple6 b* q/ Z6 B1 z# B% Q
  268. 传参
    ' [- c/ p; A! c) h: k
  269. 由key组成的数组5 i& z  c) U$ f9 F4 q6 m% C1 |
  270. 返回参数2 I& q. d) W, U" {/ }7 M8 y
  271. 如果key存在返回value,不存在返回false  m5 ~8 n6 ^+ v8 x4 m0 _7 r; w
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    : w% ]7 b. [6 g4 D. N4 ?  r
  273. $redis->lRem('key1', 'A', 2);0 J6 @5 T# ?3 p' s" b7 M. j
  274. $redis->lRange('key1', 0, -1);
    0 d& w" b, F. Y0 E, Y

  275. 2 l3 l2 V' a: _  i  ?
  276. list相关操作
    , N8 y1 G  e% \0 ^+ I( v% d# [* r1 `
  277. lPush: E+ x% g/ N, l+ i; ]/ x6 S
  278. $redis->lPush(key, value);
    % ]/ p6 X9 ?8 _1 V
  279. 在名称为key的list左边(头)添加一个值为value的 元素' [% _5 \& r! q$ O
  280. / ?6 W/ M. k, i8 J6 s' ~3 l3 Z
  281. rPush0 e( ^* A) r6 Z  G* \9 _" ~* ~) ]
  282. $redis->rPush(key, value);
      u8 J$ w1 a( k& D, Q$ R
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    $ O; M  W; q# e4 g9 P: {

  284. % O! q/ c; I" X/ K, s
  285. lPushx/rPushx
    6 f+ b4 d5 U4 H
  286. $redis->lPushx(key, value);% \4 u8 A2 M% c. [
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    ) [  _' ^8 Q' t1 S- ?
  288. # h- j' {% y4 e, G2 D- P/ _" w
  289. lPop/rPop! B" V" k* }& n  j5 n
  290. $redis->lPop('key');9 x  T/ g( _* u- x6 S6 C
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    ! X2 w. }0 L/ W( X0 x6 ?9 a! o

  292. 8 V0 W, h+ k% Q% \
  293. blPop/brPop
    # Q/ r+ R5 s  {6 R& S
  294. $redis->blPop('key1', 'key2', 10);1 Q% R, a# O& r. A0 `! l
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作% ?5 L5 Q' e+ O! f: s" C! Z
  296. , i# K0 u- ]; a) e5 a: k
  297. lSize) k( c& d5 `5 T8 t
  298. $redis->lSize('key');4 R8 E5 |2 [$ J5 J: H
  299. 返回名称为key的list有多少个元素
    4 ]+ O6 K# v3 x: J4 b* G  f* c8 a

  300. # o0 P! E* I0 q/ C' A! _- h
  301. lIndex, lGet) o3 ]: W' i$ |. F3 M
  302. $redis->lGet('key', 0);
    * ~" F* A* R, M) B# m
  303. 返回名称为key的list中index位置的元素! t; A8 z) t9 Z9 C! I, U+ b, \

  304. + A8 z$ h" X* }  @: ~5 U
  305. lSet
    9 Z0 R" K  Q3 |7 _- F
  306. $redis->lSet('key', 0, 'X');
    ! s; X1 ^" C5 Z2 V- j
  307. 给名称为key的list中index位置的元素赋值为value+ {! l7 G2 {1 R; n. H

  308. # v2 M8 @. u0 Z. D% r' u
  309. lRange, lGetRange$ q0 T7 t6 r2 j' X* N' J
  310. $redis->lRange('key1', 0, -1);$ ]) B" K0 U4 ], b) \% n) I
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)- M8 @$ e$ ]: g2 ^  w
  312. 6 J7 I5 g, O* C$ j5 `
  313. lTrim, listTrim
    * m+ I( a) E' I5 H
  314. $redis->lTrim('key', start, end);
    6 V/ }8 L& ?" u* C
  315. 截取名称为key的list,保留start至end之间的元素
    $ ~- X6 j% ]( v1 [0 T

  316. . N1 {) Y5 ?; r2 R/ d% j
  317. lRem, lRemove
    $ i  A- \4 Y1 D% p2 R; H5 v
  318. $redis->lRem('key', 'A', 2);$ V/ K* _7 a/ T7 K
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素4 c1 S; k6 W* [8 x1 M

  320. ! K1 B& k! q9 `0 h$ n6 E  Q1 ^' l
  321. lInsert: }# p3 `0 T1 V9 f* b
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ; B7 T# X* N( \, `4 S: S4 n9 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');1 M2 ^/ I% l1 E& ?, ^( H
  324. $redis->lRange('key1', 0, -1);
    " r$ J* B" I, y( A( L- C9 k" l
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
      T  o, z/ _9 ~% U3 L
  326. $redis->lRange('key1', 0, -1);
    # D2 u. C  e% {* u/ Y, e+ [
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');8 w3 t$ h3 X, T! u
  328. " i6 d1 S( G% B' s7 A6 d' ?/ G
  329. rpoplpush
    % G0 Z: @' o9 m7 z* o9 q; x
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部% V% G% w$ n* i( n. Y- }9 N5 K
  331. $redis->delete('x', 'y');
    3 f/ Q( D9 h" `! L$ N
  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'));
    ! B7 s, h' S3 P% C. A9 i
  333. var_dump($redis->lRange('x', 0, -1));
    % q+ Z% F) D  u' h- V9 t
  334. var_dump($redis->lRange('y', 0, -1)); / f  S5 d* u' i7 q. r& B2 U
  335. $ u0 C, v$ K7 h2 ]4 m2 Y
  336. string(3) "abc"
    4 d9 d1 e; T/ u1 H+ I
  337. array(1) { [0]=> string(3) "def" } 3 p+ j3 C" U% Z7 P4 N7 @
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    + Z7 l7 Q0 P% h- |3 ]( _+ w+ l1 e5 ]

  339. ) l9 W3 D6 w. B
  340. SET操作相关
    & [. o; X) i" k- q
  341. sAdd9 |- M" t  G' v1 Z# F% \; @0 h- M+ Z
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false! v( t. w1 l0 \% O$ v4 s
  343. $redis->sAdd(key , value);! p0 c) G% Z7 E5 v! Y  G, [
  344. 2 d4 I, }! \+ y" Z( {& r# P/ e1 O' c
  345. sRem, sRemove
    & g& `  b6 @1 w% K& I$ g
  346. 删除名称为key的set中的元素value* P. G$ i# P# ]& k6 @
  347. $redis->sAdd('key1' , 'set1');
    ' l) ?9 \$ ~3 j! O5 o5 W5 ^
  348. $redis->sAdd('key1' , 'set2');# g: J7 @8 T* F) D8 f; b# B
  349. $redis->sAdd('key1' , 'set3');5 p: I' ]% O, u; a: a4 [
  350. $redis->sRem('key1', 'set2');
    , ?; Z2 b/ o# b+ ]  R+ g
  351. , B1 _* q' s6 M( Q. k, q
  352. sMove
    2 o; W; Q, w2 \1 o; e) B& x) Z' R% B
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合2 z3 J- X) w/ E
  354. $redis->sMove(seckey, dstkey, value);
    " b+ c" b  f9 r$ a! u8 L& \
  355. # }  F9 Q7 R: ^2 N; Q4 j
  356. sIsMember, sContains) g) U0 w( _# [8 n2 X2 s( s
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false0 b# n; |. c, `  @! L4 \# R* N
  358. $redis->sIsMember(key, value);
    7 _8 U9 W& ^5 R6 V1 B: N1 i  B
  359. * @4 t" x/ e9 K0 l* o
  360. sCard, sSize
    4 z3 |. [2 |/ h
  361. 返回名称为key的set的元素个数. G' j  D6 ]8 |9 w6 P. ^/ ?
  362. - b) p4 ~0 A0 |& _6 a3 C. B
  363. sPop
    " a" ^1 ]% ^7 T8 X6 B
  364. 随机返回并删除名称为key的set中一个元素) Y" u! q/ y2 |
  365. 2 E! B/ i$ K# C
  366. sRandMember- h' w' O6 t; W6 d
  367. 随机返回名称为key的set中一个元素,不删除
    9 U: V+ D, x! S

  368. 2 Q: Z& m3 y" j" Y, {: U6 s, L
  369. sInter
    7 J/ ~$ e' G, Q7 I
  370. 求交集% q  _5 K' Q' I8 R
  371. 5 Z4 i& c, O, ~5 _8 T' `
  372. sInterStore
    3 k2 t. ~/ X. @! \; G
  373. 求交集并将交集保存到output的集合; V2 R0 Q- ?8 J+ S
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')" W% ^5 ?9 f! X( K* A* {

  375. - y7 R$ k% b2 D5 V3 M( `0 n7 d4 Z
  376. sUnion
    . W7 s' X8 P; v3 {+ A
  377. 求并集
    - A+ {& U$ I) S9 ]3 r" M: m
  378. $redis->sUnion('s0', 's1', 's2');/ E3 v: r) W# P2 a
  379. s0,s1,s2 同时求并集
    - c8 R6 R- e& k, M* }1 g' V
  380.   H% h6 \  }. l" ]9 Y2 @2 O
  381. sUnionStore9 p& J" H" [9 O% N9 q; ^
  382. 求并集并将并集保存到output的集合, x/ w- n( N' p# [$ r  [# ~& x) K
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    5 q% G/ S; s/ f: o$ f

  384. . a0 w6 S9 p( y6 E9 `
  385. sDiff
    4 U6 L* r4 u( P! D/ W
  386. 求差集
    9 h8 }# Y0 q/ M: p: E2 y

  387. " n; M: r8 R. C+ h; k% ?
  388. sDiffStore
    3 h: g/ b' G- f
  389. 求差集并将差集保存到output的集合
    % Q9 U2 ?; s: C0 Z) T
  390. " `9 U+ m) T- d0 ]' L% X+ H, G
  391. sMembers, sGetMembers3 d0 x4 {9 j8 D! v! i
  392. 返回名称为key的set的所有元素6 v2 u4 ^& i7 I7 Y! Z3 n% Z. h1 s

  393. - f7 C9 V% j& E; g1 W
  394. sort; B* I" B; w8 o' q
  395. 排序,分页等
    6 e1 S" `8 o) ]* w$ O. Z  q
  396. 参数
    / Q: @5 t& {3 G
  397. 'by' => 'some_pattern_*',* i8 n% D" t1 a/ N8 R3 Q
  398. 'limit' => array(0, 1),
    ( H2 Y3 ?. ^" Y+ f9 [: s2 q" j; t
  399. 'get' => 'some_other_pattern_*' or an array of patterns,0 R) T4 w! e* A3 D0 x; n  O
  400. 'sort' => 'asc' or 'desc',
    9 C: K! d' e6 E) @2 Y/ }' u$ R9 H
  401. 'alpha' => TRUE,1 \& _, C9 }0 M# F8 X, E$ V
  402. 'store' => 'external-key'4 ~! U+ [  ^. k6 ]
  403. 例子
    7 ^# h. N8 s. M' l1 p
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);/ T; @( e$ p- r1 R8 C3 l2 F! L
  405. var_dump($redis->sort('s')); // 1,2,3,4,5+ @' ^) q7 c0 t6 b6 A
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1& ?/ j0 N5 b, @! X
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    " l. s4 V( n1 _' t7 Z4 u
  408. + k8 s5 u% l' s0 [2 e' p+ `
  409. string命令
    % x0 \5 J0 V: e. N) v& A: f
  410. getSet4 _  q5 v& B: x8 ?
  411. 返回原来key中的值,并将value写入key
    - t4 L. B, X7 e- F7 |
  412. $redis->set('x', '42');) h' \. r: H+ r& [* q
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
      K6 t' e, m' k, J' u2 A
  414. $newValue = $redis->get('x')' // return 'lol'3 c# E9 m0 T% L4 a* v/ Y2 [
  415. 3 ~5 G/ f% _7 W6 O
  416. append
    , w# a! Z& X. _4 u9 e+ W2 n; l
  417. string,名称为key的string的值在后面加上value
    & }4 _$ G6 S: _) r- c: v
  418. $redis->set('key', 'value1');( T, C$ c6 S% k9 p
  419. $redis->append('key', 'value2');
    & k; j+ D+ x' X- H- y6 V" X* O  P
  420. $redis->get('key');1 o4 |4 w- F3 S! K4 Y7 i+ U* O# W

  421. 5 W# Q3 q; W, |& S5 F: B
  422. getRange (方法不存在)
    / ?4 J2 x4 a3 r; F4 @3 h
  423. 返回名称为key的string中start至end之间的字符, G7 V/ A% i& M
  424. $redis->set('key', 'string value');+ I' T) @1 G' [" G
  425. $redis->getRange('key', 0, 5);: S1 u: ~" |- Y
  426. $redis->getRange('key', -5, -1);4 k: k) M* p7 H1 p' f
  427. 1 [  K% U( Z" i: G
  428. setRange (方法不存在)# q) d7 ?0 ]& M2 t! v' T5 W
  429. 改变key的string中start至end之间的字符为value6 l- @& y* ?* _0 t
  430. $redis->set('key', 'Hello world');$ n* w4 r( [5 R4 A7 H: j& \2 a1 Q/ ?
  431. $redis->setRange('key', 6, "redis");/ ^& u% Z6 F0 P2 ?+ }% f
  432. $redis->get('key');
    6 X; ~. i7 j% M' B( U! Y
  433.   K( H; Z$ k: {0 Q
  434. strlen
      h9 A2 O" H. s! L
  435. 得到key的string的长度
    + R% {( F8 q& d
  436. $redis->strlen('key');- @  B- |( f! f- M* |

  437. 9 R2 u- A. S9 c. p: I8 v
  438. getBit/setBit  F# I4 @  ]* M. y0 C- B
  439. 返回2进制信息
    : W5 L6 z/ C3 u" R- l: [  E8 R- v
  440. , k) X$ f, p, \5 h# n1 c
  441. zset(sorted set)操作相关) x/ K' G' ?1 o# F
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    * T. S6 _/ A5 ~( W# h0 _8 d! s
  443. $redis->zAdd('key', 1, 'val1');+ D. `$ J2 `' Z/ y1 J
  444. $redis->zAdd('key', 0, 'val0');
    0 K2 x3 D7 E  v- J8 a5 L
  445. $redis->zAdd('key', 5, 'val5');. t  @, \8 v; L9 m4 \3 K0 u
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    # ?1 x( \$ L' T6 E
  447.   F1 g3 i* n* K) I
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素; z# }; G* N, i/ W2 i
  449. $redis->zAdd('key1', 0, 'val0');
    # \& P' e/ ^9 H1 p& ]) o! G) P6 ^
  450. $redis->zAdd('key1', 2, 'val2');
    ; ~/ u: v% J* S* k# w
  451. $redis->zAdd('key1', 10, 'val10');# v+ c3 x% p5 D; B- A
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    - V( o- E6 Q3 u5 j

  453. % o  }' m8 {: G+ B* q% t; q' x# I
  454. zDelete, zRem' b) V8 U6 l& N" B, Z
  455. zRem(key, member) :删除名称为key的zset中的元素member8 p. n) E3 [) \1 n
  456. $redis->zAdd('key', 0, 'val0');" G- N5 y% c/ t( M/ ]5 g
  457. $redis->zAdd('key', 2, 'val2');, O* l; x9 ^0 \- |+ R' n! n
  458. $redis->zAdd('key', 10, 'val10');
    + H1 c; {1 G6 e6 H
  459. $redis->zDelete('key', 'val2');8 L4 ^2 s& H0 P
  460. $redis->zRange('key', 0, -1);
    3 I6 X; ]6 S" `  h: P" [

  461. ; i: F3 Q1 b2 r' B$ y# @) [
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    ( ?8 A' I: t! ^- m7 M. j2 |
  463. $redis->zAdd('key', 0, 'val0');( y) j8 K$ n2 z7 H
  464. $redis->zAdd('key', 2, 'val2');
    * ~& Z& e( ]2 G5 \9 q' W* `+ q; f! `! e
  465. $redis->zAdd('key', 10, 'val10');
      s- r; n! F$ ^
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);( T  C* g7 f  c$ ]) P8 c3 E5 y
  467. ) v; e6 s, ?9 D8 C, v
  468. zRangeByScore, zRevRangeByScore. J( m7 }( [9 }9 |/ Z4 o
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    8 x' b) o, I% @9 O+ ?( p6 ~7 G+ u
  470. 返回名称为key的zset中score >= star且score <= end的所有元素- l8 V1 \3 z3 a4 l
  471. ) p7 L- m, m0 {9 b
  472. zCount0 q- P5 i+ h1 H: M% s* h6 O; u
  473. $redis->zCount(key, star, end);" ~0 q  w' V0 `, e
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数2 m$ S- N  l; o4 e2 s2 P9 ]

  475. ' C' ~7 D" C$ C  B3 N* v
  476. zRemRangeByScore, zDeleteRangeByScore
    - ?- |0 t: [; u  u- O9 }
  477. $redis->zRemRangeByScore('key', star, end);& H$ w+ c( G; B7 L/ v* Y
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数# O7 D0 \! \  B5 f, M

  479. 5 ?! _8 A( j; ~! p& Y9 V: U3 B" m! J
  480. zSize, zCard# _3 _- @! ~; z$ S- ~
  481. 返回名称为key的zset的所有元素的个数
    " o! f4 D+ G8 B" G
  482. % `! o& r( h( O0 J! U
  483. zScore7 i+ `9 j3 f9 p  c& ?+ a7 Z
  484. $redis->zScore(key, val2);6 g; m( O2 {( C- l$ c% r& a: [3 [
  485. 返回名称为key的zset中元素val2的score
    6 ^  u: h5 b" d" P! p, ?$ K

  486. . N( L; n: N! W
  487. zRank, zRevRank
    8 A( |$ w6 o& k$ j
  488. $redis->zRevRank(key, val);
    0 I' H5 ~& W, A4 R
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序+ t* y% v2 l9 G2 M
  490. ; I/ G+ V3 p; s1 n2 v
  491. zIncrBy
    & K0 p# R  x2 h1 `
  492. $redis->zIncrBy('key', increment, 'member');
    ( @' G7 ]/ l: F% u$ r% i
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment! z4 @5 @+ _  I0 w* Q/ \7 y; J' r

  494. 1 w1 H5 O% r( O% w! _# e
  495. zUnion/zInter1 [, U" s6 h/ @' q
  496. 参数
    + s& K! X" J# c
  497. keyOutput" l8 K7 j9 H) G
  498. arrayZSetKeys0 p4 W" M; A& X8 P; y2 d' ^
  499. arrayWeights$ K; ]" H+ e. x' h
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    ) Y  q' \  L9 g% K, k: H4 q
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。( {/ U, l, f5 I3 r3 T9 q: i
复制代码

0 v; N; g  Q6 V5 @6 Q& W) _3 s" x% v+ b

( I- _+ z- e9 K* |+ K8 K
2 v, {6 M- |3 L7 T: U8 }0 C) Z* D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    + F; _' i3 M6 ^& k! V" u; N
  2. //连接redis服务器 ) x$ |7 @9 `4 ]2 ]6 y* z4 W# u
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-3-16 19:02 , Processed in 0.058299 second(s), 19 queries .

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