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的版本信息,这会决定扩展文件版本 ...
随机推荐
- JS 对数组的操作集锦(基础)
下面内容是自己复习基础时候整理出来的,感谢缪雪峰老师的课程让自己可以有节奏的复习基础的东西! 以下内容颜色是重点关注,已经特别注意提醒,不是为了颜色好看噢,希望能帮到刚学习前端的朋友们,后续还会持续更 ...
- Android 状态栏开发
又好久没写了...还是记个笔记吧.这次关于Android手机App状态栏的各种处理做一个笔记. 场景一:需要做全屏,不看到手机状态栏信息(手机电量,信号等) 这种需求一般用的比较多的地方是App的Sp ...
- 快速配置webpack 4.x
区分开发模式和生产模式: npm run start——开发模式,启用devServer,文件的改动实时更新.刷新 npm run build——生产模式,打包文件到dist文件夹 // packag ...
- Android逆向 破解第一个Android程序
这节正式开始破解编写的第一个Android工程,打开Android Killer,把第一节自己编写的Android apk拖入Android Killer. PS: 如果Android Killer不 ...
- go语言练习:文件哈希
package main import ( "crypto/sha256" "encoding/hex" "fmt" "io&qu ...
- LeetCode 题解之Number Complement
1.题目描述 2.题目分析 使用 C++的 bitset 库进行操作: 3.代码 int findComplement(int num) { bitset<> b(num); string ...
- 负载均衡(Load Balancing)学习笔记(三)
本文讲述实现负载均衡的常用算法. 轮询法(Round Robin) 轮询法是负载均衡中最常用的算法,它容易理解也容易实现.轮询法是指负载均衡服务器(load balancer)将客户端请求按顺序轮流分 ...
- elasticsearch报错之 memory locking requested for elasticsearch process but memory is not locked
安装elasticsearch报错如下: [2019-01-14T03:57:16,453][ERROR][o.e.b.Bootstrap ] [ip-172-31-30-62.ec2.interna ...
- MySQL权限管理分配
之前一直忽视了MySQL的权限这一块的内容,以为一般般的知识点,随时用随时学就好了,导致自己这方面稍微有点不太明白的地方,总是踩坑,所以后来就总结一下: 1.MySQL权限系统的工作原理 .对连接的用 ...
- 3、爬虫之selenium模块
一 selenium模块 什么是selenium?selenium是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作. selenium最初是一个自动化测试工具, ...