redis 的安装与使用

<?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(); // 关闭连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水月情缘雪飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值