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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php! D  S0 @7 a5 }
  2. $redis = new Redis();  
    3 B+ E0 K+ Q# A# l# W6 N, E/ z
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    & t- X" L! g% G1 I
  4. $redis->auth('mypassword');//my redis password
    8 k! i" e4 C$ A6 q
  5. $redis ->set( "test" , "Hello World");  
    0 s5 u$ L6 g' M7 X! }+ Y  y8 c+ E) }
  6. echo $redis ->get( "test");
    9 C  H; z" x. E- K# u/ d
复制代码
php操作redis函数封装
  1. /*** a5 M) f$ G/ t# R* \; B. e
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    3 M$ ^6 P: A% o8 F5 j% V
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    6 b8 j- h/ t6 i2 K+ X: P  ]
  4. *// H5 p! M# `- o& J- J5 Q
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){5 V2 @( G: x# P% S& U% o/ `
  6.     if(!$key||!$value) return false;- `$ \9 c0 {# l- s* b8 p- d; ~: T- W
  7.     $host = $host?$host:getenv('REDIS_HOST');, S/ U! {' z$ C, ?* L
  8.     $port = $port?$port:getenv('REDIS_PORT');1 o  c1 n8 A4 w  D! E  _
  9.     $redis = new Redis();' F7 Y- t  ]& X$ H! z
  10.     $redis->connect($host, $port);# [1 n( m7 ~* W9 J$ B1 P, k
  11.     $value = is_array($value)?json_encode($value):$value;% F. V! f5 n& W) L. Y+ C$ ^1 r
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);: b4 O+ S  W: c4 q$ ~/ C6 B" L
  13. }! X& `2 \7 G4 t; ]! U; n( K  R
  14. /**, c0 t2 D6 A- {& _
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi% m2 D7 l  c; K, ?8 k* D: F
  16. */
    4 `: O! p! v. @% M( t! ~0 X
  17. function RedisGet($key,$host='',$port=''){
    * R, D2 b, V; f! R$ t9 k# B
  18.     $redis = new Redis();' @8 P9 U& F0 c# W& X1 f
  19.     $host = $host?$host:getenv('REDIS_HOST');
    1 {4 z8 l9 G- q5 i1 e7 e7 h* \
  20.     $port = $port?$port:getenv('REDIS_PORT');
    2 P. L- `9 ^* G7 s' `5 w
  21.     $redis->connect($host, $port);8 |* d- y. q% E& o7 z, B1 B; R9 i( L+ D3 G
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);! a2 k' U8 P/ \
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    / x1 E# Y9 c1 q
  24. }
    6 i' c7 l* x* C; E3 p" K- A
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
: h4 f6 @/ E8 z/ ?( v4 T+ \" h
  1. setex 带生存时间的写入值
    ; ~+ H% H1 l8 O2 f! m
  2. $redis->setex('key', 3600, 'value'); . I% d7 L' S4 K- n
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    . ?# B  N3 ^1 ?4 m' a% n
  4. $redis->setnx('key', 'value');, @3 K) h8 v& G- D
  5. 返回已经删除key
    + C9 t$ D1 r! Q- i+ X; M( b
  6. $redis->delete('key1'); 成功返回1失败返回0
    ( T' A, J% i: i% F
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0, q3 g1 M5 P( f
  8. 查询生存时间
    ( Z# m9 I/ T& z. ]
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    8 Q+ d" p4 v0 t! L4 T) i' i  x6 n8 I
  10. 同时给多个key赋值,同时设置key0和key1
    1 s" ^# y7 o' |; H& H' s# S9 S3 d5 [
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    1 u& M3 J7 X4 t. d3 _, K
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    ; j; O' \0 l; Z' o4 k! q
  13. $redis->incr('key1');
    * Y* ^2 J  N% v' t) m
  14. $redis->incrBy('key1', 10);
    - N! w- |8 j/ k6 V8 K& f+ y# j
  15. 减法跟加法一样
    . z7 M+ R, u8 o4 G1 Z
  16. $redis->decr("key1"); 减少1
    $ r6 g+ Z1 I4 R
  17. $redis->decrBy("key1",5) 减少5
    5 |. P- ~7 w/ t# i6 P
  18. ! P, T' U5 Q3 z' D! u+ h
  19. list相关操作,连表操作
    . D6 i5 k1 E3 [( {+ u9 {
  20. lPush
    8 G3 b& t. H/ v1 c' _
  21. $redis->lPush("list", "888");* V6 ?% [8 k# N  m( `: ]
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    ( D+ ^  ~: @- N0 i9 M, v
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    ; {$ X. `0 A  g$ B% N; ], W% p. w
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素! _$ n2 j, ^# ]  [
  25. lPushx/rPushx5 J. Q% P( |5 j4 Q
  26. $redis->lPushx(key, value);5 b$ m! O- K/ R& q1 E
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加7 e) G& v9 M3 v

  28. % O; d( a8 o+ i( E. a. T3 S
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key% e6 ?! F( N. A% `' S; P
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key
    / X8 G  O" a  w1 d. Y* m. V
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    2 A* w( l$ Q' x% G) i9 g
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序  A+ n0 U" M! \4 x& c
  33. sadd s1 zhangsan! N* Q9 I  \7 b6 |/ _5 J0 a3 s
  34. sadd s1 lisi
    , y+ D. \4 U. q4 r* U
  35. sadd s1 wangwu
      ^! S+ f" U& V1 I# r, a* i
  36. sadd t1 yangxingyi
    / o) J9 D- d' j: d" _9 Q( q" k
  37. sadd t1 lilei
    8 O/ g8 G. n. Z& ]
  38. sadd t1 zhangsan
    + {. o0 r4 P! S2 V4 S6 [* k0 m; ~( m
  39. smembers s1 s1的所有集合内容$ ^" o( r& G: d* Z+ S; w
  40. sdiff s1 t1 s1有的,t1没有的,差集& O! M% G5 P1 K) d  ~0 E- ]
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    ; t4 g) s6 b: Q( i+ b' t) ?. `  e
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ( E/ K* n- y: ?! J
  43. spop抽奖场景,返回集合里面随机的数
    6 D# |6 k7 c( q& M
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了% e4 K+ \/ `  B! ?2 N7 F
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数4 ^. J( u/ f7 p$ A
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    1 ~" a, r* ]3 l1 H/ w0 n% T$ S
  47. 随机返回集合里面的一个元素,但不删除,重复中奖( [$ T3 Z6 T! k0 t6 i4 h6 |
  48. $i = $redis->srandmember('s1');echo $i;9 L& l+ I2 g9 u
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false# V& T! U4 @5 X- d7 c) p* v/ N
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    , O) h8 Q8 S3 b' T. s$ K

  51. / c$ ^% k+ R' w& f
  52. zadd key 2 value 有序集合
    ( d1 v( x1 r* C- j
  53. zadd y1 1 zhangsan;
    + I  H0 {$ D0 B3 h+ j
  54. zadd y1 3 lisi;  W8 q+ @5 h- ?2 D. N- M, p
  55. zadd y1 2 wangwu;
    0 P; M- R) j- R: G9 p& G! i
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi: }. w& ?" Z( Y7 {4 z
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);3 W8 h) A6 w4 f; x
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键
    ' ]* U2 ?- v  c: x0 Y0 s2 ^) U. @$ H
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    $ Z7 ]: Y+ H) I" {5 A. f3 K! }8 v
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的* s- N5 {* U2 Y
  61. 无序就scard,有序就zcard,有z没有s* k- l* o1 X, v# z& [0 t
  62. sInterStore
    . k& R3 h) g& w- A9 N" H3 ~" N
  63. 求交集并将交集保存到output的集合( V+ i3 O1 K* |5 D) [
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    & @, I. \' l* u7 ~1 L
  65. 9 w# H. o; S9 q$ j: j, s2 Z
  66. Hash操作. x; U# R1 P0 L! T
  67. hSet' Q( N1 Z/ g% `* G  i
  68. $redis->hSet('h', 'key1', 'hello');0 F% h; h9 j  A& q' p
  69. 向名称为h的hash中添加元素key1—>hello
    * f# {) _3 c2 d) u! [; |
  70. $ l9 j9 J; N* x; L. L7 G
  71. hGet; ~8 y1 {9 g$ }) D
  72. $redis->hGet('h', 'key1');$ [) P/ `' M4 ]4 {
  73. 返回名称为h的hash中key1对应的value(hello)1 X0 b! O3 w. @. r; J
  74. 2 f3 M! \: ~) U) o
  75. hLen
    4 s; [" U/ g- J' p9 e6 v( V
  76. $redis->hLen('h');% ^7 M9 V* o! c% a7 i5 r
  77. 返回名称为h的hash中元素个数
    , M, S/ r. @% Z' \1 l% i* L
  78. 4 ~& ?+ B% f9 L* d; G# h$ [
  79. hDel
    ( D0 T) ?3 t% O
  80. $redis->hDel('h', 'key1');
    8 @# C4 e/ o, ~# W' e
  81. 删除名称为h的hash中键为key1的域
    3 @# c+ f- V: {$ I
  82. $ t; i* G" O# G6 p6 b" q1 }
  83. hKeys. d- f3 w6 [2 b; G- y7 G7 J" W8 i
  84. $redis->hKeys('h');. {1 {% @/ ]7 Z0 k. I; u& }6 ~
  85. 返回名称为key的hash中所有键* d2 M0 o3 ~$ _- _% ?
  86. + ?0 t6 F  C* H/ ?& P
  87. hVals
    4 k# D) o$ X: P" ^0 A
  88. $redis->hVals('h'); ^& i. k( j/ b6 I
  89. 返回名称为h的hash中所有键对应的value
    6 O7 K' W) u6 V

  90. 2 j* J! Y. s5 v# x0 l; b
  91. hGetAll
    9 _2 S: N, a6 a( ?8 q6 D
  92. $redis->hGetAll('h');
    7 P' y% C# R; L7 i
  93. 返回名称为h的hash中所有的键(field)及其对应的value# O  V2 A# s& ?$ N* v/ A- r9 n

  94. 7 a+ O) J+ W6 s% ?, s3 O
  95. hExists
    3 T2 M9 F( W: A: ^# |' ?3 v  ]
  96. $redis->hExists('h', 'a');0 @' j. I8 N* y
  97. 名称为h的hash中是否存在键名字为a的域
    . H- j. s5 b( k  |5 Z5 F

  98. 8 i+ Q. _6 k" x$ A. r1 {
  99. hIncrBy5 O. O7 g6 c9 w, J+ u8 |0 Q; w
  100. $redis->hIncrBy('h', 'x', 2);/ Y" Z# r. V9 h  a
  101. 将名称为h的hash中x的value增加2( w2 y1 z1 }/ d# j8 h8 V, H; m
  102. 7 `  o, a4 x% Z- F% O  j5 ~5 g
  103. hMset
    # z2 Z0 _; H9 a: |
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ! [' I. j9 o! F2 j
  105. 向名称为key的hash中批量添加元素% z4 C. `5 h2 B, ?+ {# d( V. t, r
  106.   U5 Y) P7 R  f7 w( r5 k
  107. hMGet
    & u6 D2 ^' Y$ a2 G/ N4 H. t
  108. $redis->hmGet('h', array('field1', 'field2'));8 @# q6 ~  I  D- d
  109. 返回名称为h的hash中field1,field2对应的value
    4 \/ ]& M$ S8 c6 a

  110. 5 d0 e( @: g  _6 t" _
  111. redis 操作相关
      O: W/ j& m% B' `/ }. w
  112. flushDB2 D5 I4 \: ]% d# a0 v
  113. 清空当前数据库' U% M3 x( k# f, j# k% q

  114. # P% u3 g; \9 i
  115. flushAll
    + k$ y# z# Q* F
  116. 清空所有数据库* g* g( u, K7 w( Q/ |' I

  117. & ]3 N' \2 g: e% j% \- @
  118. randomKey/ u, n( j5 E' P1 W
  119. 随机返回key空间的一个key4 N* A0 W( [) I" V
  120. $key = $redis->randomKey();
    $ D' m$ M3 Y  ~" M

  121. : i- e' |" s, Q, r2 h, W7 C
  122. select
    . m# D; ?7 k4 c6 @7 g
  123. 选择一个数据库& n# ]2 [3 t" s. M* {- x
  124. move9 y+ ?, i2 H* O9 Q* {! u
  125. 转移一个key到另外一个数据库
      |5 w) _& g# v8 r- K
  126. $redis->select(0); // switch to DB 0' r3 w9 u8 d9 W6 k* b  k$ ]
  127. $redis->set('x', '42'); // write 42 to x8 _: S. G* D: N. h9 p4 ^) b- p
  128. $redis->move('x', 1); // move to DB 1
    1 S1 s* U( W% Z8 D& g
  129. $redis->select(1); // switch to DB 1
    ; Q, d& Y% |) v9 j: \; O
  130. $redis->get('x'); // will return 426 Y: d: F$ r& Q+ c6 M3 ]
  131. 4 m' B6 C  I7 t; Q2 i7 k
  132. rename, renameKey9 u) ]! p1 w2 s" a
  133. 给key重命名
    ' m6 K9 |" J2 {6 L* N
  134. $redis->set('x', '42');4 d% M- I' J( ^
  135. $redis->rename('x', 'y');7 v: p9 \3 @, |( F
  136. $redis->get('y'); // → 426 H9 O+ T" A6 p' [7 t: b0 V$ R
  137. $redis->get('x'); // → `FALSE`# _! ~2 C  F+ @6 H/ x

  138. " I% S* l: A( o% u  Y6 C+ {+ E$ d
  139. renameNx
      u! z# h* m9 ~! Q8 B! l
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功4 W2 p; E' C' p9 p0 V- Q
  141. ( m8 r# B! r: n7 @% A) ]
  142. setTimeout, expire
    ! U3 P, S; c0 N8 T# D. s; S+ ~
  143. 设定一个key的活动时间(s)
    $ r' @* s" M: e( O4 }  u# [0 }8 `
  144. $redis->setTimeout('x', 3);
    . x" a* }* c7 ]6 e$ y& S+ v  K8 R
  145. ' q1 V. T. I- I9 U8 c% I! w+ u; P+ X
  146. expireAt
    5 D- {) G: T# t6 j' ]$ S3 w5 x1 B1 w
  147. key存活到一个unix时间戳时间
    ) v9 O. e3 }: b2 x+ T
  148. $redis->expireAt('x', time() + 3);
    ; Q' M5 A) U1 x! S& ~1 a
  149. ' [5 c% y9 G' O$ j  T  T. ?
  150. keys, getKeys
    3 F  Z4 U6 l3 ~, `- n
  151. 返回满足给定pattern的所有key) O$ @  |. P' k. w$ z; {) j' Q7 S) w  c
  152. $keyWithUserPrefix = $redis->keys('user*');% x# ~: ?1 p# a! i% f* F8 @
  153. # y8 l6 W; s9 U6 S9 `& Y
  154. dbSize
    ( T0 |. ^4 u2 o$ x  O* h5 m1 Y$ E$ j
  155. 查看现在数据库有多少key, L9 e6 B* v8 y* x, r
  156. $count = $redis->dbSize();
    8 ^$ I# p1 H6 u4 t; D1 h

  157. ) ~& D' M/ M8 F3 }' R8 N0 P
  158. auth6 l" ~+ B) |( p* `
  159. 密码认证, V4 F( a8 B7 a& _3 c( v- h: M
  160. $redis->auth('foobared');
    5 y) c3 I& B! O5 _& j2 f% d
  161. : q$ i. O3 q! @! ~3 l) J
  162. bgrewriteaof% I3 V! a' g/ H& [2 T- I5 ?
  163. 使用aof来进行数据库持久化2 i% F1 V" c5 j
  164. $redis->bgrewriteaof();
    0 J$ k3 U+ R, y  n

  165. % g; m8 Y2 N# c" g8 o: E
  166. slaveof
    3 l0 Y3 f: _; {2 L# }
  167. 选择从服务器5 V* [! e% @" Y) Y& q1 E0 Y" ?
  168. $redis->slaveof('10.0.1.7', 6379);
    4 P7 [: h: ]4 C, `/ z3 b

  169. & v: v1 {% a) h0 B, b4 e. y+ d# X
  170. save" }. C- D! N% g0 P( n$ v$ n
  171. 将数据同步保存到磁盘% Q8 M% e8 M' ?0 ^" T7 d

  172. ) y" V) O+ s0 {3 C+ q, T- T
  173. bgsave
    . v. z# h2 d4 J: Y' x
  174. 将数据异步保存到磁盘9 d0 Q8 v6 y) N6 q$ G" W! I

  175. 6 q% G, Y) V, l/ y# Z
  176. lastSave
    8 V7 ~$ o  A5 Y' _& k
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    7 l/ G' l4 }2 m2 g2 H

  178. / I' U$ x9 D: j: y5 C
  179. info  p. b  X0 _9 J. _& j$ K8 f9 Y
  180. 返回redis的版本信息等详情
    " b6 V. |- C2 Q7 {% X" r
  181. 9 ~2 \$ ]5 e# g3 i& }% W: A
  182. Redis::__construct构造函数+ k: ], P- X# |# ^4 G7 ^
  183. $redis = new Redis();: D# W' {2 [0 f4 ^

  184. . G5 l! [! Q! G" O* e2 C+ l* D
  185. connect, open 链接redis服务
    1 [; P+ d' J. b  R
  186. 参数
      |3 a; N. o8 H' O; \, E3 `. s
  187. host: string,服务地址2 W% a3 s: M, V, I
  188. port: int,端口号
    ) Y( [$ @) z; {( d1 y
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    7 P2 q( n4 |0 S/ S5 }: i: l) f
  190. 注: 在redis.conf中也有时间,默认为300
    2 z; C* y, A) _9 t# c6 i; [) z

  191. ; o2 D+ R8 K1 _7 |
  192. pconnect, popen 不会主动关闭的链接
    2 Y; W! M2 M5 Y$ G, E9 C! y
  193. 参考上面
    6 J. A( b8 R/ W' j9 K+ `* a; h
  194. ! p: D& _8 j5 ~
  195. setOption 设置redis模式- r( t# j1 `0 p6 N  ~) |7 B
  196. + U. W4 y/ d( h/ g+ x1 n# P
  197. getOption 查看redis设置的模式1 o. j* ]' j/ ^* g( C, |- W
  198. 9 |7 c- R- W9 @. h/ n
  199. ping 查看连接状态5 X- i& q3 E# ]1 n! c( N

  200. : f, [, q4 v+ `
  201. get 得到某个key的值(string值)6 ]: y, z/ y5 K. V+ [' C# V
  202. 如果该key不存在,return false
    " y. s4 l9 [) C  f5 f

  203. . H* R0 y; S2 b5 x5 u
  204. set 写入key 和 value(string值)
    " v  C( l, c0 T3 m, N
  205. 如果写入成功,return ture
    % a0 n) X7 W- t
  206. : _" i/ ~- H7 p1 p6 P
  207. setex 带生存时间的写入值
    5 u3 Z' P  c" o( h0 v* q/ e' l
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.; a  `0 A: h. k& H  Q# i5 O1 l5 ^

  209. : L  E% @; x1 }1 E
  210. setnx 判断是否重复的,写入值9 u! {3 O+ ]+ ?0 R( G+ d! b% R
  211. $redis->setnx('key', 'value');
    . r0 r  i' p+ R% k
  212. $redis->setnx('key', 'value');8 C1 J  {( M& D; b- k. |
  213. 4 B7 I9 ~. N5 o* L  q2 a
  214. delete  删除指定key的值
      @1 ?6 M1 y7 l+ |9 t! T
  215. 返回已经删除key的个数(长整数)
    0 ~3 ?8 A$ A3 Y2 l+ [8 Y
  216. $redis->delete('key1', 'key2');- f" w  `4 ^9 S/ J. u7 [& b. j
  217. $redis->delete(array('key3', 'key4', 'key5'));- U; C3 B. L, N2 a8 v/ I
  218. $ h9 Z" E$ z" J2 d, T1 ]2 R/ L2 v$ I
  219. ttl
    & v/ h5 z; m4 k! k. d* ]
  220. 得到一个key的生存时间1 e1 Z4 k& Q+ P( f5 x
  221. ; u* I7 a4 j7 O/ B1 s; P1 {
  222. persist1 O/ m' x. k: H' [$ Z3 S
  223. 移除生存时间到期的key0 F- E7 `) R- y& D4 V+ k
  224. 如果key到期 true 如果不到期 false& x4 t7 [- h" Z
  225. ( T' E9 p2 u$ I7 u; c
  226. mset (redis版本1.1以上才可以用)
    / h( i' q/ y" G$ V5 {% |
  227. 同时给多个key赋值
    , R  r* a4 X7 L% _% R0 z6 Z0 U
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));/ o* d2 o: [& u. H
  229. 0 i2 i" l: R* k+ e, D( f

  230. # g: N8 S, r6 W3 s+ v( `

  231. 2 V: {1 B: ^: D. {( `
  232. multi, exec, discard
    8 q1 R. f2 j* O7 f* u, G1 B# I
  233. 进入或者退出事务模式* ?4 I% I7 W) g8 R, g' j, H. I( T1 x
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI( k* K7 D) d9 P. C& p
  235. Redis::MULTI:将多个操作当成一个事务执行  Y4 o6 r8 A9 w5 K& E2 N
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    . |6 m( m! E, J: W, X/ V
  237. discard:删除一个事务2 m: q/ |3 M2 `5 t6 |- P: o: `. ~
  238. 返回值
    * }2 ^5 m& R/ H# a
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。3 G# w& ^% Q/ _. i  m7 ]
  240. # W& B& A, t/ Q1 V0 @3 l% y
  241. watch, unwatch (代码测试后,不能达到所说的效果)" U1 Q6 b# v5 S% i; t
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    ; H7 e+ U! K0 v0 g$ n
  243. unwatch  取消被这个程序监测的所有key. s. p& w. B+ T8 Z3 \# [4 u
  244. 参数,一对key的列表
    0 a" O4 E: m6 G  A
  245. $redis->watch('x');9 \  k8 a0 t9 S) f$ Z  L

  246. ) e- O- ^+ N  o- j6 V& i
  247. $ret = $redis->multi() ->incr('x') ->exec();
    , c2 Y. i; T9 Z! q. Q* s

  248. 9 ^5 ?# x0 ]4 z" t5 n, K" ]; X, B; l

  249. ( [- {: G3 b! s. ?
  250. subscribe *' P6 I' S3 b5 Q) [$ X7 |) G7 P* j
  251. 方法回调。注意,该方法可能在未来里发生改变
    8 }6 G; e; Q- w) a; w1 O6 t/ c; W
  252. ; g' S# \& d8 t7 w
  253. publish *) |' E3 ~; u9 \8 o' h, ]
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变( D( B9 y& h- a( T4 V; D
  255. " z$ f8 k, [: Z6 r5 D+ N
  256. exists
    # l! X! j" [- ^5 l2 ?9 L; k
  257. 判断key是否存在。存在 true 不在 false
    6 {8 f2 L5 X$ U. B6 [

  258. + {; j1 k1 I4 m
  259. incr, incrBy
    . _8 \$ w0 E/ i% O" o& B* m
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值& K: j. I" }$ m* F
  261. $redis->incr('key1');3 o& I3 W& L5 h+ a2 m
  262. $redis->incrBy('key1', 10);
    8 o: B7 V; Y+ y" g

  263. 3 a  ~* }8 E, [% q
  264. decr, decrBy
    " v! \2 ]# |4 r2 U7 z8 X3 S7 H
  265. 做减法,使用方法同incr
    ) a- |9 c& g2 p9 q
  266. : |. e+ E- x/ n$ m4 R1 k5 K
  267. getMultiple9 ^2 Y; {/ y2 [1 d+ [0 \
  268. 传参
    3 B) g2 a! ~4 M( [0 T1 N% b5 g
  269. 由key组成的数组* q" t7 P* j, `5 X
  270. 返回参数8 @$ M; V1 J% Y- z
  271. 如果key存在返回value,不存在返回false
    9 s# P, k! c; ~1 N) R8 Y8 L
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));& l1 D" O, I0 e7 q+ B
  273. $redis->lRem('key1', 'A', 2);
    + W( e% G$ n/ m
  274. $redis->lRange('key1', 0, -1);
    % J! {( w6 J0 P
  275. 1 r9 R7 e5 m0 F
  276. list相关操作* z. k1 T* [/ F, ~$ y0 w6 r' h
  277. lPush$ d2 o( G' d. Z8 ?) f
  278. $redis->lPush(key, value);
    8 ^: m5 S9 I4 Q! U* L% A% ?+ Z
  279. 在名称为key的list左边(头)添加一个值为value的 元素1 m" i' p# J7 e) C5 A

  280. 2 b$ q5 {; _% W& ~7 f! i6 A
  281. rPush9 Q3 V# n6 v8 k: C* }' C: O" {" h
  282. $redis->rPush(key, value);/ M% ?$ `  t. D1 o2 U8 x: A- @4 n
  283. 在名称为key的list右边(尾)添加一个值为value的 元素: S' K% w4 G% _8 @
  284. : S* S9 I; S0 U! c7 I" g& E/ G
  285. lPushx/rPushx8 Z: a% m3 N, t( `3 Q7 o* ~
  286. $redis->lPushx(key, value);
    ( \( ~' G& o. R: i
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
      {* W1 a( F( x- h3 M

  288. * I  ^5 a; t, B
  289. lPop/rPop, a8 C( y0 `; j9 q9 x5 M+ D- V8 j# j
  290. $redis->lPop('key');# z# m  L. Q7 L! K& I
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    * P3 d* A+ W& `$ J- N

  292. 6 c; D- b  E; x4 d$ b
  293. blPop/brPop; b$ R: x, u2 ?% I
  294. $redis->blPop('key1', 'key2', 10);
    ; I/ M& e4 a' c; A/ M/ V
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    9 i! Y# K, k8 a  j8 I
  296.   I0 T' @: \7 y; G$ }
  297. lSize
    1 j/ q6 Q5 B) a; g, s6 e* S
  298. $redis->lSize('key');
    : V! G  r5 w& c: n9 x1 ~, ~
  299. 返回名称为key的list有多少个元素
    * Q! r. N8 q7 D
  300. * z. O3 _1 ~/ P1 T0 I, [& m
  301. lIndex, lGet) `8 N! O" F1 ]
  302. $redis->lGet('key', 0);, X' x$ J, I: g$ {
  303. 返回名称为key的list中index位置的元素
    4 p% u8 T& ]' {- r1 R  t; t9 [$ t
  304. 7 J6 h' O" Y' U  K
  305. lSet
    ) T! i9 R' x9 B/ {7 w5 M% _
  306. $redis->lSet('key', 0, 'X');
    ) L+ [9 d) A2 {( r2 N
  307. 给名称为key的list中index位置的元素赋值为value
    & j. R& y: U; F) c5 C

  308. 2 k8 V! s  [4 F: D5 K- I7 k
  309. lRange, lGetRange4 S  F+ j1 j; x4 |4 j) h
  310. $redis->lRange('key1', 0, -1);7 S3 ?  }4 |9 X3 _* O+ |8 ~$ f3 ^5 a
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有). U  \3 `. X3 @8 Q1 p

  312. 1 m: n( O  c# o7 I' I9 {
  313. lTrim, listTrim& D8 V( _/ E5 o% ]/ Y# A
  314. $redis->lTrim('key', start, end);
    " v5 Z$ F2 B, Z& C0 Y% S
  315. 截取名称为key的list,保留start至end之间的元素
    * N8 D  w! w2 q

  316. ; ]6 V0 R* Z7 U% _3 W* h
  317. lRem, lRemove5 F' c3 U( D) I/ c  |7 p
  318. $redis->lRem('key', 'A', 2);$ F: T2 E! u' Y! ^0 v/ s
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    ( {! h- Z9 m! O6 X5 D0 _4 w
  320. 8 w; Y9 j/ a% m" [
  321. lInsert
    , Q, }- S% _  G
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    - h' K$ |1 E3 \2 F' U
  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');
    2 h+ Y3 \' D( }+ F" [0 U! C- \
  324. $redis->lRange('key1', 0, -1);
    8 m9 a6 D+ s( J5 h" r% S; _
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');2 {, u& o" O( M2 w$ M6 s& f
  326. $redis->lRange('key1', 0, -1);
    1 `5 f" S# l; Q+ |# @% o
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    7 o  V" ~% x" d0 u& ?
  328. 8 g5 Y% \% z! s+ Z. M, ^# {
  329. rpoplpush1 p! A# h6 B" J: N
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部7 a4 s% G4 @0 F; v
  331. $redis->delete('x', 'y');
    % [( m4 V* y$ K4 P* ~5 ]: H' j/ |6 C
  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'));4 G/ y, j( Z" N& t- i* ^% b
  333. var_dump($redis->lRange('x', 0, -1));
    7 j+ A. p! L3 T' N0 l2 f
  334. var_dump($redis->lRange('y', 0, -1));
    8 L9 q7 G0 p; P

  335. * O' R3 M. I$ A9 {
  336. string(3) "abc" $ M: u: }* p; J
  337. array(1) { [0]=> string(3) "def" } 9 l- f5 l! [. H$ W  ^1 m
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    % h) Z! U+ A! W# s
  339. % ]$ {  {/ j8 @7 w, @3 ]! B* M
  340. SET操作相关
    / ~$ G; m! W" F! M) ^5 i
  341. sAdd
    - N; F" f6 ?# C) R3 a) N
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    . Z+ Q, R' ?. p) D% N1 ]0 |
  343. $redis->sAdd(key , value);! a$ w- l0 e/ T6 B

  344. : Y/ K+ C+ a/ H7 G* @1 F) R/ @
  345. sRem, sRemove
    $ R# g5 K6 u' o- x3 @0 A
  346. 删除名称为key的set中的元素value& p* i3 o1 l: e( m
  347. $redis->sAdd('key1' , 'set1');
    # Q" n& f$ W5 G
  348. $redis->sAdd('key1' , 'set2');
    6 s& e. E/ f! M2 X6 n  |* h$ g
  349. $redis->sAdd('key1' , 'set3');
    . }- H3 _# t& j
  350. $redis->sRem('key1', 'set2');
    0 u* k/ p0 \% x* ~
  351. 9 P/ H) ^7 Y8 P) y. J
  352. sMove
    5 F0 ~( R  j7 |9 e
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合3 Z8 B. R# F) V* Y. T
  354. $redis->sMove(seckey, dstkey, value);# v- v/ a) h9 V% x. ]6 D7 z

  355. 3 S7 ^0 T) G1 O! `+ v
  356. sIsMember, sContains
    8 s0 w( K/ |$ h0 s, R
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false8 m5 ]' f6 r; H" @; S8 ~0 ]
  358. $redis->sIsMember(key, value);
    ) }( r, Y# H, f2 c3 P2 z7 d9 M2 ^
  359. * I1 P8 n5 c- V4 `/ \
  360. sCard, sSize9 X7 p! K4 f: H( Q& X; f: `
  361. 返回名称为key的set的元素个数: u- E: b; l$ ?# @1 y% i" G
  362. " M$ n+ N: n4 k& ]$ R$ a* t7 ?
  363. sPop
    - K, H7 _# o$ D
  364. 随机返回并删除名称为key的set中一个元素
    5 }$ p( A) {4 ]( p% I: q* G. c

  365. 7 i+ u( l( a% c" m
  366. sRandMember; V- w. ~" i9 \
  367. 随机返回名称为key的set中一个元素,不删除
    # d- `4 \$ _( B" ?" E# l, }
  368. ; E  v! i6 b. }& k8 p% V7 i' Z
  369. sInter6 ?8 e. H3 [6 d  R
  370. 求交集
    $ w8 X& `5 f, ~: f8 l" k# g
  371. ! S* q, N7 g+ x+ i. H
  372. sInterStore8 d6 t# [# o# _# G' ]& ^
  373. 求交集并将交集保存到output的集合
    . f) M, V6 V# W6 @* D
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')/ I/ ^, i* b' h6 ]% u  G- h
  375. 7 g4 l5 N; p/ B8 |
  376. sUnion3 B6 V4 o' U0 R6 L3 `
  377. 求并集
    8 Q3 T$ p6 w3 M3 c% C
  378. $redis->sUnion('s0', 's1', 's2');: U1 w, j8 f9 l4 E- C+ D9 v- [! P
  379. s0,s1,s2 同时求并集
    % P! z2 }- z3 j- E
  380. 9 c' _. V; p% }- i. Q: c
  381. sUnionStore) ~0 I  C' J  ^$ B; O; n1 K
  382. 求并集并将并集保存到output的集合' K( }# ~8 G- n# x. G( `8 f
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    7 Q! V& c! a2 Z; L7 `  [- a2 ~

  384. * y: r8 h6 p! p6 `# {& d
  385. sDiff# {3 i  G* s' r3 y& d
  386. 求差集
    0 z( ]4 k$ \: p' ]' X
  387. " \, I; e( C+ B6 x+ W
  388. sDiffStore$ V9 j2 U' l2 w/ E/ H9 o
  389. 求差集并将差集保存到output的集合
    ( _. F  |/ r1 T9 N# [. ?! C  e

  390. ) y9 I- `! S) s% Z
  391. sMembers, sGetMembers
    7 C4 S( |) e& L4 Q
  392. 返回名称为key的set的所有元素
    , N, |+ g+ `+ X/ R  ?+ b1 y
  393. " `' Q! x0 p8 ^% d2 m
  394. sort; O: H0 I+ q% E7 ?
  395. 排序,分页等
    + D1 L+ C& [2 ?
  396. 参数
    4 w4 ~: j' ]: ~7 t
  397. 'by' => 'some_pattern_*',
    0 j$ ]& \8 K7 f
  398. 'limit' => array(0, 1),
    ) H3 l! [8 f* g  L: D8 Q
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    - d) z1 v. A4 F" |+ A- ?6 f( h
  400. 'sort' => 'asc' or 'desc',
    9 _) M4 H, T1 H) S' Y' k
  401. 'alpha' => TRUE,& s9 y" c3 [$ f+ E
  402. 'store' => 'external-key'
    . P+ p  ]% K: M6 H, B% a
  403. 例子& }- L9 Z2 q7 g2 K, y
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    . s2 @$ ~3 k& h: f; }
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    ; v* ~$ B) P5 Q; W
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    / W7 I( K7 e3 W% k
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5* j6 w$ v6 v8 Q

  408. 6 v, B" B% \5 B4 f4 V9 r" P
  409. string命令
    . s* p7 m  D& r" g4 o* e
  410. getSet
    : {" q0 J7 m# U  z+ z/ t
  411. 返回原来key中的值,并将value写入key
    ' D9 T* M1 h! Z# M8 q- B) m* e8 m& C
  412. $redis->set('x', '42');
    " s# k3 a1 T7 K
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    & U3 Y+ y* k, N, }/ Q( A3 A
  414. $newValue = $redis->get('x')' // return 'lol'8 q, ?3 ~: a( H  Q5 b

  415. ; E# L% B. I' z3 D  }
  416. append
    ) I8 \& p2 Z3 e/ E5 Z' R& ~
  417. string,名称为key的string的值在后面加上value/ ?1 Q1 G# f/ _8 T8 f9 d9 f- U; C+ |
  418. $redis->set('key', 'value1');* ?) k" \, ]% v: _
  419. $redis->append('key', 'value2');8 U, {8 G" `8 x1 I& g
  420. $redis->get('key');
    + z0 A, i7 V0 N! u! f% @' {

  421. , I, j% h7 [7 N0 f2 {; D  h: m0 k
  422. getRange (方法不存在)
    # w1 S; L0 t! \8 j* F! A3 q  ^% o
  423. 返回名称为key的string中start至end之间的字符
    - b8 S2 b$ L; X, K
  424. $redis->set('key', 'string value');
    ( I# Y& ^- j7 T! [8 `% G
  425. $redis->getRange('key', 0, 5);
    . |9 ]: Q* t2 y7 J% @
  426. $redis->getRange('key', -5, -1);
      u2 P5 o9 d7 p) Y7 R7 `
  427. , M6 l1 k0 n6 E: [: y- |
  428. setRange (方法不存在)
    # L( J+ C: f+ T- G5 O
  429. 改变key的string中start至end之间的字符为value$ y: u9 `. j! j+ r) \( O
  430. $redis->set('key', 'Hello world');! w# {# E. s# S% E) U1 m  y
  431. $redis->setRange('key', 6, "redis");7 U8 s) A6 w& {/ N. y8 [- [
  432. $redis->get('key');( v" t& S9 p, W7 u; ?; y( h

  433. - N/ t' m( z3 O" @" y
  434. strlen
    $ w& v' w: F) `0 v
  435. 得到key的string的长度
    8 Q) [1 |7 s# J
  436. $redis->strlen('key');
    : E) i" X& U  c, m! l; H' }

  437. ) D5 L& p2 k. W* A- G1 z
  438. getBit/setBit
    ! T! }' Z; K  o2 g0 D
  439. 返回2进制信息
    2 m# z4 X# X) c8 R- V& I
  440. * R* _( S& T! _* ]% l' B
  441. zset(sorted set)操作相关# t5 \/ g7 F$ d) p/ [, T, U
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    ) j; q/ V1 t& P" i( [
  443. $redis->zAdd('key', 1, 'val1');" i% e& e& R  m
  444. $redis->zAdd('key', 0, 'val0');
    : b! l' K+ s# P5 J. `
  445. $redis->zAdd('key', 5, 'val5');
    # k" g# x% k" r
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)/ [6 \0 d/ a! c
  447. 8 ]# {( Q. V" F( `0 r- J
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素' l+ y) Z7 i* {4 Q4 E3 i+ q7 Y
  449. $redis->zAdd('key1', 0, 'val0');. Q0 K) E; D+ c5 [7 l5 I% G
  450. $redis->zAdd('key1', 2, 'val2');
    % x% X" G% x7 P& ~. G0 R
  451. $redis->zAdd('key1', 10, 'val10');
    3 f" o: q7 [" h+ j
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    ! g; |" d( z7 ]6 s

  453. + N. V/ g% I3 e8 ?$ [
  454. zDelete, zRem5 J, X! N* w* O/ c8 V- c
  455. zRem(key, member) :删除名称为key的zset中的元素member
    0 ]8 M2 F. h* N+ P& h5 e
  456. $redis->zAdd('key', 0, 'val0');7 V3 @0 K/ ?) O' {) e& C
  457. $redis->zAdd('key', 2, 'val2');
    % U, ]6 z* o( J- ~
  458. $redis->zAdd('key', 10, 'val10');. r- r4 b1 A# D# R
  459. $redis->zDelete('key', 'val2');
    6 Z: I( R7 l; J8 K( U9 u% R, R  O
  460. $redis->zRange('key', 0, -1);
    + F" x$ D9 V; W

  461. 8 d3 ~* o) G, F9 O8 \  ]
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出6 f* N/ E1 S) a! G, l* R& E
  463. $redis->zAdd('key', 0, 'val0');, Y. d: v; L) E' @1 _  m# r9 g) j; c
  464. $redis->zAdd('key', 2, 'val2');
    ( g8 W0 E+ }8 m" g
  465. $redis->zAdd('key', 10, 'val10');
      l: j$ z9 L/ i+ _
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);1 T8 |( I  ^" A. l
  467. 3 o" m. f$ g$ K" y2 u: V
  468. zRangeByScore, zRevRangeByScore
    1 ^) g/ k0 M+ K: Z- X& ~
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    ; w% K# J2 {# ?
  470. 返回名称为key的zset中score >= star且score <= end的所有元素/ `1 G4 A1 o' Z! F" f) h
  471. / L5 x. u. V, z7 p
  472. zCount
    7 u# M1 M, `; _: J1 e- h
  473. $redis->zCount(key, star, end);
    ) v- Z) {; o) a( f8 A/ D
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    1 v8 i+ @. x! F) U  b
  475. + o9 m) I8 z- b! `
  476. zRemRangeByScore, zDeleteRangeByScore. b/ e$ Z0 I8 T+ d
  477. $redis->zRemRangeByScore('key', star, end);
    0 G$ g0 O( i3 s, R) D2 Q
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    8 n5 L; v0 J2 h  q8 \7 x
  479. & G, W. v# \$ z; [9 h
  480. zSize, zCard+ v( F/ P  @( C7 d
  481. 返回名称为key的zset的所有元素的个数+ o/ X. `' z" W) k

  482. % j4 s1 O, M2 c1 |
  483. zScore
    4 }( z; j/ R8 K5 k: Y- w
  484. $redis->zScore(key, val2);8 E  r( l- I4 h& E# ?3 a" b# r9 c& ^
  485. 返回名称为key的zset中元素val2的score
      P0 d0 l8 q: a# N" ?8 a
  486. , q6 i6 Z; {$ u3 c* f# x* y) M
  487. zRank, zRevRank" d2 f" K% ?. R6 X
  488. $redis->zRevRank(key, val);& `; a" g4 l" O! E5 E) E
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    6 w2 S" L: J, {+ ?: ]: F( ~" e+ Q5 `

  490. 9 ^+ c& @7 D) m4 G3 R6 `) K$ I2 j7 F
  491. zIncrBy2 s  x. }/ ]* J5 @
  492. $redis->zIncrBy('key', increment, 'member');/ a* P6 W1 X# M7 W8 M3 }7 E
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    ' b) |" p5 Z6 [. t1 V' Z4 E8 l

  494. ( w  z3 V& S' {( q8 x3 n% L9 M
  495. zUnion/zInter
    . n2 V0 V- O% X& }4 E
  496. 参数
    * k" z; I6 f2 F6 Q) _8 f
  497. keyOutput9 X* L% N, P- l
  498. arrayZSetKeys
    ; R6 v( ]' G& N, k7 U9 d9 {
  499. arrayWeights+ x2 f% Q! X4 d/ `/ g/ z- ?' H4 G
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion./ a5 `1 O: v+ B  m6 }& b: z3 r
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。! s# q6 z- L6 b& e( N
复制代码

: V. i( p: ?+ Y. e& N2 j8 B* a- r1 _6 g
& p4 F& M6 h8 N5 K( f

1 S% _; L8 `+ `5 c' h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    / L& D0 t8 j" \2 m
  2. //连接redis服务器
    8 T! u" N( a: e" D/ E" I1 i
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 11:36 , Processed in 0.060447 second(s), 18 queries .

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