redis使用及配置之缓存详解
2018-06-17 22:47:21来源:未知 阅读 ()
redis使用及配置之缓存详解
1、Redis的介绍
Redis是一个Key-Value存储系统。它支持存储的value类型有:string(字符串),list(链表), set(无序集合),zset(sorted set有序集合)和hash,也可以把redis看成一个数据结构服务器。这些数据类型都支持pust/pop、add/remove及取交集、并集和差集运算,Redis支持各种不同方式的排序。数据都是缓存在内存中的,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并实现了master-slave(主从)同步。
Redis提供的API语言包括C、C++、C#、Java、JavaScript、Lua、Objective-C、Perl、PHP、Python、Ruby、Go、Tcl等。
使用Redis:新浪微博,200+ Server、400 port、4G data.
使用方式:与memcache相同
1. 应用程序直接访问Redis数据库;
2. 应用程序直接访问Redis,只有当访问Redis失败时才访问MySQL
应用场合:
1. 取最新N个数据的操作
2. 排行榜应用
3. 需要精确设定过期时间的应用
4. 计数器应用
5. Uniq操作,获取某段时间所有数据排重值
6. 实时系统,反垃圾系统
7. Pub/Sub构建实时消息系统
8. 构建队列系统
9. 缓存
10. 存储微博关注关系
Redis有库无表无字段无行列。MongoDB有库有集合(对应于Mysql中的表)
2、redis客户端
可以通过百度网盘下载:
http://pan.baidu.com/s/1pLH79jX
客户端打开图示:
通过redisClient客户端可以看到我们存储到redis中的数据;
3、应用示例
<?php $master_redis_config = array('tcp://172.16.0.39:6379', array('profile' => '3.0')); $slave_redis_config = array('tcp://172.16.0.39:6379', array('profile' => '3.0')); ?>
在需要使用redis文件中加入下面代码,自动加载redis服务:
require_once 'predis/autoload.php';
使用redis存储服务时,代码如下:
private function hsetRedisDatas($hash_table, $key, $value){ $redis_config = Flight::get('master_redis_config'); $redis = new Predis\Client($redis_config[0]); $redis->hset($hash_table,$key, $value); }
注意:这里使用了Flight框架加载配置文件,获取redis访问路径;
获取redis数据时,代码如下:
private function hgetRedisDatas($hash_table, $key){ $redis_config = Flight::get('master_redis_config'); $redis = new Predis\Client($redis_config[0]); $result = $redis->hget($hash_table,$key); return $result; }
public function getShippingName($shipping_id){ $shipping_name = self::hgetRedisDatas('shipping_name', $shipping_id); if (empty($shipping_name)){ $shipping_name = "当redis没有缓存数据时,通过读取数据库获取数据"; if (!empty($shipping_name) && !isset($shipping_name['error_code'])){ self::hsetRedisDatas('shipping_name', $shipping_id, $shipping_name); } } return $shipping_name; }
更新redis缓存
create/update/delete---同时存到redis和数据库
query--先从redis查,没有记录才从数据库查,并把从数据库查的结果也放一份到redis
private static function removeRedisDatas(){ $redis_config = Flight::get('master_redis_config'); $redis = new \Predis\Client($redis_config[0]); $redis->del($redis->keys('inventory*')); }
我们在redis中定义特殊的key,例如inventory*,这样我们就可以将inventory开头的缓存清空,而不至于影响其他redis缓存数据;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:SQL 行转列
- PHP访问MySQL查询超时怎么办 2020-03-09
- MySQL中使用WHERE子句的方法 2019-10-25
- 关于laravel后台模板laravel-admin select框的使用详解 2019-10-08
- PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql 2019-09-23
- 使用 Shell 在多服务器上批量操作 2019-09-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash