redis的使用,相比memcached
redis支持数据持久化,不像memcached断电或者重启就丢失数据了。
支持持久化主要有两种方式,在redis.conf配置文件里配置。
1. 使用.rdb格式存储,配置save参数(save N M表示在N秒之内,redis至少发生M次修改则redis抓快照到磁盘。超过一定修改频率,则采用快照方式备份),默认是这一种模式
2. 使用.aof格式存储,配置appendonly yes(redis每执行一个修改数据的命令,都会把它添加到aof文件中,当redis重启时,将会读取AOF文件进行“重放”以恢复到 redis关闭前的最后时刻。这种方式更安全,但会慢一些)。
实际上这两种持久化模式可以同时打开,但比较建议是用aof这个,配置文件默认是rdb这个。
redis相比mem还支持更多的存储结构。比如支持list、set、hash、zset等。
list模仿链表这样的数据结构,有lPush、rPush、lrange这些方法啥的。lpush是从左边添加,后添加的在前边,类似于栈结构。rpush是从右边添加,先添加的在前边。
下载安装redis,官网地址:http://redis.io/download;
下载安装php-redis,参考地址:http://www.runoob.com/redis/redis-php.html
比如:
启动redis服务
# ./redis-server redis.conf
进入客户端
# ./redis-cli
> lpush key val1
> lpush key val1
> lpush key val2
> lrange key 0 -1 #查看一下
这样就是val2在第一位置。值得注意的是,list结构允许相同的值在一起,比如两个val1。这与set结构不同,set只允许相同的值出现一次。
和mem相同的是,set进一个不是字符串类型值的时候,还是要把这个结构序列化才行,然后取得的时候也要反序列化。
redis支持很多种编程语言去操作,这些编程语言操作redis的客户端。各自语言封装了各自的操作方法。
其它的东西就看下操作手册即可,地址:http://redisdoc.com/。
这几篇文章也不错,
http://blog.51yip.com/cache/1439.html
http://blog.51yip.com/cache/1440.html
http://blog.csdn.net/zhiguozhu/article/details/50517527
几个简单的php操作redis的示例:
<?php //连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully",'<br/>';
//查看服务是否运行 $arr = array(
'a' => '中文',
'b' => 'ddd2',
'c' => 'aaa3',
);
$redis->set('key0', json_encode($arr));
$redis->set('key1', serialize($arr)); $key0 = $redis->get('key0');
var_dump(json_decode($key0, true)); echo '<br/>';
$key1 = $redis->get('key1');
var_dump(unserialize($key1)); // 模拟队列, lpush表示从左边开始推进去,那么后放进去的就在队列头
$redis->lpush("list0", 'test1');
$redis->lpush("list0", "test2");
$redis->lpush("list0", "test3");
$redis->lpush("list0", "test4");
$redis->lpush("list0", "test5");// 在队列头
$redis->lpush("list0", "test5");// 在队列头 // start end下标
$list1 = $redis->lRange('list0', 0, 5);
$list2 = $redis->lRange('list0', -3, -2);// test3 test2 echo '<br/>';
print_r($list1); echo '<br/>';
print_r($list2); // hash表类型
$redis->hset('table1','field1','aaa111');
$redis->hset('table1','field2','bbb222'); echo '<br/>';
$re = $redis->hget('table1', 'field1');// aaa111
print_r($re); // 无序集合
$redis->sadd('skey','vv0');
$redis->sadd('skey','vv0');
$redis->sadd('skey','vv1');
$redis->sadd('skey','vv11');
$redis->sadd('skey','vv111'); echo '<br/>';
// 相同value只取一个,区别于队列模拟
$re = $redis->smembers('skey');// Array ( [0] => vv111 [1] => vv0 [2] => vv1 [3] => vv11 )
print_r($re);
php操作redis的方法名和在redis客户端操作的方法几乎一样,也就很方便查看手册。几种redis支持的数据结构下的操作。
http://redisdoc.com/index.html
php查看redis某个key的数据类型时,利用$redis->type('key');
其中有几种情况key不存在、string、set、list、zset、hash,分别返回值是:
-
redis的使用,相比memcached的更多相关文章
- Redis、RabbitMQ、Memcached
知识目录: Memcached Redis RabbitMQ Memcached 回到顶部 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中 ...
- 面试阿里被分布式“搞懵”,Redis、MongoDB、memcached没答上来
都说大厂面试难,一点也没有错,一线大厂的面试究竟怎么样还得自己亲身经历了才知道.小白面试阿里,就被面试官吊打,一问分布式就被“搞懵”了,Redis.MongoDB.Memcached都没答好,很多没有 ...
- redis和memcached有什么区别?redis的线程模型是什么?为什么单线程的redis比多线程的memcached效率要高得多(为什么redis是单线程的但是还可以支撑高并发)?
1.redis和memcached有什么区别? 这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧 1)Redis支持服务器端的数据操作:Redis相比Memcache ...
- Redis 和 Memcached 有什么区别?Redis 的线程模型是什么?为什么单线程的 Redis 比多线程的 Memcached 效率要高得多?
面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 面试官心理分析 这个是问 redis 的时候,最基本的问题吧,redi ...
- 面试题-Redis、MongoDB、Memcached[转]
https://blog.csdn.net/gangsijay888/article/details/81213811 一.缓存 搞懂缓存那些事:https://blog.csdn.net/a7248 ...
- Redis、MongoDB及Memcached的区别 Redis(内存数据库)
Redis.MongoDB及Memcached的区别 Redis(内存数据库) 是一个key-value存储系统(布式内缓存,高性能的key-value数据库).和Memcached类似,它支持存储的 ...
- Redis 相比 Memcached 有哪些优势?
1.Memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰 富的数据类 2.Redis 的速度比 Memcached 快很 3.Redis 可以持久化其数据
- redis简介以及与memcached比较
一.redis (1)简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.是noSql数据库的一种. re ...
- redis 扩展 安装 和 memcached 安装
在Windows下为PHP5.6安装redis扩展和memcached扩展 一.php安装redis扩展 1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本 ...
随机推荐
- vue2.0父子组件通信的方法
vue2.0组件通信方法:props传值和emit监听.(.sync方法已经移除.详情请点击)(dispatch-和-broadcast方法也已经废弃) props方法传值:Props 现在只能单项传 ...
- 2.logback+slf4j+janino 配置项目的日志输出
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.创建项目 参考:http://www.cnblogs.com/yysbolg/p/6898453.html 2 ...
- 浅谈对NaN的理解
1.NaN : Not a Number 不是一个数字 2.NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内 3.判断是否是NaN, 方法一 :is.NaN(变量): 方法二 :Nu ...
- Intellij IDEA添加项目依赖
在idea的设置中,存在下面几个标签页 Libraies是向idea中添加的jar或者文件夹进入. module是添加具体的项目依赖,后面的选项为部署时是否忽略. artifacts配置打包方式,需要 ...
- EasyUI 通过 Combobox 实现 AutoComplete 效果
朋友在做一个web程序,用的EasyUI框架,让我帮忙实现一个自动提示功能.由于之前我也没用过EasyUI框架,就想到了jQueryUI有 AutoComplete 插件,就想直接拿过来用. 但当我将 ...
- LeetCode题解之 Increasing Order Search Tree
1.题目描述 2/问题分析 利用中序遍历,然后重新构造树. 3.代码 TreeNode* increasingBST(TreeNode* root) { if (root == NULL) retur ...
- 一致性Hash(Consistent Hashing)原理剖析
引入 在业务开发中,我们常把数据持久化到数据库中.如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取.读取数据的过程一般为: ...
- 使用MonkeyTest对Android客户端进行压力测试
目录 monkey命令简介 monkey命令参数说明 自动化实例 如何通过日志定位问题 1.monkey命令简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它 ...
- Beta阶段总结博客
Beta阶段的规划 1.完善并做完阿尔法版本 2.美化界面 3.规格化GIt的使用 4.新增登录注册功能 5.与服务器端有了交互,实现了前后端的对接 6.增加了一些特效 7.每个人分了模块并且最后对于 ...
- 【Alpha】团队项目测试报告与用户反馈
测试报告 一 . WEB端测试 测试页面 测试功能/界面 功能/界面简述 测试预期效果 测试目的 是否完成(Y/N) Internet Explorer Google chrome Firefox S ...