美文网首页我爱编程
Redis介绍、安装及基本操作

Redis介绍、安装及基本操作

作者: 枫叶鱼水 | 来源:发表于2018-01-18 15:32 被阅读0次

Redis概述

1.1、Redis介绍

redis是一款基于内存的缓存系统或者数据库。支持持久化。

redis支持的数据类型比较多:字符串、链表、哈希、无序集合、有序集合。

1.2、Redis与Memcache的区别

1)、memcache在服务器重启时数据会丢失,不支持技术化;redis支持持久化,当服务器重启时,会自动将数据还原到内存当中,这样数据就不会丢失。

2)、memcache键名最大长度为250个字符;redis键名长度没有限制,但是键名的长度是越短越好,做到见其名知其意。

3)、memcache每个键值存储的单位最大为1M;redis的键值存储的最大单位为512M,但是单个键值超过2M会影响redis性能。

4)、memcache只支持字符串类型;redis支持的存储类型比较多,字符串、链表、哈希、无序集合、有序集合。

5)、memcache支持多线程工作,在多核CPU下可以发挥特性;redis只支持一个CPU对其进行操作,不支持多个CPU同时操作同一个redis。

1.3、Redis安装

1.3.1、Windows版本安装

第一步:解压资料里的Redis-x64-2.8.2103-.rar文档,并且复制到e:\php\,如图:

第二步:

运行redis服务端:

此时,会占用一个窗口,很不方便。在此安装为服务来运行。使用ctrl+c来停止 运行。

第三步:安装redis为服务:

启动redis服务:

1.3.2、Linux版本的安装

第一步:将资料里的redis-2.8.24.tar.gz压缩包上传到/root/data目录下并解压redis:

如图:

第二步:编译和安装redis:

编译和安装成功,如图:

第三步:

将编译安装好的redis文件复制到/usr/local/redis目录中:

此时,redis目录下的文件可以复制到其它相同环境下的linux当中。

第四步:启动redis服务端:

此运行方式会占用一个窗口,不方便使用,可以让redis在后台运行。

可以使用ctrl+c停止运行。

第五步:让redis在后台运行:

修改redis配置文件:如图:

修改内容如下:

运行:如图:

第六步:使用redis客户端来连接redis:

此时,redis已经运行成功。

redis中的数据类型(重点)

2.1、关于key的操作(公共命令)

①exists:检查键名是否存在

格式:exists 键名

②del:删除键名

格式:del 键名

③type:检查键名的类型

格式:type 键名

④keys:查看键名

格式:keys 键名

⑤rename:将键名改名

格式:rename 旧键名  新键名

查看:如图:

⑥expire:设置键名的有效期:

格式:expire 键名  有效期

⑦expireAt:设置键名的有效期:设置键名到什么时候失效

格式:expireAt 键名 到什么时候失效(时间戳)

得到时间戳:

当时间过期后,此键名会失效:如图:

⑧ttl:查看键名还剩余的有效期

格式:ttl 键名

2.2、string数据类型

2.2.1、字符串类型介绍

最基本的数据类型。

2.2.2、字符串操作常用命令

①set key1:设置一个键名

格式:set  键名  键值

②get key1:获取键名的值

格式:get   键名

③mset key1 v1 key2 v2:设置多个键值对

格式:mset  键名1  键值1  键名2  键值2

④mget key1 key2:获取多个键名

格式:mget 键名1  键名2

⑤strlen key1:获取键值的长度

格式:strlen 键名

⑥incr key1:自增(注意:自增的值为1)

格式:incr 键名

⑦decr key1:自减

格式:decr 键名

⑧incrby key1 num:根据增量来增加键名的值

格式:incrby 键名 增量

⑨decrby key1 num:根据num来减少键名的值

格式:decrby 键名 数量

⑩append key1  value2:将value2追加到key1的值

格式:append 键名 值

2.3、链表(List)数据类型

2.3.1、链表类型介绍

轻松地实现最新消息排行等功能(比如新浪微博的TimeLine )2.消息队列

链表由多个单独的元素的个体组成的有顺序的列表或队列。

通常用于消息队列、商品抢购等场景。

2.3.2、链表常用命令

①rpush key1 value1:向链表尾追加一个元素

格式:rpush  键名 元素

示意图:

②rpop key1:弹出链表表尾元素

格式:rpop 键名

③lpush key1:向链表表头添加一个元素

格式:lpush 键名 元素

示意图:

④lpop key1:弹出链表头一个元素

格式:lpop 键名

⑤llen key1:获取链表的长度

格式:llen 键名

⑥lrange key1 start end:获取链表开始和结束位置的元素

格式:lrange 键名  开始位置  结束位置 

开始位置是0 ,如果想接受全部文件的话就 结束位置用 -1

⑦ltrim key1 start end:保留链表开始和结束位置的元素

格式:ltrim 键名 开始位置  结束位置

⑧lindex key1 index:查看链表中index位置的值

格式:lindex 键名 位置

⑨lset key1 index value1:设置链表中index位置的元素的值

格式:lset 键名 位置  值

2.4、哈希数据类型

