<?php
// ===========================redis 的安装=========================================
apt-get update
apt-get install php5-redis redis-server
php5enmod redis // 开启php的redis模块。
service apache2 restart 重启apache
// redis-server 进入命令行
// ===============================redis 的使用=====================================
// 改编自:http://www.cnblogs.com/jackluo/p/3412670.html
header("content-type:text/html;charset=utf-8");
$redis = new Redis();
$redis -> connect('127.0.0.1',6379);
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP); // 设置redis模式
/*
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_NONE); // don't serialize data 不要序列化数据
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP); // use built-in serialize/unserialize 使用内置的序列化
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY); // use igBinary serialize/unserialize 使用igbinary序列化
*/
$getOption = $redis->getOption(Redis::OPT_SERIALIZER); // 活取选项
$redis->set('name','redis设置值');
echo $redis->get('name');
$redis->del('name'); # 返回 TRUE(1)
var_dump($redis->get('name')); # 返回 bool(false)
// 判断key是否存在。
if(!$redis->exists("fake_key")){ echo "fake_key 不存在"; }
$array_mset = array('first_key'=>'first_val','second_key'=>'second_val','third_key'=>'third_val');
$redis->mset($array_mset); // mset 一次存储多个值。
$array_mget = array('first_key','second_key','third_key');
var_dump($redis->mget($array_mget)); // mget 一次活取多个值。
$redis->del($array_mget); // 同时删除多个key。
var_dump($redis->mget($array_mget)); // 返回多个false
// 查找复合模式的keys * ? [] 分别代表 所有 ,一个 ,其中一个字符。
$array_mset_keys = array('one'=>'1','two'=>'2','three'=>'3','four'=>'4');
$redis->mset($array_mset_keys);
var_dump($redis->keys('*o*'));
var_dump($redis->keys('t??'));
var_dump($redis->keys('t[w]*'));
print_r($redis->keys("*"));
// RANDOMKEY 从当前数据库中随机返回(不删除)一个key。
$redis->flushall(); // 清空所有数据库
$array_mset_randomkey = array('fruit'=>'apple','frink'=>'beer','food'=>'cookis');
$redis->mset($array_mset_randomkey);
var_dump( $redis->randomkey() ); // 返回一个随机的key ,但不删除。
print_r($redis->keys('*'));
$redis->flushdb(); // 清空当前的数据库
var_dump($redis->randomkey()); // 返回false。
// 带TTL的key
$redis->flushdb();
// $redis->set('name','我是名字');
$redis->expire('name',10); // 设置一个key的过期的秒数
echo $redis->get('name'); // 获取建。
echo $redis->ttl('name'); // 获取key的有效时间(单位:秒)
// 不带 ttl的key。
$redis->set('title','不带ttl的key');
var_dump($redis->ttl('site'));
// 不存在的key
$redis->exists('not_exists_key');
var_dump($redis->ttl('not_exists_key'));
// exists 价差给定的key是否存在。
$redis->set('db','redis');
var_dump($redis->exists('db'));
$redis->del('db');
var_dump($redis->exists('db'));
// move
/*
将当前数据库(默认为0)的key移动到给定的数据库db当中。
如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果。
*/
// move 1:key存在于当前的数据库。
$redis->select(0);
$redis->set('song','secrect base - zone');
var_dump($redis->move('song',1));
// move 2 :当key不存在的时候
$redis->select(1);
var_dump($redis->exists('fake_key'));
var_dump($redis->move('fake_key',0));
// move 3:当数据库和目标数据库有相同的key时。
$redis->select(0);
$redis->set('favorite_fruit','bannan');
$redis->select(1);
$redis->set('favorite_fruit','apple');
$redis->select(0);
var_dump($redis->move('favorite_fruit',1));
echo $redis->get('favorite_fruit');
$redis->select(1);
echo $redis->get('favorite_fruit');
// rename 将key改名为newkey。
// rename 1 :key存在newkey不存在。
$redis->set('message','hello word');
var_dump($redis->rename('message','greeting'));
var_dump($redis->exists('message'));
var_dump($redis->exists('greeting'));
// rename 2 :key不存在
var_dump($redis->rename('fake_key','newer_exists'));
// rename 3:newkey存在,会覆盖原来的。
$redis->set('newkey1','newkey1');
$redis->set('newkey2','newkey2');
var_dump($redis->rename('newkey1','newkey2'));
var_dump($redis->get('newkey1'));
var_dump($redis->get('newkey2'));
// renamenx 当且仅当newkey不存在时,将key改为newkey。出错的情况和RENAME一样(key不存在时报错)。
// renamenx 1 :newkey不存在。
$redis->set('player','Mplyear');
var_dump($redis->renamenx('player','vest_player'));
// renamenx 2 :newkey存在,失败。
$redis->set('animal','bear');
$redis->set('favorite_animal','butterfly');
var_dump($redis->renamenx('animal','favorite_animal'));
// TYPE 返回key所储存的值的类型。
$redis->flushAll();
var_dump($redis->type('fake_key')); // int 0
$redis->set('weater','sumy'); // 一个字符串
var_dump($redis->type('weater')); // int 1
$redis->sadd('pat','dog'); // 一个集合。
var_dump($redis->type('pat')); // int 2
$redis->lpush('book_list','programming in scala '); // 一个列表
var_dump($redis->type('book_list')); // init 3
$redis->zadd('pats',1,'cat'); // 一个zset int 1
$redis->zadd('pats',2,'dog');
$redis->zadd('pats',3,'ping');
print_r($redis->zrange('pats',0,-1)); // Array ( [0] => cat [1] => dog [2] => ping )
var_dump($redis->type('pats')); // int 4
// EXPIRE 为给定key设置生存时间。当key过期时,它会被自动删除。在Redis中,带有生存时间的key被称作“易失的”(volatile)。
// $redis->set('cache','我是存储');
// $redis->expire('cache',30);
echo $redis->ttl('cache'); // 输出剩余的时间。
// EXPIREAT 设置生存时间。
// $redis->set('cache','缓存');
// echo $redis->expireat('cache',time()+100); // 返回 true
echo $redis->ttl('cache'); // 剩余时间
// OBJECT OBJECT命令允许从内部察看给定key的Redis对象。
$redis->select(0);
$redis->set('game','wow');
echo $redis->object('REFCOUNT','game');
// echo $redis->get('game');
// echo $redis->object('IDLETIME','game');
var_dump($redis->object('ENCODING','game')); // string 'raw' (length=3)
$redis->SET('phone',15820123123); # 大的数字也被编码为字符串
var_dump($redis->OBJECT('ENCODING','phone')); //string(3) "raw"
$redis->SET('age',20); # 短数字被编码为int
var_dump($redis->OBJECT('ENCODING','age')); //string(3) "int"
// persist 移出生存时间。
$redis->set('cache','缓存');
$redis->expire('cache',200);
echo $redis->ttl('cache'); echo '<br>';
$redis->persist('cache');
echo $redis->ttl('cache');
// sort 排序分页。将数据插入到列表中
$redis->lpush('today_cost',30);
$redis->lpush('today_cost',1.8);
$redis->lpush('today_cost',10);
$redis->lpush('today_cost',8);
print_r($redis->sort('today_cost')); // 默认排序
echo '<br>';
print_r($redis->sort('today_cost',array('ALPHA'=>true))); // 按字符顺序排序。
$redis->del('today_cost');
$redis->close(); // 关闭连接。
redis 的安装与使用
最新推荐文章于 2024-05-25 09:50:02 发布