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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    ) |! L9 H7 q8 U. [  V
  2. $redis = new Redis();  
    ; x8 Q0 Y& m5 ~' V
  3. $redis->connect('127.0.0.1', 6379);//serverip port) v- o7 z. ^' [/ g& f
  4. $redis->auth('mypassword');//my redis password 1 n8 i( a! O) s1 P' l# @, x
  5. $redis ->set( "test" , "Hello World");  
    & ^0 L/ q6 c( D& K0 `7 r, t6 ]
  6. echo $redis ->get( "test");
    ( |" w: ]# ?( T
复制代码
php操作redis函数封装
  1. /**
    + ?, {5 ^4 @/ n, k% \* Y
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数
    ! }( n/ s  }  }
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    7 C' o& I: @7 X! f2 c$ x! [
  4. */- k* T+ K! l3 e  O8 v2 `
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    - I9 f1 [" h4 n: U2 K# f/ {: m
  6.     if(!$key||!$value) return false;
    7 V$ z2 `% ~2 u! A, B  `
  7.     $host = $host?$host:getenv('REDIS_HOST');; i6 b- k$ ~, h$ S5 b
  8.     $port = $port?$port:getenv('REDIS_PORT');
    , S+ X- L  F; q# p2 K( D9 A, y
  9.     $redis = new Redis();  e# ^( n& |1 z  e
  10.     $redis->connect($host, $port);
    ) y* j$ P. c' t1 _2 h% s
  11.     $value = is_array($value)?json_encode($value):$value;) g# ]2 S4 w# C5 Q9 M
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);  ~, }4 P/ U9 x& }
  13. }) L  ~( `+ _4 L2 }$ H3 J) d
  14. /**
    * O/ i9 B( E4 {' c0 l
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    . F6 R5 f! m: K" ^; f% O# w
  16. */" o; D7 Q5 `5 x& k( V
  17. function RedisGet($key,$host='',$port=''){; V9 c) g' h* y: o9 A
  18.     $redis = new Redis();
    4 A* W. p  ~; B" t) s! @6 j
  19.     $host = $host?$host:getenv('REDIS_HOST');5 e+ Y& X% k; z$ ~9 `$ \
  20.     $port = $port?$port:getenv('REDIS_PORT');
    - r! z" S4 s) W9 C" @# g
  21.     $redis->connect($host, $port);+ p9 q. I- M& }- p2 Q' U
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    9 T2 C, o* [, j3 t) X) b% W
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    7 g8 z  L! e/ j5 d5 y, E
  24. }
    4 _2 j7 \6 Z& l
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了% Q( [; c  W" x
  1. setex 带生存时间的写入值# I- n' L9 t& y4 F" A+ \
  2. $redis->setex('key', 3600, 'value'); ' v" q5 E/ w' P/ }) b5 Q7 y$ j/ B
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1  j8 D; k' U+ x0 d, ]
  4. $redis->setnx('key', 'value');
    1 \9 r8 o$ v# j" d2 q2 l
  5. 返回已经删除key
    2 n9 t* D) i2 Z! Z  w
  6. $redis->delete('key1'); 成功返回1失败返回0. c# s/ n. a# H  H7 ~
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0* g, s9 R5 F+ w4 X  Q/ n8 r
  8. 查询生存时间3 s! M$ p! X6 n- H$ O( H
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
    4 W2 q, ]/ Q( Q' j* F& g
  10. 同时给多个key赋值,同时设置key0和key1
    5 Z/ T- `; c( b3 [, S
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));1 C* f" m5 b- q2 [  D2 e1 X
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值+ P* }; V2 O, g6 V0 W& {# U
  13. $redis->incr('key1');
    : L& A" @/ d$ W' T$ c
  14. $redis->incrBy('key1', 10);
    2 L% r/ b# q8 @- [6 r& R# ~! q1 N8 g
  15. 减法跟加法一样
    / v( T" T( G& Q' O. G) k
  16. $redis->decr("key1"); 减少1
    4 g8 X9 x# ?5 }: Y* f
  17. $redis->decrBy("key1",5) 减少54 g% w# e. Q" b3 u2 [: H; Z1 s" a2 H8 t
  18. # r9 i. D* |. C0 P+ B
  19. list相关操作,连表操作/ l  m  ~$ ?3 P' ^
  20. lPush
    % D* T5 b* x: J8 Y3 d/ h
  21. $redis->lPush("list", "888");6 ?/ L3 I$ e) U/ l9 f
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    0 ~4 H6 F- u4 u' f* v" \5 s
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    4 R/ P3 j+ z# X/ w) V
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素% T& D. z' k" Z1 ^) O9 |. O
  25. lPushx/rPushx
    9 y3 O2 t& a' p# }
  26. $redis->lPushx(key, value);
    ) x$ V( P# }: m5 ~
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加5 b+ G) L! ~0 [

  28. 3 K$ o3 o/ k1 |7 S  B+ D7 b" a# y- W
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    % O, m. w% E# f% r
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key2 x0 R- A6 V* ~, g  q) Z
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    3 k2 M. [' k  I7 n- Q
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序( a/ ]' G) t" P3 E, F: g8 ]
  33. sadd s1 zhangsan
    8 L8 `# C* Z, Q
  34. sadd s1 lisi
    . P) \$ K2 {8 c' W
  35. sadd s1 wangwu  T% x9 p" p  n) \9 n  e* C
  36. sadd t1 yangxingyi3 e( s- k+ U# k+ ?
  37. sadd t1 lilei
    1 `' l  H* @- q, J- ~; c# u( M) h
  38. sadd t1 zhangsan
    + i# g5 x, G% r5 O5 @. z7 |! j% N' w
  39. smembers s1 s1的所有集合内容- |# Z' e+ \3 G2 a! i* A5 z
  40. sdiff s1 t1 s1有的,t1没有的,差集/ j' R1 \  E/ X' R
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    - a" g% N5 G. @+ c
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    6 b  z: |- s, B, m
  43. spop抽奖场景,返回集合里面随机的数! q4 T. D- b% y. e5 ]( Z
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    " f; O* F, B( U+ t& M4 K; F
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数4 \$ {% a" M2 n8 D( y
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的& [5 b) v$ ~, \# A, H' T
  47. 随机返回集合里面的一个元素,但不删除,重复中奖9 B* U  A; J. @$ }% c, Z
  48. $i = $redis->srandmember('s1');echo $i;* L4 V7 k9 l. ^/ C3 P7 ~
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false. B2 H. f! W9 W& N5 T4 n/ M
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    . `$ e5 J1 d, d0 ]0 N3 V  s: k

  51. " R9 Q7 b3 `. ?0 C2 v" }  f
  52. zadd key 2 value 有序集合$ x/ x8 m. @* ]% F% t0 q
  53. zadd y1 1 zhangsan;
    ! O* K5 \5 l/ `: k! A( X
  54. zadd y1 3 lisi;. x  {, P& @. Z0 C8 C( \, D
  55. zadd y1 2 wangwu;
    1 @5 F4 F. a/ l+ \
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    2 Z; d+ z& z9 k  X
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);/ _+ m- Q' @0 [) d
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键9 N1 `% X& D. T4 p! t
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    4 Y% U" ^7 O4 `! ~
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    & N+ ], a( N* q3 C9 v
  61. 无序就scard,有序就zcard,有z没有s
    2 }- P$ w" s2 L
  62. sInterStore
    8 t4 e# E7 @! r% \! L
  63. 求交集并将交集保存到output的集合2 R" Z" D  G- T# F; @
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')# S  u9 K- ~9 w! Y! v/ L

  65. ! i: l0 K; k& A6 {6 P
  66. Hash操作
    3 u. t* S0 L# P% {" h9 I3 U6 I, s
  67. hSet4 J) D. v+ D) _  B  R: t
  68. $redis->hSet('h', 'key1', 'hello');
    % l3 n4 x& ]) h
  69. 向名称为h的hash中添加元素key1—>hello
    & |* g. E" U5 K' J8 C

  70. # ?# G* B, J8 S; o/ Y
  71. hGet
    8 G! p- E/ I- x% r# Q) \. K
  72. $redis->hGet('h', 'key1');
    ; P5 A) H4 p. S% }4 y
  73. 返回名称为h的hash中key1对应的value(hello)
    : t( t6 b& y% d* P' W

  74. 4 U4 y9 h2 V. l% S# ]$ y
  75. hLen
    " x  t2 `. x+ e4 b9 l
  76. $redis->hLen('h');
    ' S2 [: Y3 v* W7 T
  77. 返回名称为h的hash中元素个数- |' b7 K% b/ t7 }/ {8 M7 w

  78. 4 x9 M7 P9 ~% R, d0 k+ y' S
  79. hDel
    # w# e& ?4 B5 Z; O8 {& ]$ T
  80. $redis->hDel('h', 'key1');" l( C9 G2 U+ c$ B6 L- D
  81. 删除名称为h的hash中键为key1的域: ~9 Q+ _7 o- G
  82. : H6 A3 s  P7 g/ |) ~8 I5 W' e
  83. hKeys2 q# w& a: x7 i& f
  84. $redis->hKeys('h');
    % v3 C5 O5 Q& g
  85. 返回名称为key的hash中所有键! L( c% r" [  U1 S

  86. + ]" D. h/ G; z; }1 S
  87. hVals
    % q, {4 ~7 l- Z# ~% J5 I8 p- ]% V
  88. $redis->hVals('h')
    ) g! R+ g8 q  Q- |
  89. 返回名称为h的hash中所有键对应的value
    , L6 O5 i; v  U3 M5 U) [/ Z
  90. : x+ g8 A. l% c4 i. Q( [; G
  91. hGetAll) @/ d8 c& H$ x
  92. $redis->hGetAll('h');
    # O* X1 M" ^7 K( G7 `2 f
  93. 返回名称为h的hash中所有的键(field)及其对应的value% U6 s6 N" m% [  [0 L
  94. % j+ a5 I- D+ I6 x
  95. hExists. {. y- {* @, h  h* y
  96. $redis->hExists('h', 'a');
    1 f: r7 W3 M+ ?! O- \, g
  97. 名称为h的hash中是否存在键名字为a的域
    8 V  V% i: F8 t* B; p% u9 m. P9 D

  98. : N5 y( F+ J3 R$ m7 i
  99. hIncrBy4 n8 m5 ~2 D  U3 k- j
  100. $redis->hIncrBy('h', 'x', 2);
    1 R, D  l, E- W( U
  101. 将名称为h的hash中x的value增加2; q* Q( ^9 y& [& }* }4 v1 _

  102. " b# L7 g3 E6 \
  103. hMset" U+ i' R0 X7 y; O
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    ' B/ M  _# n# S0 _" `9 z" X
  105. 向名称为key的hash中批量添加元素' K% g7 D2 c& x3 M' x

  106. + g# B) U( k: P: J2 s" K0 V* T: u, Z# f
  107. hMGet6 ]% A5 ]) B6 ?  r" S: y# a
  108. $redis->hmGet('h', array('field1', 'field2'));
    # r! w8 o, L  j' q7 h9 q
  109. 返回名称为h的hash中field1,field2对应的value
    + @$ C6 @- v; U8 x$ h' d
  110. 2 i8 E9 k+ Q- z0 n4 @3 V1 Y
  111. redis 操作相关
    & e4 ?9 K) W, _, e( f
  112. flushDB% g, X- e8 t6 N; K, P
  113. 清空当前数据库
    : h9 v6 Y; R* Q9 K

  114. / R/ o8 {$ n* l" m: D7 d6 K7 y# p
  115. flushAll
    ' u5 T2 y2 @$ M/ g1 X! @! f  h1 Q
  116. 清空所有数据库$ Z: o, J4 E  H$ S) ^

  117. 1 R7 q+ T: r, |0 u
  118. randomKey
    / Z% J+ M9 K+ f6 Q  m) L, B
  119. 随机返回key空间的一个key
    3 H' D2 C) a! [, a0 |
  120. $key = $redis->randomKey();- @# C' q( s) R. A$ V

  121. . N1 Y; n5 o# B9 i
  122. select* |6 a; g  Y+ D! S" l. q
  123. 选择一个数据库
    2 ^- D- }- A( e& `" C( E0 D" t8 y
  124. move% H: E/ e2 A: }# I3 i
  125. 转移一个key到另外一个数据库
    : M' t, n$ |# ~' z: \$ `
  126. $redis->select(0); // switch to DB 0
    ) }* |* J; X: J4 L9 k) h
  127. $redis->set('x', '42'); // write 42 to x
    . _1 R/ f- W  j% ~; W# g) e! y1 Z
  128. $redis->move('x', 1); // move to DB 1, U- T/ o( m" y: n: @
  129. $redis->select(1); // switch to DB 1) c( p8 F% |% T3 j7 k
  130. $redis->get('x'); // will return 42
    # r8 \, e( g' E9 G
  131. & L0 S, k* I4 p7 i
  132. rename, renameKey* a. b  t- P% |2 l4 H' G9 b3 P! ?! L
  133. 给key重命名
    + L8 L, P( n' U) O
  134. $redis->set('x', '42');* l7 u( B+ Q$ \2 \) |7 H
  135. $redis->rename('x', 'y');
    - g: n) F: \+ F0 v5 Q2 v7 B
  136. $redis->get('y'); // → 42: q3 v2 U) _( k$ D6 v, d! y
  137. $redis->get('x'); // → `FALSE`$ P8 j& q: t7 R7 r; f) |

  138. ( q# v' |/ f3 i! v8 N! X
  139. renameNx+ G8 d1 a$ ?3 o/ c' w. r
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    4 Z% o+ n+ }, J- r! I
  141.   i, M' x) C4 O7 S' k# ^7 u9 t
  142. setTimeout, expire
    6 M1 f  k9 V' o  G& W5 }) g$ j
  143. 设定一个key的活动时间(s)7 f" [3 F9 F7 r3 Q  o) C) Z( B. {
  144. $redis->setTimeout('x', 3);" c2 i- @" |$ U! @+ H

  145. + Y3 ]- [/ V! j' A8 B& a" l9 P6 ^7 D
  146. expireAt
    $ s; _% G4 T' a) T
  147. key存活到一个unix时间戳时间
      I- b; G9 x: g
  148. $redis->expireAt('x', time() + 3);
    ( ~/ G# d, l) H% M- M" `
  149. 8 T) z1 D& i( g# d6 r
  150. keys, getKeys+ ~( j+ X. z7 a( R+ b6 d/ ~
  151. 返回满足给定pattern的所有key7 z, R+ X* P+ S4 @4 v
  152. $keyWithUserPrefix = $redis->keys('user*');" {0 y" R: i! }( _6 i
  153. / v3 ]4 O7 j  K9 M8 D0 b" h
  154. dbSize* Z4 {3 A& `# x1 T5 X8 ~3 s) _+ s
  155. 查看现在数据库有多少key
    5 B3 f( T% o9 \" L, |. k. A  u
  156. $count = $redis->dbSize();1 ~  |1 C. {; ^, f# @
  157. 6 U6 ?, i+ L3 S* l. F
  158. auth& o$ ]$ ?3 `. P% {* I" |; J
  159. 密码认证
    ( n/ q; l2 [+ w6 B! D) I* q
  160. $redis->auth('foobared');1 t7 B* w! e+ N& |# M

  161. , e( h, o1 M3 k$ U0 q9 k
  162. bgrewriteaof, n& I3 z" h3 V2 s7 y/ P
  163. 使用aof来进行数据库持久化" F. E% Q: D5 F( o) V+ L$ J
  164. $redis->bgrewriteaof();6 _  b$ ]. L/ |# u3 b4 a5 q9 N, {
  165. 2 A& r/ w' g) {! T
  166. slaveof3 m! _& i% O6 N9 X! M! y3 A% ^$ x
  167. 选择从服务器! |; f! V( e7 _" C. O8 I6 J% v$ I$ |6 l
  168. $redis->slaveof('10.0.1.7', 6379);0 l+ ]6 D. M, [
  169. 5 I! y( ?6 Q$ h' x) M; n
  170. save
    % l1 c& r2 t4 v) D' S
  171. 将数据同步保存到磁盘
      s3 f. k! d  D& e; d6 R

  172. + r& U- b2 p) T- G' \& }  t' M
  173. bgsave: g0 J3 M0 j: a% c9 K' a' N5 p
  174. 将数据异步保存到磁盘5 t8 T- c  K- `7 `; N6 d

  175. 0 t# b" ^3 B! a- e# ]
  176. lastSave
    ) u7 D3 s# j, g
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    1 r6 c2 o) G; P& B. Y

  178. ' m+ c2 i2 X# q
  179. info
    # q$ ]% c$ U4 A( w! M
  180. 返回redis的版本信息等详情/ m' Y3 u, E9 \( d7 F3 M* {

  181. . e+ c7 y3 u) e' k
  182. Redis::__construct构造函数
    4 e, h( c: U, C5 t$ V: }; K
  183. $redis = new Redis();
    % c* y7 d* t( ?' }( Y, G. X
  184. 7 P8 U: O8 }' A0 V* ]
  185. connect, open 链接redis服务9 G8 X4 Q6 R- J% N7 \. V% k. s
  186. 参数
    9 n8 S& [$ {& E$ _+ l3 ^
  187. host: string,服务地址
    & c$ {* C  M5 u) e) h! g  Q
  188. port: int,端口号+ W& w+ g$ s$ ~  N# @& g
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ; j2 V2 m$ ]& [" n1 c
  190. 注: 在redis.conf中也有时间,默认为300
    1 S! I" p0 ]/ w$ t% [- x7 }! k

  191. - a8 j4 D5 H1 k- |1 z& t
  192. pconnect, popen 不会主动关闭的链接
    - b3 I9 C2 K# h" z: I- P* r
  193. 参考上面
    - D' N* q; |9 F* R2 }. h9 p
  194. 2 m4 I1 F+ q+ M% A. ?# Y& o
  195. setOption 设置redis模式
    1 g) v7 t) r; }9 @' E
  196. 9 g( @( x6 u( B  g
  197. getOption 查看redis设置的模式
    2 `% G) d6 c5 m0 Z

  198. # e& E  P3 ^9 j: A, ^5 Z
  199. ping 查看连接状态/ r* z! l8 h7 B. A

  200. & ~( R6 ]" L2 K" p2 Y6 a+ C
  201. get 得到某个key的值(string值)
    & f/ B9 A% O( o8 S" v: i0 b( |  m3 u
  202. 如果该key不存在,return false
    9 V1 U+ o9 p7 s4 y- K$ A' M' N2 e

  203. $ J  y  }+ H3 k. C% c* _/ ^5 f0 T
  204. set 写入key 和 value(string值)+ a8 Z  C6 Z6 Z& N8 i" X2 [
  205. 如果写入成功,return ture
    / Q7 G* ^( E) |" Y+ g4 {+ e

  206. ) @3 Q$ ?# B% m( f% f
  207. setex 带生存时间的写入值) N9 i' a4 K; {
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    - S4 j& v- n# h8 G$ f

  209. & j) L  |, r7 I, G7 f5 g( [
  210. setnx 判断是否重复的,写入值8 A$ Y/ f, D5 R) ]: e9 W0 G
  211. $redis->setnx('key', 'value');$ b6 U) y4 I5 i, o0 b# f
  212. $redis->setnx('key', 'value');. \- R1 c+ N' S. y: x

  213. , V( r6 K2 J+ ?9 ]' L
  214. delete  删除指定key的值
      M/ ^! w% _* l7 ^
  215. 返回已经删除key的个数(长整数)
    * r. G( i6 X: x: t9 g# E# c" s
  216. $redis->delete('key1', 'key2');3 O/ k4 t1 A0 H, \
  217. $redis->delete(array('key3', 'key4', 'key5'));. H3 N. e# c, f- v/ k6 I- P) z

  218. 5 l* M: y9 ~+ \# g; t2 A
  219. ttl
    8 [9 i" t* X# e
  220. 得到一个key的生存时间
    * ^( x% _) F' e& B$ V" K0 e  ^2 \1 v

  221. / ]. R; @" H; D' N7 W
  222. persist
    , R8 B; i9 P7 P3 C/ N
  223. 移除生存时间到期的key
    1 d, W. Y. k# e1 c6 |! b! O- @
  224. 如果key到期 true 如果不到期 false
    0 S$ T+ Q: Z, \3 x
  225. 5 E: n9 D, u+ I, }, R( A
  226. mset (redis版本1.1以上才可以用)
    % }  c! R8 E! J
  227. 同时给多个key赋值
    # F/ s3 S; `- }( w
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));; \' t" R; s( Q

  229. 7 x9 x- I' ?- O/ h7 ]$ w6 X
  230. , m; l# O8 M" }! D$ C5 s
  231. 5 G0 ^3 Z4 N- q' W6 H5 T6 I
  232. multi, exec, discard/ x8 @6 ]* ]( P/ s- B$ M& H
  233. 进入或者退出事务模式* \4 W8 ~+ o- ~1 P8 w, I9 Y
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI# J: G. v, `0 h- \7 S5 T2 X
  235. Redis::MULTI:将多个操作当成一个事务执行, V, H* k7 s  q' l9 K
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证# N  k* b: j/ i' C# I" R' [
  237. discard:删除一个事务
    1 y" X# {. v$ @" F$ j
  238. 返回值- ^  Y& O" z, Y, ~
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    ; |- |, Z8 v8 d3 \) v) }) o9 ]" C& {

  240. & n: A2 u4 m+ `  d; i3 m8 p7 y
  241. watch, unwatch (代码测试后,不能达到所说的效果)$ }9 k1 D- }: S& X/ B9 O) ^
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    + V# X6 M, w1 `$ g" D; Z9 B
  243. unwatch  取消被这个程序监测的所有key! L+ n! O) N. G6 f0 M# N5 Y! W& @
  244. 参数,一对key的列表8 I) p, m: z( {' Q  _9 x: y
  245. $redis->watch('x');
    & }# j* p: V7 R( E: U; X7 A

  246. 1 ]( a: o9 y. H* w. Y: r
  247. $ret = $redis->multi() ->incr('x') ->exec();
    : ?" O( Q3 Q% Y9 P7 O
  248. & F+ D  ?. W6 r" R& k9 ?. Y

  249. , r) n) y- _+ x5 ^1 o: Q
  250. subscribe ** Z  H' V1 Z/ c4 j, Y
  251. 方法回调。注意,该方法可能在未来里发生改变
    ! W, A; n  v; d. W) c
  252. ! l5 i' f% M  F5 {
  253. publish *
    1 K  \$ o5 l+ {8 T5 {
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    7 ^! v6 C9 U' i+ |+ d6 [
  255. ! |( p/ S2 ?( d% _2 x
  256. exists
    # x6 K1 Y2 v1 y: C3 R
  257. 判断key是否存在。存在 true 不在 false
    : X. K9 D$ I) z8 O8 ^' d
  258. ; X  P& }. i" N0 Z0 C$ g
  259. incr, incrBy# U& \/ E0 `) Y  M* U! Z  ]1 ?# k% v
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    : j3 p5 r* D4 M! r( X5 H
  261. $redis->incr('key1');
    4 r$ n3 S  l- W2 {0 m# R* ]
  262. $redis->incrBy('key1', 10);
    ; A. _0 y- n  ?1 }8 e

  263.   H$ C' O, H& m! q
  264. decr, decrBy/ M) t) t' x4 N& V# x5 q! q
  265. 做减法,使用方法同incr
    - l6 M. r( |- e; D

  266. 5 e  n6 r  i0 h  p
  267. getMultiple$ @  {& l: L; t( L- Q! y- C
  268. 传参
    6 D! }( s8 B5 ]
  269. 由key组成的数组
    ( K* [8 t" x* F. C0 F
  270. 返回参数  X# R, [. P9 h
  271. 如果key存在返回value,不存在返回false
    4 J6 X% c! R, Z' e( Y( O" f) v
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    2 p# P. e$ I0 h- L# x; i1 x
  273. $redis->lRem('key1', 'A', 2);
    ) P# a. K: D2 e/ n2 P; j
  274. $redis->lRange('key1', 0, -1);
    . k7 J4 k# Z: ^3 R1 x6 U
  275. - E. R  X/ o% [8 U4 z4 X
  276. list相关操作4 @) i( b% b4 k# f9 [# Y
  277. lPush  |6 c$ j% C2 a
  278. $redis->lPush(key, value);
    ) q) `% f$ e" P
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    ) K; g; z; M+ [; j8 }

  280. " l/ R. ^8 A3 W) W: e
  281. rPush
    6 r# k* T) V, X; ^' ?! q, P/ [0 c5 P; Q4 T
  282. $redis->rPush(key, value);- j% v; [3 Q* |0 O
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    ) A2 x: w) f5 E" z0 [( R3 I  r
  284. 7 J  o1 R& S7 |# m. T, ^
  285. lPushx/rPushx# B, p6 D* o' S6 n1 X5 \
  286. $redis->lPushx(key, value);- O2 z' }; \( _
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加6 ]/ C2 m! ]  n' Q- U

  288. ( i% y3 o$ _5 Y( T6 o
  289. lPop/rPop
    ' W- v! S' y# @% W. c
  290. $redis->lPop('key');
    ) W: |: E$ @9 W9 a0 K
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素; t& t- O9 m2 z) f

  292. % W0 q! H+ e2 ], A" Z4 s* k
  293. blPop/brPop9 {$ C* V0 Y/ L8 X; K' Z. a% [
  294. $redis->blPop('key1', 'key2', 10);
    : N0 c( r7 @" U* z2 {0 D" `0 W
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    ) P, D7 E1 \6 J" Y" y

  296. 3 Y  a, x  \( e9 L# C* x+ l$ ~
  297. lSize8 _" x7 v" [! T6 I- k$ b" x
  298. $redis->lSize('key');
    $ H: v( ~" V# Y% U
  299. 返回名称为key的list有多少个元素
    - A' a7 z5 z6 F$ J$ s7 i$ ]

  300. : c6 N# j. C# `1 X6 s
  301. lIndex, lGet
    3 ?( \; W3 L" ^2 W
  302. $redis->lGet('key', 0);
    ; S5 G; x! v; ]' R) \' z4 ?
  303. 返回名称为key的list中index位置的元素" ^+ y9 d* A2 K

  304. - ^3 ~- ?$ W! ^) ]
  305. lSet) ?7 p4 k& K, }: m8 J
  306. $redis->lSet('key', 0, 'X');
    : p" W8 F* |/ s4 H: C- n
  307. 给名称为key的list中index位置的元素赋值为value1 m. `0 b$ v% G

  308. & B& ^6 ]0 N3 ?9 j0 p/ N% m
  309. lRange, lGetRange1 f# f: Q" s' |5 |6 H) U  Z- ~' _
  310. $redis->lRange('key1', 0, -1);: _' w2 O; n- [
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)& w( K: F9 P* f& c

  312. 5 l9 R: L% C4 Q5 S+ Q# t1 I9 I
  313. lTrim, listTrim
    : h) I, [7 }: O2 o4 a
  314. $redis->lTrim('key', start, end);
    ! I& @5 ?" P. E& r/ U4 \' x
  315. 截取名称为key的list,保留start至end之间的元素6 N) S, O3 Y8 `  |9 r" S+ p# D. U

  316. 8 r* t% L& r& J. W
  317. lRem, lRemove
    1 n+ c" K; [5 y5 s9 o9 }
  318. $redis->lRem('key', 'A', 2);0 h2 x$ F$ A5 b3 |: i* b
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    # r) |, `. o5 }% y" o: @# S
  320. % l+ G/ D/ ]0 a$ {
  321. lInsert
    : ?8 a4 a, n5 }3 W1 g- F! d9 F
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1$ U! D0 ?0 Q$ C( q  W
  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. q* ]5 s
  324. $redis->lRange('key1', 0, -1);4 z% e1 u# w+ m0 f3 d1 c+ o5 \3 @
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
      [. w9 ^( v7 t9 j. ?9 J
  326. $redis->lRange('key1', 0, -1);0 a3 Z/ v; M0 H: ^
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');) l6 c- [! D( E% B) f* Y( [
  328. 3 @2 Y* `& z& k, y" Y& Q
  329. rpoplpush* U8 X4 ]4 @6 i5 c" F1 ~. }9 Q( w
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部8 m3 z7 c) I' X6 y% f# Y
  331. $redis->delete('x', 'y');
    8 Q3 l$ i) Y, n/ I# r) M, _8 y% J  A
  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'));$ g' Z0 }% c& p
  333. var_dump($redis->lRange('x', 0, -1));
    & R, g% [: Y& W1 \
  334. var_dump($redis->lRange('y', 0, -1));
    ! j8 z& ^2 m& X, o

  335. % N6 U0 a/ d1 K. W
  336. string(3) "abc"
    & B0 h6 Q' l; \8 _4 I) O6 \/ O  B
  337. array(1) { [0]=> string(3) "def" } 6 j2 W4 k7 }5 M- w
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }$ `6 f9 b1 ]5 n' e* k' w1 X" B& `

  339. * R3 y+ ?4 h2 h! A
  340. SET操作相关
    ; Z- R2 u) D+ h6 }) Z
  341. sAdd, F1 ^5 U; w* ~- V  G
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    ! ]. o6 K7 T, {) m& `+ \0 @- S
  343. $redis->sAdd(key , value);3 n* E" e- Q3 i& u5 {0 @1 P% J3 W9 N
  344. 4 `6 V" O. T& M6 P* G; \( N
  345. sRem, sRemove
    0 E/ q3 T& a  P5 ?, B6 ^0 L
  346. 删除名称为key的set中的元素value- {$ G6 Z4 G7 I
  347. $redis->sAdd('key1' , 'set1');3 L! m+ _; \! w; J: l
  348. $redis->sAdd('key1' , 'set2');
    1 n" M5 o, h3 s0 p
  349. $redis->sAdd('key1' , 'set3');, m+ c& s" ^  |9 v4 s: _# f+ a
  350. $redis->sRem('key1', 'set2');
      M% R+ _* k% L% n- G

  351. 8 M4 V  u& `8 `6 P
  352. sMove! U7 M6 f" h( [, @5 L
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合& U' b/ Z. `4 o
  354. $redis->sMove(seckey, dstkey, value);
    8 f3 t" ^+ x8 D. J5 @
  355. 4 N/ f9 ?, O% L  D' e) j$ `
  356. sIsMember, sContains
    4 e) t' f6 X5 |5 b- y5 A. t
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    7 t9 _7 y4 w) q5 Q, @
  358. $redis->sIsMember(key, value);& U; T0 B+ m8 p3 s

  359. % d4 W- R6 r9 l2 b* e( \, n: G) t
  360. sCard, sSize# @8 D* F+ h) \% p
  361. 返回名称为key的set的元素个数6 r. G, ^4 e: {
  362. * `/ l/ \2 f6 P% H6 Y. Y
  363. sPop. O% r* M1 q" c1 `) {
  364. 随机返回并删除名称为key的set中一个元素
    ( [; c3 M% p. P8 d# |

  365. 8 K2 {- C, A4 b( k3 I  ~5 |
  366. sRandMember
    ' [; U6 i' V( q# w( [4 l
  367. 随机返回名称为key的set中一个元素,不删除" a8 U" q! F; t7 f

  368. & r" M+ |9 Z3 |+ p& l! x3 N% I
  369. sInter  U/ D9 \3 g* R
  370. 求交集3 N8 @- i3 {0 O4 B' E* c3 S
  371. 9 _5 D, T" a( c3 D
  372. sInterStore9 R4 }2 n! H. A8 X/ t- o
  373. 求交集并将交集保存到output的集合
    7 b2 a7 o. I& A
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')( K( Q9 ?. [# k7 ~
  375. ; Z/ c8 t( M  K5 v) k+ l- C. R
  376. sUnion
    * L2 Y3 R$ ^# O- J4 f" a  ^# m
  377. 求并集& E/ ?% s& P4 M! v' T7 B
  378. $redis->sUnion('s0', 's1', 's2');$ i3 o0 j* a$ ?+ c
  379. s0,s1,s2 同时求并集
    % r$ o- X' r& P; n+ s9 X6 y

  380. 5 v+ B9 c9 @4 p9 C5 Z
  381. sUnionStore
    6 E3 c* {$ T. n
  382. 求并集并将并集保存到output的集合, U" W0 g( Y3 y( B8 a; ]
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');8 ?3 h7 M0 T( g0 S8 {
  384. / e6 e1 ]9 y3 j1 n, H* r1 j
  385. sDiff5 c3 X5 \( h5 Q5 {9 i8 ^0 l
  386. 求差集6 ~, j  G% x0 Z, G( Z" x) P: k; S& J

  387. " Y6 ?7 a3 w( Y8 K
  388. sDiffStore8 h! T9 ]4 h: A9 h! k2 Q& g
  389. 求差集并将差集保存到output的集合5 t! h6 I0 m% ^# t7 T& g
  390. 3 F" X% ?9 K2 D, [9 o' b3 A
  391. sMembers, sGetMembers
    ! r8 ^) W) d9 t3 Q% \7 D( k
  392. 返回名称为key的set的所有元素
    3 ]" q' y+ l) e9 F3 |% d
  393. 8 O! a+ u2 v7 [
  394. sort  E. I7 U7 b  V, a: _/ V
  395. 排序,分页等
    ; [4 N: w8 ~4 g2 }6 G
  396. 参数7 j' D" I& N0 R
  397. 'by' => 'some_pattern_*',( ~& i. u  N+ Y
  398. 'limit' => array(0, 1),/ H+ [! K, |& m; B, V# q
  399. 'get' => 'some_other_pattern_*' or an array of patterns,0 q9 E6 |' F$ W* y. D, t5 D# {
  400. 'sort' => 'asc' or 'desc',
    8 l6 M  \9 G% U
  401. 'alpha' => TRUE,
    3 \) Y8 N/ _; V3 d5 s
  402. 'store' => 'external-key'
    ' U7 M' |3 A: _, ]4 y/ H
  403. 例子8 i* w* {. G0 u# |
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    6 ~. Q( S/ [( ]0 ~: t1 x8 Q1 x
  405. var_dump($redis->sort('s')); // 1,2,3,4,5! D" b. i; s! ?1 b' A+ `
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1! m, H# {( z; f
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5$ ]5 K# U8 h9 k& `

  408. 6 C* d5 z) Q. V0 J, I3 c
  409. string命令
    6 f" _8 x7 c0 |' Y
  410. getSet
    8 @  E9 Y# {- i; U; [2 r( |$ \
  411. 返回原来key中的值,并将value写入key1 i( C5 R. k" Q$ w; F. v( S
  412. $redis->set('x', '42');; F. u( k1 y+ _$ C9 [
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'2 C5 C8 V6 g, i
  414. $newValue = $redis->get('x')' // return 'lol'
    & P2 _: N7 _- W2 m* n% G6 j% z
  415. 5 ?0 t+ g. f: ?  n7 H/ k+ @; X
  416. append/ z0 J2 |2 K; J4 Q
  417. string,名称为key的string的值在后面加上value
    # g5 g" S) n5 R: z8 ~# X2 g( n4 J3 G
  418. $redis->set('key', 'value1');
      Z  _; ^" U; j1 [5 J
  419. $redis->append('key', 'value2');
    $ P" u3 L3 E' M% }% X2 V
  420. $redis->get('key');
    4 Q8 q8 E) ?8 o3 x; \9 @' N

  421. . Y3 R1 u; x' Q& m& d
  422. getRange (方法不存在)
    ' q6 o# Y/ Y# u* m. E
  423. 返回名称为key的string中start至end之间的字符
    9 W" Z. @& e" Q- h* h
  424. $redis->set('key', 'string value');
    % D6 A2 j" b$ ]$ E& N) v
  425. $redis->getRange('key', 0, 5);+ ?0 t7 o: g/ C; W9 Y+ t9 S4 b6 J
  426. $redis->getRange('key', -5, -1);# z$ R5 `0 a( t# ~: v
  427. 3 o- [) w! T$ d4 {8 Q% a2 x* c7 q$ t
  428. setRange (方法不存在)- D) Y- `" B7 Z2 k' I: m/ u
  429. 改变key的string中start至end之间的字符为value  J" k/ ^/ z$ Q2 m
  430. $redis->set('key', 'Hello world');% {$ k6 S" E% q; [2 n
  431. $redis->setRange('key', 6, "redis");1 ~1 a/ C3 c. D) t& H$ }
  432. $redis->get('key');" F7 L6 j* u8 f8 R+ r

  433. % V0 s9 ^8 ^: r4 @9 M1 u6 H- `
  434. strlen: a: I2 e6 n- e# D1 w8 k) g
  435. 得到key的string的长度- Y6 p' }3 v6 e0 S3 B
  436. $redis->strlen('key');
    ) y5 Z9 {1 D- s( V# u* Y* t

  437. " Z% d! K+ \0 A
  438. getBit/setBit; u3 m$ G' V7 \
  439. 返回2进制信息
    2 |, M6 I0 g' g( ^' S

  440. 3 w7 R4 c! d2 r
  441. zset(sorted set)操作相关* S* l) O! p$ E$ Y
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
    - A% `" h* S) @$ I8 x! ^1 D6 j2 `
  443. $redis->zAdd('key', 1, 'val1');
    % s8 K! O0 u: u' ?3 [1 d
  444. $redis->zAdd('key', 0, 'val0');
    3 ?, g/ r: D, q  H, [3 m/ B
  445. $redis->zAdd('key', 5, 'val5');" n. `9 X! \/ c+ i6 n# {% G
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5): D4 H8 x; ]- j% r8 T1 I

  447. ' Y2 X: x) i! Q: R
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素# D) h! k5 d4 m/ d" `2 x. C$ U* d, m/ M
  449. $redis->zAdd('key1', 0, 'val0');' Q' S4 s6 V" s4 W/ Q
  450. $redis->zAdd('key1', 2, 'val2');1 A. j' v/ Q# \6 f
  451. $redis->zAdd('key1', 10, 'val10');
    ' ^1 r4 z0 `0 `' t9 x! \6 l. x7 {' o7 W8 `
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
      d3 p+ ]% r5 L6 Z0 j) e
  453. 0 x6 O  O7 c# X/ h
  454. zDelete, zRem& L* E) d. C! X% i1 t, \4 W& j$ t
  455. zRem(key, member) :删除名称为key的zset中的元素member
    : c) M( I' i* S) }+ T
  456. $redis->zAdd('key', 0, 'val0');
    9 X( E3 o5 Q: w  d
  457. $redis->zAdd('key', 2, 'val2');1 T8 \. y: S9 k' c9 c
  458. $redis->zAdd('key', 10, 'val10');
      W" ^1 X3 t/ f7 C3 t
  459. $redis->zDelete('key', 'val2');# f1 `% K: Q6 M
  460. $redis->zRange('key', 0, -1); ) J: }6 {, f0 [& T

  461. 4 L& K$ ~! N$ p# t; }# o5 r4 Y/ ~
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
    * p2 i  X8 q/ j3 {* f" S/ j
  463. $redis->zAdd('key', 0, 'val0');
    / x: }( A7 T' N$ O8 x
  464. $redis->zAdd('key', 2, 'val2');
    . }8 |& R" L5 g; F8 }  \
  465. $redis->zAdd('key', 10, 'val10');" N0 Z# O) u9 ]  X1 l
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    / x) X* j& `7 k2 e# z% I6 z7 P/ V
  467. 5 I* w6 k5 @4 D/ T3 _( p: H+ y
  468. zRangeByScore, zRevRangeByScore
    6 y' Z$ [  W. h1 Q
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));0 k! l6 \& ]3 W* Z
  470. 返回名称为key的zset中score >= star且score <= end的所有元素) z5 K* e' k& w! A

  471. 7 K/ Y1 p  m. ]! F/ A9 t5 H
  472. zCount
    1 U$ d" m  U! Y! z
  473. $redis->zCount(key, star, end);1 J' J+ j; t% m- w! y) n
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    , U: J/ l1 }1 g+ J

  475. 0 t9 o( [' h' v/ a! u4 b5 N! m) B
  476. zRemRangeByScore, zDeleteRangeByScore0 \$ d: M0 A; K: h  z$ S! F% s" g2 A
  477. $redis->zRemRangeByScore('key', star, end);7 y( p6 ?3 R3 b( a' N7 S
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数( q4 ]3 O; S: _9 ~5 h

  479. 4 d5 U( x1 p5 ~+ _! l: D
  480. zSize, zCard
    ! |* s" T" _2 X4 W/ {0 ]
  481. 返回名称为key的zset的所有元素的个数$ M9 Y3 t& m9 K6 @

  482. 6 H$ ^6 `" ?2 l* r" Z
  483. zScore1 U% d3 n* ]3 \8 L5 l4 X
  484. $redis->zScore(key, val2);
    % Y3 w9 H& ]7 S% @( @
  485. 返回名称为key的zset中元素val2的score- ~. X6 q# f) w& ]
  486. + R* x' `/ @8 s! e
  487. zRank, zRevRank
    . Y0 {9 S5 ^1 _$ D% Q, ^
  488. $redis->zRevRank(key, val);
    + X- I5 i" {5 C8 K2 }
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序
    3 d7 f& c7 F3 a+ r# }! y" i

  490. 3 J8 U8 {/ n: t% a; h3 m1 @+ ], A$ C5 K
  491. zIncrBy$ F& B" I! k. s, I" {2 |
  492. $redis->zIncrBy('key', increment, 'member');
    ) E- |- s% P5 O' x: X" n9 N, Y; d
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    & q+ ]$ p$ i5 s
  494. & U; I! B  d9 N# Q2 p5 i
  495. zUnion/zInter' ^2 I2 }0 y  W7 n, I: m
  496. 参数) H) W  ?5 b% B$ Y
  497. keyOutput
    9 m/ o8 P  Y6 p  i; Q0 {/ i
  498. arrayZSetKeys
    ; G' I; \( C4 V5 s# g7 j  `
  499. arrayWeights
    ! l2 j6 ~8 B9 l, ]  e
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    , Y' |8 @  B: G1 T( K0 c6 m
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。3 A4 e$ `/ {7 T" {2 {: ^* y  @
复制代码
8 C0 S3 m9 n# @# V! s
* H3 G+ Y+ M' H" e# \

" |$ t/ C3 D9 m
! Q& C! l9 ~2 Q. T" k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    : V& Z# c, C4 z
  2. //连接redis服务器
    7 x$ T: a' C2 k5 Y3 G* Y# @1 c* N
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-12-22 17:21 , Processed in 0.135726 second(s), 19 queries .

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