redis安装使用

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:

sudo apt-get install redis-server

查看 redis进程:

ps -aux|grep redis
redis    10461  0.1  0.0  58552  3728 ?        Ssl  10:06   0:00 /usr/bin/redis-server 127.0.0.1:6379
nuuuu   10569  0.0  0.0  21536  1036 pts/3    S+   10:06   0:00 grep --color=auto redis

设置redis的访问密码

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

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

requirepass 12345678

修改配置重启redis服务:

sudo service redis-server restart

访问时使用auth:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('12345678');

安装php-redis扩展:

sudo pecl install redis

报错:

checking use system liblzf... no
checking for igbinary includes... configure: error: Cannot find igbinary.h
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 扩展

sudo pecl install igbinary

再执行

sudo pecl install redis

重启php-fpm: 查看php-info

redis安装使用

redis 设置key

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('a','aaa');

redis 读取key->value

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

redis 设置集合

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

redis读取集合

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

redis 设置list列表

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

redis 获取list列表

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

redis 的实时消息订阅

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

订阅消息 文件

$result = $redis->subscribe(["worker_channel"], 'callback');
function callback($redis, $channel, $message) {
    if ($channel == 'w1') {
        echo '频道1';
    } else {
        echo $message;
    }
}

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

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

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

设置-1 永不超时

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

Redis与Memcached的区别

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模式的数据备份;

Original: https://www.cnblogs.com/dcb3688/p/4610640.html
Author: nookia
Title: redis安装使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/529194/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 随便侃侃博客挖坑的事

    很多都没有写博客了,说实在的,Markdown的语法都忘的差不多了。 今年看着停留在提醒上的写博客计划,然后又想了想要写的东西,太多了,都需要花点时间去总结,感觉静不下心来,真的无…

    Linux 2023年6月6日
    0105
  • VR一体机如何退出FFBM

    Fast Factory Boot Mode(FFBM)是一种半开机的模式,它的主要目的是方便工厂测试,提高生产效率。正常情况下终端用户是不会碰到的。但售后的同学最近连续收到几台客…

    Linux 2023年6月7日
    0242
  • 使用docker 5分钟搭建一个博客(mysql+WordPress)

    一.系统环境 二.前言 三.搭建博客 3.1 创建wordpress和mysql容器 3.2 在wordpress界面设置个人博客信息 3.3 WordPress容器创建命令的简化…

    Linux 2023年6月7日
    0114
  • 国产银河麒麟Kylin V10操作系统-如何将应用程序固定到任务栏方便启动

    大家都知道,在windows 7以上的版本操作系统上,如果想将应用程序固定到任务栏有两种方法: 一种是在开始菜单中找到该应用程序,右键-“锁定到任务栏”; …

    Linux 2023年6月14日
    0142
  • 【PHP代码审计】TP3.2某传销系统getshell

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/sevck/p/16547738.htmlAuthor:…

    Linux 2023年5月28日
    0100
  • 设计模式之模板方法模式(TemplateMethod)

    代码是用java写的 看了本java书发现他的思想确实是先进!!! 主要还是继承和抽象方法的一些应用看代码吧,我不喜欢扯淡,是干啥的百度都有。 意图:定义一个操作中的算法的骨架,而…

    Linux 2023年6月7日
    099
  • MongoDB建立主从复制小案例(一主一从)

    1. 开启两个mongo服务器(用于一主一从, 没有加安全验证相关参数 : 可以使用mongd-help查看) mongod –bind_ip IP –po…

    Linux 2023年6月6日
    0104
  • 性能瓶颈分析与调优

    对于性能测试,很多时候压力并不能完全到达服务端,在客户端、网络连接端都有可能被阻塞,或者压测的某些特征符合CC和DDoS的行为,触发了防护策略导致压测结果达不到预期。 以下是各节点…

    Linux 2023年6月8日
    0107
  • Windows10公钥远程连接Linux服务器

    前言 一、环境准备 二、使用步骤 – 1.服务器安装并配置OpenSSH 2. 本地生成密钥 3. 服务器ssh添加密钥 三 总结 前言 使用公钥远程登陆Linux十分…

    Linux 2023年6月7日
    0103
  • LRU原理和Redis实现——一个今日头条的面试题(转载)

    很久前参加过今日头条的面试,遇到一个题,目前半部分是如何实现 LRU,后半部分是 Redis 中如何实现 LRU。 我的第一反应是操作系统课程里学过,应该是内存不够的场景下,淘汰旧…

    Linux 2023年5月28日
    098
  • IDEA生成带参数和返回值注释

    步骤说明 打开IDEA进入点击左上角 – 文件 – 设置 – 编辑器 – 活动模板 新建活动模板 填写模板文本 编辑变量 添加变量表…

    Linux 2023年6月6日
    0110
  • django_响应对象

    Django_响应对象 响应对象 响应对象有三种形式:HttpResponse()render()Redirect() (1) HttpResponse() django服务器接收…

    Linux 2023年6月7日
    0119
  • Linux vim退出命令

    :w – 保存文件,不退出 vim:w file -将修改另外保存到 file 中,不退出 vim:w! -强制保存,不退出 vim:wq -保存文件,退出 vim:w…

    Linux 2023年6月13日
    094
  • DDL(操作表和数据库)

    数据定义语言,用来定义数据库对象:数据库,表,列等 readme 注意本博客中的 操作数据库 查询 show databases; 创建 创建数据库 create database…

    Linux 2023年6月7日
    086
  • 生成符合chrome要求的自签名HTTPS证书

    按照文章给Nginx配置一个自签名的SSL证书中给出的代码生成自签名证书后,发现使用chrome浏览器访问会报 Invalid self signed SSL cert &#821…

    Linux 2023年6月6日
    082
  • 视图层

    目录 虚拟环境 django路由层版本区别 视图函数返回值 JsonResponse对象 上传文件 request方法 FBV与CBV CBV源剖析 模板语法传值 内容 虚拟环境 …

    Linux 2023年6月7日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球