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. lamp配置多个虚拟站点

    在同一ip下添加多个域名站点! 1.查看ip 命令:ifconfig 2.添加域名 命令:vi /etc/hosts 输入域名:如 192.168.160.127   www.test.com 192 ...

  2. 【读书笔记】iOS-关闭键盘的2种方法

    一种是通过使用键盘上的return键关闭键盘,一种是通过触摸背景关闭键盘. 参考资料:<iOS7开发快速入门>

  3. js的style.display小问题

    在元素添加class样式隐藏display:none; 使用console.log(xx.style.display);//空值

  4. php完美分页工具

    <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $lis ...

  5. webpack打包vue项目之后生成的dist文件该怎么启动运行

    亲测,webpack打包vue项目之后生成的dist文件可以部署到 express 服务器上运行. 我的vue项目结构如下: 1. 进入该vue项目目录,打开git bash,执行:npm run b ...

  6. url override and HttpSession implements session for real

    无论cookie有没有禁用,HttpSession都有效 package com.test; import javax.servlet.ServletException; import javax.s ...

  7. sqlio

    http://www.cnblogs.com/Amaranthus/archive/2011/09/16/2178747.html Each line in the param.txt file lo ...

  8. SQLSERVER中的资源调控器

    SQLSERVER中的资源调控器 转载自: http://wenku.baidu.com/view/0d92380cf78a6529647d5375.html http://www.cnblogs.c ...

  9. RHEL7系统管理常用工具

    RHEL7提供大量系统管理工具,简要记录一下各工具的作用,后续再详细说明用法. 工具 描述 /proc linux的内存镜像目录./proc/sys目录下的文件能被临时修改,从而改变linux内核参数 ...

  10. 忘了mysql密码咋么办?

    一.已知mysql数据库root的密码,修改root的方法如下: 1. mysqladmin 命令直接修改: ~]#mysqladmin -u root -p password "newpa ...