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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php1 K; P' O$ h& q& N3 u# |; r5 v
  2. $redis = new Redis();  & W8 Z; z; b- k0 r
  3. $redis->connect('127.0.0.1', 6379);//serverip port; J+ u% P/ R. ]/ ?/ O
  4. $redis->auth('mypassword');//my redis password 2 D, i" Y% M- B# S( W8 o0 x
  5. $redis ->set( "test" , "Hello World");  
    ( C0 M+ s2 D$ a) J% B$ z& T9 h( \: A( x
  6. echo $redis ->get( "test");
    % V5 T9 I2 O; _( }2 q
复制代码
php操作redis函数封装
  1. /**7 l+ a( f0 p4 I' |# |' S, X4 c0 C
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数" r( u7 z& f2 J& v( }* i
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    3 E+ Q+ @* n) ~% J, x1 ?7 c, f5 B
  4. */9 \( {. ~. |0 x1 y0 q) Z5 L; p- F( @
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    # N7 C2 }  x# N- C* G! k
  6.     if(!$key||!$value) return false;
    9 W# E# w5 _" v, R: Z
  7.     $host = $host?$host:getenv('REDIS_HOST');- v8 a& `/ q/ E9 x# V5 q# p
  8.     $port = $port?$port:getenv('REDIS_PORT');
      o* d: \  ?4 F( L% g  [1 ]
  9.     $redis = new Redis();2 V* b8 X$ j6 i2 X8 p+ p4 J
  10.     $redis->connect($host, $port);
    9 d3 `2 x& e7 l% U
  11.     $value = is_array($value)?json_encode($value):$value;* E# Q( ~1 ?6 D* X* h  q8 I
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);  O2 \) o/ y7 }% V5 D3 e$ ^9 c
  13. }
    # `7 j" c4 f+ D  {: L3 K: Z
  14. /**/ X( A  c. {3 Y% p
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    3 X4 \4 G+ X1 A5 s6 e+ b
  16. */. k* G6 i: \) S3 B& C$ f) v4 ]
  17. function RedisGet($key,$host='',$port=''){, h) u& V5 U/ p! w; ^/ k
  18.     $redis = new Redis();
    3 S8 y2 A. f$ ~# l0 P
  19.     $host = $host?$host:getenv('REDIS_HOST');
    ) i' Q+ r9 f" i2 A
  20.     $port = $port?$port:getenv('REDIS_PORT');
    % d) o, b0 o' Q' d/ o$ p  N
  21.     $redis->connect($host, $port);
    ) Q+ n/ }2 K( h, o
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    . D' A. ]/ x! I2 q
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    * u# K0 o' q- }6 d' t
  24. }
    7 i& O# }9 N) Y+ {1 _! ^) k
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了1 r3 o4 h/ \; d  u
  1. setex 带生存时间的写入值
    . L# \4 o4 z' t; v2 H8 ^
  2. $redis->setex('key', 3600, 'value'); $ L7 q/ x1 b: M! M
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    : C1 F( w+ u, ^9 X* k. N' k
  4. $redis->setnx('key', 'value');8 M2 T2 a! P9 `, s1 O4 L1 ^
  5. 返回已经删除key  n; G! e% f/ M9 [3 m
  6. $redis->delete('key1'); 成功返回1失败返回0
    , r. h3 Z+ X  g5 O
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    * ~3 v3 k$ R, @5 i7 h3 Z$ H1 e' j
  8. 查询生存时间
    9 ~9 \. f- H. K3 C0 x- ]. j4 ?
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)1 Z) E5 H1 L  q6 n2 y2 o
  10. 同时给多个key赋值,同时设置key0和key11 {9 T: ^6 g4 f# A6 u  Z2 d& |
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    8 E$ W0 g3 Q5 N
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值2 O6 Z' N# }& l& R
  13. $redis->incr('key1');
    . R* P% f! [  b0 y1 i! L6 U' C
  14. $redis->incrBy('key1', 10);9 H  r7 F6 V8 M) J/ _0 x2 ]' b
  15. 减法跟加法一样' O! {# d% r, q3 H1 u9 ~
  16. $redis->decr("key1"); 减少1
    ) X; \4 m9 f' L  v1 \! Q
  17. $redis->decrBy("key1",5) 减少5
    . \& Q) ]# u' m- s# u+ H

  18. % S0 ~" o$ k* D$ s( W. P) M8 k- z
  19. list相关操作,连表操作& z3 D1 N2 q9 t# m
  20. lPush: n7 q9 W  Q$ k5 U
  21. $redis->lPush("list", "888");
    : P+ f4 p$ y" W+ G2 ^/ D0 ]' a# D
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    $ b* D# ]& y6 L' a, s& l2 R) [
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式/ i- M% m4 v0 p! a0 o7 m
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素3 X' d# J) N* P& s5 s. X
  25. lPushx/rPushx
    . D- ~) ~1 j/ H* K6 B3 s
  26. $redis->lPushx(key, value);
    ( z; f" b( o7 ?8 O
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    4 \5 Z7 P6 S+ O

  28. 9 y' I' V8 x* C/ h) V
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key; p6 [' A! |' h7 U
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key; q* m& U  o* i
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回12 \6 t/ |  P  ?' D# \8 r8 x" X% |
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序8 L7 ?4 v- K+ b$ r
  33. sadd s1 zhangsan+ x2 z% l& T( ~6 U
  34. sadd s1 lisi
    ' _/ m$ h2 ]( \$ \( M. A6 r
  35. sadd s1 wangwu
    % `9 {+ v; T# f" U! \, J9 H
  36. sadd t1 yangxingyi( v' ^9 I  t' ~! A5 o: V) ~. V
  37. sadd t1 lilei
    " t1 P4 _7 q, `6 q
  38. sadd t1 zhangsan
    " o1 N7 `+ }" S& h
  39. smembers s1 s1的所有集合内容: F, F. ~$ `0 w3 F, c' i  q
  40. sdiff s1 t1 s1有的,t1没有的,差集) Z* D  M' O- ^9 C( [+ N" F, o" w
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
    2 q- ]" E5 P3 G0 H3 Z
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    ( j* ]! k* _" [0 O
  43. spop抽奖场景,返回集合里面随机的数
    # p! U- I3 P* j4 n
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了* h1 K1 |9 u* {) m) y
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数& [- L  D& M. ~
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
    4 |  x3 ?8 H) a
  47. 随机返回集合里面的一个元素,但不删除,重复中奖9 D' ]' |' t; H8 v* p7 z
  48. $i = $redis->srandmember('s1');echo $i;9 v8 |  F; _$ a) s9 Z
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
    0 Q0 R: Q: U5 h3 p6 s7 G7 r# g
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false1 L! x9 b2 v  ^  V
  51. 7 ^3 t9 Z/ z7 R, s
  52. zadd key 2 value 有序集合
    ; Z& R) z' E5 a! @
  53. zadd y1 1 zhangsan;
    $ C! d0 B" c$ y: j3 O0 t/ t
  54. zadd y1 3 lisi;
    6 f" c& @" Q' [; b
  55. zadd y1 2 wangwu;( Y9 b: Y, c2 b7 i3 k- b. X# F
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi
    * g/ B3 n* T: g% ?  ?4 X
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    3 b/ h; ?( S* @1 V
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键3 T; f) l/ z& A0 l( E1 l+ _
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先
    2 K, X3 a$ o" ?9 ~& A
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的: }1 c* W, w  {9 d5 o
  61. 无序就scard,有序就zcard,有z没有s, i  G: J$ E4 Y+ V
  62. sInterStore( b# V0 o) ^9 Z: f8 F5 v
  63. 求交集并将交集保存到output的集合
    2 M+ q$ d* ]; N6 E% p
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')* z. g! q2 ]; N: i1 }
  65.   R  _' M( R+ v0 ^5 {  f1 y
  66. Hash操作) }) }3 k& `6 f7 r
  67. hSet
    4 Z% _/ \' h3 a# q  G
  68. $redis->hSet('h', 'key1', 'hello');9 V# H' H; ]4 Q% V) |3 c  v
  69. 向名称为h的hash中添加元素key1—>hello
    # P8 g8 l% _0 d" U9 f
  70. 5 e2 g; I- X& Y+ S7 l# u
  71. hGet) I0 b" t+ q( k3 [0 K; B( g$ }
  72. $redis->hGet('h', 'key1');6 A8 z$ v! V1 [; U' t5 X
  73. 返回名称为h的hash中key1对应的value(hello)' |9 u! ?) N( V. [6 R# \

  74. 6 |: P3 b; o4 j# l0 |# ]
  75. hLen
    6 f( U  P( E4 [  y2 m4 P1 o4 i$ u
  76. $redis->hLen('h');
    8 l9 p  }- }% L
  77. 返回名称为h的hash中元素个数! G- j; O( g( L3 F4 o% V; I
  78.   i8 P4 ^$ m" ]3 U! n2 N( B
  79. hDel& N; \; W( \4 f& u, `
  80. $redis->hDel('h', 'key1');$ N5 s7 C/ w/ W/ ^
  81. 删除名称为h的hash中键为key1的域- b. |: g3 [3 t# f2 r
  82. 2 _. I  J0 v, P% `! ~
  83. hKeys
    7 j/ U6 a% b, L$ g# c  I- ^
  84. $redis->hKeys('h');
    $ l0 x! L" c! J8 d
  85. 返回名称为key的hash中所有键
    / R6 }0 C) w  J  h/ `( I: W
  86. 9 }  |' p4 n9 ~! q/ @2 M; J
  87. hVals% u6 N/ L& m. f  \1 R; q
  88. $redis->hVals('h')7 S, O3 y3 n6 ]4 T% c+ `
  89. 返回名称为h的hash中所有键对应的value
    / Y, U" Q0 ^! R+ L' V3 O- f
  90. " y1 w% b8 u! `2 h  Q+ W
  91. hGetAll
    % K8 v/ b3 p5 j4 U9 L" }! X' J& G3 h
  92. $redis->hGetAll('h');
    7 W$ P( Z  X' e, o8 P
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    " J; H! ?4 h5 v. S! T$ n, ^8 o, y

  94. 7 C! @7 h2 @, Q& N+ M, X
  95. hExists
    ( i: H) `9 V9 ^
  96. $redis->hExists('h', 'a');
    9 S7 I+ }6 u. ]. n& Z# m% v
  97. 名称为h的hash中是否存在键名字为a的域3 @6 w1 m1 }1 F% w7 z' T
  98. & h: u+ O& r7 T
  99. hIncrBy' L' j! O% a2 `
  100. $redis->hIncrBy('h', 'x', 2);
    ' P/ `( l& d( p3 `, V
  101. 将名称为h的hash中x的value增加2
    4 l/ c: x1 Y$ k4 J

  102. 5 O5 u8 D+ D$ s# W5 i1 b% X
  103. hMset) @, P' l3 @/ f; ]: U
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));
    # b5 L" s# W6 l
  105. 向名称为key的hash中批量添加元素" O( H9 Y6 A% L( p! }' c' J, F

  106.   T1 w4 W& A9 x4 R( [
  107. hMGet" K7 s1 Y, K  Q
  108. $redis->hmGet('h', array('field1', 'field2'));2 t: \' T( U: W0 a- A
  109. 返回名称为h的hash中field1,field2对应的value/ J# B$ ?: E9 M( a5 o
  110. 4 W1 {6 b1 e* X0 A4 E
  111. redis 操作相关6 `6 r/ Y+ w7 W, U8 I% B+ ^& w0 W
  112. flushDB/ I' ^/ T% L# h3 Q* Q' e" o
  113. 清空当前数据库( B2 ^3 T  d$ e) o( W$ u

  114. ( W3 j4 m# Z, V8 W2 A" W! B5 k
  115. flushAll- w* V) J& D2 y  Q' O; _6 _
  116. 清空所有数据库
    7 l. ~, o+ M# g. f4 v
  117. 0 z* V, g& @$ U$ N7 q1 ^6 K
  118. randomKey+ F# u- {5 Q5 ?. o) G
  119. 随机返回key空间的一个key' R8 F) Q  X" }) G3 b. w: _0 r' l
  120. $key = $redis->randomKey();4 c. G2 q/ W9 `  \! O& h7 G
  121. 3 h; f9 N* ^% R( l* p; `& p8 d2 e
  122. select7 n9 p- ^: t4 \" Y8 H
  123. 选择一个数据库/ c- k: ?1 _9 D% i7 P/ F
  124. move, Q% ^  ]4 M- n# l
  125. 转移一个key到另外一个数据库
    0 O+ g5 ~6 g7 X# g" e; y4 }
  126. $redis->select(0); // switch to DB 0
    5 o8 w5 U, a; U* v4 O$ l
  127. $redis->set('x', '42'); // write 42 to x
    " Z8 P! [  I7 D0 e
  128. $redis->move('x', 1); // move to DB 1
    / R; C) s% `  L, I
  129. $redis->select(1); // switch to DB 1
    , k( `3 }5 x9 h8 V# m, N3 m6 v
  130. $redis->get('x'); // will return 42
    7 z9 i' G  P3 {& |4 `

  131. - b+ L4 J2 p2 `3 i7 `2 `
  132. rename, renameKey
    2 }, @) t" a0 j2 n) P) M4 I
  133. 给key重命名6 ~% E* }9 Q7 t! U8 {% z* H4 R- ]
  134. $redis->set('x', '42');/ J, |# L5 J& Y
  135. $redis->rename('x', 'y');
    ' d$ o; t% E- @5 y6 Q
  136. $redis->get('y'); // → 423 h$ k) Z; S! K! U" z
  137. $redis->get('x'); // → `FALSE`
    8 O0 S* L8 i, L) y8 s

  138. , a+ @$ Y; j  b# j2 A  @
  139. renameNx7 m* ^, c: ?; o
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功+ _( k0 ^8 h8 e7 f1 Z$ s

  141. $ Q" s4 O3 W: O% p' ]
  142. setTimeout, expire( V+ K/ m9 S8 U: E' A- L
  143. 设定一个key的活动时间(s)
      v, N( Q- e. a" F4 j5 G
  144. $redis->setTimeout('x', 3);
    % C  ^9 _  P! g  {/ Y2 V% \7 O- B

  145. # N5 E4 c8 @8 w* A! h
  146. expireAt" r2 \. w7 T, j! Q
  147. key存活到一个unix时间戳时间! O4 m6 `, v% Y; p/ J) A* Q  u
  148. $redis->expireAt('x', time() + 3);
    8 ^# `! }5 V) L  c

  149. 3 H5 y% a$ o- e8 w7 F; j
  150. keys, getKeys
    . r4 c% S0 x+ M" t0 J' T
  151. 返回满足给定pattern的所有key" T! l* U$ p! H6 h( e
  152. $keyWithUserPrefix = $redis->keys('user*');8 s, Y) U) S/ m; G
  153. 3 h/ C& [+ {( }7 k2 z; k
  154. dbSize
    + ?- Y; I& _7 ~8 _- w" \
  155. 查看现在数据库有多少key
    * v6 R+ C( x7 U7 b7 k4 R
  156. $count = $redis->dbSize();
    ( a- [5 |3 |6 s7 u4 y

  157. ) L; A: e7 g/ E9 v3 ~
  158. auth
    " V& i" ]6 v, i
  159. 密码认证
    % p8 h8 R6 E/ S
  160. $redis->auth('foobared');% j) w/ o  n7 }2 e# [& y3 ~

  161. * _- I; H( h3 ?, g
  162. bgrewriteaof9 W$ d! f8 F2 V9 e
  163. 使用aof来进行数据库持久化- R$ ]% v! C2 l- o
  164. $redis->bgrewriteaof();8 }; N% _& o" q$ s+ W9 t
  165. . K- t0 ~6 `( [
  166. slaveof' |# t! `. x4 X# X3 g: u
  167. 选择从服务器1 j6 |1 c; x8 [. z( ^3 I8 n" o  i
  168. $redis->slaveof('10.0.1.7', 6379);" t# I$ A4 b! w( K6 ]0 {
  169. 0 T# L8 P$ z- q) r2 v$ \# p
  170. save
    # E! B7 j1 L% T' Q4 x5 B( D
  171. 将数据同步保存到磁盘2 C- Q) m1 \! {1 m- L) }$ y

  172. ; ]5 ^5 y( u& q! F; B9 U: L7 P+ o
  173. bgsave, U4 W8 E+ L# s
  174. 将数据异步保存到磁盘1 N0 V2 ^8 D# g: n, p0 _0 ^" s# J

  175. 8 F# q& M) x' h8 a5 \
  176. lastSave' g6 B0 [" s# N' T3 {; _1 a2 @
  177. 返回上次成功将数据保存到磁盘的Unix时戳
    + d$ h4 ]+ I7 o3 F8 }, j0 R

  178. - a% z$ s; t. \! M1 ?, w% q
  179. info
    5 a! L% V& s8 }& V3 l- e$ D
  180. 返回redis的版本信息等详情, v3 a6 S1 u; T; ?# F3 e+ P

  181. ; }$ C+ q. K2 x6 p  u
  182. Redis::__construct构造函数
    ! P% Q/ \1 _# o' @! K# s
  183. $redis = new Redis();  b) R- ]* w8 Y

  184. 0 y- t( i! }& G8 O
  185. connect, open 链接redis服务8 k$ l( w) _. M0 P
  186. 参数/ R9 p2 r; Y3 c
  187. host: string,服务地址* a! Z6 W$ n' _  C' U
  188. port: int,端口号. S/ E2 {" o, {+ P- Y) D
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    ; }7 @, K  D# _% U- `1 [% S1 S
  190. 注: 在redis.conf中也有时间,默认为300
    * Q* `7 l# }# D1 E5 ]+ `

  191. ) I% G, }  x0 b% ?
  192. pconnect, popen 不会主动关闭的链接
    / w- R0 L, r- `& x
  193. 参考上面
    . j3 ~/ u# v+ S, y, f

  194. 0 f* ]: V% ~  z/ N( L
  195. setOption 设置redis模式7 `% y2 d/ I+ K7 ?& Z2 v
  196. 8 e3 }0 N# I; V
  197. getOption 查看redis设置的模式/ K0 _/ j4 }) W+ l
  198. : m3 R: d/ M" n. ~& ^1 H
  199. ping 查看连接状态* H7 r$ R5 Q2 J+ Q- d
  200. $ d( {! Z1 y6 E0 N% M3 u$ X
  201. get 得到某个key的值(string值)+ ?& c- x7 x2 H- \+ F
  202. 如果该key不存在,return false
    # _1 u  ]2 S1 ?# R9 V
  203. 0 D( e0 q& j' V% T$ L# I  d" Q
  204. set 写入key 和 value(string值)
    . ]9 o8 T4 n. S- d# a
  205. 如果写入成功,return ture" J0 B7 E; w! Q  N, @: I

  206. & J$ v$ }0 c0 B( f) H1 I
  207. setex 带生存时间的写入值' _* E$ ~6 |- ^2 G
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.' S/ h  w% X* x- J- I8 l! [# Q
  209. ' N7 R! E  W% B! W
  210. setnx 判断是否重复的,写入值+ }6 T# Q; }; u; T6 Y. \
  211. $redis->setnx('key', 'value');& e- m7 G* O4 ^7 q2 `+ a$ ^3 z
  212. $redis->setnx('key', 'value');% R" A2 V$ G" n7 @; Z

  213. 9 z& D7 I6 d/ Q! K5 f
  214. delete  删除指定key的值
    % e0 Y' X( i& U1 y
  215. 返回已经删除key的个数(长整数)
    - Y' |2 ?) ^$ G- @; w( `
  216. $redis->delete('key1', 'key2');) q. C8 N  }8 z3 B2 ?
  217. $redis->delete(array('key3', 'key4', 'key5'));
    0 A5 G# X- n6 ?9 x( _: V

  218. 9 c1 W* }6 R3 U! U6 F
  219. ttl' Z3 D+ X( M- J1 h3 P* w2 A2 x
  220. 得到一个key的生存时间- W! T: H" V; Y, |5 D+ H+ y% x

  221. . P+ M8 U& Q) j; w
  222. persist
      O1 [7 F: Y2 N' F
  223. 移除生存时间到期的key
    ) g3 q7 Z$ k" c  }. `/ a4 E7 l
  224. 如果key到期 true 如果不到期 false
    ) n: A0 n) p; B; v

  225. - k' t4 u  i* I3 `$ g' O3 E
  226. mset (redis版本1.1以上才可以用)$ d& {; f3 F! I5 B4 z
  227. 同时给多个key赋值* ?7 \! g% R4 \
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));$ _& V1 Q( {6 K3 C3 p3 o6 \6 v* I
  229. - G2 K" ~! L$ J. m9 t
  230. ( f. t: ^5 w! V9 `

  231. ! w" t4 {& e9 h3 |- W/ F) b
  232. multi, exec, discard
    " ]; b# {* e0 i1 r1 T- @4 c
  233. 进入或者退出事务模式; B- z6 h! _# _2 j/ [9 j
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI/ c$ N# c; i, a$ Q8 |. a; x
  235. Redis::MULTI:将多个操作当成一个事务执行
    % W9 ~+ T' S  a, m: N9 b. O, Q* I- S( ~
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    ( o$ Y) b1 S- I4 r# q3 D
  237. discard:删除一个事务
    , l5 _# L( x. e5 ?+ }9 ^3 i; a! O
  238. 返回值
    - @+ ~! l5 y5 B$ d  ?4 j
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    4 m. Z, I2 L% t; [+ m2 z
  240. ' b' L/ }4 _: A' F7 f$ ?& `
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    7 ~" n6 Y  z: L  N& L6 T/ s
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    3 p- y$ b4 [) L  Y
  243. unwatch  取消被这个程序监测的所有key
    : A1 q) Y, }, c$ k4 I
  244. 参数,一对key的列表
    5 Q8 j. B0 \: _6 `1 o
  245. $redis->watch('x');
    " \0 J1 Y  ?+ i
  246. 8 O8 A$ S6 Y9 f9 q; h6 f: C& m
  247. $ret = $redis->multi() ->incr('x') ->exec();
    / n4 a/ b3 D5 k1 ]$ Z3 }% W
  248. , @5 @- b& q' w
  249. 9 [+ @; M) _# {8 D$ u, a: q% |* A, r5 W
  250. subscribe *
    , W* v2 x- @' i! r* B, a; C7 o
  251. 方法回调。注意,该方法可能在未来里发生改变
    ( G+ i: P6 Z6 D* }9 T) J
  252. : F9 U/ @" Y# A: U, d8 P" E& {
  253. publish *
    5 m8 U0 Z4 \9 u# m1 t% ?' E
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变8 v. F" m8 e. V6 }  L+ X' i% b" `
  255. 0 T6 b% Q! N7 [
  256. exists! ^6 {% U0 g$ E+ g9 s
  257. 判断key是否存在。存在 true 不在 false+ i4 {' C4 S5 k; L: H$ s

  258. / l) U' B9 w  Z6 {5 T
  259. incr, incrBy+ `$ O9 X0 c6 l  a6 q( A4 P
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值+ V( B1 p9 {) d+ L9 A7 d" C
  261. $redis->incr('key1');! z( x! `9 H/ R8 ?8 G
  262. $redis->incrBy('key1', 10);
    ' S, Q' S) i7 s
  263. & Y& k2 v3 d2 s2 G8 g+ b
  264. decr, decrBy
    . B# ]! m" h( Q$ @$ l( p
  265. 做减法,使用方法同incr
    , z+ q# A+ @: W2 J1 X

  266. ) @8 k" K' m& B) Z8 P
  267. getMultiple
    % ^6 V2 p, F0 s
  268. 传参/ n- a' ^6 p9 ~8 f, A
  269. 由key组成的数组
    ; @% {' G. K2 n6 e2 u. i
  270. 返回参数
    7 h& J9 P0 `( Z  |  G1 |) y
  271. 如果key存在返回value,不存在返回false
    ; ]# b6 o  I( Q+ `; `9 Z
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    * s% o- [6 r1 R. b6 o
  273. $redis->lRem('key1', 'A', 2);
    7 U9 z5 A8 m; N' U2 x" {
  274. $redis->lRange('key1', 0, -1);
    9 h. _  u! G6 ]) i6 }
  275. & L9 c- X) f& q0 `% x- L) w
  276. list相关操作9 T$ j+ m  {# p4 k4 {0 U0 u) \4 L
  277. lPush$ U; N! ^/ a! d5 a
  278. $redis->lPush(key, value);
    ; g: f8 A! ^8 a% _: K( G
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    8 Q) c0 l) V- C: m& O8 g
  280. $ i" A- E# y/ c" E
  281. rPush
    ! B& D: T2 v9 ^+ u# H7 @6 Z# e$ z
  282. $redis->rPush(key, value);
      F; L% {+ s2 P. t7 I
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    8 n* ]3 S6 n3 A8 N) ]7 n3 v

  284. ( r, X$ R, ^/ ~; q9 n8 K9 B/ |6 n) S
  285. lPushx/rPushx4 j; L& f9 K, u, O
  286. $redis->lPushx(key, value);) W( y; x7 H2 |: {# S
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加! V: t- V1 ?% U3 w
  288. 9 z  ]  W% O7 q. N
  289. lPop/rPop, Z' g! W# t/ Z! S+ V! t8 ?: Q
  290. $redis->lPop('key');. `, \% {8 _7 G- B$ U( C1 \( j" a: U
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素. Q! A$ l, s$ _- ?* x$ `

  292. 3 W, ?5 i( N1 ?6 i
  293. blPop/brPop" V/ ^9 |9 {" e1 P% K( r3 S
  294. $redis->blPop('key1', 'key2', 10);8 L; G* d- M! ^& V4 F+ x
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作$ e8 K7 F! z, |% e. F; J

  296. $ T1 h! u" V/ k  P2 G( C& l
  297. lSize1 G' m: \, o5 j' @- g
  298. $redis->lSize('key');
    + {" w6 @! ~; @9 a- J
  299. 返回名称为key的list有多少个元素
    - ~+ P% G) ^" v6 o
  300. 8 ~% E8 ~. n3 x. b
  301. lIndex, lGet* W! x6 C* m5 u4 t+ s: p1 R
  302. $redis->lGet('key', 0);
    9 c% n& Q: N! I  c+ [) P8 f. o( D* P. Q
  303. 返回名称为key的list中index位置的元素( J1 c: @. I' D8 @( i& F
  304. # f4 e0 X) ]0 c2 z& K2 a" f  l# ^
  305. lSet0 x2 Q  n: Q9 O% ?
  306. $redis->lSet('key', 0, 'X');% Z. C$ P! E# m* _7 v+ I% N
  307. 给名称为key的list中index位置的元素赋值为value' E8 L; r) A) G# ?* N

  308. ' B/ K9 W9 }4 v
  309. lRange, lGetRange2 _- K! K# D; h; z* B
  310. $redis->lRange('key1', 0, -1);4 i" m( V; Q2 x0 X/ @" \5 q# X/ a
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
    9 n5 O, F1 C9 U/ {; F& ^: E
  312. ! I& b) t0 c- b
  313. lTrim, listTrim
    % V5 f; e9 }" F6 g
  314. $redis->lTrim('key', start, end);% [4 l0 _' G' T: N2 k+ C
  315. 截取名称为key的list,保留start至end之间的元素
    * M' w* f, D  }* ]8 A9 |

  316. + L! a8 e; o7 J7 h/ s" b3 E
  317. lRem, lRemove
    5 d+ r8 U- B% h9 q) b  t' F! F; x0 [
  318. $redis->lRem('key', 'A', 2);1 @+ X6 w( R& c# w  y4 r
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    3 b8 X; b2 F$ z3 U( z7 X( \/ K

  320. ) ~% N4 b+ d5 u$ h
  321. lInsert4 n: |- ~; e8 S% \' F
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    - W* [) P% T6 n, o: g0 D9 j5 i
  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');8 s; U0 ?( y0 y% [0 q3 @7 Q
  324. $redis->lRange('key1', 0, -1);
    4 E  p/ [. K( l8 C
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');% T8 V7 e9 w, B+ z  L
  326. $redis->lRange('key1', 0, -1);) e) ^  _" ?- X$ a$ @1 ^
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
    ; Z/ C5 ?3 @* Y
  328. , a+ X! g2 l; T8 p: L. Z
  329. rpoplpush) y( E4 P3 i. a* l$ q$ k, j
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部- z6 w! H! _2 u9 V- h
  331. $redis->delete('x', 'y');
    $ h8 ^: E! ?" A0 D
  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'));- r1 ]; s/ E. }/ h: A# P" s8 ^
  333. var_dump($redis->lRange('x', 0, -1));
    1 w( b" P  r  d2 g$ ]
  334. var_dump($redis->lRange('y', 0, -1));
    * ^. I' @' h4 n

  335. ( ~+ ^7 M2 p0 b; e" w9 a7 g
  336. string(3) "abc"
    - U. q4 \$ ?" i, t" r8 d7 z
  337. array(1) { [0]=> string(3) "def" } # \9 e1 J6 g' b) S
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    8 O2 C7 I% r; C( @4 q' m
  339. ! S6 g% D+ ^  |5 r6 C& L
  340. SET操作相关4 {  p0 |$ m3 q6 W$ a$ @% C
  341. sAdd) [  D  {( D  f# t( L' Q; c9 O
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    % L& q% F/ o! A( |  v
  343. $redis->sAdd(key , value);5 l- j# H2 C- h# K

  344. ) c$ I6 E8 _5 R9 F: O2 G
  345. sRem, sRemove
    % X  `% ?: T: E0 w  L
  346. 删除名称为key的set中的元素value
    6 b; m# A9 U' J7 c
  347. $redis->sAdd('key1' , 'set1');
    ( t' a+ _* n" c; S) _
  348. $redis->sAdd('key1' , 'set2');# R, M2 _( M7 v
  349. $redis->sAdd('key1' , 'set3');
    8 o$ h$ i  X' Z
  350. $redis->sRem('key1', 'set2');
    3 n% T0 }. [, p& o# x: f3 }' C
  351. 6 r8 U/ ~. ]! E7 I! m4 u
  352. sMove
    5 M- W9 r! h* U% f& W4 L* v
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    : q- l) L9 p$ E& y
  354. $redis->sMove(seckey, dstkey, value);
    2 Q  l8 p7 u7 W5 H6 F! R* c' Y# k

  355. ! P7 I" v3 C8 ^: x( G4 b- F
  356. sIsMember, sContains  A1 G5 \: C4 N  m2 B
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    + E  ^, C5 H* f$ C# u
  358. $redis->sIsMember(key, value);. u( |: c: f5 V  O
  359. * k; f8 F% M5 c. U8 v" p
  360. sCard, sSize, i% P0 P. J3 W9 @7 T3 v
  361. 返回名称为key的set的元素个数
    6 {4 o6 Z$ q+ v! h, T
  362. ' A. @( A/ f- y0 ~& q: _' ?
  363. sPop
    4 R( \- W3 |5 Y" f7 A7 \# G
  364. 随机返回并删除名称为key的set中一个元素
    0 q9 a5 Z4 Q+ ?3 s9 j$ h* v( L

  365. 9 w% h3 I, B) Q0 U& L- K
  366. sRandMember
      ^: u) M7 A; |
  367. 随机返回名称为key的set中一个元素,不删除. w; I8 h% N& [- B; }

  368. 4 `$ p. x7 @& j: g- X( D
  369. sInter" G) b  K6 ]5 ^7 U( ~
  370. 求交集
    , P9 p0 l" K5 ~+ U
  371. + Z7 M% M: p6 b
  372. sInterStore3 W+ ?4 P1 T9 ~& a
  373. 求交集并将交集保存到output的集合
    . H/ H4 @, T/ N9 D* ~
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    / M1 {/ O2 \5 d4 T

  375. 6 k+ E- {4 t8 I. i) i% L, B
  376. sUnion; U/ ~; }, x* E1 F5 P; g1 H
  377. 求并集
    # J1 @4 v3 k; C! a
  378. $redis->sUnion('s0', 's1', 's2');
      W  o# Q0 g, Y- X! X
  379. s0,s1,s2 同时求并集
    4 a" d, f* `4 V

  380. & Z4 Q4 b+ g3 s
  381. sUnionStore. y/ I1 r9 R$ l' x9 L: h
  382. 求并集并将并集保存到output的集合0 P: N' H% g% P! C9 n+ M
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    4 `# Z% H* J# P: l* W9 H/ Z

  384. ! ?7 n/ E  ^: p$ W$ O" Y$ O$ v" ]1 Z
  385. sDiff# X+ m+ Y& Q: Z: S
  386. 求差集
    7 N, s  }; V& _6 G) N

  387. " o/ U4 e* i3 N- X
  388. sDiffStore
    1 ]( u2 E( A0 W6 ^- s
  389. 求差集并将差集保存到output的集合* f6 _8 O# V% @* H- Y3 Q8 R& K' q

  390. " v' M" d0 d( d: ~8 Y; T2 }. R
  391. sMembers, sGetMembers
    1 e6 y5 s$ c: W% g6 f/ ~' k* L
  392. 返回名称为key的set的所有元素* F7 \3 b3 g: c0 i

  393. 1 @/ ?8 I4 a+ u) Z
  394. sort- c5 L  f$ f. U! |6 ^# E0 r! C
  395. 排序,分页等
    * B% ~& M* u; W2 l( x1 M
  396. 参数4 r8 b1 N6 [6 W4 o$ a/ K
  397. 'by' => 'some_pattern_*',
    ) H( \# T8 D3 m
  398. 'limit' => array(0, 1),, N' Z2 j! A* P; J7 ?
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    3 v( h9 f4 |* z4 U( V: U6 x
  400. 'sort' => 'asc' or 'desc',
    . k/ G' [: x. F+ L
  401. 'alpha' => TRUE,( v$ }! V; u  ]0 ?. O
  402. 'store' => 'external-key'+ o4 `! p, e9 o- l5 l
  403. 例子
    3 u( u8 ]! a0 Z$ ?/ c8 N. e' j
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    9 p+ Y7 O% q8 w* e( K
  405. var_dump($redis->sort('s')); // 1,2,3,4,5
    2 f; D2 F1 l5 _' `2 p9 b) s6 C
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1$ w2 I2 i; I% Y
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    7 h6 b8 K8 F) ~4 P) f, R, U) C
  408. 8 t) c& J, U( Y9 x+ O) ?
  409. string命令$ D! ]9 i' E0 y! M
  410. getSet  \6 n- c( o) i9 n; w
  411. 返回原来key中的值,并将value写入key- U. d4 {4 Y& f, l; s
  412. $redis->set('x', '42');' D- e( Q9 S! x* r2 |
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'8 W1 L! |7 }* o
  414. $newValue = $redis->get('x')' // return 'lol'7 H' g" o. X! h( @
  415. / j5 Q7 I2 g# a3 ~$ H
  416. append
    5 l( U+ ~5 O, [$ R/ @2 M
  417. string,名称为key的string的值在后面加上value
    1 d3 K$ Y; O* l0 `' @2 ?
  418. $redis->set('key', 'value1');
    * H/ P; r* b. x! E5 L
  419. $redis->append('key', 'value2');. F4 W+ V9 Q5 Y
  420. $redis->get('key');0 n0 n& Y$ b! _" k7 T
  421. 9 _: d* m) G" E3 a' P5 ^2 j7 }8 a
  422. getRange (方法不存在)
    / Z- a5 G- T) W7 l# P. s1 E
  423. 返回名称为key的string中start至end之间的字符
    " V$ v" D; W- b
  424. $redis->set('key', 'string value');
    - x. N, A& b# R" k' f
  425. $redis->getRange('key', 0, 5);; e# a3 S+ |+ T& u0 `) A
  426. $redis->getRange('key', -5, -1);
    & s" j* |& K9 j/ ?7 y/ J4 r' Z
  427. 2 c+ i0 k9 C' e0 p
  428. setRange (方法不存在)
    7 b* ~& j/ w3 g. q! o$ g
  429. 改变key的string中start至end之间的字符为value
    5 \, k2 M6 r' K# e
  430. $redis->set('key', 'Hello world');
    ! X, F6 b" z# X  ~# T
  431. $redis->setRange('key', 6, "redis");
    : ]2 E+ w! x  k& R
  432. $redis->get('key');/ P4 g% Q- N  S7 |

  433. ' q* y0 N) p$ W8 T
  434. strlen7 K) D- `  {, u. O3 i9 M4 v
  435. 得到key的string的长度
    , F; s& S" P0 w
  436. $redis->strlen('key');( g  V9 d2 p! n7 g: ^

  437. " i' w* _0 D8 d' x8 h
  438. getBit/setBit' W' h- L& _1 K4 }  M4 |( D, T
  439. 返回2进制信息
    6 ]  R/ D  }: A  f

  440. 6 V5 J1 V4 W! h5 V# q- k' J
  441. zset(sorted set)操作相关5 ~, z' ^, p9 N( C1 Q" x; z
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。8 T& A1 e: P: X! f5 I+ H
  443. $redis->zAdd('key', 1, 'val1');0 f& d2 t. r0 U4 o1 q0 @
  444. $redis->zAdd('key', 0, 'val0');
    % n; x2 g! x+ P' _, D8 d3 W
  445. $redis->zAdd('key', 5, 'val5');
    . v* z7 ^1 e/ T" Y
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)
    + k) p( n# l/ e7 T
  447. # [, W6 `' u% [  g8 l. ~+ l
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    7 E1 W/ s1 ^$ x7 y
  449. $redis->zAdd('key1', 0, 'val0');
    ' d+ U/ `; D! R
  450. $redis->zAdd('key1', 2, 'val2');
    % f& ~) a7 v, W8 V3 ~, P* P
  451. $redis->zAdd('key1', 10, 'val10');  d! G3 i) k1 |6 ^+ ~# k. [, f
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    * ]. ~2 X4 n; n4 J

  453. 7 _, `) U% d1 W& y1 U0 [
  454. zDelete, zRem9 ~4 g6 w  p9 v( x8 P- ~
  455. zRem(key, member) :删除名称为key的zset中的元素member4 P: Y3 [5 h; g* J# s, m
  456. $redis->zAdd('key', 0, 'val0');# b9 D5 {: A0 {! P# A# j
  457. $redis->zAdd('key', 2, 'val2');
    ! v  |8 z) B' B! k2 ?. n; l
  458. $redis->zAdd('key', 10, 'val10');
    & b; g5 }5 {! Y+ Q/ C
  459. $redis->zDelete('key', 'val2');
    ; r( I4 i2 f4 `, i' ^
  460. $redis->zRange('key', 0, -1);
    ( w3 K3 G5 O$ Y5 p
  461. . m5 F/ t& R0 l% L
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出8 a/ D1 ~- k1 m
  463. $redis->zAdd('key', 0, 'val0');: p$ B+ O0 P! e: W. n
  464. $redis->zAdd('key', 2, 'val2');! M2 Y. ^: f8 `0 h+ Y
  465. $redis->zAdd('key', 10, 'val10');- S$ V* j& B) w: a" d
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);9 H% w) N6 y( |' W& V5 E* _" E0 {
  467. ) X# f( H5 ~# \( b) P
  468. zRangeByScore, zRevRangeByScore/ h/ w( J- g8 [9 f( `8 n* W3 \; S
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));7 \/ D5 u/ [  y+ f" ]# D
  470. 返回名称为key的zset中score >= star且score <= end的所有元素( d" r2 q5 T8 f

  471. : a( f8 Y/ a: _$ f5 d
  472. zCount3 ~. V+ n  @% ~
  473. $redis->zCount(key, star, end);
    " k7 _# _* j' Y& O# B
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    ; p, P& j* k; v* W9 k  l

  475. 9 j$ K% }% Q) ^- l% k
  476. zRemRangeByScore, zDeleteRangeByScore
    6 K( d( l" E) J- I' D8 Q
  477. $redis->zRemRangeByScore('key', star, end);
      u" M( d$ U* F9 ]9 P
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    5 w, |. v8 |: V( p  E( _
  479. * O1 j2 G$ H  G$ B* h! U7 G1 N
  480. zSize, zCard) J, d& q# p7 R( H5 W9 s
  481. 返回名称为key的zset的所有元素的个数8 G. H( m) F! G+ x

  482. , T' z& v+ ?1 P5 D9 k
  483. zScore
    9 i) N+ h- i8 \) _- ~! I# T
  484. $redis->zScore(key, val2);
    # Y6 f5 }" M/ i! b
  485. 返回名称为key的zset中元素val2的score
    - e" t1 O( d/ B( S: X' q' z6 N9 }6 \
  486. 4 V! o( z1 x2 n
  487. zRank, zRevRank
    7 T  F# E+ K: a" T) Q
  488. $redis->zRevRank(key, val);- ?/ v0 N1 x! G( S. l# M+ |: k
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序; `) |2 W& [- w) X9 x
  490. ( F+ i. N, o5 q6 P( F( Z
  491. zIncrBy
    7 x& V1 O" k3 j- p7 m# O
  492. $redis->zIncrBy('key', increment, 'member');
    * s) [1 X; L% Y9 Y- F. l5 e5 p
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    # J9 C1 R# q2 }4 Y& o/ q0 y

  494. ) I+ m- |& {9 O2 v9 m
  495. zUnion/zInter1 U- a5 L% e3 T
  496. 参数
    * J3 i5 B0 N. w* f4 b+ r; b
  497. keyOutput
    " T" t, I; I! J5 V
  498. arrayZSetKeys
    ) p9 M% Y+ J# [/ j( X- F2 ]% U
  499. arrayWeights, j, W# j0 |' v; t) p
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    ! H8 q  j. n* `' x6 Z& L
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    0 ], _, K; |" I+ }6 Z5 c0 s7 t
复制代码
, ?! S: m! ?/ m( A
+ J8 r& u7 j0 o/ z% y& b+ X
$ `  s; h# B8 E
2 s, L0 U# D: O0 ^! Q1 J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    # c( j  B+ N- t) @$ a% o5 r8 F
  2. //连接redis服务器 , @9 M- ?- |$ _* `% ~/ W
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-19 22:43 , Processed in 0.065726 second(s), 19 queries .

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