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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-26 16:58:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. **php.ini文件添加:extension=php_redis.dll  重启php, phpinfo可以看到redis则证明安装成功**
复制代码
php连接redis测试
  1. <?php
    + i/ L6 l% @" c5 [: S* Y
  2. $redis = new Redis();  
    $ \% H7 E; H* h+ m; S- _
  3. $redis->connect('127.0.0.1', 6379);//serverip port
    " W+ [2 o3 Z5 T" }. i
  4. $redis->auth('mypassword');//my redis password
    8 R* }. b% y* `  T# e. N
  5. $redis ->set( "test" , "Hello World");  
    / b2 B' P, a3 O' l$ U2 b9 M: U
  6. echo $redis ->get( "test");+ i9 L: ]2 t  L2 A+ K: x
复制代码
php操作redis函数封装
  1. /**3 a' |- R1 {3 E; ]
  2. * 如果不传入$host和$port默认读取Laravel环境变量的参数4 y8 _& Y6 E% r0 a" M4 Y
  3. * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
    ( J, n0 ^7 ^  y" n/ ~$ W
  4. */9 s' m" j8 ~$ U
  5. function RedisSet($key,$value,$expire=0,$host='',$port=''){% _! @8 }- O  |* O( U) q
  6.     if(!$key||!$value) return false;
    8 A9 o& @( ?, {
  7.     $host = $host?$host:getenv('REDIS_HOST');
    1 Z# C. V# F% ~3 I/ f: l4 `
  8.     $port = $port?$port:getenv('REDIS_PORT');3 q! l9 {8 A) b, D/ ^# Z
  9.     $redis = new Redis();7 O# h  B% l7 G' d" x
  10.     $redis->connect($host, $port);
    & A# c. X5 x$ X3 S* ~
  11.     $value = is_array($value)?json_encode($value):$value;0 b/ t0 w) X. V* Z
  12.     return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);6 X8 z% I9 L, c' B/ R; n
  13. }
    + t5 x- {- l) B
  14. /**' [/ F' |1 |; t
  15. * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi- B& n, u6 ~% a6 i
  16. *// H4 j  q8 V) ?. R9 p3 ]% Y
  17. function RedisGet($key,$host='',$port=''){) F8 o. L# p6 D1 g
  18.     $redis = new Redis();
    + X  M. b: @, A, z: p
  19.     $host = $host?$host:getenv('REDIS_HOST');% t# g  i8 u4 L
  20.     $port = $port?$port:getenv('REDIS_PORT');3 q" I4 }* Z, @  d- M* R0 \6 D
  21.     $redis->connect($host, $port);- b$ M& g. U* `* C% h1 `2 ~6 w. S
  22.     $result = $redis->get(getenv('REDIS_PREFIX').$key);
    : A. Y, z& Y$ ]
  23.     return is_null(json_decode($result))?$result:json_decode($result,true);
    6 W: a8 o) R0 e7 j$ T3 l/ l# }
  24. }6 o8 O  ~$ \2 x( }  ^; g
