一、从NoSQL说起

NoSQL 是 Not only SQL 的缩写,大意为"不只是SQL",说明这项技术是传统关系型数据库的补充而非替代。在整个NoSQL技术栈中 MemCache、Redis、MongoDB被称为NoSQL的三剑客。那么时代为什么要NoSQL数据库呢?我们来做个对比:

关系型数据库 NoSQL数据库
数据库存储位置 硬盘 内存
数据结构 高度组织化结构数据 没有预定义的模式
数据操作方式 SQL 所有数据都是键值对,没有声明性查询语言
事务控制 严格的基础事务ACID原则 CAP定理

所以NoSQL数据库的最大优势体现为:高性能、高可用性和可伸缩性


二、Redis(remote dictionary server)简介

Redis英文介绍:

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.

Redis中文介绍:

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。


三、Redis安装

1、下载安装

wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz
cd redis-5.0.5
make

然后到src目录下运行redis-server

运行结果如下



执行后连接



发送一个ping会返回一个pong


四、Redis常用数据结构

1、总体结构

key value
string
list
set
hash
zset

Redis中的数据,总体上是键值对,不同数据类型指的是键值对中值的类型。

2、string类型

Redis中最基本的类型,它是key对应的一个单一制。二进制安全,不必担心由于编码等问题导致二进制数据变化。所以redis的string可以包含任何数据,比如jpg图片或者序列化对象。Redis中一个字符串值的最大容量是512M

3、List类型

Redis 列表是最简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部或者尾部。说明它的底层是基于链表实现的,所以它操作头尾效率高,中间效率低。

4、set类型

Redis内set是string类的无序集合,它是基于哈希表实现的。

5、hash类型

本身就是一个键值对集合。可以当作Java中的Map<String,Map<key,value>>对待

6、zset

zset和set一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。Zset的成员是唯一的,分数可以重复。


五、Redis命令

1.基本操作

1.切换数据库

redis默认有16个数据库

使用select进行切换,数据库索引从0开始

2.查看数据库

2.KEY操作

KEYS PATTERN 匹配字符

TYPE KEY 返回KEY对应的值的类型

MOVE KEY DB 把一组键值数据库移动到另一个数据库

DEL KEY [KEY...] 指定至少一个Key然后删除

其他命令如下

命令 用途
EXISTS KEY 检查指定的KEY是否存在。指定一个KEY时,存在返回1,不存在返回0.可以指定多数量
RANDOMKEY 在现有的KEY中随机返回一个
RENAME KEY NEW KEY 只有在NEWKEY不存在时执行成功,否则失败
TIME 返回UNIX时间戳
TTL KEY 以秒为单位查看KEY还能存在多久
EXPIRE KEY SECONDS 给一个KEY设置在SECONDS秒后过期,过期会被Redis移除
PTTL KEY 毫秒看存在多久
PERSIST KEY 移除过期时间,变成永久KEY

3、String等其他操作请转至菜鸟教程这里不做赘述

https://www.runoob.com/redis/redis-strings.html


六、Redis持久化机制

Redis工作时数据都存储在内存中,万一服务器断电,则所有数据都会丢失,针对这种情况,Redis采用持久化机制来增强数据安全性。

1、RDB

(1)机制描述

每隔一定时间把内存中的数据作为一个快照保存到硬盘上的文件中,Redis默认开启RDB机制。

(2)触发时机

【1】基于默认配置

save 900 1
save 300 10
save 60 10000

含义

配置 含义
save 900 1 900秒内至少有一次修改则出发保存操作
save 300 10 300秒内至少有10次修改保存操作
save 60 10000 60秒内至少有10000次修改保存操作

【2】使用保存命令

save
bgsave

【3】使用flushall命令

全部清空

【4】服务器关闭

如果执行shutdown命令让Redis正常退出,那么Redis就会执行一次持久化保存。

(3)相关配置

配置项 取值 作用
save "" 禁用RDB机制
dbfilename 文件名,例如:dump.rdb 设置RDB机制下,数据存储文件的文件名
dir Redis工作目录路径 指定存放持久化文件的目录的路径。注意:这里指定的必须是目录不能是文件名

2、AOF

(1)机制描述

根据配置文件中指定的策略,把生成数据的命令保存到硬盘上的文件中。

(2)AOF基本配置

配置项 取值 作用
appendonly yes 启用AOF持久化机制
no 禁用AOF持久化机制[默认值]
appendfilename "文件名" AOF持久化文件名
dir Redis工作目录路径 指定存放持久化文件的目录的路径。注意:这里指定的必须时目录不能说文件名
appendfsync always 每一次数据修改后都将执行文件写入操作,缓慢但是最安全
everysec 每秒执行一次写入操作,折中。
no 由操作系统在适当时候执行写入操作,最快

(3) AOF重写

对比下面俩组命令

