Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis支持的数据类型有 Stirng(字符串), List(列表), Hash(字典), Set(集合), Sorted Set(有序集合);
redis版本是Redis 2.6.12 系统是在Windows+Apache2.4+php5.6
连接:
1 //实例化redis2 $redis = new Redis();3 //连接4 $redis->connect('127.0.0.1', 6379);5 //检测是否连接成功6 echo "Server is running: " . $redis->ping();7 // 输出结果 Server is running: +PONG
Strng(字符串):
// 设置一个字符串的值 $redis->set('cat', 111); //获取一个字符串的值 echo $redis->get('cat'); // 111 // 重复set $redis->set('cat', 222); echo $redis->get('cat'); // 222
List(列表):
1 //列表 2 //存储数据到列表中 3 $redis->lpush('list', 'html'); 4 $redis->lpush('list', 'css'); 5 $redis->lpush('list', 'php'); 6 7 //获取列表中所有的值 8 $list = $redis->lrange('list', 0, -1); 9 print_r($list);echo ''; 10 11 //从右侧加入一个12 $redis->rpush('list', 'mysql');13 $list = $redis->lrange('list', 0, -1);14 print_r($list);echo '';15 16 //从左侧弹出一个17 $redis->lpop('list');18 $list = $redis->lrange('list', 0, -1);19 print_r($list);echo '';20 21 //从右侧弹出一个22 $redis->rpop('list');23 $list = $redis->lrange('list', 0, -1);24 print_r($list);echo '';25 26 // 结果27 // Array ( [0] => php [1] => css [2] => html )28 // Array ( [0] => php [1] => css [2] => html [3] => mysql )29 // Array ( [0] => css [1] => html [2] => mysql )30 // Array ( [0] => css [1] => html )
1 connect('127.0.0.1', 6379); 6 //列表 7 //存储数据到列表中 8 $redis->lpush('list', 'html'); 9 $redis->lpush('list', 'css');10 $redis->lpush('list', 'php');11 $redis->lpush('list', 'mysql');12 $redis->lpush('list', 'javascript');13 $redis->lpush('list', 'ajax');14 15 //获取列表中所有的值16 $list = $redis->lrange('list', 0, -1);17 print_r($list);echo ''; 18 19 //获取列表的长度20 $length = $redis->lsize('list');21 echo $length;echo '';22 23 //返回列表key中index位置的值24 echo $redis->lget('list', 2);echo '';25 echo $redis->lindex('list', 2);echo '';26 27 //设置列表中index位置的值28 echo $redis->lset('list', 2, 'linux');echo '';29 $list = $redis->lrange('list', 0, -1);30 print_r($list);echo '';31 32 //返回key中从start到end位置间的元素33 $list = $redis->lrange('list', 0, 2);34 print_r($list);echo '';35 36 $list = $redis->lgetrange('list', 0, 2);37 print_r($list);echo '';38 39 //截取链表中start到end的元素 //截取列表后列表发生变化,列表保留截取的元素,其余的删除40 $list = $redis->ltrim('list', 0, 1);41 print_r($list);echo '';42 43 $list = $redis->lrange('list', 0, -1);44 print_r($list);echo '';45 // 结果46 // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css [5] => html )47 // 648 // mysql49 // mysql50 // 151 // Array ( [0] => ajax [1] => javascript [2] => linux [3] => php [4] => css [5] => html )52 // Array ( [0] => ajax [1] => javascript [2] => linux )53 // Array ( [0] => ajax [1] => javascript [2] => linux )54 // 155 // Array ( [0] => ajax [1] => javascript )
1 connect('127.0.0.1', 6379); 6 //列表 7 //存储数据到列表中 8 $redis->lpush('list', 'html'); 9 $redis->lpush('list', 'html');10 $redis->lpush('list', 'html');11 $redis->lpush('list', 'css');12 $redis->lpush('list', 'php');13 $redis->lpush('list', 'mysql');14 $redis->lpush('list', 'javascript');15 $redis->lpush('list', 'html');16 $redis->lpush('list', 'html');17 $redis->lpush('list', 'html');18 $redis->lpush('list', 'ajax');19 20 //获取列表中所有的值21 $list = $redis->lrange('list', 0, -1);22 print_r($list);echo ''; 23 24 //删除列表中count个值为value的元素25 //从左向右删26 $redis->lrem('list', 'html', 2);27 $list = $redis->lrange('list', 0, -1);28 print_r($list);echo ''; 29 30 //从右向左删31 $redis->lrem('list', 'html', -2);32 $list = $redis->lrange('list', 0, -1);33 print_r($list);echo ''; 34 35 //删除所有36 $redis->lrem('list', 'html', 0);37 $list = $redis->lrange('list', 0, -1);38 print_r($list);echo '';39 40 // 结果41 // Array ( [0] => ajax [1] => html [2] => html [3] => html [4] => javascript [5] => mysql [6] => php [7] => css [8] => html [9] => html [10] => html )42 // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html [7] => html [8] => html )43 // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html )44 // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css )
Hash(字典):
1 connect('127.0.0.1', 6379); 6 //字典 7 //给hash表中某个key设置value 8 //如果没有则设置成功,返回1,如果存在会替换原有的值,返回0,失败返回0 9 echo $redis->hset('hash', 'cat', 'cat');echo '';10 echo $redis->hset('hash', 'cat', 'cat');echo '';11 echo $redis->hset('hash', 'cat', 'cat1');echo '';12 echo $redis->hset('hash', 'dog', 'dog');echo '';13 echo $redis->hset('hash', 'bird', 'bird');echo '';14 echo $redis->hset('hash', 'monkey', 'monkey');echo '';15 //获取hash中某个key的值16 echo $redis->hget('hash', 'cat');echo '';17 18 //获取hash中所有的keys19 $arr = $redis->hkeys('hash');20 print_r($arr);echo '';21 22 //获取hash中所有的值 顺序是随机的23 $arr = $redis->hvals('hash');24 print_r($arr);echo '';25 26 //获取一个hash中所有的key和value 顺序是随机的27 $arr = $redis->hgetall('hash');28 print_r($arr);echo '';29 30 //获取hash中key的数量31 echo $redis->hlen('hash');echo '';32 33 //删除hash中一个key 如果表不存在或key不存在则返回false34 echo $redis->hdel('hash', 'dog');echo '';35 var_dump($redis->hdel('hash', 'rabbit'));echo '';36 37 // 结果38 // 139 // 040 // 041 // 142 // 143 // 144 // cat145 // Array ( [0] => cat [1] => dog [2] => bird [3] => monkey )46 // Array ( [0] => cat1 [1] => dog [2] => bird [3] => monkey )47 // Array ( [cat] => cat1 [dog] => dog [bird] => bird [monkey] => monkey )48 // 449 // 150 // int(0)
1 connect('127.0.0.1', 6379); 6 //字典 7 //批量设置多个key的值 8 $arr = [1=>1, 2=>2, 3=>3, 4=>4, 5=>5]; 9 $redis->hmset('hash', $arr);10 print_r($redis->hgetall('hash'));echo '';11 12 // 批量获得额多个key的值13 $arr = [1, 2, 3, 5];14 $hash = $redis->hmget('hash', $arr);15 print_r($hash);echo '';16 17 //检测hash中某个key知否存在18 echo $redis->hexists('hash', '1');echo '';19 var_dump($redis->hexists('hash', 'cat'));echo '';20 21 print_r($redis->hgetall('hash'));echo '';22 23 //给hash表中key增加一个整数值24 $redis->hincrby('hash', '1', 1);25 print_r($redis->hgetall('hash'));echo '';26 27 //给hash中的某个key增加一个浮点值28 $redis->hincrbyfloat('hash', 2, 1.3);29 print_r($redis->hgetall('hash'));echo '';30 31 //结果32 // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )33 // Array ( [1] => 1 [2] => 2 [3] => 3 [5] => 5 )34 // 135 // bool(false)36 // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )37 // Array ( [1] => 2 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )38 // Array ( [1] => 2 [2] => 3.3 [3] => 3 [4] => 4 [5] => 5 )
Set(集合):
1 connect('127.0.0.1', 6379); 6 //集合 7 // 添加一个元素 8 echo $redis->sadd('set', 'cat');echo ''; 9 echo $redis->sadd('set', 'cat');echo '';10 echo $redis->sadd('set', 'dog');echo '';11 echo $redis->sadd('set', 'rabbit');echo '';12 echo $redis->sadd('set', 'bear');echo '';13 echo $redis->sadd('set', 'horse');echo '';14 15 // 查看集合中所有的元素16 $set = $redis->smembers('set');17 print_r($set);echo '';18 19 //删除集合中的value20 echo $redis->srem('set', 'cat');echo '';21 var_dump($redis->srem('set', 'bird'));echo '';22 23 $set = $redis->smembers('set');24 print_r($set);echo '';25 26 //判断元素是否是set的成员27 var_dump($redis->sismember('set', 'dog'));echo '';28 var_dump($redis->sismember('set', 'bird'));echo '';29 30 //查看集合中成员的数量31 echo $redis->scard('set');echo '';32 33 //移除并返回集合中的一个随机元素(返回被移除的元素)34 echo $redis->spop('set');echo '';35 36 print_r($redis->smembers('set'));echo '';37 38 // 结果39 // 140 // 041 // 142 // 143 // 144 // 145 // Array ( [0] => rabbit [1] => cat [2] => bear [3] => dog [4] => horse )46 // 147 // int(0)48 // Array ( [0] => dog [1] => rabbit [2] => horse [3] => bear )49 // bool(true)50 // bool(false)51 // 452 // bear53 // Array ( [0] => dog [1] => rabbit [2] => horse )
1 connect('127.0.0.1', 6379); 6 //集合 7 $redis->sadd('set', 'horse'); 8 $redis->sadd('set', 'cat'); 9 $redis->sadd('set', 'dog');10 $redis->sadd('set', 'bird');11 $redis->sadd('set2', 'fish');12 $redis->sadd('set2', 'dog');13 $redis->sadd('set2', 'bird');14 15 print_r($redis->smembers('set'));echo '';16 print_r($redis->smembers('set2'));echo '';17 18 //返回集合的交集19 print_r($redis->sinter('set', 'set2'));echo '';20 21 //执行交集操作 并结果放到一个集合中22 $redis->sinterstore('output', 'set', 'set2');23 print_r($redis->smembers('output'));echo '';24 25 //返回集合的并集26 print_r($redis->sunion('set', 'set2'));echo '';27 28 //执行并集操作 并结果放到一个集合中29 $redis->sunionstore('output', 'set', 'set2');30 print_r($redis->smembers('output'));echo '';31 32 //返回集合的差集33 print_r($redis->sdiff('set', 'set2'));echo '';34 35 //执行差集操作 并结果放到一个集合中36 $redis->sdiffstore('output', 'set', 'set2');37 print_r($redis->smembers('output'));echo '';38 39 // 结果40 // Array ( [0] => cat [1] => dog [2] => bird [3] => horse )41 // Array ( [0] => bird [1] => dog [2] => fish )42 // Array ( [0] => bird [1] => dog )43 // Array ( [0] => dog [1] => bird )44 // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )45 // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )46 // Array ( [0] => horse [1] => cat )47 // Array ( [0] => horse [1] => cat )
Sorted Set(有序集合):
1 connect('127.0.0.1', 6379); 6 //有序集合 7 //添加元素 8 echo $redis->zadd('set', 1, 'cat');echo ''; 9 echo $redis->zadd('set', 2, 'dog');echo '';10 echo $redis->zadd('set', 3, 'fish');echo '';11 echo $redis->zadd('set', 4, 'dog');echo '';12 echo $redis->zadd('set', 4, 'bird');echo '';13 14 //返回集合中的所有元素15 print_r($redis->zrange('set', 0, -1));echo '';16 print_r($redis->zrange('set', 0, -1, true));echo '';17 18 //返回元素的score值19 echo $redis->zscore('set', 'dog');echo '';20 21 //返回存储的个数22 echo $redis->zcard('set');echo '';23 24 //删除指定成员25 $redis->zrem('set', 'cat');26 print_r($redis->zrange('set', 0, -1));echo '';27 28 //返回集合中介于min和max之间的值的个数29 print_r($redis->zcount('set', 3, 5));echo '';30 31 //返回有序集合中score介于min和max之间的值32 print_r($redis->zrangebyscore('set', 3, 5));echo '';33 print_r($redis->zrangebyscore('set', 3, 5, ['withscores'=>true]));echo '';34 35 //返回集合中指定区间内所有的值36 print_r($redis->zrevrange('set', 1, 2));echo '';37 print_r($redis->zrevrange('set', 1, 2, true));echo '';38 39 40 //有序集合中指定值的socre增加41 echo $redis->zscore('set', 'dog');echo '';42 $redis->zincrby('set', 2, 'dog');43 echo $redis->zscore('set', 'dog');echo '';44 45 //移除score值介于min和max之间的元素46 print_r($redis->zrange('set', 0, -1, true));echo '';47 print_r($redis->zremrangebyscore('set', 3, 4));echo '';48 print_r($redis->zrange('set', 0, -1, true));echo '';49 50 //结果51 // 152 // 053 // 054 // 055 // 056 // Array ( [0] => cat [1] => fish [2] => bird [3] => dog )57 // Array ( [cat] => 1 [fish] => 3 [bird] => 4 [dog] => 4 )58 // 459 // 460 // Array ( [0] => fish [1] => bird [2] => dog )61 // 362 // Array ( [0] => fish [1] => bird [2] => dog )63 // Array ( [fish] => 3 [bird] => 4 [dog] => 4 )64 // Array ( [0] => bird [1] => fish )65 // Array ( [bird] => 4 [fish] => 3 )66 // 467 // 668 // Array ( [fish] => 3 [bird] => 4 [dog] => 6 )69 // 270 // Array ( [dog] => 6 )