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 小记的更多相关文章
- 「Nosql」Redis小记-内存解析&内存消耗篇
*博客搬家:初版发布于 2017/08/12 18:32 原博客地址:https://my.oschina.net/sunqinwen/blog/1507171 Redis内存消耗分析 注:本文 ...
- Redis小记(三)
1.复制 通过slaveof命令或设置slaveof选项,实现一个服务器去复制另一个服务器,被复制的是主服务器,执行复制的是从服务器,复制过程中主从双方数据库保持数据一致 2.8版本以前,可分为初次复 ...
- Redis小记(二)
1.redis数据库 redis数据库属于内存数据库,若不将数据存到磁盘中,服务器进程退出,数据也会消失 redis所有数据库都保存在redisServer结构的db数组中,db数组的每一项都是一个r ...
- Redis小记(一)
1.redis的数据结构 (1)动态字符串(SDS) redis自身构建了一个简单动态字符串的抽象类型,SDS,在redis里,包含字符串的键值对在底层都是由SDS来实现的. 除了用来保存数据库的字符 ...
- MongoDB 小记
之前本人说过一款非关系型数据库的代表 Redis 的 < Redis 小记 >文章,觉得意犹未尽,今天就来介绍一款数据库 MongoDB ,先来看一下 MongoDB是一款基于分布式文件存 ...
- Redis Sentinel配置小记
Sentinel是一个管理多个redis实例的工具,它可以实现对redis的监控.通知.自动故障转移.sentinel不断的检测redis实例是否可以正常工作,通过API向其他程序报告redis的状态 ...
- Docker 小记 — MySQL 与 Redis 配置
前言 本篇随笔是继 "Docker Engine" 与 "Compose & Swarm" 之后的一个实例补充,初衷是记录测试环境中的一次 MySQL ...
- Redis 学习小记
由于是学习笔记,我就不来各种啰嗦,介绍这个介绍那个,也不上交给国家,或者各种对比,相信如果你真心用 redis 的话,就不会去跟 MySql,Memcached,MongoDB 等做对比了. 我原先用 ...
- 小记redis持久化的机制
刚学redis,就经常看到两种持久化机制在眼头晃,RDB和AOF,然而当时学的还知道这两东西是啥玩意,过段时间又忘了,中文记忆这两种概念总感觉有些别扭.今心血来潮翻看redis的配置文件,豁然开朗,仿 ...
随机推荐
- 全国省市县区域信息最新数据库脚本(mysql版本)
/*Navicat MySQL Data Transfer Source Server : localhostSource Server Version : 50717Source Host : lo ...
- 26.app后端怎么架设推送服务
推送服务已经是app的标配了.架设推送服务,除了可以使用第三方服务商外,也有大量的开源技术可以选择. 现在推送主要分两块,android推送和ios推送,在下面分别论述: 1. Android推 ...
- 玩转Web之html+CSS(一)---论坛首页表格的实现
转载请说明出处,小编博客地址:http://blog.csdn.net/u012116457 最近本来想去写一个类似论坛的页面,论坛首页一般都需要一个表格去显示数据,自己简单的写了一下,先上一张图 c ...
- 【Windows】关于shift跟空格同时按无反应的解决方案
在玩游戏中我们经常会遇到各种功能键的使用方法 例如shift跟空格,由于我以前经常要加速大跳,突然发现shift跟空格一起按没有效果,语言设置里也没有相关的快捷键设置到,所以网上查询了一番,至此,问题 ...
- VMware12安装虚拟机教程、Ubuntu16.04安装教程(包括vmware tools的安装)
转自https://jingyan.baidu.com/article/c275f6ba07e269e33d756714.html 方法/步骤 1 虚拟机.Linux操作系统介绍及下载地址 虚拟机VM ...
- mysql保存不了4字节的问题(也就是表情)
这个问题 https://blog.csdn.net/ppwangGS/article/details/62044887 有详细的解决办法 这里我就是记录一下我遇到的问题 这种问题一般是往数据库 ...
- Javascript保证精度的小数乘法
众所周知,js的小数乘法很容易丢失精度,这是一件很恶心的事情.所以我写了这个方法,保证计算精度./** * js小数乘法 *@parameter arg1:被乘数(接受小数和整数) *@paramet ...
- Python+Appium 获取 toast 文本值方法的封装
获取toast内容方法封装如下: def get_Toast(self,message): #查找toast值 ''' method explain:查找toast的值,与find_Toast实现方法 ...
- 一行代码实现数组去重(ES6)
ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如: let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3]; ...
- 深入javascript的主流的模块规范
文章首发于sau交流学习社区 一.前言 目前主流的模块规范: 1.UMD通用模块 2.CommonJs 3.es6 module 二.UMD模块(通用模块) (function (global, fa ...