redis

作者: DragonRat | 来源:发表于2018-06-09 14:26 被阅读2次

    作者:烨竹

    Redis概述

    一、memcache的不足之处
    1、没有密码
    2、Memcache是存储内存但是没有自带的备份检测功能。一旦服务器重启数据会丢失
    3、Memcache只支持一种数据类型。操作麻烦 例如存储PHP中数组有其中一个元素的内容有修改。需要将原始的数据取出然后修改在整体的写入

    二、Redis介绍
    Redis是将数据写入到内存中的数据库(一般使用为缓存系统)。Redis支持数据持久化功能,并且Redis所支持的数据类型比较多。一般说有五种数据类型 分别为字符串、链表、哈希、无序集合与有序集合

    三、Redis特性
    1、读写速度快
    同样是使用内存存储数据每秒钟数据读写速度可以达到11M/s
    2、支持持久化功能
    当服务器异常重启内存中的数据不丢失会自动的还原
    3、支持的数据类型多
    支持5种数据类型
    4、支持主从复制
    支持主从复制同步数据因此可以读写分离操作

    四、redis与memcache中的选择
    如果纯粹缓存系统重启服务器容许数据丢失可以建议选择memcache。如果需要长期保存内存中的数据就选择使用redis

    redis安装

    一、windows安装redis

    Windows版本仅限于测试使用

    下载:https://github.com/keyesone66/windowscs-redis.git

    安装redis:①创建redis的根目录



    ②拷贝redis的安装包



    ③使用cmd启动redis

    目前redis已经正常启动,但是目前redis整个属于前台启动的方式即挂起状态
    ④使用redis客户端
    再次新开一个cmd使用客户端


    php7 redis扩展安装以及简单使用
    1、下载扩展文件
    查看phpinfo


    根据自己的版本去https://pecl.php.net/package/redis/4.0.2/windows下载 自己相应版本的php_redis扩展
    2、扩展文件拷贝到php扩展目录

    3、修改PHP的配置文件 引入扩展文件

    4、重启apache查看

    5、php简单操作redis

    二、linux(centos7 php7)安装redis

    安装redis

            //安装redis
        yum install redis
    
        //修改配置 
        vi /etc/redis.conf
        //daemonize yes 后台运行
        //appendonly yes 数据持久化
    
        service redis start
    

    安装php-redis扩展

        //先装git
        yum install git
    
        //git下扩展
        cd /usr/local/src
        git clone https://github.com/phpredis/phpredis.git
        
        //安装扩展
        cd phpredis
        phpize
        
        //修改php配置
        vi /etc/php.ini  添加extension=redis.so
        
        //重启php
        service php-fpm restart
    

    基本使用

    一、基本使用演示


    二、redis命名规则
    1、键名劲量简短
    2、键名需要设置为 看到名称就知道含义
    在redis中对键名没有任何要求 是采用二进制的方式存储

    三、redis常用公共命令

    公共命令即对所有的数据类型都可以使用的命令

    1、exists
    作用:检查某个键名是否存在
    语法:exists keyname

    2、Del
    作用:删除某个key
    语法:del keyname

    3、type
    作用:查看数据类型
    语法:type keyname

    在redis中数据类型没有区分整形字符串等对外都是字符串但是在redis内置是有进行区分的

    4、keys
    作用:查看满足条件的key
    语法:keys pattern

    建议开发不要使用

    5、rename
    作用:修改key名称
    语法:rename oldkey newkey


    6、expire
    作用:为某个key设置有效时间
    语法:expire keyname number(为秒数的有效时间)

    7、ttl
    作用:查看某个key的有效时间
    语法:ttl keyname

    如果对key没有设置有效时间表示为永久有效

    8、select db
    作用:选择数据库
    语法:select number(数字需要根据配置文件中所提供的数据库的个数决定)
    ①查看配置文件

    ②再次使用客户端查看

    9、flushdb
    作用:清空数据库
    语法:flushdb

    redis五种数据类型

    一、字符串

    1、字符串介绍
    Redis最基本的数据类型
    可以包含任何数据,比如jpg图片或者序列化的对象(PHP中对象序列化函数serialize)。
    单个value最大值上限是512M
    如果说只用这种类型,Redis就像一个可以持久化的memcached服务器
    Redis内置是区分了字符串 跟整形以及小数

    2、字符串的常用命令


    3、命令演示
    ①批量设置与获取数据:MGET

    ②查看字符串长度:STRLEN

    ③自增长:INCR

    ④追加:APPEND

    ⑤substr

    二、链表

    1、链表介绍
    链表为一种”线型数据结构”。在一个链表中有多个字符串的数据(每一个字符串数据都是单独)并且每个之间存在一定的顺序关系。

    在链表中可以在表头跟表尾(左侧跟右侧)添加或者删除“元素”。因此链表结构时一种双向的,因此可以实现队列与栈的效果。链表可以实现抢购、邮件发送、消息推送、最近登录用户登录

    2、链表常用命令

    链表数据操作劲量值操作表头跟表尾

    3、命令演示
    ①演示链表添加与查看

    ②使用llen查看链表的长度

    ③删除链表中元素

    ④链表截取

    三、哈希

    1、介绍
    hash是一个string类型的field和value的映射表。hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。 哈希数据类型可以存储PHP中数组或者对象

    2、哈希常用命令

    3、命令演示
    ①哈希添加与查看

    ②检查某个field是否存在

    ③查看哈希中数据

    四、无序集合

    1、集合介绍
    很多个单独的字符串组合在一起 每一个都是单独。在集合中不容许出现重复。对于集合与集合之间可以进行交集、并集、差集等运算。集合最典型的应用场景为社交项目

    2、集合常用命令

    3、命令演示
    ①集合添加与查看

    ②随机弹出集合元素

    ③求交集
    两个集合公共部分

    ④求并集
    两个集合组合一起公共部分值保留一份
    5.png
    ⑤求差集
    求差集的所有元素排除掉公共部分 在A集合中出现但是在B集合中没有出现的元素

    五、有序集合

    1、有序集合介绍
    与无序集合是一致的但是在有序集合中增加一个权重(分支)标出顺序关系

    2、常用命令
    zadd key score member 添加元素到集合中
    zrem key member 删除指定元素
    zcard key返回集合中的元素个数
    zincrby key num member 将member上的分值增加num
    zrank key member返回指定元素在集合中的排名 score从小到大排名
    zrange key start end 获取集合中指定区间的元素分值排序

    持久化

    一、持久化介绍
    对于redis数据存储在内存中不够安全,为了解决这个问题redis提供了持久化功能。会将数据保存到磁盘上。一旦异常情况出现。当redis服务器再次启动 redis会自动的将数据还原到到内存中

    二、快照备份(默认)
    快照方式默认就会开启。
    1、快照配置信息
    ①查看备份文件相关配置


    ②查看备份频率

    对于上述配置信息中的三个save都是用于控制备份频率。每一个save代表一个条件,只要有一个条件满足都会执行备份工作
    Save 900 1:900秒之内(距离上一次备份的时间)有一个key发生变化执行备份功能
    Save 300 10:300秒之内有10个key发生变化执行备份
    Save 60 10000:60秒之内 有一万个key发生变化执行备份

    2、手动备份
    Save:save属于阻塞模式。一旦进行备份,只有备份完毕之后客户端才可以使用redis
    Bgsave:属于后台备份方式。在备份期间客户端还可以再次操作redis

    例如现在16:30执行了备份,下次备份的时间为16:40,在项目运行使用突然在16:35时宕机重启。会导致丢失了5分钟的数据

    三、AOF备份

    此方式的备份是记录每次数据修改的命令
    ①开启aof备份
    先修改配置文件

    在重启服务器

    ②进入客户端查看现有数据

    当开启aof备份之后redis会清空现有的数据
    ③写入数据

    ④查看结果

    ⑤查看关于aof备份的频率

    三个值always、everysec、no用于控制AOF备份频率
    当往文件中写入内容时是先写入到缓存区,达到一定的条件之后在通过系统调用将内容真正的写入到磁盘上。对于aof备份的三个参数就是用于控制缓存区的刷新的频率
    Always:每次只要key有修改 就刷新写入文件(频繁度太大会导致系统调用太多,因此导致服务器性能不太好)
    Everysec:每秒钟刷新一次
    No:由操作系统决定什么时候刷新

    主从复制

    一、主从复制的作用
    主从复制是用于实现同步数据
    1、实现读写分离
    2、实现数据热备份(容灾备份)
    3、用于实现统计相关的运算(在从上进行数据查询相关的操作减少对生产的数据库产生影响)

    二、实现主从复制
    ①创建一个从服务器
    安装方式同redis安装
    ②修改从服务器的配置文件
    修改为后台启动


    指定从那台服务器开始同步

    ③确保主服务器防火墙可以正常通过

    ④确保主服务器的redis服务已经启动

    ⑤启动从服务器的redis

    ⑥测试
    查看从服务器中的数据是否与主服务器数据一致

    相关文章

      网友评论

        本文标题:redis

        本文链接:https://www.haomeiwen.com/subject/ucjteftx.html