Redis学习

一、Redis概述

  1. Redis介绍

    Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。

    它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、Zset(有序集合)等。

    为了保证效率数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。提供的多种语言API包括:C、 Lua、Perl、 PHP、 Python 等

    Redis数据是存储在内存中并且支持的数据类型较多,同时还支持数据持久化,实现了数据的备份还原

  2. Redis特性

    读写速度快

    因为redis数据存储是在内存中,因此读写速度快。在一个普通的Linux机器上,读写速度分别达到81000/s和110000/s。

    支持的数据类型多

    所常用的数据类型有字符串、链表、哈希、无序集合、有序集合。
    Redis常用的是五种数据类型但是并不是只有五种

    支持持久化功能

    定期将数据从内存中保存到磁盘文件中。数据备份与还原功能是自动运行。

    支持主从复制

    主从复制可以实现读写分离技术

二、Redis中的数据类型

  1. 字符串数据类型

    字符串数据类型是其他所有数据类型的基本。在redis中字符串数据类型,包括了常用的字符串、整型、浮点。对于redis中字符串所存储的上限为512M,并且存储的内无要求。

    字符串常用命令

    Set key 设置key值
    Get key 获取key值
    Mget key1 key2... 批量获取指定的key的值
    Mset key1 value1 key2 value2 ...批量设置key1的值为value1,key2的值为value2
    Strlen key 返回字符串的长度
    incr key 对key进行自增1,类似php当中的i++操作
    decr key 用法同incr,只是对key的是自减
    incrby key num 对key进行加num操作
    decrby key num 用法同incrby,只是自减操作
    append key value 对key的值末尾追加value,如果key不存在则创建
    substr key start end 返回名称为key的从start到end的字符串子串
    
  2. 链表数据类型

    链表即多个单独的字符串数据类型的数据按照一定的顺序排列。对链表可以在表头与表尾进行元素的添加与删除。链表可以实现队列与栈效果。

    链表常用命令

    Rpush key value 表末添加一个元素
    Lpush key value 表头添加一个元素
    Lpop key 删除表头的元素
    Rpop key 删除表尾的元素
    Llen key 返回链表长度
    Lrange key start end 返回list中key从start开始到end之间的元素
    Ltrim key start end 截取名称为key的list,保留start到end之间的元素(改变了链表元素)
    Lindex key index 返回list中为idnex位置的元素
    Lset key indnex value 给list中为index位置的元素赋值
    
  3. 哈希数据类型

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

    常用命令

    Hsetkey field value 添加一个field属性值为value
    Hget key field 返回field属性的值
    Hmset key field1 value1 field2 value2 批量设置key中的field1 field2的值
    Hmget key field1 field2 批量获取key中field1 field2的值
    Hexists key field 检查key中为field属性的是否存在
    Hdel keyfield 删除key中field的属性
    Hlen key 返回key中属性的个数
    Hvals key 返回key中所有的value值
    Hgetall key 返回key中所有的field和value的对应值
    
  4. 无序集合

    将多个单独的字符串类型的数据集合在一起。在集合中每个元素都不可能出现重复。对于集合与集合之间可以求交集、并集、差集。集合数据类型可以在社交项目中使用。例如计算共同好友。

    常用命令

    Sadd key value 添加一个元素(集合中不能有重复元素)
    Srem key value 删除为value的元素
    Smembers key 返回所有的元素
    Spop value 返回一个随机被删除的元素(集合会被修)
    Scard key 返回集合中有多少个元素
    Smove key key2 value 将key中的元素为value的转移到key2的集合中 key2不存在则创建
    Sismember key value 测试key集合中是否存在value
    Siter key1 key2 集合求次
    Sinterstore key key1,key2 将集合key1和key2的交集保存到key集合中
    Sunion key1 key2 ... 求并集
    Sunionstore key key1,key2 将集合key1和key2的并集保存到key集合中
    Sdiff key1 key2 求差集
    Sdiff key key1,key2 将key1和key2的差集保存到key集合中
    
  5. 有序集合

    有序集合与无序集合一致,但是额外增加了一个权重(分值)可以进行排序。

    常用命令

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