复制代码
php操作redis大全,基本上php操作redis常用的函数都在下面了
0 @3 x; ]8 K' ^( n3 z
  1. setex 带生存时间的写入值2 r3 ~4 [& M! F' Z
  2. $redis->setex('key', 3600, 'value'); % ~) u' M9 R2 s6 u; G& Q' }8 U
  3. setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
    ' e' _1 s* [0 z8 J  q5 `& ~
  4. $redis->setnx('key', 'value');
    2 a( j& L, l3 F2 `7 Z& [
  5. 返回已经删除key
    0 ~$ X5 M1 q2 k, I
  6. $redis->delete('key1'); 成功返回1失败返回0: c, j9 d  q; M  ^- \! i$ n* A
  7. $redis->delete('key1','key2'); 删除两个键成功返回1失败返回02 s2 E% h+ h; O) U2 |5 b1 T
  8. 查询生存时间
    - A6 R6 J* R  t: ~
  9. $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)2 i( f! M: c/ p: v. m
  10. 同时给多个key赋值,同时设置key0和key1
    5 w/ c2 h% o' x7 O9 l% }- P5 B5 a
  11. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    8 f: [0 {% |) h
  12. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值/ u, ]# i2 r) Q6 k0 R
  13. $redis->incr('key1');; n- w3 m6 W" n7 @* {/ b
  14. $redis->incrBy('key1', 10);
    8 R; o, ]2 e7 L  r/ S+ ~! B- X
  15. 减法跟加法一样
    ; L" Q) n+ L, L$ M( J
  16. $redis->decr("key1"); 减少1
    * {& b! \9 Q1 J( ?6 o- }
  17. $redis->decrBy("key1",5) 减少5
    & P- X6 F  y: j; i- w7 @9 t6 h& ]' o

  18. 3 n5 L) \8 ], R2 ^
  19. list相关操作,连表操作
    9 g* o! N; ?5 R
  20. lPush
    1 @4 {# E4 y1 W* }
  21. $redis->lPush("list", "888");" Z$ z; ]  d# ]0 \  }
  22. $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数2 O. {+ X6 M7 D* v+ R" }4 r
  23. $redi->lrange('list',0,-1); 返回全部数据,数组形式
      w5 h" O* g4 D: Q
  24. $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
    ( H% I7 W2 r9 P0 J2 i7 b; C1 {7 E
  25. lPushx/rPushx+ w. E$ S" C! Q4 q6 i- A
  26. $redis->lPushx(key, value);( X8 d. F7 _- u7 p. \4 u
  27. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加- i5 N# [4 n3 ^, F/ ?( x

  28. / B: H: ]: z0 B! M4 S0 `: _1 N
  29. $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key$ _; _+ R6 |, k
  30. $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key7 T5 F/ D- X; C, u0 `
  31. $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1
    3 G6 m- c) d" H/ h$ ~
  32. 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序8 V1 r' w( x$ ^) j8 ~2 y
  33. sadd s1 zhangsan9 V% D' q) K% D& _2 ]* k& G4 }
  34. sadd s1 lisi
    , Y, C0 n; }( h+ |& T
  35. sadd s1 wangwu
    5 T5 G. @, X8 h1 Z
  36. sadd t1 yangxingyi3 |  L. O% w* |, b: l
  37. sadd t1 lilei
    . {' D4 i5 b7 c% Q3 Z
  38. sadd t1 zhangsan" p$ s, a6 Y. {; }
  39. smembers s1 s1的所有集合内容) p  q' @, p9 ]3 N) u" c% D
  40. sdiff s1 t1 s1有的,t1没有的,差集
    3 }) e7 R- L- _" z, P3 a
  41. $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式. |  m$ ?( F1 P5 c, m8 D6 a& D9 n
  42. scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
    " i# |3 p5 G2 R! y2 f8 w2 n% |
  43. spop抽奖场景,返回集合里面随机的数
    : e6 g; |( l2 L& ?1 ^  H& c7 i- J
  44. spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了
    # `1 A) ~; U. Z* d
  45. $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数0 f  e' t1 ?* t
  46. $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的% J( [* {1 @: W% k
  47. 随机返回集合里面的一个元素,但不删除,重复中奖
    ; P& Y& I9 N/ V0 I" ^+ z  C9 o
  48. $i = $redis->srandmember('s1');echo $i;  s9 p: b8 a" ?3 X/ i# W& k
  49. sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false; p* [- h. i1 ~1 X/ o
  50. $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false
    ! u$ F' j1 ~7 l+ h9 Z
  51.   _" D7 S) U1 {, A8 t6 D! F4 W
  52. zadd key 2 value 有序集合. E+ D  I3 V# R5 y! Z
  53. zadd y1 1 zhangsan;" w2 j2 w0 \' v
  54. zadd y1 3 lisi;; H1 {- n$ ~! j6 o4 Q' i% e2 V
  55. zadd y1 2 wangwu;
    ) H- c2 l  Z3 {  _% J
  56. zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi5 h, Y7 `5 ~! V% f7 K
  57. $i = $redis->zrange('y1',0,-1);var_dump($i);; g' a% h5 C& `  g$ M8 D
  58. 返回数组,键值不是插入时候给的键,是从0开始的新键$ m" A% \/ q9 r* J3 j; |, H& [
  59. zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先8 e0 Z+ r& W# b+ \
  60. zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的7 K: _! f8 z8 A0 v
  61. 无序就scard,有序就zcard,有z没有s
    * i6 [/ T) `" G+ e' o. @
  62. sInterStore  a( ?& R* {4 @# n: U
  63. 求交集并将交集保存到output的集合, D; R& s9 o( R- \% q" \) z
  64. $redis->sInterStore('output', 'key1', 'key2', 'key3')
    : g  B1 x, `' q+ M! |

  65. - P/ l  y! n- n) t$ J! F& M& V& s
  66. Hash操作
    / B( m6 B$ W, G* O( {; v
  67. hSet
    7 I. p9 x! h- u" K2 X) i
  68. $redis->hSet('h', 'key1', 'hello');5 I) B2 o6 `' q4 Y+ _
  69. 向名称为h的hash中添加元素key1—>hello* [% R% k/ _' \3 k( d

  70. ) K% G) K  t$ o6 I+ X( p4 o
  71. hGet2 Z1 N; v- W% J
  72. $redis->hGet('h', 'key1');- m0 B' ^- q5 v
  73. 返回名称为h的hash中key1对应的value(hello)
    ; d) ?( S# t& Z/ R

  74. 8 D. `% l4 S8 G/ o4 T( S9 M
  75. hLen
    8 s( r- ?; I9 O7 x! X/ g
  76. $redis->hLen('h');& C9 ], P2 `: R9 S, \
  77. 返回名称为h的hash中元素个数
    $ t3 |2 Q, ]0 _4 o
  78. 1 w0 S; |$ X) n- N' |) C1 I8 C. T( }
  79. hDel: N6 S: f  `' q0 G  g
  80. $redis->hDel('h', 'key1');9 Z7 l/ n3 O) j4 p/ |: R
  81. 删除名称为h的hash中键为key1的域
    ) t$ X, @) ~# U- D- m
  82. 1 G! I9 ~1 P/ N2 p; Q3 g9 f/ Q
  83. hKeys& V- U# I- K5 @; R  c
  84. $redis->hKeys('h');
    1 _# n" p+ P- s; ^6 y! A; B
  85. 返回名称为key的hash中所有键
    6 i& d1 f7 h  r8 h* L$ F8 |( |

  86. . `# y* V, e/ q" J6 J
  87. hVals
    9 K1 S, p5 G  z, x# u" G, P& R
  88. $redis->hVals('h')
      ~6 M: S! l3 F/ j+ w
  89. 返回名称为h的hash中所有键对应的value+ y  ?- Y/ g  j
  90. 7 q6 t6 `6 R; s) D
  91. hGetAll$ ~' X+ e4 \4 }4 k( l1 @
  92. $redis->hGetAll('h');
    * |! F/ h9 j& Y% `& J: ~# G1 h- g
  93. 返回名称为h的hash中所有的键(field)及其对应的value
    8 M" y% n4 [) E6 G
  94. + X2 d: ]8 o) E0 z1 G6 e
  95. hExists
    7 K3 l/ q+ w8 y! z* k
  96. $redis->hExists('h', 'a');+ m* i' S# \  _9 X7 i1 h* k% ]
  97. 名称为h的hash中是否存在键名字为a的域5 N& Z# w4 H1 u3 E# i  X' I0 `

  98. ! f; h0 O0 j( x0 P$ ?8 t% O( A. z
  99. hIncrBy8 N* i3 s, G6 w0 b  \
  100. $redis->hIncrBy('h', 'x', 2);' ^  }0 K% H/ F
  101. 将名称为h的hash中x的value增加2
      b& g" L# j* D3 h. f6 k
  102. ( I4 M0 Z( A- ]9 J1 z, t$ I$ j
  103. hMset
    1 R0 l7 F4 P) d
  104. $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));4 y, {+ E' r1 B9 Q1 J7 I, e" V4 y
  105. 向名称为key的hash中批量添加元素
    % ^- \/ V  F/ l/ Z! ?

  106. / F; v; r! f' W* B
  107. hMGet
    0 E6 d( G$ D- E& B# k) Z
  108. $redis->hmGet('h', array('field1', 'field2'));. [3 c: Z) {- P9 C
  109. 返回名称为h的hash中field1,field2对应的value
    5 M& |6 h! }( b0 M" [9 O( v

  110. + |5 \( X% E8 h# z  p5 E1 e1 ?
  111. redis 操作相关8 y6 g. R! }. K
  112. flushDB
    ( c5 O& [5 K) g( Q! }
  113. 清空当前数据库! S. ^8 u, h6 b4 K3 D% Q7 U
  114. ! T% t7 c% p, s3 }$ l/ _) {
  115. flushAll. O& i6 N/ g* V8 C
  116. 清空所有数据库
    " _( P; s& y9 |+ M6 B

  117.   I2 E& g* A# k  J# s
  118. randomKey% u' m3 o) H8 ?5 Z7 G3 R# ]5 R
  119. 随机返回key空间的一个key
    9 c, K8 z0 C& `
  120. $key = $redis->randomKey();
    - F7 U8 n0 I5 b, _$ |5 _( Y7 E0 s9 Z

  121. 6 u: B) v) C: H4 P4 N  r2 O
  122. select; D! z6 y& t3 `9 Q: f
  123. 选择一个数据库
    + {& a5 M8 v5 @3 S
  124. move
    7 S$ ?/ H5 E# O" D
  125. 转移一个key到另外一个数据库+ @+ b. y4 j& y
  126. $redis->select(0); // switch to DB 0
    , O2 |1 }3 l! G  X; t
  127. $redis->set('x', '42'); // write 42 to x
    ; u8 s# r9 }+ \% U1 F3 g0 Z5 }
  128. $redis->move('x', 1); // move to DB 1
    5 l) S0 ^3 m9 ^8 H7 z& X7 e
  129. $redis->select(1); // switch to DB 1" q8 ]7 F2 l+ k" j, z; S: F
  130. $redis->get('x'); // will return 42- F; S* `+ O, r* O* S0 s
  131. 6 a6 h) ^8 d( A4 }/ [! {) D5 I
  132. rename, renameKey
    * V# \$ n9 }. b% _" T
  133. 给key重命名$ X: T" T9 ?$ E# O$ x
  134. $redis->set('x', '42');6 M+ x3 ?+ l4 D' x/ ~& `
  135. $redis->rename('x', 'y');2 [+ @5 k7 C' m! A* Z
  136. $redis->get('y'); // → 42
    $ k- ?! x( E4 Z- e1 t
  137. $redis->get('x'); // → `FALSE`
    " u# |! E; t4 t3 [3 Z$ o: r
  138. , g3 g9 k# A  n
  139. renameNx0 y6 _/ k) P2 y8 ]8 M4 o
  140. 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功. i% \. `( I( I  F) \" M) D* L2 o

  141. # o1 H) R. N' I) o
  142. setTimeout, expire& m* r' Y& y: H' |& ^7 c
  143. 设定一个key的活动时间(s)
    5 L% f: [8 ~7 V' \, `+ a8 K
  144. $redis->setTimeout('x', 3);4 e8 K" C& j( m

  145. ' Y6 M3 A2 [9 u
  146. expireAt
    0 I. ]2 h: q" X3 |- o* R* q3 b
  147. key存活到一个unix时间戳时间
    ) k& L/ v3 P& S! c/ B5 M5 k
  148. $redis->expireAt('x', time() + 3);% C9 x- r5 S8 `* e, s0 W: }

  149. 2 J; t; k. u6 F1 ^- A; A
  150. keys, getKeys
      x1 m1 u1 d: V  U
  151. 返回满足给定pattern的所有key3 u% N6 u3 X+ h/ `
  152. $keyWithUserPrefix = $redis->keys('user*');' H8 O0 U  u& ?! k+ K9 Y6 \% y

  153. # n1 c3 J+ B' W# [) c
  154. dbSize9 w. [% `7 T& u9 f4 _  A  g) M
  155. 查看现在数据库有多少key- n: C' }1 F0 @( N
  156. $count = $redis->dbSize();
    / f& J1 N1 C6 W$ Z5 y

  157. 5 u( R/ l. M& _/ C5 g7 R
  158. auth
    + h. f# C9 M% S, e0 I' W
  159. 密码认证6 ?3 |# \5 k: y& S  ^9 G* g
  160. $redis->auth('foobared');9 o$ P4 |4 ~8 u( E/ m8 P7 E+ s  G
  161. , S- K4 H; [2 k! d# K
  162. bgrewriteaof
    ( a$ b1 h3 y8 x
  163. 使用aof来进行数据库持久化6 R' ~! }) |) L5 E% @
  164. $redis->bgrewriteaof();
    ; V% z( D. _; N: e* R
  165. ! V4 K5 [) Z( F$ h% A7 t
  166. slaveof
    ( l8 Z6 T2 d9 C6 Q
  167. 选择从服务器9 m' R2 H( c9 j, F8 W* [- c
  168. $redis->slaveof('10.0.1.7', 6379);
    ' D* A: U( f/ A# R6 i
  169. ! L" L+ K; p5 R2 T3 I
  170. save  O- n# R% [! F5 {+ b( F: g, S
  171. 将数据同步保存到磁盘
    ' T8 z: [+ k" c1 g, T, y
  172. & f7 [2 ~+ m! w8 R: }
  173. bgsave
    4 n* E3 Z$ n# }) Q
  174. 将数据异步保存到磁盘
    . V( V6 y0 i2 N: W. c2 }2 z
  175. # P2 q' P: _( T2 ~4 A
  176. lastSave9 \5 @, J7 u" q0 |. n& o4 T3 l! P
  177. 返回上次成功将数据保存到磁盘的Unix时戳. }  n$ B  W8 ^  W. S: I
  178. 1 L6 }% i+ k! |, Z' R  s7 e* C
  179. info
    4 I( o! S& I& R9 _- U5 c
  180. 返回redis的版本信息等详情
      o- K8 s& \/ y' z5 k

  181. / @8 _* B* f, n) h; P: E
  182. Redis::__construct构造函数
    7 r* g% c2 z# y
  183. $redis = new Redis();
    ; ]7 b" C  D3 ^: s

  184. 5 ~2 r5 d9 t6 c1 |
  185. connect, open 链接redis服务1 c5 o# X- u) P: j* [
  186. 参数
    8 S& e0 F7 f0 ^* K7 E9 P4 Q3 O2 s
  187. host: string,服务地址
    9 ]& a/ i: I  r$ t- Z7 b
  188. port: int,端口号
    . M% W& T0 j0 ~+ D7 W  B
  189. timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)# \8 _* r0 A: A& L- ]1 V
  190. 注: 在redis.conf中也有时间,默认为300/ H" O" L9 _! D) s: P
  191. , c, X  H" b5 l. n; J
  192. pconnect, popen 不会主动关闭的链接+ `5 A2 N, y! w: o! a
  193. 参考上面9 i. s1 q5 K& t. l6 J9 u4 h, v
  194. ; r" v7 F) K7 {' Z& _* s5 E, p" B
  195. setOption 设置redis模式
    3 I% K$ @" {. b1 r: {7 M& {' J. m9 a$ E3 j

  196. # I! m0 ^% {* W  n& T5 I0 x- p9 r6 ~1 d
  197. getOption 查看redis设置的模式
    9 C( i2 Y( P5 s5 I5 r

  198. 2 l2 p6 |& b8 O4 @7 }& [
  199. ping 查看连接状态1 i" ~* b1 v7 T5 o

  200. 3 }2 ]) c3 x& o
  201. get 得到某个key的值(string值). F+ W: c' I3 u! h+ `$ }* b) w
  202. 如果该key不存在,return false$ F8 g# y1 ^- R3 i) z
  203. 6 i3 I* h' H: I7 L: n- k
  204. set 写入key 和 value(string值)
    5 @# k  v  x/ k5 U5 W4 c
  205. 如果写入成功,return ture
    0 ?& b; s: ?; X! E& r+ v% g6 w

  206. ' l) p+ E& F1 G* ~/ D& a* W
  207. setex 带生存时间的写入值# m8 N0 Q2 \) M0 F: G2 h
  208. $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.; F& h* T5 b6 g3 x# d7 P" l4 H
  209. - h+ R1 |' P' }, \
  210. setnx 判断是否重复的,写入值
    2 }" f/ \% C: g+ `# r# Q+ O1 k, y
  211. $redis->setnx('key', 'value');! ?, m3 A4 o4 k# l' X: a' v' ^
  212. $redis->setnx('key', 'value');; g  J, ]+ `: a" L: n

  213. ( u3 a& _: o+ Q& E* e
  214. delete  删除指定key的值5 ?+ x  b4 v% G
  215. 返回已经删除key的个数(长整数)
    4 X2 b1 A" J" B4 {* `/ c  S
  216. $redis->delete('key1', 'key2');; ~- X+ ^& W" Z+ z0 M: ]
  217. $redis->delete(array('key3', 'key4', 'key5'));
    4 t4 Q% {- v: u7 R

  218. 8 f  }( N  ~, }# s3 m9 [3 f/ K
  219. ttl
    8 w7 ^( F0 l; G0 _6 Z. }8 ?
  220. 得到一个key的生存时间
    ; l& u  W6 [+ N5 L& Z) @& C/ E$ v3 i  L

  221. 5 i( i6 j" q" `7 |" L* P
  222. persist* _! V% C  o& z! S
  223. 移除生存时间到期的key
    5 H7 q6 U% M7 x' C) y* R
  224. 如果key到期 true 如果不到期 false0 O- Y( d7 N( [$ i1 V5 c/ I
  225. + l2 P4 E: d9 K9 p. w7 `
  226. mset (redis版本1.1以上才可以用)$ J+ p3 E5 z8 _& L
  227. 同时给多个key赋值' S% ^4 K5 U8 r
  228. $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    9 z7 N9 O+ k& V

  229. 1 P5 C  t; L1 ]0 n
  230. - d* B& }1 s% ?

  231. ; u* \% W/ W3 R; _2 q# u
  232. multi, exec, discard
    ' j8 f8 J+ e! _0 d
  233. 进入或者退出事务模式3 A/ o8 k6 ~) F- Z# T
  234. 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI$ F6 ]% }- z! K. f& q( V- M$ Z
  235. Redis::MULTI:将多个操作当成一个事务执行
    1 o0 f% _, t$ N2 t* c
  236. Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证  _, ^% h+ N& r+ F
  237. discard:删除一个事务
    ( o# U( x8 F" N) e& i& ^$ w
  238. 返回值
    0 Y9 s5 c! k4 P9 I/ t
  239. multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
    " y6 }  v6 g+ Y% k  T+ j
  240. . M+ A3 {0 b+ \: f
  241. watch, unwatch (代码测试后,不能达到所说的效果)
    3 ]8 b( w0 x+ @  ~
  242. 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
    6 w% X2 ^+ M% U: \/ ^* _
  243. unwatch  取消被这个程序监测的所有key
    * U! r4 |" g: F0 v+ V
  244. 参数,一对key的列表
    . d- O4 Y0 m' C8 T) ~; n* G1 ~
  245. $redis->watch('x');
    8 H6 `0 W- `3 H

  246. ! |0 ]) [  I/ V
  247. $ret = $redis->multi() ->incr('x') ->exec();9 `( Y7 M; l5 X: u5 \
  248. # [- D* e& W( p: Z
  249. - ~  n# J2 |. y
  250. subscribe *
    0 o! v' g1 u4 N" {
  251. 方法回调。注意,该方法可能在未来里发生改变$ N; q  U3 t2 A1 a

  252. . k* y7 Z" w4 m6 [/ z
  253. publish *. s- O4 _/ d7 O: E  o0 _, \/ W
  254. 发表内容到某一个通道。注意,该方法可能在未来里发生改变
    4 O! \1 ]1 G) E9 @2 a1 D) W

  255. 8 \: a2 _) ^6 _  G, N! `4 F7 z
  256. exists
    , V; K" Q# E# w6 i% S$ _
  257. 判断key是否存在。存在 true 不在 false
    7 `8 |4 l' c; i2 S5 p5 Y$ l3 D

  258. : R+ F& B' b. j2 j  ~
  259. incr, incrBy
    , Q0 h  C( P/ P5 V& P. H4 u
  260. key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    - W" P/ V7 M0 I% R/ E  O
  261. $redis->incr('key1');
    5 f% h6 d$ m2 P/ f! {5 u% ~
  262. $redis->incrBy('key1', 10);6 ]6 L- t9 j' M& C* s9 |7 u% p
  263. % r0 \/ V$ @0 Q4 \7 y; e8 v  ?9 Q& B
  264. decr, decrBy
    2 f4 W# b3 C5 T5 @6 T0 M; v
  265. 做减法,使用方法同incr
    # }$ [/ M! A, H. S) F+ [+ U# K$ [

  266. 0 r& j% R7 l5 _3 f  e: x  X
  267. getMultiple4 ]$ @4 l0 N3 x/ {
  268. 传参
    0 @( y- j; S$ s
  269. 由key组成的数组
    . w& }2 o' {0 k) S3 R0 |" d
  270. 返回参数9 j  k) f8 i  h0 ]
  271. 如果key存在返回value,不存在返回false4 G' u. s  f& {! c& G+ [- A6 ?, h2 J0 e
  272. $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
    ( T& @: s4 q* S) \) M8 D
  273. $redis->lRem('key1', 'A', 2);; ?1 C/ b" X' h; v; K6 F+ |$ q
  274. $redis->lRange('key1', 0, -1);
    ) |" Q3 l5 J" o& U& ]: ^" V$ r2 n) Z/ G

  275. 8 U( }3 ?5 i( o& j' N
  276. list相关操作% B% |# Q4 v  k8 K$ K' H( X
  277. lPush
    * T. r# u" ^. h* K. n5 D! Z) C
  278. $redis->lPush(key, value);
    & z; ]. ?- Z7 c0 v9 Q+ }/ V
  279. 在名称为key的list左边(头)添加一个值为value的 元素4 E  t; w' c/ ~6 k
  280. 2 T& `5 j8 T' H% f0 b5 [5 c- B
  281. rPush
    7 y3 T- ?' @, }6 J, s1 X! ?
  282. $redis->rPush(key, value);2 i. ^* Q9 a7 i% b$ s4 E
  283. 在名称为key的list右边(尾)添加一个值为value的 元素
    ; _; t" n: M, C( }! D
  284. - q; S1 m& l+ K5 A- N2 v* W+ K
  285. lPushx/rPushx8 F% K/ Y; ~$ _2 S5 o# t
  286. $redis->lPushx(key, value);* t- }; x8 }; |+ m2 F
  287. 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
    , r1 D; B9 ]. B! z: z

  288. ( X; \9 W. ~" _- q8 [% R7 m
  289. lPop/rPop
    ; j5 H/ l- U( k1 O: t% U7 i
  290. $redis->lPop('key');
    % k$ Q  f& n+ l- }6 N  @
  291. 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素# j$ C0 [! R$ ~5 f
  292. 4 \* k3 _6 y8 i, _
  293. blPop/brPop
    + @# B1 X$ h1 S8 M
  294. $redis->blPop('key1', 'key2', 10);
    ; ]# t" M/ U4 X  n! {) `
  295. lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作
    9 [8 c" G, A7 r- V* B
  296. 4 \' j' Z! y$ h4 p
  297. lSize4 E4 A/ v* G* B" b* [+ c
  298. $redis->lSize('key');, d& s1 C* v; ]4 u0 D
  299. 返回名称为key的list有多少个元素) I9 O# d- U1 C
  300. ) B! o; t& i9 G$ |' I) s: l  ?
  301. lIndex, lGet
    ; q) a: ^8 D7 i
  302. $redis->lGet('key', 0);
    # l& h( N: q6 e4 J
  303. 返回名称为key的list中index位置的元素
    . T5 C, o- u4 w

  304. 4 g$ w+ O. B1 ^# c$ g9 H! ~
  305. lSet
    , `& ]4 `* Z6 A$ Q& E# v& [' p
  306. $redis->lSet('key', 0, 'X');
    5 q& F1 J3 Z4 c& s4 a
  307. 给名称为key的list中index位置的元素赋值为value
    ' O; c" U+ B2 @- `1 y0 q" r

  308. 0 a9 C/ j; K9 B0 L% o3 d
  309. lRange, lGetRange9 c. l; Y, j! \" r
  310. $redis->lRange('key1', 0, -1);9 I& p- K9 k7 N2 q# y" H
  311. 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)/ ?: d  |" l+ s+ g0 k3 h
  312. 6 E4 w( H  U, ]
  313. lTrim, listTrim
    7 A$ l, D2 H* a# C( U* r
  314. $redis->lTrim('key', start, end);+ {* `6 n$ d' K9 ]/ `
  315. 截取名称为key的list,保留start至end之间的元素
      ?3 D' b0 j) S# |, w
  316. 7 }: h% g. e. x" D# P* m
  317. lRem, lRemove
    ; H+ M/ b8 R$ `
  318. $redis->lRem('key', 'A', 2);& ?% g3 L, _( ^. y* Y
  319. 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
    : A# f, y( y: ?8 X7 Y
  320. ) T' e9 h' b" Q/ n0 f
  321. lInsert: `1 p2 s2 ]' a1 P
  322. 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
    ' a' e4 g0 q' v+ q
  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');
    % l( o/ `5 ]7 j2 p
  324. $redis->lRange('key1', 0, -1);
    - q2 \2 B1 ?% l1 B; }
  325. $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');- v) j6 U: R5 v% g5 U# o: [
  326. $redis->lRange('key1', 0, -1);
    * \9 o6 z. @8 ]8 u) x: ~
  327. $redis->lInsert('key1', Redis::AFTER, 'W', 'value');1 {/ _1 Q7 H$ i$ [4 P8 e. e; ]( K" t+ v
  328. " f" G- x' \7 |& ^8 s
  329. rpoplpush
    $ y4 ~$ t& e) `9 O4 m# J+ H
  330. 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
    ) l! W' [$ c- G7 }
  331. $redis->delete('x', 'y');
    2 v' x# K5 v. S; Z
  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'));9 M1 A4 ?: l( ^0 f; x' p! Q+ Y
  333. var_dump($redis->lRange('x', 0, -1));0 m3 @; I  Q8 B7 H
  334. var_dump($redis->lRange('y', 0, -1));
    - ~# y+ I. f2 }, G

  335. 3 e4 c" _% X" J6 g+ O4 E& j$ S
  336. string(3) "abc"   w& i" P+ t- X; Q# r
  337. array(1) { [0]=> string(3) "def" }   t# G6 L( n  x" G7 Z" E( w9 e6 {
  338. array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }
    + W8 [1 R9 G. [  d1 O
  339. ! J4 X+ C% O0 t* K$ c/ ^/ w( D
  340. SET操作相关! C; e$ ?$ Z! L& @
  341. sAdd  A9 u) x7 Z2 H8 f) o$ K
  342. 向名称为key的set中添加元素value,如果value存在,不写入,return false7 L. I8 X# g+ @; m
  343. $redis->sAdd(key , value);
    $ L, B8 H2 H/ b* U
  344. 6 H( I' M) }* O0 i- G7 V
  345. sRem, sRemove
    9 ?: \5 C. v3 {3 c; `$ A
  346. 删除名称为key的set中的元素value
    & |5 ?7 x: \/ b$ A; o% M2 \6 j
  347. $redis->sAdd('key1' , 'set1');6 y; K& \# q2 l; d0 y& h
  348. $redis->sAdd('key1' , 'set2');! |, p- h# r' e% t6 g+ h
  349. $redis->sAdd('key1' , 'set3');
    / v( Z- `% w' ]
  350. $redis->sRem('key1', 'set2');2 Q( p+ c1 A, F: g6 @, `

  351. * G! A, G( @' n! x% w+ [
  352. sMove$ ?/ f$ A: }$ g2 n
  353. 将value元素从名称为srckey的集合移到名称为dstkey的集合
    / [% m5 `* K# s& X. i$ W) L% S
  354. $redis->sMove(seckey, dstkey, value);
    - E* [5 i$ L: r+ N9 @

  355. . K6 D' ~$ T, M3 |6 l
  356. sIsMember, sContains
    4 _+ X, L  Y: I' T' L$ o
  357. 名称为key的集合中查找是否有value元素,有ture 没有 false' Z  c  [9 T! L$ Z
  358. $redis->sIsMember(key, value);/ P* O7 Q7 t' {" \
  359. , ?# S1 k4 f" x$ |0 F, X: n
  360. sCard, sSize
    7 `3 p9 B5 R, c2 a+ `
  361. 返回名称为key的set的元素个数
    8 M* r" ~1 H3 c6 w! O, d/ Q

  362. 1 u6 }! A3 `; R4 n; H! B! {: }
  363. sPop! A5 g) @8 y+ x* J
  364. 随机返回并删除名称为key的set中一个元素& k$ c0 M7 X$ S% [% j6 J$ _* t

  365. : O% M+ g) I4 M
  366. sRandMember# A" v8 c4 j6 `! j
  367. 随机返回名称为key的set中一个元素,不删除) J4 I/ P2 F+ S9 _

  368. 7 G) B0 M5 h) g  |
  369. sInter8 h8 T) S! ]9 L$ j
  370. 求交集( h% V$ D7 A! r- I: n& Q7 p: c
  371. 2 i. B( h$ N! x
  372. sInterStore
    4 h0 B; Q# L" m( e8 j
  373. 求交集并将交集保存到output的集合5 g! o- J7 ?2 d. D3 \3 p, M
  374. $redis->sInterStore('output', 'key1', 'key2', 'key3')' l5 \. `/ ]7 p1 z; ~7 n5 s5 ?2 u
  375. / y  ~  \" b. @" s4 G5 _
  376. sUnion3 G# V1 a0 I/ R5 J4 z! a
  377. 求并集
    " S, G  R# O* P8 |# G2 u2 a
  378. $redis->sUnion('s0', 's1', 's2');& j' c/ h+ E, J, H) I
  379. s0,s1,s2 同时求并集; M0 H( w: B+ q! S# n* V
  380. 5 t* x7 N/ v* d5 l! w* t1 J
  381. sUnionStore
    / Y, @; X% D* ~; H
  382. 求并集并将并集保存到output的集合
    5 I5 S" M0 Z  ?1 _7 ]; G1 {3 w, H
  383. $redis->sUnionStore('output', 'key1', 'key2', 'key3');
    . `4 d" g+ R6 I! p2 u: I4 X9 _
  384. 9 }3 Q: q" r0 a5 |6 t
  385. sDiff5 J. m; \1 m* O6 L. @
  386. 求差集
    * R3 }: \: {0 _) K3 ^

  387. ! J( p3 V$ |1 Z7 N# E0 U( U  P
  388. sDiffStore
    9 r5 l1 ?5 Y9 _/ o, ]1 Q& R
  389. 求差集并将差集保存到output的集合& b0 n* V1 ]9 e' F

  390. ! ]: y6 l! ]$ V) D; M
  391. sMembers, sGetMembers
    6 o# d6 m) `9 |; Q  V
  392. 返回名称为key的set的所有元素
    ) w# u" N) P$ z, b% }) S

  393. : G1 ?/ e  Y& l
  394. sort
    5 h. k5 m" {) h! p- }' x' S
  395. 排序,分页等
    ' A( j. O( R. b& G
  396. 参数
    8 B% ~$ ^) k0 z
  397. 'by' => 'some_pattern_*',
    ' E& N+ n6 h1 W
  398. 'limit' => array(0, 1),7 S* }+ I2 |3 B! f, t8 O9 B0 b
  399. 'get' => 'some_other_pattern_*' or an array of patterns,
    : Q- f" A. R4 p, d2 l6 j/ @" \5 c( n
  400. 'sort' => 'asc' or 'desc',( B: i  B, g# I0 B. B* K4 K! V
  401. 'alpha' => TRUE,% V8 ^* p5 ~! d$ ]( U8 Y: b" r
  402. 'store' => 'external-key'
    2 r& l+ w6 d- U" E' Q8 s" i
  403. 例子( V- }2 }- ~* G4 G! R$ U/ A" w
  404. $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
    ; u' _4 @* [# ]' _  @' u1 e9 g  O
  405. var_dump($redis->sort('s')); // 1,2,3,4,5% r4 `  X" s( y! `1 `
  406. var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1. S) Y2 {+ p& v/ J/ _/ S
  407. var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5& K) y3 H! E+ w. R% U
  408.   e, _- b$ r2 x0 l" `3 P6 c2 @
  409. string命令
    . l! B! Y& f' T9 X
  410. getSet& b. ~% a2 R" z( ~* F3 T! o
  411. 返回原来key中的值,并将value写入key& h  C7 Z, w5 r
  412. $redis->set('x', '42');7 z  Z) A1 [/ n% H3 t4 G4 x- _
  413. $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'4 o# w, o& G5 {: w
  414. $newValue = $redis->get('x')' // return 'lol'
    6 Z) c1 `7 Z& q8 c( @. w$ |1 @% R
  415. & Z4 C9 M( c+ S' P
  416. append
    ! ]$ e7 I( }1 V: T( ]
  417. string,名称为key的string的值在后面加上value+ ~% Z& ]7 x$ j1 m
  418. $redis->set('key', 'value1');8 w+ Z) x& c9 j1 Z  x5 S7 x4 @
  419. $redis->append('key', 'value2');- p1 \: R; L& v$ r. g
  420. $redis->get('key');
    3 o3 f6 M3 b( M& [5 m% O

  421. % ~; r/ [1 g6 V7 |* b7 j
  422. getRange (方法不存在)* E1 m5 ]- i; \3 ], F* e6 |
  423. 返回名称为key的string中start至end之间的字符
    3 t/ F! N1 S$ |( k8 f4 Q- E' Q
  424. $redis->set('key', 'string value');
    8 ?0 [. h8 l( ~$ L) `" K
  425. $redis->getRange('key', 0, 5);- _' d) y6 a! c8 Y' h6 H
  426. $redis->getRange('key', -5, -1);, b4 J) W+ J3 F
  427. * L* ]3 a2 d- s( m  \  P: c; {
  428. setRange (方法不存在)
    % b0 [3 U9 g3 ~! H& I' C
  429. 改变key的string中start至end之间的字符为value
    # z/ m/ E, J( w
  430. $redis->set('key', 'Hello world');
    " A, k, Q" F$ \+ }; R3 Q6 ]
  431. $redis->setRange('key', 6, "redis");
    & K2 M- S/ o$ T& z! C
  432. $redis->get('key');# c& ?2 F% U" G2 {! \

  433. & ]* i$ J* i* l- J6 Z3 ^- M
  434. strlen
    & ?  W2 S, M" V( {
  435. 得到key的string的长度4 W% y  c. T& u: S
  436. $redis->strlen('key');
    5 U) P& d  T* k( e& l; v' u

  437. ' b2 j$ p9 W) \( T8 }! ?
  438. getBit/setBit1 M5 J5 d! `$ u3 y! q
  439. 返回2进制信息* a! S! k7 r1 w$ b# s4 H- A
  440. 3 {$ G5 k  K0 O7 \5 F; r
  441. zset(sorted set)操作相关7 S6 \4 L6 b* q  \& r; S
  442. zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。4 J  e9 Z, u0 {8 L3 G
  443. $redis->zAdd('key', 1, 'val1');, r; R' t' f, ~8 Y3 K
  444. $redis->zAdd('key', 0, 'val0');
    ! o5 n; c1 g+ ?0 p* X1 K
  445. $redis->zAdd('key', 5, 'val5');: V0 C' v  g5 Q) N5 G1 |6 d0 Q/ o
  446. $redis->zRange('key', 0, -1); // array(val0, val1, val5)1 d7 R: w; W. k6 `1 X

  447. 7 H6 R# f5 ?+ }( c- O
  448. zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
    " b7 f: r  i2 ~& y" s2 a
  449. $redis->zAdd('key1', 0, 'val0');$ }* Z/ k: S7 h9 @3 R0 F: \
  450. $redis->zAdd('key1', 2, 'val2');
    . A" w# ?# ?' G. u
  451. $redis->zAdd('key1', 10, 'val10');
    - a' z; o0 a2 h8 B
  452. $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);, B+ |# E* E* r" X5 z

  453. ) f# z6 F$ f2 v& [/ Z
  454. zDelete, zRem: Q7 t* ^7 v; X/ g+ g
  455. zRem(key, member) :删除名称为key的zset中的元素member2 I1 f: L* y# d
  456. $redis->zAdd('key', 0, 'val0');
    ! W+ m& a# `$ |' ?% J
  457. $redis->zAdd('key', 2, 'val2');
    - `8 N3 G+ W! `
  458. $redis->zAdd('key', 10, 'val10');
    + v5 e3 |5 X$ E3 z- {' W. E9 f
  459. $redis->zDelete('key', 'val2');
    " n2 |1 V* U* W: r! Y' {+ q) l) T8 e0 L
  460. $redis->zRange('key', 0, -1);
    ! R  g% c! |3 K# y

  461. 2 D6 y) M; _) ^4 B' o4 K5 h. W- j& X
  462. zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出& _7 Q1 K' k8 d5 w
  463. $redis->zAdd('key', 0, 'val0');* d4 b* t. m3 F7 L" \0 ?0 c
  464. $redis->zAdd('key', 2, 'val2');
    - J! o% y6 b& h" o$ i, @( S6 H" I
  465. $redis->zAdd('key', 10, 'val10');
    ! d3 \; a, D8 l4 C/ l3 w8 ^; |
  466. $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
    9 k) c" D7 a3 O; h4 d2 J
  467. 3 a9 L& s) m+ V, a/ a7 ?' @- \
  468. zRangeByScore, zRevRangeByScore- d! @/ U3 Z! R+ p: B: W
  469. $redis->zRangeByScore(key, star, end, array(withscores, limit ));/ ^; k/ p9 \7 A; e# g
  470. 返回名称为key的zset中score >= star且score <= end的所有元素
    ; v! P* p6 {/ [
  471. $ a! c, a' o& ?* R; {
  472. zCount
    & f) {5 V! M5 n. k# {* M+ O5 c
  473. $redis->zCount(key, star, end);7 y5 F  y3 V, K6 {4 q
  474. 返回名称为key的zset中score >= star且score <= end的所有元素的个数
    0 [  ?4 D- n! n! x
  475. 3 r, P- K+ s1 e" ~
  476. zRemRangeByScore, zDeleteRangeByScore
    ! k, w! J: W5 H& k- u
  477. $redis->zRemRangeByScore('key', star, end);
    % K% u0 U" a8 n3 H" b% O" _4 i
  478. 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数
    % U: k0 k4 R5 y$ H# K/ c

  479. ' k; Y& f7 X+ i  _2 K4 Z& Q# U: Q9 x
  480. zSize, zCard
    3 k; u, H6 D! ^* ~0 K$ u7 n$ [
  481. 返回名称为key的zset的所有元素的个数" c1 D4 G$ E8 z' i: k' |/ j

  482. + a% D( t9 f8 u0 k  k
  483. zScore3 x6 o$ ~8 C1 K% [- d' Z
  484. $redis->zScore(key, val2);" O- ~" ]* s6 v/ C
  485. 返回名称为key的zset中元素val2的score
    & z2 a9 ^7 S6 T- N5 R8 z$ Z

  486. % ?1 p8 }! _5 k. j
  487. zRank, zRevRank6 K6 O  d( A3 v5 t+ M
  488. $redis->zRevRank(key, val);
    - q/ A- Z$ x: P3 a) |
  489. 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序4 E+ E0 ^; u- [8 U9 Q
  490. 6 ^$ w' d4 c2 q) a; q
  491. zIncrBy( s6 K6 R* j! {/ H
  492. $redis->zIncrBy('key', increment, 'member');
    - r# m3 E8 B! x6 J1 B7 k
  493. 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
    5 F+ h# U. h, L: y% Z6 G
  494. + {0 w3 k+ Z7 [) v
  495. zUnion/zInter
    4 \2 T' L4 d( ~) {
  496. 参数5 I- K5 e6 ~6 O: S& V/ {2 m
  497. keyOutput
    ( F5 W- {* }, t4 n' ~( r7 w) |6 j
  498. arrayZSetKeys
    2 F& h/ I' C5 H6 X& M
  499. arrayWeights
    " d! V4 ?4 _$ R  s( u4 v# G
  500. aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.! R  J+ S  j, Z( ^! U# T
  501. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。, a8 g9 E4 u; i1 s5 ^, m1 M) p
复制代码

7 h& ]* ]" e  x+ D8 m" Q% ~' h. y0 L2 K5 Y
% v3 m; F: T+ k" D! f
( S# [2 a- F3 p  c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2019-11-26 17:06:33 | 只看该作者
  1. $redis = new Redis(); - t" l  H, v/ M! y+ @
  2. //连接redis服务器
    4 z* [1 n$ k+ ^! I- r
  3. $redis->connect('127.0.0.1', '6379');
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-4-30 19:55 , Processed in 0.074832 second(s), 18 queries .

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