存储、读取、修改用户属性 Redis 的 Hash 结构可以使你像在数据库中 Update ,因为存的是对象结构,不用序列化。

抢购的实现,存在哈希数据类型里面。

2.4.1、介绍

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

2.4.3、hash常用命令

①hset key1 field value:向hash中添加一个元素和值

格式:hset   键名   元素  元素的值

查看hash_std数据类型:

②hget key1 field:获取hash中的元素的值

格式:hget  键名 元素

③hmset key1 field1 value1 field2 value2:设置多个hash的键值对

格式:hmset 键名 元素1 值1 元素2 值2

④hmget key1 field1 field2:获取hash的多个键值

格式:hmget 键名 元素1  元素2

⑤hexists key1 field:检查元素是否在hash存在

格式:hexists 键名 元素名

⑥hdel key1 field:删除hash中一个元素

格式:hdel 键名 元素

⑦hlen key1:获取hash的长度

格式:hlen 键名

⑧hvals key1:获取键名中所有元素的值

格式:hvals 键名

⑨hgetall key1:获取键名中所有元素和值

格式:hgetall 键名

总结:哈希可以应用于做过试卷的人、抢购商品的人

示例:做过试卷id为3的人

shijuan_3   511(用户id)  1

shijuan_3   521(用户id)  1

查询某个用户是否做过试卷:

通过 hget shijuan_试卷id  用户id 得到一个值,可以用此值为判断用户是否做过试卷。

比如说读出数据库里面的数据,有一个状态码,判断状态码,

2.5、无序集合(Set)

2.5.1、介绍

set是集合,它是string类型的无序集合。

应用场景:朋友圈

1.共同好友、二度好友

2.利用唯一性,可以统计访问网站的所有独立 IP

3.好友推荐的时候,根据 tag 求交集,大于某个 threshold 就可以推荐

2.5.3、无序集合常用命令

①sadd key1 value:向无序集合中添加一个元素

格式:sadd  键名  元素 元素2

②smembers key1:列出无序集合中的元素

格式:smembers 键名

③srem key1 value:删除无序集合中的一个元素

格式:srem 键名 元素

④spop key1:随机弹出一个元素

格式:spop 键名

⑤scard key1:统计无序集合中的元素个数

格式:scard 键名

⑥smove key1 key2 value:将无序集合key1中的元素value移动到另外一个无序集合中

格式:smove 集合1 要移动到的集合2 要移动的元素

⑦sismember key1 value:判断一个元素是否是此无序集合中的成员

格式:sismember 键名 元素

⑧sinter key1 key2:取两个无序集合的交集

格式:sinter 键名1 键名2

⑨sinterstore key3 key1 key2:将key1和key2集合的交集存放到key3当中

格式:sinterstore  存放结果的集合名称  集合1 集合2

⑩sunion key1 key2:将两个无序集合的元素合并

格式:sunion  集合1  集合2

⑾sunionstore key3 key1 key2:合并集合key1和key2的元素并存放到key3集合当中

格式:sunionstore  要存放的集合  集合1 集合2

⑿sdiff  key1 key2:求两个集合的差集

格式:sdiff 集合1 集合2

⒀sdiffstore  key3  key1  key2:求两个集合的差集并将结果存放到另外一个集合当中

格式:sdiffstore 要存放结果的集合  集合1 集合2

2.6、有序集合(SortedSort)

2.6.1、介绍

有序集合跟无序集合大体一样。有序集合增加了一个权重(分值或者数值),用于进行排序操作

1.带有权重的元素,比如一个游戏的用户得分排行榜

2.6.3、有序集合常用命令

提示:可以使用工资来做演示

①zadd key1 score value:添加一个元素到有序集合key1中并设置权重

格式:zadd 键名  权重  值

②zrem key1 value:删除有序集合中一个元素

格式:zrem  键名  元素

③zcard key1:获取有序集合中元素的个数

格式:zcard 键名

④zincrby key1 num value:对有序集合中元素为value加上权重

格式:zincrby 键名  要加的权重值  元素

⑤zrank key1 value:查看有序集合中元素的排名(按权重从小到大排序)

格式:zrank 键名 元素

⑥zrange key1 start end:返回有序集合中开始位置和结束位置的元素

格式:zrange 键名 开始位置  结束位置

⑦zscore  key1  value:返回有序集合当中元素的权重

格式:zscore 键名 元素

[if !supportLists]1. [endif]redis持久化功能

3.1、持久化的作用

持久化:redis将内存中的数据存储到硬盘,当服务器重启或者redis重启时,将硬盘中的数据恢复到内存当中,避免数据丢失。

3.2、snap shotting快照持久化(默认方式)

3.2.1、快照数据的存储路径

3.2.2、手动创建快照

save:阻塞式的创建快照

bgsave:非阻塞式的创建快照

3.2.3、自动创建快照

save 900 1:从上一次备份开始,900秒以内有一个键值变动,就触发备份

save 300 10:从上一次备份开始,300秒内有10个键值变动,就触发备份

save 60 10000:从上一次备份开始,60秒内有10000个键值变动,就触发备份

