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