Redis 小记

Posted weijiutao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 小记相关的知识,希望对你有一定的参考价值。

最近感觉自己像是又回到了起点,知识层面上落人太多,尤其是去年早些时候几乎啥也没干成,觉得什么也不会了,只能再次从零开始,所以决定再喝两个疗程的巩固巩固。

 

话不多说,我们先来看看 Redis 官方是怎么解释 Redis 的:

        Redis是一个开源(BSD许可),内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引。Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性并使用Redis Cluster自动分区。

Redis 首先强调的是内存数据结构存储,先说一下我认为国内最 NB 的网站 12306 来说吧,在春运期间12306 在抢票开始时可能会处理数以千万计用户的访问请求,每次都去请求数据库,会对服务器造成相当大的压力,如果我们将一些常用的数据放到内存当中缓存起来,用户再请求数据时先去内存当中去拿,没有之后再去数据库拿就可以缓解大量数据访问时给数据库带来的压力。

 

Redis 同时是一种非关系型数据库,而非关系向数据库严格意义上来说不是数据库,这个咱们就不深究了。

Redis 的安装流程我就不说了,大家根据自己电脑的配置和系统自行搜索。

打字太多,直接上图吧。

技术图片

当我们安装完成后再终端输入 ping 时会返回 PONG,说明 Redis 已经安装完成了,默认端口为 6379,我们可以追踪源码去更改端口及向物理存储中存储一次的间隔时间等配置,这里就不详说了。

技术图片

上图可以看出 Redis 在存储数据时直接进行读写操作就可以了,比起关系型数据库来说简单粗暴,我们也可以在创建数据的时候指定销毁的时间,如上述 test2 设置了 30s 后进行数据销毁。同时 Redis 支持在数据中对 String 类型的数据进行追加操作等。

技术图片

上图我们可以看出 Redis 是以键值对的形式进行数据存储的,同时支持正则查询,删除数据,检查数据是否存在,对已有数据设置销毁时间等。

技术图片

上图为 Redis 存储 hash 型数据,其实就是 JSON 形式的数据,可以根据需求获取所存储数据的内容。

技术图片

上图为 Redis 存储 list 型数据,即数组类型数据,上图 test5 示例为从左侧将 ‘123’,‘456’,‘789’ 依次推入数组并从左侧依次拿出,test6 示例为从右侧将 ’123‘,’456‘,’789‘ 依次推入数组并从左侧依次拿出,list 型数据同时也支持从右侧依次拿出,即 rpop,在此就不写了。

技术图片

上图为 set 型数据,也是一种数组类型数据,但是和上面的 list 型不同的是不能有重复的值,如上图我们添加了两个 ’123‘ 数据,但是输出只有一个,且 set 为无序排列的,如我们又添加了一个 ’taotao‘ ,并不是向后添加,且之前的排列顺序也有所不同。

技术图片

上图为 set 型数据之间求交集,差集,合集,从求合集也可以看出 set 型数据是不允许有相同数据的,会将相同的只保留一份。

技术图片

技术图片

上面两个图为 Redis 消息的发布订阅模式,一个负责发布消息,一个负责接收消息,发布者只有一个,订阅者可以有好多个,当发布者发布消息时,订阅者能实时获取发布者发布的消息,不需要主动去请求。

 

Redis 还有主从关系,这就很好地解决了一个服务器挂掉的时候导致无法获取数据的尴尬,在主服务器挂掉时可以启动备用服务器。

本人本来想在电脑上利用虚拟机构建一台电脑做从机来演示,奈何才疏学浅桥接一直连不通,所以就在搭建的虚拟机中以 Windows 系统的不同端口来模拟不同的两台电脑。

技术图片

先在下载安装的 Redis 文件中复制出一个 redis.windows-service6380.conf 文件,然后打开进行相关配置。

技术图片

 

技术图片

将端口变为 6380,输出日志变为 server6380_log.txt

技术图片

在终端输入以上内容启动 6380 端口的 Redis 服务。这时 Redis 下载安装文件夹里会多一个 server6380_log 的输出日志文件,这表明我们已经成功启动了 6380 端口的 Redis 服务。

技术图片

上图为我们开了两个 Redis 服务,Redis 默认的 6379 端口为主机,我们配置的 6380 端口为从机,在 6380 的终端输入 SLAVEOF 127.0.0.1 6379 表示 6380 以 6379 为主机。我们在 6379 主机端口添加 test : ‘123‘ 的数据,在 6380 从机中获取 test 数据,结果可以输出,当我们在 6380 从机中添加 test1 : 456 的数据,结果报错,报错为 不能写入只能读取,说明从机只有读没有写的权限,这样在主机挂掉时启动从机用于数据的读取存储。

 

关于 Redis 的基本内容本人就说到这里了,再深入的只有自己去学习了,本人也不会,只会一些皮毛。

另附 Redis 的命令行语法链接:http://redis.cn/commands.html,上面有全部的 Redis 命令行语法。

 

以上是关于Redis 小记的主要内容,如果未能解决你的问题,请参考以下文章

Linux安装Redis小记

「Nosql」Redis小记-内存解析&内存消耗篇

(工作小记)redis集群下keys命令查询某一类业务相关的key

小记:Windows redis引发的一场血案(Cannot get Jedis connection&&java.util.NoSuchElementException Unable

spring session使用小记

Linux -- 搭建php服务器环境小记