AOF重写前 AOF重写后
set count 1 set count4

Redis小白入门系列的更多相关文章

  1. 性能工具之Jmeter小白入门系列之一

    一.简单了解 Apache JMeter The Apache JMeter application is open source software, a 100% pure Java applica ...

  2. ABP入门系列(13)——Redis缓存用起来

    ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 创建任务时我们需要指定分配给谁,Demo中我们使用一个下拉列表用来显示当前系统的所有用 ...

  3. 小白入门NAS—快速搭建私有云教程系列(一)

    什么是NAS 在日常的工作生活中,我们有大量的资料.文件需要存储在电脑或者其他终端设备中,但是这种方式需要电脑配备高容量的硬盘,而且需要随时随地的带着,这样是不是很麻烦? 那么,今天,我来介绍一种家庭 ...

  4. Redis 小白指南(一)- 简介、安装、GUI 和 C# 驱动介绍

    Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍 目录 简介 安装 入门指令 GUI 工具 C# 驱动介绍 简介 ANSI C 编写,开源,基于内存,可持久化,一个键值对的数据库, ...

  5. Redis 小白指南(二)- 基础命令和五大类型:字符串、散列、列表、集合和有序集合

    Redis 小白指南(二)- 基础命令和五大类型:字符串.散列.列表.集合和有序集合 引言 目录 基础命令 字符串类型 散列类型 列表类型 集合类型 有序集合类型 基础命令 1.获得符合规则的键名列表 ...

  6. Redis 小白指南(三)- 事务、过期、消息通知、管道和优化内存空间

    Redis 小白指南(三)- 事务.过期.消息通知.管道和优化内存空间 简介 <Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍> 讲的是 Redis 的介绍,以及如何 ...

  7. Redis 小白指南(四)- 数据的持久化保存(草稿)

    Redis 小白指南(四)- 数据的持久化保存 简介 因为 redis 将数据保存在内存中,很容易诱发的一个问题就是,程序崩溃或服务器重启等情况如何保证数据的正常存储. 当我们以 redis 作为主数 ...

  8. Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合

    Redis 小白指南(二)- 聊聊五大类型:字符串.散列.列表.集合和有序集合 引言 开篇<Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍>已经介绍了 Redis 的 ...

  9. k8s入门系列之guestbook快速部署

    k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用. •实验环境为集群:master(1)+node(4),详细内容参考<k8s入门系列之集 ...

随机推荐

  1. 从Maven私服获取依赖

    通过Internet直接从Maven公用仓库获取依赖包是默认配置.不过对于中国软件公司来讲,访问这些公用仓库通常较慢,对于一些管理严格的不能直接上网的软件公司来讲,这更加是不可能的.Maven项目可以 ...

  2. Spring Boot 2.X 如何快速整合jpa?

    本文目录 一.JPA介绍二.Spring Data JPA类结构图1.类的结构关系图三.代码实现1.添加对应的Starter2.添加连接数据库的配置3.主要代码 一.JPA介绍 JPA是Java Pe ...

  3. xtuils

    xutils的使用必须导入一个依赖 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceS ...

  4. hadoop2.7作业提交详解之文件分片

    在前面一篇文章中(hadoop2.7之作业提交详解(上))中涉及到文件的分片. JobSubmitter.submitJobInternal方法中调用了int maps = writeSplits(j ...

  5. python接口测试入门1-什么是接口测试

    为什么要做接口测试 在日常开发过程中,有人做前端开发,有人负责后端开发.接口就是连接前后台,由于前端开发和后端开发的速度可能不一样,例如后端开发好了,但是前端没有开发.那么我们是不是就不需要测试呢?一 ...

  6. P3195 [HNOI2008]玩具装箱TOY 斜率优化dp

    传送门:https://www.luogu.org/problem/P3195 题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任 ...

  7. 用python解析JSON

    先来认识下JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使 ...

  8. jmeter+Fiddler:通过Fiddler抓包生成jmeter脚本

    Fiddler是目前最常用的抓包工具之一,它作为客户端和服务器端之间的代理,记录客户端和服务器之间的所有请求(http/https),可以针对特定的请求过滤,分析请求和响应的数据.设置断点.调试.修改 ...

  9. 服务链路跟踪 && 服务监控

    服务链路跟踪 背景 微服务以微出名,在实际的开发过程中,涉及到成百上千个服务,网络请求引起服务之间的调用极其复杂. 当请求不可用或者变慢时,需要及时排查出故障服务点成为了微服务维护的一大难关. 服务链 ...

  10. 使用docker快速搭建本地环境

    在平时的开发中工作中,环境的搭建其实一直都是一个很麻烦的事情 特别是现在,系统越来越复杂,所需要连接的一些中间件也越来越多. 然而要顺利的安装好这些中间件也是一个比较费时费力的工作. 俗话说" ...