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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php3 ^/ `- n0 x; m+ K
  2. $redis = new Redis();  ' y1 \: t' P' C' ^* D1 D$ n
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    - \. m  I+ P4 J3 `! I
  4. $redis->auth('mypassword');//my redis password 6 j1 z9 ?/ {+ E0 A) j
  5. $redis ->set( "test" , "Hello World");  
    ; Q( M* J$ {$ v- L
  6. echo $redis ->get( "test");3 o2 h3 R8 j# ?+ ?) E$ p
复制代码
php操作redis函数封装
  1. /**
    7 D# A( w9 b0 I' K9 ^
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数, D1 T) U( m: K1 ^) A: X2 {
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    & m" w- k$ E, k) _6 b1 W& M
  4. */3 A0 B5 n5 J) N6 _/ J
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){
    ; z4 ~, X. }0 V# F& ^
  6.     if(!$key||!$value) return false;
    8 H3 r2 E( b2 P6 C3 _
  7.     $host = $host?$host:getenv('REDIS_HOST');- o! K7 c" v) c0 z8 L: z
  8.     $port = $port?$port:getenv('REDIS_PORT');
    - J- G; F# E- n- J. f4 _7 Y+ _7 w9 M
  9.     $redis = new Redis();1 u) p: ~; e. E3 Y
  10.     $redis->connect($host, $port);
    : c# R, l  M$ S2 C" E
  11.     $value = is_array($value)?json_encode($value):$value;
    / b7 y9 t" g6 T( b
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);* }1 x$ n) a3 Y* P) O
  13. }
    0 O: Z4 q! B! P' U6 B
  14. /**
    ; m$ j4 E. X* N
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
    , w3 ^8 ^3 [3 f$ [
  16. */
    ) L& @' R" X2 w- ]9 n9 b( N- K. t. L$ o3 ^
  17. function RedisGet($key,$host='',$port=''){
    & c# F, u5 B% G* `3 B
  18.     $redis = new Redis();
    0 r% }# T- N) l2 B
  19.     $host = $host?$host:getenv('REDIS_HOST');
    7 y) q: F% |) l9 h
  20.     $port = $port?$port:getenv('REDIS_PORT');: Q! y% s/ c4 F$ {
  21.     $redis->connect($host, $port);
    1 Z4 [( L; \0 H
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);. U( ?8 u' `3 b0 x
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    ' F( L+ B2 F% Q0 I8 N0 M. K
  24. }) n# M: G: H0 K( a
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
8 v3 h  E) ]! B3 u8 _% C
  1. setex 带生存时间的写入值* y1 g: i8 B4 m% k: A
  2. $redis->setex('key', 3600, 'value');
    ' x% ^2 p' t2 l; f5 I2 G# R# D
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    , m$ V* y* b$ \8 \6 o6 o, L( q: R
  4. $redis->setnx('key', 'value');7 I, a  L; [4 U% b+ G% |. F; z  y) K
  5. 返回已经删除key
    - S' }% B) M; e
  6. $redis->delete('key1'); 成功返回1失败返回0
    + j; `3 J8 s5 E) R4 U/ L
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0
    - C9 f- b6 K' t! ^5 G  P7 q
  8. 查询生存时间
    , y% c2 |8 Y/ C; M
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)9 a; @; z4 ~. J8 _
  10. 同时给多个key赋值,同时设置key0和key1
    0 }+ P+ g9 f' S) q& f( J
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));+ B( B# b/ N7 M: g+ q: X9 e4 I+ z
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值/ p- h2 H0 I2 j& }! n
  13. $redis->incr('key1');
    4 N1 A- Q' E( @# U, p! B# D
  14. $redis->incrBy('key1', 10);
      C, X) n+ s( h( O
  15. 减法跟加法一样
    . j& m  F) O; O' g" r$ n; d4 y3 e
  16. $redis->decr("key1"); 减少17 ~& E$ w3 [  u. v/ L
  17. $redis->decrBy("key1",5) 减少52 p' x9 ~4 {5 E/ R/ q. Z: w; T; Y

  18. 6 g; E$ l1 v7 h  n9 a3 O# a
  19. list相关操作,连表操作
    ) J6 y( Y8 R' X1 U
  20. lPush
    6 N* h$ i; o4 Z
  21. $redis->lPush("list", "888");4 v+ q6 }5 q1 o/ V# X7 A# ]
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数
    * }6 M+ S- B7 m8 w
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
    2 G& n) o  J( R4 z3 Q4 p3 p
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素4 n% q/ X4 L0 b% \+ _; B
  25. lPushx/rPushx
    + t! ]1 B" H' r& s8 @+ K
  26. $redis->lPushx(key, value);7 D/ V7 P  V7 r+ I7 R/ V
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加* Y# w) p; I4 ^5 G% l

  28. % T' X5 L' I0 @. [9 v4 G
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
    - o3 S/ h- u1 f) t+ N  C/ O
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key$ z  u, W; {- ]' z% @
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回16 O. n  }5 N9 e
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序1 x' a) K. _" n9 _9 I( k
  33. sadd s1 zhangsan" y) I3 \2 _9 a+ |: [6 v# s6 h
  34. sadd s1 lisi
    6 E+ b4 l# F" I1 f- a; E
  35. sadd s1 wangwu( N2 U$ Q" H4 E* S% q1 G( `$ h
  36. sadd t1 yangxingyi
    $ h/ X4 d" z8 Z  C9 [
  37. sadd t1 lilei% u+ Y0 c( f, A0 l
  38. sadd t1 zhangsan
    $ \4 o# j0 k( ]9 Y
  39. smembers s1 s1的所有集合内容
    * H4 ], U. g  z# C! }
  40. sdiff s1 t1 s1有的,t1没有的,差集
    7 I% R' E5 V- O4 m* X+ M9 `
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式; d0 v$ n) ~0 L$ M" E9 ]" [' Q+ W
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    # a' g6 W* J- Q, F3 J/ {& m6 z: E
  43. spop抽奖场景,返回集合里面随机的数; A1 k2 Z3 C4 s% b; I5 Z% y
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    8 [: ?: R5 M; s, J7 ?/ E
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数
    & C. w6 }6 Y+ Z0 H( n# ^, l! r
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的; j# a: B; K" w6 T/ W
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    & X1 [6 B4 B0 G
  48. $i = $redis->srandmember('s1');echo $i;9 A& n9 [- @5 |/ }* S- J. q# c  B
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false( E. E' A. z, @1 D0 p
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    : j1 }4 u, ]1 R
  51. 7 W* s. R8 ~6 n  Y- W
  52. zadd key 2 value 有序集合
    + @+ A! o# g6 F' G9 V5 U
  53. zadd y1 1 zhangsan;
    % ?+ ]" k' Y; L. h8 v
  54. zadd y1 3 lisi;
    * ~' g: I+ Z' R% D! H1 a
  55. zadd y1 2 wangwu;
    2 k% m4 V1 O/ B' T& ^+ j
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi" r- r, P: ?9 t& h! [1 k
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);
    2 W/ v/ M' g6 J; X4 K7 h5 Q& W
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键: B, w. e- V" j& N. H) i" S% y$ }6 ?
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先0 ^! v8 }/ X' i1 p9 }. o0 E
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    2 [0 G& F. j3 f8 a1 \
  61. 无序就scard,有序就zcard,有z没有s) K, ?# }% }) t7 Q/ Q4 B
  62. sInterStore, J6 M$ c( d: Y  B- \* |
  63. 求交集并将交集保存到output的集合; L) O1 m" F% ^; c7 U8 J
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')) [& [: a$ p- ~# z3 |' i: q
  65. 7 I& M6 R$ L4 S0 t% z
  66. Hash操作1 c+ P- ?% g/ Z0 b# c& ]7 L; k
  67. hSet
    / O0 Z" B+ F0 ?) N3 l
  68. $redis->hSet('h', 'key1', 'hello');7 W  u  x/ f7 i! B9 C9 O  \$ d
  69. 向名称为h的hash中添加元素key1—>hello
    " v; ?& B/ K; q' w

  70. 4 h' f4 y8 }( S3 ]
  71. hGet
    3 |& H) {8 M- r  T1 _
  72. $redis->hGet('h', 'key1');
    4 h6 U, \+ u- S
  73. 返回名称为h的hash中key1对应的value(hello)8 \: ~9 L* O5 N. R9 O$ x

  74. 0 b( x8 [- Z, V5 y
  75. hLen
    - _# O- `8 S, y% o+ E' o0 B
  76. $redis->hLen('h');% i2 z/ M7 ?$ s6 ~9 m
  77. 返回名称为h的hash中元素个数
    # G7 n$ ^9 ^: z
  78. & @$ H3 `% S8 U* n  C# [% H  J
  79. hDel+ n% H: H1 ]. p, d
  80. $redis->hDel('h', 'key1');- p: ^  o4 X( x$ J, z
  81. 删除名称为h的hash中键为key1的域
    : @# d' W8 v( w9 i: u

  82. / |$ S8 l% F5 M7 G
  83. hKeys
    6 B8 y) j0 J; j: m
  84. $redis->hKeys('h');
    9 l$ ]- S% J2 y
  85. 返回名称为key的hash中所有键8 `4 U8 e* U4 k3 ]% C8 {" \% c& o

  86. & {2 l# B) V3 P8 W0 _  l# v% O
  87. hVals
    3 K* u( R; d6 ~; ?" a4 Y( \, U
  88. $redis->hVals('h')" P4 y3 Z) c1 M# x
  89. 返回名称为h的hash中所有键对应的value$ [3 G0 p& Q. X4 m9 A* Z/ k6 k

  90. 1 k. [& {& f2 Z6 o' F/ r
  91. hGetAll
    7 T6 V0 y8 r' \5 \, F; R- [% u
  92. $redis->hGetAll('h');
    ' }1 G  j" G: k/ t) B& J
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    6 N0 }+ t5 V) k  T! |
  94. 6 `8 n3 w5 O, i$ H
  95. hExists$ z& R- J/ Q, V  V
  96. $redis->hExists('h', 'a');/ o/ O" n: ~1 s0 ~# R
  97. 名称为h的hash中是否存在键名字为a的域
    . v; z$ y% N) ]+ B; K

  98. + v0 u7 R9 L/ U' {0 S" D9 \- T
  99. hIncrBy0 t0 k. @1 @8 w& Q
  100. $redis->hIncrBy('h', 'x', 2);+ z0 `3 G3 o& D# D+ Z+ m* L7 a
  101. 将名称为h的hash中x的value增加2
    ) c0 L7 q5 f/ J: c

  102. 8 S5 ?; u' e( m1 t
  103. hMset
    ' c( ]( x" v  J& f( d& F) ^
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));0 \. e2 e$ l& m. N/ M7 z5 i) w
  105. 向名称为key的hash中批量添加元素
    7 ~" s; q  H% G

  106. ( h- A8 a. M% e
  107. hMGet% v) A; q! P+ G
  108. $redis->hmGet('h', array('field1', 'field2'));- E3 x# }" C, t$ ]6 J  h
  109. 返回名称为h的hash中field1,field2对应的value2 P: }/ I& W$ y

  110. ' x9 a% i& {4 _6 t! f
  111. redis 操作相关, F1 T; ~1 \9 H/ z9 T5 B4 ^* r1 d
  112. flushDB7 r/ i! R* K( m+ B. `/ w/ O
  113. 清空当前数据库
    ( |# q# ~3 E/ z) x6 V- Z$ O% V4 L7 R

  114. * p7 ?2 v) b3 \8 ?0 ?& u4 I) T; f
  115. flushAll0 k; p2 q" M1 L! b
  116. 清空所有数据库6 \0 y' ~' w5 a, n. L: e  V! i

  117. + M& Y' p+ T; b& D
  118. randomKey8 F) R* j  W0 Q/ ], `! ~: M3 h
  119. 随机返回key空间的一个key: O7 t; O# z1 U) R* ?4 |
  120. $key = $redis->randomKey();
    * o. _6 D9 S9 m6 j- V; x
  121. : M# G- G& b# {5 w( ]# H  U
  122. select
    4 }) H8 m& n. J  f8 J+ A6 ]
  123. 选择一个数据库
    - s) f" r/ W3 {# M
  124. move' _, e# Z; d' Y4 G
  125. 转移一个key到另外一个数据库
    . \& i& A- _9 W5 N7 B; E% O2 V
  126. $redis->select(0); // switch to DB 0
    8 O$ }2 o7 }, P) j1 Q3 s  V* Z
  127. $redis->set('x', '42'); // write 42 to x
    ) y$ c# f# n! E: `7 ?' Y$ I5 f
  128. $redis->move('x', 1); // move to DB 19 z& O' h8 C' u6 ~1 O* Y  w
  129. $redis->select(1); // switch to DB 1
    : K$ Z# P1 d! s  Y" P4 _
  130. $redis->get('x'); // will return 42; e' ]" V. }# X8 D3 J% h" e
  131.   k% U* B. O) \, i* d9 J' N
  132. rename, renameKey
    8 j$ a1 ?# k4 c
  133. 给key重命名" `7 q2 O: A: `1 s! J4 M
  134. $redis->set('x', '42');2 M& _+ K5 c/ @* [" J0 s
  135. $redis->rename('x', 'y');5 e  p2 G2 x' z, L! P% T: u/ M
  136. $redis->get('y'); // → 42
    : Y! W4 |5 B* y+ P3 ?8 s
  137. $redis->get('x'); // → `FALSE`
    & n% I/ m+ y, P; O. F% Q

  138. ) ?& O- b( f2 M/ m- p
  139. renameNx' q, w* R7 d: g6 E% x0 m/ u2 o- J4 F
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    ) t, r) @9 g9 e, n. [8 S! A

  141. - ~" j; c" B4 l8 P8 B* D& F+ u
  142. setTimeout, expire4 L) Z* ^7 H0 {; O' n: C
  143. 设定一个key的活动时间(s)
    ( P% `: @, R9 |, Y. _8 T4 z1 ]- p
  144. $redis->setTimeout('x', 3);
    1 |7 D+ g/ Q9 i$ T# z* g! m" X% ^0 L

  145. 2 ?4 A6 R2 d3 M! }
  146. expireAt3 `! d$ P" k2 U7 K3 ]
  147. key存活到一个unix时间戳时间
    0 Z8 h2 [+ z0 q6 }0 ]
  148. $redis->expireAt('x', time() + 3);0 _0 Q+ O2 e. W: Y% d
  149. 3 k9 _: F5 q/ U/ {" ]+ t9 I1 ~! O
  150. keys, getKeys
    # J6 B/ |, F( U) `# u8 w0 |
  151. 返回满足给定pattern的所有key
    - C0 G- d, `, u' x6 ^# p
  152. $keyWithUserPrefix = $redis->keys('user*');
    + y; _. g( k' y3 i$ `0 }

  153. . T; Y2 }4 s, ~) L! B
  154. dbSize
    ) H" U, W- T1 D' F/ @
  155. 查看现在数据库有多少key2 E, Y# D9 i9 F
  156. $count = $redis->dbSize();6 W) y* k! n% E( q3 L/ U
  157. ( B$ w4 W- Q8 ?/ I6 g
  158. auth
    . Y1 c# _- |: O: M
  159. 密码认证
      ?3 X& b0 }0 @1 b, v
  160. $redis->auth('foobared');
    1 e, d2 |; A0 R! M' v9 X
  161. ) c3 f$ t7 K7 x0 {
  162. bgrewriteaof6 J& }7 u5 Q1 b+ V% c+ e  v
  163. 使用aof来进行数据库持久化
    " E4 A5 e. ]1 t
  164. $redis->bgrewriteaof();6 v0 b6 Y8 m) F; O) e- v& g
  165. 7 l3 W- T! k  {) r: x* F
  166. slaveof
    ) ^! t4 r- ?- ^
  167. 选择从服务器8 s1 P5 d) M/ o6 e* U! G
  168. $redis->slaveof('10.0.1.7', 6379);
    5 X6 A( j. |+ x; _6 Z9 E

  169. " @9 l+ k. Z1 X7 i
  170. save
    ) ?0 F  F4 r8 T4 _! j) c2 V3 A
  171. 将数据同步保存到磁盘
    # ?1 M/ z5 K, m! L2 V/ W1 k

  172. 2 \' S( ~' g9 i4 Q) F
  173. bgsave* ^' @6 D" m  `& g, R' R
  174. 将数据异步保存到磁盘' F# w/ P" X1 N% m% y

  175. 0 O3 M' ]. K; K/ E
  176. lastSave9 U1 L, o4 r$ ^3 ?' B
  177. 返回上次成功将数据保存到磁盘的Unix时戳9 S  b) U$ K1 X% I' {
  178. ( N% ?! k% l5 ]: N$ _# J% a' v
  179. info
    . x5 H: l( T1 L$ U6 v: }
  180. 返回redis的版本信息等详情; N- q+ h. J$ _: I, i7 x
  181.   ]* ]* v9 r% w- `3 h: K* ?
  182. Redis::__construct构造函数
    2 `) \* z( I/ b* X) w
  183. $redis = new Redis();
    ! y% w) U6 _! w* R

  184. ; _! V% }! b: [$ F7 j( Q
  185. connect, open 链接redis服务
    + _; Y# c- K) `6 `4 [3 C" i
  186. 参数) C1 ]" \- m1 j: [0 @
  187. host: string,服务地址. s& G8 m! n, |) t+ w; S6 ~
  188. port: int,端口号4 ^; G8 k& c# s4 r
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
    0 @0 E7 D1 S  C) o3 F5 P( J
  190. 注: 在redis.conf中也有时间,默认为300; }0 S$ ~. ~! T9 J9 c: }
  191. * L3 T6 N- H) x( D/ X& T- d4 j
  192. pconnect, popen 不会主动关闭的链接
    + _2 i3 r" x5 I  o. Z2 F
  193. 参考上面
    5 m8 t* X# @0 q# v4 e! W8 f$ a1 a: R

  194. ; v2 D0 K9 p9 v" g" w
  195. setOption 设置redis模式
    1 B# H- Z5 s& H, N7 K: S6 A: P' V

  196. 3 {5 c; F! a/ H& f' M8 \/ E, e
  197. getOption 查看redis设置的模式
    4 I! A8 _0 S3 G+ T- H5 J
  198. 3 ~8 q) X, R$ P4 {6 i, s" X
  199. ping 查看连接状态/ D. S8 W; s/ N+ ?* D; n# _/ B+ `

  200. ' M  a9 N  }' c) p, N2 \
  201. get 得到某个key的值(string值)  M6 q3 i) R* D9 j
  202. 如果该key不存在,return false
    - Z3 X0 \' Y, r3 ]' O. v

  203. : J4 v- V, h& X& m7 S# J
  204. set 写入key 和 value(string值)  B0 ]# _/ K  t. B6 y- N. C9 C
  205. 如果写入成功,return ture5 K0 Y$ M7 v7 J
  206. & f! K, ^4 ~/ C9 k4 C# A
  207. setex 带生存时间的写入值7 }5 Z! X8 G# _' X5 `
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
    ; v: c% e% i- W( M0 v5 w
  209. ; _" r7 P9 v( U7 ~
  210. setnx 判断是否重复的,写入值7 `9 l1 ?) ]: P8 f4 e' e) u
  211. $redis->setnx('key', 'value');
    : f: e. z" P5 V) n- Z/ U, a
  212. $redis->setnx('key', 'value');/ w* ^! a% k$ Y$ M. b- Z4 s
  213. 4 z0 y% `, o4 k/ `# X- x' \
  214. delete  删除指定key的值
    ' T7 q9 V( A: |' k. t% Q$ J
  215. 返回已经删除key的个数(长整数), D: g+ d+ u1 T4 l/ J3 C
  216. $redis->delete('key1', 'key2');# w# s% r% p5 V7 N1 }* \- r  `
  217. $redis->delete(array('key3', 'key4', 'key5'));3 z: g7 [1 c5 d  k; i7 f% R2 A

  218. $ ~* F+ m2 k2 w: t$ F  \  m
  219. ttl, h; w8 ^! [6 I/ a
  220. 得到一个key的生存时间
    / `# v; Y) Q4 r/ l( ~* U

  221. 8 I3 m5 W& p7 n5 r
  222. persist( ~) z: j' C0 q! z* o+ O" M+ t
  223. 移除生存时间到期的key4 y7 c5 L9 G1 w8 ?, e7 n5 }
  224. 如果key到期 true 如果不到期 false
    . N$ l! v1 t7 ~$ V

  225. 9 o6 Y3 `+ K; I# B
  226. mset (redis版本1.1以上才可以用)
    . C% r2 ~4 G5 j2 H+ `$ q9 o1 k# U
  227. 同时给多个key赋值
    " w& Y4 w) u) D: g- D  D- o
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    4 S& m8 R9 v7 _

  229. 7 \( c1 _  p& n: q  W

  230. / Q5 n$ [& }& c
  231. % L' e) Y: p* C. l& ]8 C7 [) ?
  232. multi, exec, discard
    8 Z8 c0 S( c$ s( v0 M7 O, v# h
  233. 进入或者退出事务模式: _% |. m' Y+ G+ I* N
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
    ; O9 d  M  T$ |
  235. Redis::MULTI:将多个操作当成一个事务执行' A! U6 ^  @  _- P* x4 C" `+ G
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
    ! [' Y$ s4 A9 G; P0 V, r# b
  237. discard:删除一个事务
    8 k  L9 _  Q. a  t* u  @, w2 I
  238. 返回值
    * c. d( ?0 c" M3 U- w/ }. M
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    + J3 J  j$ k( N% Z2 ?  S6 X
  240. 7 z4 u! w4 ]) A2 v* y
  241. watch, unwatch (代码测试后,不能达到所说的效果)) R+ F, o0 g6 I+ b0 a
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)9 V" n5 H( @3 m# [
  243. unwatch  取消被这个程序监测的所有key1 q( y- C- S. B$ g5 B( r9 e3 J
  244. 参数,一对key的列表
    8 O" L/ j( |. z6 r* M/ B+ t/ B) _
  245. $redis->watch('x');; P4 a: K+ O4 g3 d7 T
  246. * c+ M5 J6 Q, x
  247. $ret = $redis->multi() ->incr('x') ->exec();
    4 _5 B; S+ ?+ x* \
  248. , j9 |- L5 m3 `. m+ K

  249. 3 j0 {8 f3 l: O" i5 R* l
  250. subscribe *' Y0 S3 {% F. |1 a! O& a+ i. ]/ K* {
  251. 方法回调。注意,该方法可能在未来里发生改变9 X3 P' Y) l0 t, ?8 [: A

  252. % `7 R7 f) c- k
  253. publish *' t( D$ o+ G/ U4 r
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变4 C9 K/ P( ]2 b& _
  255. ! b( Y# b1 b3 d" J( P9 ~
  256. exists
    % S7 ^: d6 W9 F$ ?- A8 ^
  257. 判断key是否存在。存在 true 不在 false. ^+ S" r/ ?% u  f% b+ C
  258. 2 ^! f1 ~8 c7 r3 d: g6 Z
  259. incr, incrBy# l3 T8 u6 a; w, f3 z5 R
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值) E! s, N- W! a2 s$ J6 o& i
  261. $redis->incr('key1');
    3 I* A, j- f$ C0 Q
  262. $redis->incrBy('key1', 10);0 }4 ?: L% t" f5 i

  263. ) ?( i5 ?; d" j( Z
  264. decr, decrBy+ p# ]6 |; a( G) x6 K% E" B
  265. 做减法,使用方法同incr
    $ i( n/ Z+ _. R  D: I  ?) L$ g
  266. & ~- T8 {+ Y/ _+ H6 w
  267. getMultiple
      M% V  m  ?9 s/ z
  268. 传参
    : _. `/ x% b3 @4 _# O8 s
  269. 由key组成的数组+ O: `- D7 R& s1 B% j3 x5 W4 D
  270. 返回参数" t7 L5 Q8 l, A- W+ I4 g$ q
  271. 如果key存在返回value,不存在返回false
      C/ |% ]. L! d2 M
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));2 F4 j( d4 L1 o, Y& d* E- s2 ]* a
  273. $redis->lRem('key1', 'A', 2);3 v  H$ E2 N+ l0 O7 k$ J
  274. $redis->lRange('key1', 0, -1);) l: \4 _7 D" |) }. V" P' H9 Q
  275. & E4 C" J: b8 S; y7 R: B. Z
  276. list相关操作
    0 m0 T6 ^# u' N& ~9 h- E( v
  277. lPush* ~7 z6 \+ t+ ]' v- l/ R: U) u
  278. $redis->lPush(key, value);2 n5 d: d# X  ?% ?
  279. 在名称为key的list左边(头)添加一个值为value的 元素
    * O& k6 `9 s0 r9 v% {9 F3 @
  280. 3 P% O) M' @+ w* f. `9 l: H
  281. rPush) l* F+ F3 z3 ]( H6 s0 d
  282. $redis->rPush(key, value);
    0 j' H5 }$ ~) J" c& C
  283. 在名称为key的list右边(尾)添加一个值为value的 元素( ?& j9 J' G, L, E2 H8 |

  284. % V- c( V9 H. V* D& y4 D
  285. lPushx/rPushx
    2 ?. ?+ H& s1 R% Y) J% i+ ^
  286. $redis->lPushx(key, value);
      I% ?1 Z8 n( Q2 ^
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    5 r" l/ W& p0 J: l/ G2 G
  288. ( L- L; D' i! Z6 c4 n% \$ J% o% E
  289. lPop/rPop
    0 O8 k6 G) j' T, t3 n, A' {
  290. $redis->lPop('key');
    - U' J' x8 g: ~5 [$ V# h
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
    3 U" F4 g% w9 ~4 ^$ F" A, h
  292. , ]7 |. ]& ~) K' k2 u
  293. blPop/brPop
    8 r6 z0 `7 V" v2 G; l  G" O7 }
  294. $redis->blPop('key1', 'key2', 10);
    7 N8 H8 I9 S/ X9 H
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    " t- L, z/ n9 O4 E: g- ~# M
  296. / Q% `. d; c% C5 q. g" P- c
  297. lSize
    ) Q' a0 Q1 |2 Q$ Y: K5 R5 T9 Y
  298. $redis->lSize('key');$ q" i& n& U; z3 p( m& ]
  299. 返回名称为key的list有多少个元素0 y9 `- ^5 P: y0 ~- z) ?  K
  300. ) ]) g" ]' c3 b  _
  301. lIndex, lGet
    9 B8 O: y/ ?5 Q3 T& a6 q
  302. $redis->lGet('key', 0);
    $ t+ |9 k) Y; D# I) H9 m& h
  303. 返回名称为key的list中index位置的元素
    - H7 Q5 j. Y+ {8 v8 \# _
  304. * ~5 k& s8 A: N- U5 y% u
  305. lSet1 y% {: b, F4 g' F
  306. $redis->lSet('key', 0, 'X');% Z) Q  I+ {# y" z4 B; ~0 s
  307. 给名称为key的list中index位置的元素赋值为value  L* X" ?: q2 T# j5 k7 A
  308. ! F- u9 \2 W/ a) f" o& Z
  309. lRange, lGetRange+ R% p; e$ E% m1 ]: c
  310. $redis->lRange('key1', 0, -1);* K8 T2 N, x. P8 i! ^
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)) H, c. M0 b' b4 A

  312. 9 ^. V7 s( k) a3 y, k+ s0 H5 u
  313. lTrim, listTrim7 j$ {3 v, q+ x. Q' `1 p+ g
  314. $redis->lTrim('key', start, end);
    . o. Q8 g+ I+ K; i8 A
  315. 截取名称为key的list,保留start至end之间的元素. @; G  z$ B+ h0 H

  316. 0 @2 Q- _: L! r' f# X
  317. lRem, lRemove0 Z, }+ l* K. A
  318. $redis->lRem('key', 'A', 2);
    3 ~1 T3 k* R1 G
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素& F$ Y9 x2 o) x2 C
  320. ( q! m' V5 s) `6 T. f: ^
  321. lInsert
    9 d9 ]5 u- u( o. O2 Y# K. K
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    - ~, m: i, C8 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');
    # j5 G( g% m' J0 j
  324. $redis->lRange('key1', 0, -1);
    , ^. t: R% Y6 X/ x$ }
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
    2 n( a) r, [5 B7 t
  326. $redis->lRange('key1', 0, -1);
    & d  Y( |) x: l6 @# ~( v0 G4 Q
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');9 t% |1 b- C! s# H# q: h6 Q  ]
  328. ' T2 t8 j1 s. n5 S6 N* Y
  329. rpoplpush
    5 T  @$ D% b2 i. u' o4 ~
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    ; J5 r$ z& t7 e) {
  331. $redis->delete('x', 'y');* T1 z. X4 `# S5 y
  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'));
    $ Z! V  |( H, }) f
  333. var_dump($redis->lRange('x', 0, -1));' }7 @/ `% |" F* G  N! w4 v
  334. var_dump($redis->lRange('y', 0, -1)); 7 E. }& F% w3 v

  335. " L! A; p8 Y; d9 h3 [
  336. string(3) "abc"
    : V* ~5 P8 ^; e9 P7 S
  337. array(1) { [0]=> string(3) "def" } & {- z9 e0 X$ k6 f5 {3 f
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }. I/ ^' P# i$ `) m' ?7 j) [

  339. ( N5 z/ S8 i8 {$ v
  340. SET操作相关2 K9 d& h* `8 ~( V" h# X
  341. sAdd* ~8 L; ?% S9 \& Z4 h$ x$ u" s
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false
    % x: p  f1 a( ~) E# B
  343. $redis->sAdd(key , value);
    6 i0 e+ Y$ f9 ~; R' q! I
  344. , X/ W4 I* R& e' e' q
  345. sRem, sRemove
    2 m" S3 Y: X5 ]1 V/ B' T) t0 U
  346. 删除名称为key的set中的元素value) r( z6 t! b) |* E/ \% o! P4 P: {" r
  347. $redis->sAdd('key1' , 'set1');; ]! K% }: F" ^( f5 R1 C$ Z& r  I9 ~
  348. $redis->sAdd('key1' , 'set2');
    & R- K& m! \8 D5 G
  349. $redis->sAdd('key1' , 'set3');% {/ a% \( I( K5 c" Y: I
  350. $redis->sRem('key1', 'set2');5 B& }" b4 L1 _* U! n" G! o) X, i2 \. |

  351. ; e' ~; A; u' q0 R  i9 {6 y3 ~
  352. sMove
    ( C5 l+ W, i8 Y4 q: ?
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合0 D, g  H  L  G& @9 ~
  354. $redis->sMove(seckey, dstkey, value);
    ; g" P0 w- o: Q' T

  355. " x0 l9 {  ]3 M1 J
  356. sIsMember, sContains8 f! \3 U" E6 P* {) h* z; N
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false
    " I, S3 h# @) n) y
  358. $redis->sIsMember(key, value);$ p: W  y* a; k9 I% x# W/ x
  359. 9 k" W7 M: A! A, s2 o7 Z% f3 @
  360. sCard, sSize
    ! A; R6 ]( [- g) x
  361. 返回名称为key的set的元素个数
    ; t" E8 \. T) F" R. D  H* Z# D

  362.   V0 W: S0 P& m1 X! D& l
  363. sPop! W' w! {& U0 L
  364. 随机返回并删除名称为key的set中一个元素
    & M; C5 R& d3 w

  365. " K! V6 k5 p' e7 c/ x
  366. sRandMember+ r" e  h% F3 x5 o8 u. _  _
  367. 随机返回名称为key的set中一个元素,不删除
    1 \3 o9 x$ E1 [. y' J

  368. , j3 A8 L. |. b& T0 O! R/ `
  369. sInter! m; m3 Y0 z* b4 _+ p4 O* `
  370. 求交集
    8 g! E$ R4 _4 t2 i, r9 Q  e
  371.   }! h, q( Y2 g4 x3 C
  372. sInterStore9 d- l7 l, q% J
  373. 求交集并将交集保存到output的集合
    , o) T6 n4 B$ v" s+ l& \
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    + A* c) ^/ F/ f0 D
  375. 1 Z: w- I$ R5 X$ d3 m1 h) e+ D
  376. sUnion, m! _" X- q; S9 ]0 [  X8 A5 K
  377. 求并集
    " `9 U$ N. G4 c4 _/ O! M' G6 J# z
  378. $redis->sUnion('s0', 's1', 's2');
    5 J7 W1 K! J2 k4 b" g! Z% }
  379. s0,s1,s2 同时求并集
    * o* }4 b  Z& `# b: l

  380. 3 H+ i7 O* }1 u6 U
  381. sUnionStore
    ; t" u6 P: I2 f. L  B% c
  382. 求并集并将并集保存到output的集合
    3 E$ v+ x+ C$ c0 j# C  z9 @
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');. c% ]! C  @9 f1 V4 T- Z, ~0 W

  384. 8 Q# Z+ `# {, m4 G5 P
  385. sDiff
    % t  a# M0 }# n
  386. 求差集
    1 ]  h& s) M" p$ w; d: o' ~# B

  387. 1 f/ l& u& C2 I! t+ K# p, B
  388. sDiffStore' }& L6 C5 k  A: h  A1 K* w  s
  389. 求差集并将差集保存到output的集合
    ( ]5 r( H4 h- }- u2 P  W

  390. 6 y/ e& `' k  g3 ~3 }$ O% Q
  391. sMembers, sGetMembers
    " D9 ]) Q( Q! O0 {; F% F
  392. 返回名称为key的set的所有元素5 ~, j# R4 [" ^+ ^; T

  393. # i) i' ?& Q* R
  394. sort, M$ d5 y- v9 ?/ g+ K+ V" S9 n
  395. 排序,分页等+ ^# h. m4 Y) T! Q8 q
  396. 参数
    ( R7 x( E0 y# S& H! D- Y1 r* {
  397. 'by' => 'some_pattern_*',
    ; s3 r+ i$ @# K
  398. 'limit' => array(0, 1),
    ; J( W9 H- [( ^$ o. b, H
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    9 h0 Q- Q+ }0 r
  400. 'sort' => 'asc' or 'desc',
    . `' @9 q1 G/ E& X
  401. 'alpha' => TRUE,
    8 q# q% u- [7 ~2 ?2 P9 U( C: d# u
  402. 'store' => 'external-key'
    ' {$ X6 ^' @) C: c/ z5 T5 `
  403. 例子
    : }: Q/ D- e0 X$ j) [2 T- l2 b
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    $ \, A: P/ h! e0 N, c& s- H/ A
  405. var_dump($redis->sort('s')); // 1,2,3,4,5$ F' J) ]7 H  L5 C* s/ [/ m7 G
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    0 a/ A9 i) a3 P
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
    : p8 ]; D, U" j

  408. % j( J) b# L5 `
  409. string命令
    & D5 }& F% ?' ^4 {$ V( C
  410. getSet
    2 r9 U9 a1 R, y7 @' N( A
  411. 返回原来key中的值,并将value写入key( A6 V- w: {/ i' I0 ]. r# j. I* \$ ?
  412. $redis->set('x', '42');
    ! A  @7 h. i  \2 A' C
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
    " |4 J- E( c+ L( S
  414. $newValue = $redis->get('x')' // return 'lol'  l- j9 ~* w4 M, h; Y% y

  415. & R' j( r6 |  v$ {  l  d& C# t
  416. append
    " p/ N" U  U6 K% ?, P. X. ?* l
  417. string,名称为key的string的值在后面加上value
    , F- M( [) }. w8 F- }3 l9 S3 k
  418. $redis->set('key', 'value1');
    $ w: n4 C( e: ~9 E( B
  419. $redis->append('key', 'value2');
    5 a1 j+ A4 V  L# \/ {+ J) ~
  420. $redis->get('key');
    $ R, s7 v  `: S: y8 R

  421. 4 R- N. n" U* ]6 l
  422. getRange (方法不存在)
      C9 t6 K# w3 c2 z+ v
  423. 返回名称为key的string中start至end之间的字符
    5 Q* c6 A5 b( ~& b" S4 x, b
  424. $redis->set('key', 'string value');! g) z$ A1 |* g* n+ S! `* V& r
  425. $redis->getRange('key', 0, 5);
    , G3 `% ^4 D4 {
  426. $redis->getRange('key', -5, -1);: I8 ]0 t* E9 B. B/ o" P' |
  427. ( o& E$ G2 q7 W1 h2 l8 F
  428. setRange (方法不存在)2 y2 z! `; j4 U$ q; G1 ?
  429. 改变key的string中start至end之间的字符为value6 W7 u) X; M6 `7 j
  430. $redis->set('key', 'Hello world');1 J, I: m, f1 Q. ~% A+ G
  431. $redis->setRange('key', 6, "redis");% l$ @+ i* O3 d+ T
  432. $redis->get('key');$ j% p  `* I  f9 M! k9 J7 d
  433. + e- X  v8 u0 n; o+ Q6 W
  434. strlen0 c8 y' r5 T( K6 i/ G# j
  435. 得到key的string的长度
    4 l, ^6 N( `5 O! e7 Y- C
  436. $redis->strlen('key');
    1 _& `) h( V) O. J
  437. - o1 f4 I, q" D! C7 v. s8 d
  438. getBit/setBit
    / e0 k! f7 o* ~' L
  439. 返回2进制信息
    ( M# [) N- f; y+ x
  440. / j2 {: `# [+ ]4 h# ~0 }
  441. zset(sorted set)操作相关4 a# h: e* F% G& C7 p/ s) F+ ~6 |* y
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。; ^% y2 K& x% P  w6 p' U
  443. $redis->zAdd('key', 1, 'val1');5 }: f; s' c, X: V7 f5 V2 ]6 f$ V
  444. $redis->zAdd('key', 0, 'val0');6 ~7 p4 |% _$ Z, O/ _
  445. $redis->zAdd('key', 5, 'val5');7 A) j: O- Z9 ~* ^- L
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)! J; z% {. S7 i4 s# J# Y2 q0 e

  447. " L, `" x; t* U2 p
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    . F7 x7 l# N/ v) p2 S2 w
  449. $redis->zAdd('key1', 0, 'val0');- @2 L' m  f8 n5 d& E, j
  450. $redis->zAdd('key1', 2, 'val2');
      r5 y' O6 u: Q7 J- k
  451. $redis->zAdd('key1', 10, 'val10');
    6 X# F. |  ^. D  M& }
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
    # b* _( f  ]  c1 }6 A5 ~2 L! t3 t

  453. ! z4 b* L, w  w7 G& T) m/ x
  454. zDelete, zRem1 T1 \' r7 w, \% b  V4 f5 V# T
  455. zRem(key, member) :删除名称为key的zset中的元素member
    . p! u. }3 N* f, P
  456. $redis->zAdd('key', 0, 'val0');
    5 u: h: Q* ?9 F5 s' C. \
  457. $redis->zAdd('key', 2, 'val2');, R8 ?) c, h8 e0 _3 U  ]6 M: L
  458. $redis->zAdd('key', 10, 'val10');( ^. v0 V. m0 A$ }1 T2 a- D. B2 E
  459. $redis->zDelete('key', 'val2');
    + Z9 ^7 k  q* L$ Z+ E' n
  460. $redis->zRange('key', 0, -1);
    , \7 I$ F6 j+ E! S8 a$ P+ G

  461. 6 x+ o% h/ a( f% l) a
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出: B8 W3 ^! Q  D6 g
  463. $redis->zAdd('key', 0, 'val0');
    # F- l7 A7 B  G! U+ J! [
  464. $redis->zAdd('key', 2, 'val2');
    7 p# E/ f. i  X9 @
  465. $redis->zAdd('key', 10, 'val10');
    ; U/ G9 O  s9 h! r) B- P/ R0 Q
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);' L! ~7 x1 Z1 f; ?

  467. 7 c4 F: B9 O  x4 a, Y) R
  468. zRangeByScore, zRevRangeByScore
    . G4 D; h9 A  a' Q" \+ y$ ?7 Q$ H
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));
    - Q9 X6 i. H0 w' m5 ^* P% i
  470. 返回名称为key的zset中score >= star且score <= end的所有元素. S6 [) ]5 ]& r

  471. ) W0 n8 Q& R$ W' D8 I8 Y
  472. zCount) q* `3 c8 C' D* r+ \
  473. $redis->zCount(key, star, end);) Q0 K* n% b& n- F; w
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    $ \0 N+ }3 h( q1 T
  475. / ]7 z2 f# `7 s$ G
  476. zRemRangeByScore, zDeleteRangeByScore- X) ^7 f0 |' G. g
  477. $redis->zRemRangeByScore('key', star, end);
    , G+ C5 \- Z3 L
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    - m" [3 F( I' a$ Z, ]% K

  479. : X7 |8 ~" y5 I1 j0 n' K
  480. zSize, zCard
    . _/ L# F6 O# C  G  X4 h9 T
  481. 返回名称为key的zset的所有元素的个数
    7 B/ T- K; x6 v5 i" l: S

  482. & _7 ?  i8 B5 p
  483. zScore, U0 S& M5 A; D$ z2 |! R& B
  484. $redis->zScore(key, val2);
    , q4 V8 P5 e- g. @" H7 O
  485. 返回名称为key的zset中元素val2的score7 N& g7 G  P! b% N) Q  q
  486. , B1 X- s, K, `$ v& e
  487. zRank, zRevRank
    + j$ H  o3 f3 i8 m/ F
  488. $redis->zRevRank(key, val);
    / x6 A* v3 u) D$ J* n- _0 _
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序4 ^* B0 a% x0 X0 ]. x

  490. , f3 U  F" x4 f8 \7 v8 ]6 t- @
  491. zIncrBy
    ( M& K& s- m' w7 p4 v, V
  492. $redis->zIncrBy('key', increment, 'member');7 z% T- d2 P0 ?5 J7 G0 }
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment* g4 p. J( P, D1 w4 O
  494. * }8 }5 W7 {. e+ D; _& ?) |% O8 ^
  495. zUnion/zInter
    - Y: }7 x  q) h! l/ y$ ~, _# B
  496. 参数7 x; f) m2 k* X& A5 E; A% X
  497. keyOutput: Y: S. n5 k$ @  z1 s
  498. arrayZSetKeys; @! h* M8 C, M5 a
  499. arrayWeights$ ~* r, X5 o- s8 j0 R* K& V8 ^
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
    - l- x( k( A5 ~  C
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
    5 a0 [% P' B0 C4 ^
复制代码
. G$ S  O6 Y% I2 p% q) l

; Z( I/ i% P. {9 B1 H- V, x$ D2 C" i9 J8 [" ~# v3 O" {5 \# q+ e
  X- A( u1 \: K% Z. o- x4 a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis();
    - d9 ]5 x  f" a) T) B: ~. {
  2. //连接redis服务器 , Q" y! {0 v$ J
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 16:00 , Processed in 0.061800 second(s), 21 queries .

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