管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
- **php.ini文件添加:extension=php_redis.dll 重启php, phpinfo可以看到redis则证明安装成功**
复制代码 php连接redis测试- <?php0 t* B/ {0 A) E! @
- $redis = new Redis(); - {! z4 V" ~, H# [# I" D1 g
- $redis->connect('127.0.0.1', 6379);//serverip port t: {2 X4 i- \, Z
- $redis->auth('mypassword');//my redis password
0 @& X- [5 [; }+ Z7 b - $redis ->set( "test" , "Hello World"); 0 [0 h* m- n1 g& M8 b, p* z0 S
- echo $redis ->get( "test");
. O, Z0 h! \- T; V4 F6 R
复制代码 php操作redis函数封装- /**
0 p+ L/ u! g9 E' m+ y, ~ - * 如果不传入$host和$port默认读取Laravel环境变量的参数+ s3 ~1 ~, _. X: r, n5 E. A3 Y
- * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi$ r; e6 e$ m# @
- */
/ t& X! t6 v6 u" k: {' e - function RedisSet($key,$value,$expire=0,$host='',$port=''){4 F; K; U, ~: Q C( O% X" ]
- if(!$key||!$value) return false;
1 T6 {( W; ^% J+ w+ T3 R- B: ^, z - $host = $host?$host:getenv('REDIS_HOST');
- ?+ l5 ]! a$ i! p! a1 U - $port = $port?$port:getenv('REDIS_PORT');
+ u2 c4 [" E3 N/ }. |8 z' w# h - $redis = new Redis();
( a, k. y2 ]+ [. c2 X - $redis->connect($host, $port);2 @, t! X0 q$ Z4 l' R6 t
- $value = is_array($value)?json_encode($value):$value;: v2 ~" ?( S$ I
- return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
. {* J# f: v+ K - }
1 {& F% }* b/ c! G% v - /**$ w6 o0 p1 f+ ?
- * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
% d+ T) |) r* _* _2 U - */9 O8 b/ w& O9 m& E; i5 e
- function RedisGet($key,$host='',$port=''){
- F* O6 r8 e+ t3 w% X& h' E. z! R, j - $redis = new Redis();& |! O. J0 ?1 D' ^ M; i, D$ `
- $host = $host?$host:getenv('REDIS_HOST');& y+ j) ?1 e. [" t! U
- $port = $port?$port:getenv('REDIS_PORT');9 }6 e' B6 ]9 H- k3 \" L3 Y& D
- $redis->connect($host, $port);1 i% c5 s2 B- s( f5 x
- $result = $redis->get(getenv('REDIS_PREFIX').$key);* U- G0 V0 @. C/ w% b2 M
- return is_null(json_decode($result))?$result:json_decode($result,true);
$ e( F' \! j4 Q+ _2 F7 ^+ ?" h( w4 J - }& s5 B/ k) X% O& G
复制代码 php操作redis大全,基本上php操作redis常用的函数都在下面了
+ t( B* E0 h# L7 m9 B* v1 c- setex 带生存时间的写入值
# O0 T8 r3 }$ a5 a% S" u! O5 h - $redis->setex('key', 3600, 'value');
- E8 U3 K M! W: m: Z. O; f - setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1
, C$ `' x0 D( J' l - $redis->setnx('key', 'value');
8 V5 n. I x1 m - 返回已经删除key
6 U v3 F) u4 p) G - $redis->delete('key1'); 成功返回1失败返回0
/ a5 D7 Z% [/ V$ y& v - $redis->delete('key1','key2'); 删除两个键成功返回1失败返回0: X2 Y/ c/ k$ {1 r$ w
- 查询生存时间3 X- v/ \" r6 {/ O6 @% ?
- $redis->ttl('key1'); 持久化的返回-1,有生存时间的返回时间(单位秒)
4 k' l+ o" T# x5 g1 w3 U$ t. w - 同时给多个key赋值,同时设置key0和key1" b8 |4 K. G5 F/ r$ @5 H; i! c
- $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
! V' T N" P* [% O$ t - key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
+ `# }# W! m( m% y - $redis->incr('key1');$ @+ g7 D1 ~6 Z9 ~ W( S$ P" N! Y
- $redis->incrBy('key1', 10);
" x; y) M- \" e! | - 减法跟加法一样8 [; ]% W" u! G8 A5 C5 x% _
- $redis->decr("key1"); 减少1& F0 o2 d* a+ v" O1 \8 e4 q+ w. k
- $redis->decrBy("key1",5) 减少51 n+ V( p! c8 J; z$ T
- ) P+ W$ T" n9 h: t7 L4 w! s$ ^! m
- list相关操作,连表操作
3 a$ `/ Q4 A( ]" r4 R0 ] - lPush) U' m& y! C0 v1 @6 g" J" {; B3 y9 t
- $redis->lPush("list", "888"); g: @! D9 Y2 e; Q# h& S y
- $id = $redis->lpush('list','HHHHHHH');echo $id;返回链表的元素个数! u+ J* [& D3 u$ s2 w* o; r h
- $redi->lrange('list',0,-1); 返回全部数据,数组形式9 J/ j k# h- ?( P
- $redis->lrange('list',0.2); 返回连表0-2坐标的三个元素
+ { E; C% h, ~8 a - lPushx/rPushx/ a/ U: V3 W1 Z3 J' h' d% u( X
- $redis->lPushx(key, value);
( M2 {. J* K8 h5 ?/ i - 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加0 j% h/ A. V% s) y! l! k1 @+ r
- 8 L1 U" o/ d! Q( I, t, U, W2 ^
- $redis->lpop('list');输出链表最左边的ksy的值,输出后删除掉这个key
5 t6 R, @, z, X' a! X$ J - $redis->rpop('list');输出链表最右边的ksy的值,输出后删除掉这个key6 S4 N; G3 A; B$ {+ H6 i4 J
- $redis->lset('list',7,"update"); 修改坐标为7的值,成功返回1, S2 _2 S! r) b Y r9 W( S
- 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序
5 Y6 s" P8 x8 t) R: ] - sadd s1 zhangsan
$ U1 {# ?0 K* P1 A+ Q; s' t$ D9 B - sadd s1 lisi
# R! [7 D1 ]9 {5 e4 u8 N1 u- N - sadd s1 wangwu
: B2 W) k" E/ @+ ]$ C0 ~: M - sadd t1 yangxingyi
9 W5 Q% ^2 k0 N' W2 B$ e - sadd t1 lilei% i2 i6 N' A2 }8 ?. x
- sadd t1 zhangsan
T6 p4 A- ?! w* y: T8 Q k - smembers s1 s1的所有集合内容& O+ G. s% M; R( u6 u
- sdiff s1 t1 s1有的,t1没有的,差集
6 T# H! L" i, J) L, s# B - $redis->sinter('s1','t1');返回s1和t1两个集合都有的,数组形式
7 J1 ~" J' \4 G1 O( b3 @6 y1 M. r" X - scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的, Z$ F9 }% u6 E+ E' {
- spop抽奖场景,返回集合里面随机的数8 r$ v c+ D4 a4 E/ _5 o
- spop s1 默认返回1个,返回后就删除这个数,中奖了就不能再中了
! i# |) Z+ I. f( Z2 t, ~% J - $i = $redis->spop('s1');var_dump($i); 返回一个数,返回后删除这个数( E3 L8 R9 W; F% A7 g
- $i = $redis->spop('s1',2);var_dump($i);不能返回两个的,提示错误的
6 T- g9 o s' Y( L A2 p2 N! C - 随机返回集合里面的一个元素,但不删除,重复中奖
# V, t, W2 Q: I' d8 n) b6 A: M5 N3 N - $i = $redis->srandmember('s1');echo $i;$ ?+ t7 y, l) U0 j
- sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false
" H: c9 z- |. p+ J6 U% Y& [' M- i8 ] - $i = $redis->sismember('s1','zhangsan2');echo $i;在1,不在false7 p( L0 _2 B; O; N$ H: Y3 V1 ?
8 j/ m; G- V$ ^% @- zadd key 2 value 有序集合% Y5 N) E* N4 _: s& y B) S* K8 z
- zadd y1 1 zhangsan;
1 N! _5 m, y# K - zadd y1 3 lisi;9 f! H2 X0 m# N: z, M
- zadd y1 2 wangwu;
# q1 H' G! @6 x7 o. s - zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi. h' p& M4 S; Q! }0 _$ N+ @: y: ~
- $i = $redis->zrange('y1',0,-1);var_dump($i);: f! l. q; i+ v" s% j4 Q1 [
- 返回数组,键值不是插入时候给的键,是从0开始的新键) V3 z( x7 j* i+ q% x
- zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先( N! [# i. o3 f) u% p/ X; M
- zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的
" _8 | M5 l* n( g# h4 a7 ]! {; D - 无序就scard,有序就zcard,有z没有s- l3 W' k0 L2 _5 x& ?: Z
- sInterStore$ f* ]& o9 d2 |7 l5 h
- 求交集并将交集保存到output的集合
W" M! Y9 b: R$ k3 O - $redis->sInterStore('output', 'key1', 'key2', 'key3')( z$ l, o. ~& f: R
-
# _3 L/ T# ~0 s; n4 V3 e% c2 {' X: S - Hash操作( E" l: L. D' L2 A# X) E* S
- hSet
2 b) r3 W: q( g - $redis->hSet('h', 'key1', 'hello');# j! x: P V, V# }2 y6 y) \
- 向名称为h的hash中添加元素key1—>hello1 Y3 g( C" c8 i$ g" R6 }
- ; O/ b2 A1 p$ Z% A- b# p, E3 r
- hGet
' p, S5 i! K, ^/ Z% N, M4 D3 z5 T - $redis->hGet('h', 'key1');
+ m& P0 V. X5 ^, C5 _; Y, C - 返回名称为h的hash中key1对应的value(hello)
L+ o/ J- x# t: |7 x6 `' |
! z2 w$ H0 n. ~! M$ _* Q- hLen
1 B' v3 a( G, {! D+ J' ] - $redis->hLen('h');+ e# z8 `- J j0 P6 `3 l3 {/ ^
- 返回名称为h的hash中元素个数7 ^% L' b3 T) `- J* p
- % O4 m3 A- ]9 W8 C( X
- hDel+ E* m) b e5 s4 t
- $redis->hDel('h', 'key1');1 f! F" q! V1 B0 Y7 L6 z1 S
- 删除名称为h的hash中键为key1的域$ b4 L7 J! G) |' Y& x0 }( k8 E
- / }, H; {4 m" D* v
- hKeys2 ^0 P1 G9 f; h+ y+ F! C. [3 o
- $redis->hKeys('h');" S* s; h# E! ^
- 返回名称为key的hash中所有键
8 b- a; D# X' x2 a$ ~4 V" V
# ~+ |( J* X: {& p- n- a& s* N6 T- hVals" L! V" O L4 j m
- $redis->hVals('h'). [6 c; ]% R1 O+ b
- 返回名称为h的hash中所有键对应的value. d0 E5 v" K8 a1 ?
; A0 O7 @2 [( L- hGetAll
' H, q4 R0 n! \& y$ n - $redis->hGetAll('h');+ t( Z& M; q% M8 Q
- 返回名称为h的hash中所有的键(field)及其对应的value0 L4 Y* U5 ^- G7 f2 h/ ^" w# G
( |5 |# p' O& J) M! Y- hExists! E7 ^& V! g6 N
- $redis->hExists('h', 'a');2 k! n% O5 h L# c( Z
- 名称为h的hash中是否存在键名字为a的域
1 M& O" h% V% F! x5 U2 A/ }+ |4 A# o3 V
+ \% r" f" ? M8 Q- hIncrBy; z- @7 Z; ~) w$ b
- $redis->hIncrBy('h', 'x', 2);3 }/ G" h$ m. S. e. a+ B6 `
- 将名称为h的hash中x的value增加2
6 n9 Y& a0 d- ?1 I/ `" n* r+ L - ; C9 @- [# f, W* F$ Y& ^5 g
- hMset* J# [$ k; M3 F+ l
- $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));0 ?4 V+ d6 r% ?# S% }# Q9 ]
- 向名称为key的hash中批量添加元素
' q. p6 Q/ j4 P) ~- p# W7 E; C - 6 ^4 }' i7 q Y; l3 F
- hMGet' ~5 _# X$ ?2 W! |) o
- $redis->hmGet('h', array('field1', 'field2'));" i' ]8 v A1 ]
- 返回名称为h的hash中field1,field2对应的value
3 [: i* P$ Q1 T8 X9 Y. K! ^7 }
9 ?0 B6 E2 h1 P/ |6 v, x, y- redis 操作相关
D% z: ~& _/ ~) b( e- E - flushDB; U9 z7 y# `/ [3 ^& @) _
- 清空当前数据库$ k( f* `" m& X" q, `
- . R& d3 s. \ h: R% ]
- flushAll
3 f) _6 _" }8 a. l ^0 F4 _2 F' U - 清空所有数据库
2 ?' l# j, A7 @+ n7 T
, }4 G4 v z3 d! ^/ b- randomKey: p \# ~6 `5 O4 G! n
- 随机返回key空间的一个key
7 o( [* _8 N2 Q- I$ C - $key = $redis->randomKey();
& J" `, r O2 B K - 5 N: X) _8 p; L6 |9 ^! T* n
- select
2 `# p- v, t$ u - 选择一个数据库6 l5 f8 m: w6 W, u! K; a, F& g
- move
4 K7 i$ V) X+ ^4 j. j - 转移一个key到另外一个数据库" a, g" l; ^3 J9 F- `! C9 m! V: B
- $redis->select(0); // switch to DB 0
8 _8 q' g; d; ~- _! _% C6 ` - $redis->set('x', '42'); // write 42 to x
$ @- h6 G& q6 L ~7 n% l* j* } - $redis->move('x', 1); // move to DB 1
# Q5 {. c3 J y9 `3 a. O - $redis->select(1); // switch to DB 1
! k3 G0 A6 H3 p) w - $redis->get('x'); // will return 426 R U5 ?' Y7 q) i
- / \8 a+ M4 p, K8 E8 H
- rename, renameKey
$ M+ W) x; j! A% C: a$ q" p, o - 给key重命名
0 h5 ` ^! G" F4 | - $redis->set('x', '42');3 `4 ^6 P# T( s" u
- $redis->rename('x', 'y');
, P, k1 H& }7 N - $redis->get('y'); // → 42, X3 l8 K1 ^( A! G" B. J3 k9 U- \
- $redis->get('x'); // → `FALSE`" P- _& _& ^3 p- g7 V
( w+ t8 t' D! V1 \$ Z- renameNx# `5 B$ w8 X5 X1 X: s) X* v
- 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功7 w& C) F' ^( K! g0 i
- ! {( x: h4 T. r3 M' @# L+ A. l
- setTimeout, expire: b& O, k/ m' h, S+ `6 K6 K
- 设定一个key的活动时间(s)9 S- u ]. \7 x7 z
- $redis->setTimeout('x', 3);
% ~. B# K- k0 |9 m3 A
' a: V r! H; u% s% A- expireAt2 }' P# f6 `7 Y$ V2 L! z; h
- key存活到一个unix时间戳时间
. P9 X0 o! k0 z' N8 O - $redis->expireAt('x', time() + 3);
" M/ ?) L. X2 k+ \4 l8 ]1 d/ n7 v - ( m6 s, N! Y8 \" m: E& _* n
- keys, getKeys
7 @8 t" u- `% K6 E! K* X% H - 返回满足给定pattern的所有key+ d( f# N: b3 D* L3 a
- $keyWithUserPrefix = $redis->keys('user*');$ e( N/ a& Y$ A- |. s9 D
- 4 N! e1 h E& B" w, a! U
- dbSize
9 L! Y% P) a. h3 J - 查看现在数据库有多少key
8 q- V3 I5 [5 o - $count = $redis->dbSize();
) M3 b9 w) ]$ Q* _( t) b+ G - . P" b2 |- \' M4 S
- auth' D3 n8 B- ?6 d7 Q) l8 Z
- 密码认证& V8 S4 Q1 Z1 v' d
- $redis->auth('foobared');' d1 ?( A0 ]. ?$ p: B# B
- % `( M0 @+ d; J) }$ F4 W. p
- bgrewriteaof9 N0 N: e2 D1 q& B' U1 e" B
- 使用aof来进行数据库持久化2 d! ?6 t' c9 v( R, x3 t
- $redis->bgrewriteaof();
- }: i1 I! Z e
* w0 I; x9 G8 A% w! w7 c- slaveof* @8 ?8 k4 R" V5 y. d3 o8 S' B
- 选择从服务器( e; f8 r' ]3 k
- $redis->slaveof('10.0.1.7', 6379);& N y8 N$ D4 P2 x3 N$ e
% `. P$ Y. D5 H" s2 `- save" R5 J! Q. }) E/ L
- 将数据同步保存到磁盘
4 h+ [# u$ P" j% C
- e( H M5 Y- e' p3 U, K- bgsave+ m3 l% P, ]( |1 Z- O9 t4 T5 E
- 将数据异步保存到磁盘
; j: y: `# M$ K) I& R1 m - # ~2 ~$ Q* `0 a i
- lastSave
( ^1 C3 U$ J! e, c8 g5 x/ R - 返回上次成功将数据保存到磁盘的Unix时戳' g6 x7 |" z5 X. K, ^: S3 Q
- ' l1 e8 [# `* _
- info, K" z7 [2 }) h# l
- 返回redis的版本信息等详情
! h4 ]! k' u& }; |. O
' _1 V, D0 j7 N# Y0 E1 O- Redis::__construct构造函数1 x7 t1 }/ Z: ?* o* L$ q* [
- $redis = new Redis();
$ y8 |; E" p! a* a+ L - : C+ V+ \5 \3 W3 h, [! |- W9 K
- connect, open 链接redis服务3 k3 E& d0 j5 ]0 r
- 参数; v- B- z! H, x G5 A
- host: string,服务地址% U2 s( K* K$ x0 Y
- port: int,端口号
; u) y: c: b# j2 T0 g - timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)# s: R4 y9 E! _: S/ p5 q% W
- 注: 在redis.conf中也有时间,默认为300
; _+ p5 L2 G V, U6 @ - 6 [. a! a$ w3 \/ _/ D
- pconnect, popen 不会主动关闭的链接
& E6 j* j& y4 m* b# G: M - 参考上面
9 r0 d- `( i6 w3 r2 ]
0 f$ q: E; a$ |0 {6 t- setOption 设置redis模式' u; r% S/ V& L _- ?4 |
- ( z% G5 h @/ G9 L0 R1 Z) q
- getOption 查看redis设置的模式) i9 i& {' e. @/ t4 n3 ?) [+ |& o+ A
- E5 [! m3 Q* c4 h) j$ `) u- ping 查看连接状态
$ F& x# r2 i3 p: [- i
; ^+ K0 s# ?6 }; v+ M& n- get 得到某个key的值(string值)
' ~5 T+ i$ y0 v" W4 F" { - 如果该key不存在,return false
* n* X( `. m6 a+ o% K5 T4 T) T
* f) V B3 i6 f6 o. \) ~. ^. k6 w- set 写入key 和 value(string值): {) k6 g4 F: q
- 如果写入成功,return ture9 f- v" X. [, u+ T$ `' W, X
- - H6 K6 v H7 A
- setex 带生存时间的写入值
7 T' N( U- ^+ _- q5 O - $redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.) l) `# O& q; k! D5 h) t. G; Q: L5 M
; H& i8 r+ ]" i+ }" g- setnx 判断是否重复的,写入值
& J/ M5 J. N1 Z7 d/ ?% D; Y - $redis->setnx('key', 'value');3 G! R) a9 G# f* V V: q
- $redis->setnx('key', 'value');
J7 D7 B& L* k7 [ - ' f# l3 J% E& T: ~
- delete 删除指定key的值0 H& f* ~* I& L( k' M
- 返回已经删除key的个数(长整数)
7 y7 @7 F1 _, |8 P U- I - $redis->delete('key1', 'key2');
`) y, ]9 G% @& t1 o - $redis->delete(array('key3', 'key4', 'key5'));
( {) A' H' `6 \0 T' o- v: |- `1 X5 Q1 O - 1 l% T" i) p* w' n
- ttl
0 G0 e/ O# n" a* Z4 Z: h# e. L2 v& I - 得到一个key的生存时间
2 t8 [5 F& I; g& [5 \
$ O% | e# U/ D b6 h$ N- persist
( m3 ~9 S7 w! t0 K) y# M - 移除生存时间到期的key/ f+ m+ a- ~5 ?% I- t1 G
- 如果key到期 true 如果不到期 false, v; p6 x+ p9 x! v Q3 K
- $ k& D6 d% {4 v
- mset (redis版本1.1以上才可以用)6 \& X; Z) w6 I& s5 p+ @
- 同时给多个key赋值
& [7 B1 B* ~; p9 \) x - $redis->mset(array('key0' => 'value0', 'key1' => 'value1')); I9 ?# ?$ |5 I# X
; n2 V5 z4 C' w0 p0 n- + J) g5 x6 Q, w! T
# N! ^( \9 Z5 B, {+ q% @$ I- multi, exec, discard
) q/ U! h! l+ z: s! |" X; z - 进入或者退出事务模式
8 D# O4 B# Y ?3 h/ D1 c - 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
5 Y) `( O2 l4 u# q0 l - Redis::MULTI:将多个操作当成一个事务执行
, T9 |4 Z$ v" c - Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
- L6 X0 H5 H/ \$ |0 b# H; @ - discard:删除一个事务/ D: h* v6 `9 `
- 返回值
2 } Z5 ] ]9 ?0 n% Z \$ u - multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
- ^& A: j& L* E( o0 }, f
$ R, ~3 i, I9 e- B3 ]- watch, unwatch (代码测试后,不能达到所说的效果); h3 W/ w. Q: i/ t _+ ^# E
- 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false)
! {/ j( P e; Y/ ^ - unwatch 取消被这个程序监测的所有key* N: U4 y3 I! _- f: M! r/ {9 A8 g
- 参数,一对key的列表
6 c0 `# Q% S+ [* A f7 N4 ~ - $redis->watch('x');9 _' U& w5 ]$ f+ g$ R3 n6 w
- 5 D' R9 O* ?% k/ B5 n! y3 e! L
- $ret = $redis->multi() ->incr('x') ->exec();
4 M( ]$ B$ Y+ i/ g
9 V7 E; k2 _$ }* m* f2 |' b* d- ! k3 W: J$ Y9 c4 `4 O
- subscribe *. t( E- N- Z( F- s- j) R
- 方法回调。注意,该方法可能在未来里发生改变, {' x( R- b( H% T# I
- - d5 _7 ~3 w# W$ t* x
- publish *9 |7 X0 `$ K2 f' J# d/ H, W, r! F
- 发表内容到某一个通道。注意,该方法可能在未来里发生改变& T% A( v4 k& d: C
- % X& J* g: x, k) |9 ^5 f
- exists
9 v; O: g/ F. c& u- S6 H2 ` - 判断key是否存在。存在 true 不在 false
* g f* H8 i# q% D% Y9 Q - - h5 T# A" B0 Y8 c9 s- E
- incr, incrBy
' T! X6 R% U) w- }3 s9 ? - key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
; F# h' J: o& F+ h1 D' v7 | - $redis->incr('key1');
# Z7 P; X5 E; x- [, V - $redis->incrBy('key1', 10);
. m3 R& Z) C$ l0 f: C8 C, W - $ \2 T' u' C6 q# e) E! H
- decr, decrBy, h' j, B; O6 v5 n
- 做减法,使用方法同incr4 J5 y% \; |9 h( x9 Z! I- S
1 D: {1 z$ \, c( _- getMultiple4 U& I* u/ d6 j% k9 O7 E2 p
- 传参
/ A9 [# ^1 B. P5 L ] - 由key组成的数组
& j" ]! r) u5 T - 返回参数& e4 T9 U1 j' t) ^- i5 |. P2 \( E! E
- 如果key存在返回value,不存在返回false& _& Y" n( ~& m9 B4 q
- $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));+ W2 @8 G3 j2 o+ t3 V
- $redis->lRem('key1', 'A', 2);7 k- a, S* d7 F$ c) g; |, A
- $redis->lRange('key1', 0, -1);; t$ ^2 l. s7 J4 H Q% X, x
- . l, C; V t* ]* D# J
- list相关操作
7 i" x! y! \( c7 a - lPush
. ]& W& x5 I: I" | - $redis->lPush(key, value);
1 V& w6 G/ M- W) ~ - 在名称为key的list左边(头)添加一个值为value的 元素
4 z9 e# u8 O. ^# I - 5 Y( `' w- {% E" R# s! ]$ N& n1 ~
- rPush! z$ p6 C7 T. Y2 O
- $redis->rPush(key, value);
$ @ ^9 [/ X- b9 k - 在名称为key的list右边(尾)添加一个值为value的 元素
1 V& Y: `% E0 z6 g - " P; g, o/ M7 O4 C
- lPushx/rPushx
+ A! V' E; d9 d' r3 l* H - $redis->lPushx(key, value);
/ A- h% t6 z2 c; \( J1 X+ r: O - 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加
/ s& ^7 k4 W! e1 W; c4 D3 l
, n5 j) I2 v" @7 q, |/ j+ b, h$ W* Z- lPop/rPop
( n) ~1 \7 _6 D8 V8 `2 t - $redis->lPop('key');6 Q+ T5 H. m' `7 z
- 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素
! f! |6 G U% |6 Q) J* B7 V- r+ b - ' Q7 B2 F& O* R+ w/ J7 ?
- blPop/brPop- s# B7 f5 r2 G. C. H
- $redis->blPop('key1', 'key2', 10);
2 n: n v$ v8 x" D - lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作! w, R4 X* d3 _7 g& W2 U0 _4 G3 Q' w
/ c- h# e% O$ w& W- lSize" w6 S( P/ o4 Z, z
- $redis->lSize('key');/ [7 n( g, l% {! Z/ t
- 返回名称为key的list有多少个元素8 p+ n6 [* D8 s5 b1 V
- 5 ^) ?' }: x/ V% a( R+ L; T
- lIndex, lGet4 }8 x% Y) u7 w" c& Q5 h+ j
- $redis->lGet('key', 0);
4 w( E4 J `9 K. ?1 Z - 返回名称为key的list中index位置的元素
# M) Q* W4 N; g0 {4 l. [ - 5 l' n7 H9 k [; n8 k! s
- lSet: J/ _- e$ a1 _5 F4 U* e
- $redis->lSet('key', 0, 'X');. ]( o, D+ Y' C4 L/ ?' j# V L* N$ j
- 给名称为key的list中index位置的元素赋值为value
5 E# [# ~7 L2 E& }
/ v. I Y2 G9 a6 L- lRange, lGetRange
6 d( b- Y% P0 q0 I' c6 {) O - $redis->lRange('key1', 0, -1);. y/ r2 t, {4 ?8 c
- 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)3 q5 @1 |& q' H$ d- n9 h
- ' z" G% T/ s# E$ D& p' v4 p
- lTrim, listTrim
# k9 @" k S0 w6 I1 |$ |) C - $redis->lTrim('key', start, end);0 Q) }8 t1 ?0 G. R D: H+ [" j+ _0 @
- 截取名称为key的list,保留start至end之间的元素
. N/ H0 ^4 x9 P6 |2 s Q
. a; s3 y7 i. l3 a3 [- lRem, lRemove& O7 O- Q: l! c
- $redis->lRem('key', 'A', 2);, E+ Q& o% U) I R8 c) q- l
- 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素4 V) a6 N; i; {! h9 @0 ~
+ Z9 s) g8 {3 ?0 _- lInsert+ E! E+ J7 S3 i% Q' [% Q* @
- 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1+ `2 q: w1 [$ k" Q/ H2 n) h: _
- $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'); w6 \! R9 O7 x) U% e/ W8 w
- $redis->lRange('key1', 0, -1);6 E6 n! S/ S, W) F( r' n) H& H X8 ^
- $redis->lInsert('key1', Redis::AFTER, 'C', 'Y');4 i& K$ u; g' U, i
- $redis->lRange('key1', 0, -1);# w9 J4 Y J7 C, K! n1 t
- $redis->lInsert('key1', Redis::AFTER, 'W', 'value');
) ~' M4 X$ z3 {/ ` - 5 l1 ^2 P. G/ f" p
- rpoplpush* }: |8 ^+ f: t J2 {' t
- 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部; G* C1 c' p* O
- $redis->delete('x', 'y');9 M- L5 c4 T" M0 O+ J, C+ I3 ?
- $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'));
( s2 ~1 y7 J( o/ X. ]; F - var_dump($redis->lRange('x', 0, -1));
9 J+ ~4 N7 v3 r* R/ n - var_dump($redis->lRange('y', 0, -1));
3 _; ], b% G' _. E L% q
: q3 ?0 ~7 P3 o6 B1 S- string(3) "abc"
4 f5 L( r, r2 r0 { - array(1) { [0]=> string(3) "def" }
# n1 i7 ^3 x& L - array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }- U8 d, F5 ~) E2 q2 p, ^
% `! h; B2 {& x% ~* Q- SET操作相关
5 `0 P" o, X8 u" S" S - sAdd" g$ W0 a$ |! t8 k' R
- 向名称为key的set中添加元素value,如果value存在,不写入,return false" }% m3 z+ I1 M( i9 K6 q
- $redis->sAdd(key , value); Q8 T$ o7 Z! a3 G/ y
# b) r ^" h# E. s% k4 a- sRem, sRemove
0 Y- D; ^; U$ a6 M) ?9 l8 B. ^7 F - 删除名称为key的set中的元素value
1 Y2 S, W4 u& E - $redis->sAdd('key1' , 'set1');
" v, m% Q3 ^4 O y - $redis->sAdd('key1' , 'set2');2 W2 D4 k3 R1 t! W; R
- $redis->sAdd('key1' , 'set3');& R; S9 j- Y5 z. S& r b& ]
- $redis->sRem('key1', 'set2');7 i# S- L7 e. `7 H, v
- $ O( g& u/ }0 c" G) U4 @
- sMove
" E( K. e _+ @' g- G - 将value元素从名称为srckey的集合移到名称为dstkey的集合2 d0 H( s( L3 a% F
- $redis->sMove(seckey, dstkey, value); O' ^9 }& n& t7 H. e$ ^6 C
- - ]! a& [& Y o
- sIsMember, sContains! V/ O; P5 P" E1 j* N
- 名称为key的集合中查找是否有value元素,有ture 没有 false8 Y# ?3 {4 G7 I: Y+ [
- $redis->sIsMember(key, value);
" Q/ F1 F% l, _" T2 N/ k - $ p# d0 [& E$ }! D
- sCard, sSize3 L( S7 w6 R+ @+ ], b
- 返回名称为key的set的元素个数
0 _) i! o4 n! ] - 8 ?; _6 K9 U' p
- sPop
+ l, J0 |! V" u5 Z0 Z7 f$ C( b1 ^+ V: k( B - 随机返回并删除名称为key的set中一个元素& ^$ @* {& x' o* ?
' a8 G2 z( V# p$ Q- sRandMember
, B; C# C) k% } - 随机返回名称为key的set中一个元素,不删除- n3 F# g" ]4 C# N9 C5 E+ k' k
: }- a1 ~: v- |$ \4 B; R- sInter% |2 { E9 \/ j- E$ t
- 求交集
# S, h( c' f# c. z" f
: g$ K. B0 k* O4 r, L: N' ^0 R- sInterStore, y0 \- _3 a& A! _# X0 z
- 求交集并将交集保存到output的集合
# {" H+ j* ^) Y( g2 W - $redis->sInterStore('output', 'key1', 'key2', 'key3')& Q# B1 x) ~; R3 m. Q% j: O6 u- G
- 3 m& m2 \5 Q1 M6 a. P4 K( \
- sUnion3 ]0 J" S! y3 d T5 G- C
- 求并集' U" K; t# [1 `$ O5 s& s
- $redis->sUnion('s0', 's1', 's2');9 c* U8 [8 l) H: b
- s0,s1,s2 同时求并集
7 G% u2 ~# D' k9 K" u' l9 [* Q% q& b - * G8 w+ f/ T B0 s' Z
- sUnionStore
- z8 s+ k4 s6 ]5 d4 u; z& ^ - 求并集并将并集保存到output的集合; R/ u0 K; l5 p& y6 l1 H
- $redis->sUnionStore('output', 'key1', 'key2', 'key3'); M( h% k7 \0 q; J$ ^9 S1 H
- & \0 U( v: l v
- sDiff+ A9 j5 [ B0 J! l& e( z7 b
- 求差集, V: D! C' I( v
- 3 Y! I! ?# o' {: Q C/ Z) S$ K% t
- sDiffStore
( D. u) E1 `4 q" S$ k - 求差集并将差集保存到output的集合* T# U% }# R# H4 ~& Q9 i0 |& H/ S
- 4 E8 ]; I, o! j8 S8 L! R9 \4 b) E
- sMembers, sGetMembers
0 o5 E, [9 V K) o. [ O - 返回名称为key的set的所有元素
2 w- p+ R0 d- d9 p) t1 ] - / H2 p2 C a3 d1 O6 Y; L( a. `
- sort
) d2 | ~% l" X5 C4 z6 H - 排序,分页等3 l8 d9 \8 l+ Y0 N
- 参数) W2 K7 M0 B6 k- m
- 'by' => 'some_pattern_*',: M" J$ g" `6 d O8 L& y/ r
- 'limit' => array(0, 1),( a0 j& t4 f0 K4 R: E* B
- 'get' => 'some_other_pattern_*' or an array of patterns,
8 K4 T' B0 q7 X: J% _1 \+ \1 d - 'sort' => 'asc' or 'desc',
/ {" A" R8 [1 O2 y3 l' S5 f( \ - 'alpha' => TRUE,- ?3 N4 l/ ^8 f9 B% K# d
- 'store' => 'external-key'
; h3 O! @# p! L% k2 F - 例子/ j3 |( {5 E" C: i
- $redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
1 F3 |1 V% Q# O1 [, Y+ u* M - var_dump($redis->sort('s')); // 1,2,3,4,5
* a5 v) M: L! z% _) m$ \ - var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
5 d6 ?) a; q% Z2 C: L - var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)59 M0 c0 ~ W- r1 K
-
# h/ [- Y' S8 D0 l - string命令
. p3 [% f C1 w: `4 v+ e - getSet6 m& ^, a* L) b/ J6 h. i
- 返回原来key中的值,并将value写入key
1 ?' K6 l" L0 l0 ?1 C - $redis->set('x', '42');! l! N3 s2 O$ ^( t
- $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'! A4 W' z9 M9 v) p
- $newValue = $redis->get('x')' // return 'lol'
4 I. f3 m; D9 q1 e# |) P4 H( B+ ^7 h - 0 p% d {# U, l/ v/ v8 |2 o* E
- append
# G4 h; |& t. G8 v - string,名称为key的string的值在后面加上value: Y7 {" G0 E' P- |5 j# S7 z/ Y5 n. h
- $redis->set('key', 'value1');2 V1 v. D0 Y$ c# Y) Z) s* z: e
- $redis->append('key', 'value2');7 c5 n+ A9 X2 t! r4 t" H
- $redis->get('key');: f! e+ I. O0 w, S
- 2 s$ R0 h! ~3 s6 {( k5 g4 u F
- getRange (方法不存在)
" ]1 \. w7 Q$ _8 ` - 返回名称为key的string中start至end之间的字符& C f- n: {0 h1 Q8 l+ B8 n8 y
- $redis->set('key', 'string value');6 I6 O' c0 S0 {8 o) A2 c
- $redis->getRange('key', 0, 5);
( V& d/ b1 o }8 M3 R - $redis->getRange('key', -5, -1); `6 Y+ B& A, U
: B; L$ S1 S: E9 K, ~! z# n) N- setRange (方法不存在). k6 g2 C! p2 A& W: ?6 C/ J
- 改变key的string中start至end之间的字符为value* p$ A7 @: a% \4 Z( G, G+ H% B& i
- $redis->set('key', 'Hello world');
` u5 p; m; a" r$ N" t - $redis->setRange('key', 6, "redis");6 n6 F" ]; y0 v( q3 [' s' a; u& V1 F
- $redis->get('key');
0 i: z' s# n3 x* a' Y% x. c - - {2 w) M1 _0 T9 T7 F
- strlen
8 o2 h% h, ?( V" ]% e5 ?3 o - 得到key的string的长度
7 D: ]) H7 ]0 M! C0 m0 E - $redis->strlen('key');
7 {+ ~; R8 X0 B6 \; |1 o
( L1 E% o% {' g H" t3 z# T- getBit/setBit* n7 u x0 O- N% ~3 r# R
- 返回2进制信息! X% m8 y' s. P" Z) j4 {/ ?0 x
- 8 A$ p& f& s c
- zset(sorted set)操作相关& N0 |0 @+ ?/ B; e5 T
- zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。$ h, ?+ a6 G0 ]5 s' Y* q6 P! F
- $redis->zAdd('key', 1, 'val1');
3 Q& J1 g% B8 F$ |$ J, s: h - $redis->zAdd('key', 0, 'val0');
6 x" _$ ]! M0 u7 @! m - $redis->zAdd('key', 5, 'val5');+ R$ b9 u4 h; i
- $redis->zRange('key', 0, -1); // array(val0, val1, val5)
+ F) c! C8 j' `7 r, Q( q9 K; F
" |' t/ d2 n' E- zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
" Z4 `& }# C6 @/ R2 g - $redis->zAdd('key1', 0, 'val0');
1 U! U" I/ K! w9 v - $redis->zAdd('key1', 2, 'val2');
' w2 k7 q; B! x; I) z - $redis->zAdd('key1', 10, 'val10');
* j v/ Q5 b5 f+ V& a" t- r0 Q& H+ g - $redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);
9 [# _' {( W" V: Q/ Y( c7 _0 y& y - 7 O% k7 f5 q3 b- L% P! w9 m
- zDelete, zRem
7 E# a0 v, O# i$ K - zRem(key, member) :删除名称为key的zset中的元素member3 B2 Y6 H' D$ P4 M4 F0 ^
- $redis->zAdd('key', 0, 'val0');- w$ a% u+ x6 S
- $redis->zAdd('key', 2, 'val2');
' G# a! h- [+ a$ v - $redis->zAdd('key', 10, 'val10');, K/ l! E/ e$ t- ?! X& R- N4 {4 b
- $redis->zDelete('key', 'val2');
* v% w' J1 g& q - $redis->zRange('key', 0, -1); $ z$ O; u- s& u ]
; \* f: y3 i3 d- zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出 _- j4 F+ i) n
- $redis->zAdd('key', 0, 'val0');
+ I- k# C; N+ h4 a+ s; {. k" S3 \. _% U - $redis->zAdd('key', 2, 'val2'); C, D% E9 u' [( Y& I
- $redis->zAdd('key', 10, 'val10');- |3 }1 _ C- U! v' P7 z' x
- $redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);# w) _" H9 z1 m; Y; x! ^! V0 b
- ( F- `( B: J* N' L, ^% {
- zRangeByScore, zRevRangeByScore
+ x$ m1 }" F% p - $redis->zRangeByScore(key, star, end, array(withscores, limit ));# o: ?0 K0 d# G& S
- 返回名称为key的zset中score >= star且score <= end的所有元素
4 Q7 G1 |; D, W( Q8 ]( s
2 C' F- a* G( H4 M X+ s/ b* T# _- zCount
7 ~+ q7 Q" O2 W1 b4 Z; g8 Y: ]! j - $redis->zCount(key, star, end);
2 b) N8 N4 `3 c5 [ - 返回名称为key的zset中score >= star且score <= end的所有元素的个数
$ R8 I" @7 r4 W9 O8 G# |0 s8 g - 5 v+ D7 ~9 H. E- _ X4 O8 K& ~
- zRemRangeByScore, zDeleteRangeByScore
7 a' Z3 R6 _, X8 N - $redis->zRemRangeByScore('key', star, end);, h: `+ @& ~$ {- _8 {. Q
- 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数" e. e/ T, K4 W4 V8 v
5 u7 j( P' e" E' U& d- zSize, zCard! Y, d/ j I6 }5 I2 y
- 返回名称为key的zset的所有元素的个数" D7 N9 e* x0 f: ^0 `$ H$ N
- % M4 R" j8 |; n
- zScore
* {( _8 l4 J5 G. Y9 t1 X, @ - $redis->zScore(key, val2);! P' W' P e- g' {1 A( e
- 返回名称为key的zset中元素val2的score
( I- i! Y5 i9 m9 h: G d1 V: u - , O$ x; d: x( g% ?8 C. B7 q# {
- zRank, zRevRank& m- d0 w6 x/ Z0 B, P7 V8 |+ Q+ e
- $redis->zRevRank(key, val);6 G2 T! j8 @4 x; J# M Y
- 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序: |# ?2 |1 Q! p2 n8 V; l5 N
- & }. a2 d/ T5 {, ]
- zIncrBy* x, R5 T! M7 } ~: m. R" @7 a
- $redis->zIncrBy('key', increment, 'member');
7 l$ |) h" c# F - 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment0 g/ {2 h3 Q) x. V4 M
: m1 {7 T3 H) p9 Q- zUnion/zInter; R1 U. i2 O# B% A
- 参数# C4 {% ?( n, o' r
- keyOutput
* g; u) M4 M: b% T - arrayZSetKeys6 b( m2 X2 e# Q0 |# o" p L/ b8 d
- arrayWeights
4 b5 z9 C( ?( M, l - aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
4 z- H1 k& G$ p: z - 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。7 h$ Y$ X0 u# o6 P6 {
复制代码
0 P6 Q5 h8 r* x& U' a( Z- e6 D: z- |& F
9 v+ V- c7 E/ @8 _. ]' A
1 H# A' b8 O; p3 k- N+ P9 L
|
|