三、持久化功能

  1. 持久化的作用

    定期将内存中的数据保存到磁盘中。一旦服务器重启完成会自动的将数据还原到内存中。
    目的:为了解决重启数据丢失

  2. 快照(snap shotting为默认的方式)

    定期使用快照将数据直接保存在磁盘中。默认会保存在服务对应的同级目录。

    ①查看快照文件
    在这里插入图片描述
    ②查看配置信息
    在这里插入图片描述
    备注:数据还原为自动方式无需手动操作

    对于快照创建备份文件有两种方式 分别为手动方式与自动方式

    手动创建快照

    Save:直接创建备份文件在备份期间会阻塞客户端的操作

    Bgsave:会在创建一个单独的进程来创建备份文件即使用此方式在备份期间不会阻塞客户端的操作。

    ①查看备份文件
    在这里插入图片描述
    ②进入客户端是save备份在这里插入图片描述
    ③进入客户端使用bgsave
    在这里插入图片描述

    自动备份

    关于自动备份频率受限制与在配置文件中所指定的参数

    ①查看配置信息
    打开配置文件
    在这里插入图片描述
    查看信息
    在这里插入图片描述
    此处有三个Save 每一个save只要有一个满足条件即触发备份机制:

    Save 900 1 距离上次备份900秒之后只要有一个key发生变化触发备份机制

    Save 300 10 距离上次备份300秒之后只要有10个key发生变化触发备份机制

    Save 60 10000 距离上次备份60秒之后只要有10000个key发生变化触发备份机制

    例如 16:00触发备份,预计下次备份时间为16:30,当项目运行到16:15时突然断电,当服务器再次启动还原数据时只能还原到16:00备份的数据。因此丢失了15分钟的数据。此时可以使用aof方式进行备份数据

  3. AOF备份

    开启AOF备份

    ①修改配置文件
    打开配置文件
    在这里插入图片描述
    在这里插入图片描述
    ②重启redis服务
    在这里插入图片描述
    ③查看文件
    在这里插入图片描述
    ④进入客户端查看数据
    在这里插入图片描述
    aof方式的备份一旦开启会清空所有的数据,在实际使用中最先将备份方式调整为aof方式
    ⑤在客户端执行命令 在这里插入图片描述
    ⑥查看aof备份文件 在这里插入图片描述
    从文件中查看到的结果为aof方式备份是直接记录所执行的写入的命令

    AOF备份频率

    关于此次的备份频率所指为redis向磁盘中写入内容的频率
    ①打开配置文件 在这里插入图片描述
    此处的三个值是用于控制什么使用真正的将磁盘缓冲区中的内容刷新到磁盘中
    Always:每一次只要有写入命令将缓冲区中的内容刷新到磁盘中
    Everysec:每一秒钟将将缓冲区中的内容刷新到磁盘中
    No:具体什么时候刷新由操作系统自动决定

    压缩备份文件
    在这里插入图片描述

四、主从复制

主从复制功能是用于同步多台redis服务中的数据。确保数据一模一样。

  1. 主从复制的作用

    实现容灾备份

    为实现读写分离提供基础支持

    为统计脚本使用不影响线上项目

  2. 实现主从复制

    ①在搭建一个redis服务
    搭建步骤参考redis在Linux下的安装
    ②先关闭128服务器的防火墙
    在这里插入图片描述
    ③修改131服务器配置文件
    打开配置文件在这里插入图片描述
    在这里插入图片描述
    ④启动131服务器的redis服务 在这里插入图片描述
    ⑤查看131中的数据确认是否同步成功 在这里插入图片描述
    备注:128为主服务器可以写入数据也可以查询数据,131为从服务器只能读取数据不能写入

五、PHP操作Redis

  1. 开启Redis扩展

    ①下载扩展文件在这里插入图片描述
    ②确认扩展目录在这里插入图片描述
    ③根据phpinfo中的内容选择扩展包在这里插入图片描述
    ④修改配置文件在这里插入图片描述
    ⑤重启apache查看PHPinfo在这里插入图片描述

  2. 使用PHP操作Redis
    在这里插入图片描述

六、Linux下PHP开启Redis扩展

  1. 安装

    开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。 接下来让我们安装 PHP redis 驱动:下载地址为:https://github.com/nicolasff/phpredis。

  2. PHP安装Redis扩展

    /usr/local/php/bin/phpize              #php安装后的路径
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    
  3. 修改php.ini文件

    vi /usr/local/php/lib/php.ini
    # 增加如下内容:
    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626"
    extension=redis.so
    

    安装完成后重启php-fpm 或 apache。查看phpinfo信息,就能看到redis扩展。
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值