Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。
  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

OS: ubuntu18.04

Language: php7

安装redis:

  1. sudo apt-get install redis-server

查看 redis进程:

  1. ps -aux|grep redis
  1. redis 0.1 0.0 ? Ssl : : /usr/bin/redis-server 127.0.0.1:
  2. nuuuu 0.0 0.0 pts/ S+ : : grep --color=auto redis

设置redis的访问密码

安装后配置文件路径: /etc/redis/redis.conf

修改 redis.conf, 去掉requirepass password 的#

  1. requirepass

修改配置重启redis服务:

  1. sudo service redis-server restart

访问时使用auth:

  1. $redis = new Redis();
  2. $redis->connect('127.0.0.1', );
  3. $redis->auth('');

安装php-redis扩展:

  1. sudo pecl install redis

报错:

  1. checking use system liblzf... no
  2. checking for igbinary includes... configure: error: Cannot find igbinary.h
  3. ERROR: `/tmp/pear/temp/redis/configure --with-php-config=/usr/local/php/bin/php-config --enable-redis-igbinary=y --enable-redis-lzf=y' failed

此处是因为没有安装 igbinary 一个序列号与反序列化的php扩展

安装 igbinary 扩展

  1. sudo pecl install igbinary

再执行

  1. sudo pecl install redis

重启php-fpm: 查看php-info

 redis 设置key

  1. $redis = new Redis();
  2. $redis->connect('127.0.0.1', );
  3. $redis->set('a','aaa');

redis 读取key->value

  1. $a= $redis->get('a');
  2. print_r($a);

redis 设置集合

  1. $redis->sAdd('fd',);
  2. $redis->sAdd('fd',);
  3. $redis->sAdd('fd','');

redis读取集合

  1. foreach ($redis->sMembers('fd') as $value) {
  2. print_r($value);
  3. }

 redis 设置list列表

  1. $arr = array('h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd');
  2. foreach ($arr as $v) {
  3. $redis->rpush("mylist", $v);
  4. }

redis 获取list列表

  1. $value = $redis->lpop('mylist');
  2. print_r($value);

redis 的实时消息订阅

  1. # 发布消息文件
  2. $message= json_encode(['run=12','did=10001']);
  3. $ret=$redis->publish('worker_channel',$message);
  4. $ret=$redis->publish('worker_channel',"send_msg.hahaha");

订阅消息 文件

  1. $result = $redis->subscribe(["worker_channel"], 'callback');
  2. function callback($redis, $channel, $message) {
  3. if ($channel == 'w1') {
  4. echo '频道1';
  5. } else {
  6. echo $message;
  7. }
  8. }

但当订阅的文件执行60s后会报错:

  1. PHP Fatal error: Uncaught RedisException: read error on connection in ***
  2. Stack trace:
  3. #0 ****: Redis->subscribe(Array, 'callback')

这是因为订阅默认60s超时就退出连接。解决办法:

设置-1 永不超时

  1. $redis->setOption(Redis::OPT_READ_TIMEOUT, -1);

Redis与Memcached的区别

引用:http://www.cnblogs.com/wangkai1990/p/5212404.html

1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;

2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;

3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;

4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10;

5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从;

6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化);

7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复;

8、Redis支持数据的备份,即master-slave模式的数据备份;

redis安装使用的更多相关文章

  1. Redis安装测试(待完善)

    1 Redis安装 在网址http://redis.io/下载redis-3.2.3.tar.gz,解压. 进入解压目录 编译和安装,具体配置项可参考自带的README.md文件 make test ...

  2. Redis安装及实现session共享

    一.Redis介绍 1.redis是key-value的存储系统,属于非关系型数据库 2.特点:支持数据持久化,可以让数据在内存中保存到磁盘里(memcached:数据存在内存里,如果服务重启,数据会 ...

  3. windows 环境下的redis安装

    Redis安装 1.由于是练习,所以就在windows下安装的环境,并没有在LINUX服务器上装,但是知识点是一样的 安装流程: a.下载地址:https://github.com/MSOpenTec ...

  4. CentOS7— Redis安装(转和延续)

    Part I. Redis安装(转载部分) 一.安装 wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.t ...

  5. php redis 安装篇(windows 7)

    人人都说redis比memcached好,但是没有实际体验过,概念还是比较模糊,今天就先把redis安装好,后面的体验再分享,由于php已经有了很好的扩展库支持,所以redis安装非常方便,下面是wi ...

  6. linux下的redis安装以及php添加redis扩展

    一.redis的安装 win版本详见: 下面是linux版本的安装步骤: step1.下载 http://redis.io/download下载完后直接make然后make install,注意sud ...

  7. CentOS 6.6下Redis安装配置记录

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/120.html?1455855209 在先前的文章中介绍过redis,以下 ...

  8. Redis安装配置与Jedis访问数据库

    一.NOSQL概要 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库.NoSQL数据库的四大分类 键值(Key-Value)存储数据库 这一类数据 ...

  9. Redis总结(一)Redis安装

    最近项目中需要使用Redis,刚好这两天有时间,便总结记录一下Redis的安装,以及如何在.NET中使用Redis. Redis是一个用的比较广泛的Key/Value的内存数据库.目前新浪微博.Git ...

  10. Redis-cluster集群【第一篇】:redis安装及redis数据类型

    Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ...

随机推荐

  1. CentOS 7 系统基础配置

    系统版本:CentOS 7.2.1511 Minimal 采用最小化系统安装,许多组件默认是不安装的,通过手工安装一些常用工具包,让系统用起来更顺手. 1.修改机器名: [root@centos7-m ...

  2. VO、DTO、DO、PO

    领域模型中的实体类可细分为4种类型:VO.DTO.DO.PO. PO(Persistent Object):持久化对象,表示持久层的数据结构(如数据库表): DO(Domain Object):领域对 ...

  3. 服务器配置 ssl 证书

    最近因为公司的 服务器 ssl证书即将到期(服务器 和 ssl证书管理都在 腾讯云上), 所以为了能顺利的 重新申请 ssl证书 ,我和小伙伴 在他的个人服务器上尝试了一波(我们居然都不会 ...) ...

  4. 织梦dede如何获取图集调用第一张图片完美解决方法【5.7sp2版本】

    制作产品图集多图效果的时候,常常需要获取图集第一张图片的功能,假设获取的是缩略图,那么缩略图不够大的情况下,第一展示效果就会很差,下面来介绍下如何获取调用织梦图集第一张图片的方法: 首先在 inclu ...

  5. Apicloud学习第三天——获取云数据库的数据方法

    apicloud学习30天中的对用进行注册和登录以及数据的获取的代码,在apicloud中有单独的api对用户的增删查改进行操作,这里写下增加和查询. 增加用户数据 var model=api.req ...

  6. 如何解决Java警告信息:"objc[31336]: Class JavaLaunchHelper is implemented in both places ..."

    在macOS High Sierra Version 10.13.6下使用Intellij在Java 8上执行Java程序,console中会打印如下警告信息: objc[31336]: Class ...

  7. MYCP作业

    本次作业主要复习了输入流输出流的内容 作业要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt ...

  8. count

    select deptno as 部门,count(*) as 人数from emp group by deptno;  --统计各个部门的人数

  9. tomcat去掉ContextPath

    众所周知,项目打成war包直接放到webapps下启动tomcat后访问项目需要带上ContextPath,也就是war包的文件名,需要去除掉这玩意最简单的办法是将war包重命名为ROOT.war,为 ...

  10. day 19 - 1 模块

    collections 模块 在内置数据类型(dict.list.set.tuple)的基础上,collections 模块还提供了几个额外的数据类型:Counter.deque.defaultdic ...