假如:每半小时备份一次。上一次备份时间为13:30分,下一次的备份点为14点。假设到13:45分,服务器宕机了,重启后的数据会是那个时间点的?

重启后的数据是13:30分的。

3.3、AOF(Append Only File)方式

3.3.1、AOF方式介绍

由于快照方式在上一次备份后,还没到下一次备份的时候,服务器宕机了,会导致上一次备份数据后的变动的数据没有保存,会导致数据丢失。

AOF就是将修改的命令追加到一个文件当中,当服务器重启时,根据此文件的内容在内存中重建数据库。

3.3.2、开启aof备份

第一步:编辑redis.conf文件:

第二步:

第三步:重启redis:

杀掉redis-server服务端:

重启:

查看文件:

第四步:查看redis中的数据:

注意:AOF备份方式必须在部署完redis后,立即启用,不能等到redis中有数据再启用,否则会导致数据丢失。

3.3.3、关于aof写入的频率

always:只要有值变动,就立即写入

everysec:每秒写入

no:由操作系统来决定什么时候写入

[if !supportLists]1. [endif]redis主从复制

4.1、Redis Replication的工作原理

在Slave启动并连接到Master之后,它将主动发送一个SYNC命令。此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中。此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。

如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。

4.2、Redis Replication的特点和优势

1)同一个Master可以同步多个Slaves。

2)Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。因此我们可以将Redis的Replication架构视为一主多从结构。

3)Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。

4)Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据。

5)为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成。即便如此,系统的伸缩性还是得到了很大的提高。

6)Master可以将数据保存操作交给Slaves完成,从而避免了在Master中要有独立的进程来完成此操作。

4.3、redis中实现主从复制

4.3.1、配置从服务器

注意:主从服务器,要开启两台服务器,一台作为主服务器,一台作为从服务器。

主服务器:192.168.43.195(195服务器)

从服务器:192.168.43.186(186服务器)

第一步:在主服务器上执行以下命令:

在从服务器上查看文件:

第二步:关闭防火墙

第三步:配置从服务器redis.conf文件:

第四步:启动从服务器redis服务端:

第五步:

效果:

先查看主服务器数据:如图:

查看从服务器数据:如图:

4.3.2、主服务器配置

关闭防火墙

4.3.3、测试主从复制

第一步:在主服务器上添加数据,如图:

第二步:查看从服务器上的数据,有没有同步过来:如图:

第三步:在从服务器上写入数据:如图:

查看从服务器redis.conf文件:

5、PHP操作Redis之基本操作

5.1、安装PHP的redis扩展

第一步:将资料里对应版本的php_redis.dll文件,复制到php的ext目录下:如图:

第二步:修改php.ini文件:

上图中要加的话,最好位于所有的*.dll附近

第三步:重启apache:

第四步:在网站目录下创建phpinfo.php查看redis有没有加载成功:

5.2、使用PHP操作redis

第一步:在网站目录下创建redis.php文件:

内容如下:

第二步:用浏览器访问此文件:

第三步:查看195服务器:

第四步:查看186服务器:

6、PHP操作Redis之消息队列

6.1、使用PHP操作Redis实现实时推送

示例:对队列中的手机号码发送短信通知

创建DayuController.class.php文件:

第一步:生成手机号码队列:

第二步:消耗队列并调用第三方发送手机短信:(目前没有第三方免费接口,这里只是一个示例)

6.2、使用PHP操作Redis实现秒杀功能

第一步:生成要抢购商品的队列:

第二步:实现抢购:

命令:

相关文章

  • Redis介绍、安装及基本操作

    Redis概述 1.1、Redis介绍 redis是一款基于内存的缓存系统或者数据库。支持持久化。 redis支持...

  • redis介绍

    redis基本的操作的安装与使用java客户端连接已经可以了,接下来介绍一下redis。 redis简介 redi...

  • redis在Centos7上介绍和安装

    redis一般提供缓存服务 redis基本操作 解释 命令 安装 源码编译安装 启动 ...

  • Redis配置教程

    本文将介绍在Centos7操作系统下Redis的安装和配置。redis的安装分为yum安装和源码安装。下面先来介绍...

  • Redis的安装与基本数据操作(Ubuntu系统)

    Redis的安装与基本数据操作(Ubuntu系统) 1.Redis 安装 当前redis最新稳定版本是5.0.7 ...

  • redis的使用

    [TOC] 一、redis安装 windows: linux: 二、redis介绍 三、redis基本语法 1、查...

  • NoSQL二--Redis

    目录 一、Redis介绍二、安装Redis三、Redis 持久化四、Redis 的数据类型五、Redis常用操作六...

  • 050-Redis集群

    009-Redis讲了redis在springboot中的基本操作,下面介绍springboot整合redis集群...

  • redis的基本操作

    本篇主要讲述了Mac下Redis的安装和使用的经验,并将如何操作Redis做了简单介绍。 1. redis 安装 ...

  • Redis学习笔记02——数据类型和操作命令

    本文主要介绍 Redis 常用的基本操作命令和数据类型操作命令,也就是 Redis 的基本使用。通过学习本文,应该...

网友评论

    本文标题:Redis介绍、安装及基本操作

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