博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php扩展redis
阅读量:7152 次
发布时间:2019-06-29

本文共 2580 字,大约阅读时间需要 8 分钟。

hot3.png

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

官网redis.io

Redis与Memcached的比较

1,网络IO模型
Memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe 传递给worker线程,进行读写IO, 网络层使用libevent封装的事件库,多线程模型可以发挥多核作用.
Redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll、kqueue和select,对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大.

2,内存管理方面

Memcached使用预分配的内存池的方式,使用slab和大小不同的chunk来管理内存,Item根据大小选择合适的chunk存储,内存池的方式可以省去申请/释放内存的开销,并且能减小内存碎片产生,但这种方式也会带来一定程度上的空间浪费.
Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,Redis跟据存储命令参数,会把带过期时间的数据单独存放在一起,并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不够,导致swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),这点上Redis更适合作为存储而不是cache.

3,数据一致性问题

Memcached提供了cas命令,可以保证多个并发访问操作同一份数据的一致性问题。 Redis没有提供cas 命令,并不能保证这点,不过Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断.

4,存储方式及其它方面

Memcached基本只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能.

Redis除key/value之外,还支持list,set,sorted set,hash等众多数据结构,提供了KEYS进行枚举操作,但不能在线上使用,如果需要枚举线上数据,Redis提供了工具可以直接扫描其dump文件,枚举出所有数据,Redis还同时提供了持久化和复制等功能.

总结:

Redis使用最佳方式是全部数据in-memory.
Redis更多场景是作为Memcached的替代者来使用.
当需要除key/value之外的更多数据类型支持时,使用Redis更合适.
当存储的数据不能被剔除时,使用Redis更合适.
redis一般用于构建实时消息队列系统或者缓存。

一、安装redis

centos 6.5 x86_64

wget http://download.redis.io/releases/redis-3.2.9.tar.gz

tar xzvf redis-3.2.9.tar.gz

cd redis-3.2.9

make && make install

启动redis

/src/redis-server redis.conf
停止redis
reis-cli shutdown                  kill -9可能会丢失数据

设置Redis 随机启动

vi /etc/rc.local, 在其中加入下面一行代码
/root/redis-3.2.4/src/redis-server
查看客户端
列出所有连接
client list

杀死某个连接

client kill number 

获取慢查询日志

slowlog get

清空慢查询

slowlog reset

探测服务延迟

redis-cli --latency

redis-cli退出quit

设置密码

config set requirepass 12345

验证密码

auth 12345

选择数据库

select db-index 

默认数据库是16个

config get 获取服务器配置信息

config get * 查看所有配置

config set 临时设置

config rewrite 永久设置,将目前服务器的参数设置写入redis.conf

 

二、安装PHP支持插件

wget https://github.com/nicolasff/phpredis/archive/master.tar.gz

tar xzvf master.tar.gz

cd  phpredis-master

phpize

./configure

make && make install

echo "extension = redis.so" >> /etc/php.ini

service php-fpm restart

查看phpinfo

vi phpredis.php

<?php

    $redis = new Redis();
    $redis->connect('127.0.0.1',6379);
        echo "Connection to server sucessfully!";
    $redis->set('test','hello world!');
    echo $redis->get('test');
?>

http://yourseverip/phpredis.php 输出Connection to server sucessfully! hello world!就成功了。

 

转载于:https://my.oschina.net/u/2404183/blog/698280

你可能感兴趣的文章
RESTful API 概述
查看>>
Android写日志文件类
查看>>
解决ie9以下不支持h5 以及 不支持css3
查看>>
ObjectContext,DataContext和DBContext 分别获取linq 的sql方法
查看>>
加密算法
查看>>
mysql学习笔记--数据库多表查询
查看>>
wp下如何禁止分类列表列出某个分类
查看>>
删除最近项目
查看>>
How to enable LDAP over SSL with a third-party certification authority
查看>>
[NOIP2010] 提高组 洛谷P1525 关押罪犯
查看>>
CSS的优先级
查看>>
2.编程语言,格式化输出,与用户交互
查看>>
hashlib加密
查看>>
又见拦截导弹
查看>>
三十五、MySQL 运算符
查看>>
SQL注入绕过某waf的详细过程。
查看>>
CF978A Remove Duplicates【数组操作/STL】
查看>>
TCP中需要了解的东西
查看>>
关于正则表达式-转载
查看>>
AC3 overview
查看>>