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