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的更多相关文章

  1. Redis、RabbitMQ、Memcached

    知识目录: Memcached Redis RabbitMQ Memcached 回到顶部 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中 ...

  2. 面试阿里被分布式“搞懵”,Redis、MongoDB、memcached没答上来

    都说大厂面试难,一点也没有错,一线大厂的面试究竟怎么样还得自己亲身经历了才知道.小白面试阿里,就被面试官吊打,一问分布式就被“搞懵”了,Redis.MongoDB.Memcached都没答好,很多没有 ...

  3. redis和memcached有什么区别?redis的线程模型是什么?为什么单线程的redis比多线程的memcached效率要高得多(为什么redis是单线程的但是还可以支撑高并发)?

    1.redis和memcached有什么区别? 这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧 1)Redis支持服务器端的数据操作:Redis相比Memcache ...

  4. Redis 和 Memcached 有什么区别?Redis 的线程模型是什么?为什么单线程的 Redis 比多线程的 Memcached 效率要高得多?

    面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 面试官心理分析 这个是问 redis 的时候,最基本的问题吧,redi ...

  5. 面试题-Redis、MongoDB、Memcached[转]

    https://blog.csdn.net/gangsijay888/article/details/81213811 一.缓存 搞懂缓存那些事:https://blog.csdn.net/a7248 ...

  6. Redis、MongoDB及Memcached的区别 Redis(内存数据库)

    Redis.MongoDB及Memcached的区别 Redis(内存数据库) 是一个key-value存储系统(布式内缓存,高性能的key-value数据库).和Memcached类似,它支持存储的 ...

  7. Redis 相比 Memcached 有哪些优势?

    1.Memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰 富的数据类 2.Redis 的速度比 Memcached 快很 3.Redis 可以持久化其数据

  8. redis简介以及与memcached比较

    一.redis (1)简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.是noSql数据库的一种. re ...

  9. redis 扩展 安装 和 memcached 安装

    在Windows下为PHP5.6安装redis扩展和memcached扩展   一.php安装redis扩展   1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本       ...

随机推荐

  1. web安全CSRF和XSS

    web端的安全攻击有CSRF和XSS两种,将通过以下三个方面介绍这两种安全攻击: 1.基本概念和缩写 2.攻击原理 3.防御措施 CSRF  1.基本概念和缩写 CSRF(Cross-site req ...

  2. JavaScript 事件处理机制

    DOM 事件流 DOM 是一个树型结构,当一个HTML元素产生一个事件时,该事件会在该元素结点与根节点之间按特定的顺序传播,路径所经过的节点都会收到该事件,这个传播过程可称为DOM事件流.而事件传播的 ...

  3. 解读 --- 基于微软企业商务应用平台 (Microsoft Dynamics 365) 之上的人工智能 (AI) 解决方案

    9月25日微软今年一年一度的Ignite 2017在佛罗里达州奥兰多市还是如期开幕了.为啥这么说?因为9月初五级飓风厄玛(Hurricane Irma) 在佛罗里达州登陆,在当地造成了挺大的麻烦.在这 ...

  4. 【CLR Via C#】16 数组

    所有的数组都隐式的从System.Array抽象类派生,后者又派生自System.Object 数组是引用类型,所以会在托管堆上分配内存,数组对象占据的内存块包含数组的元素,一个类型对象指针.一个同步 ...

  5. TLS 1.0协议

    TLS1.0 协议发布于1999年初.该协议可在Internet中提供给通信双方一条私有信道,即对通信消息进行加密.该协议主要描述了通信密钥协商的方法与通信格式的定义.分别由TLS Handshake ...

  6. Hsqldb中设置主键,并让主键自增

    CREATE TABLE userinfo ( Id INTEGER GENERATED BY DEFAULT AS IDENTITY, Name varchar(100) NOT NULL, Dep ...

  7. 【SQL SERVER】语法复习

    一.数据类型  截图来源:http://www.w3school.com.cn/sql/sql_datatypes.asp 二.数据表操作 1.创建数据表 USE [Test] GO /****** ...

  8. kettle 启动spoon一闪而过

    Kettle是Pentaho的一个组件,主要用于数据库间的数据迁移(ETL). Kettle有三个主要组件:Spoon,Kitchen,Pan.其中Spoon是一个图形化的界面. 一.安装kettle ...

  9. Excel思考问题的方式

    Excel思考问题的方式 一.写需求,说我要什么数据 好比如,现在咱们需要将第一周.第二周.第三周.第四周.….等E:E列里的"每一周的 第二个数值"提取出来.那么我们手动提取了几 ...

  10. 浏览器加载和渲染html的顺序-css渲染效率的探究(转载)

    1.浏览器加载和渲染html的顺序1.IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的.2.在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相关联的元素都 ...