Redis小白入门系列
一、从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小白入门系列的更多相关文章
- 性能工具之Jmeter小白入门系列之一
一.简单了解 Apache JMeter The Apache JMeter application is open source software, a 100% pure Java applica ...
- ABP入门系列(13)——Redis缓存用起来
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 创建任务时我们需要指定分配给谁,Demo中我们使用一个下拉列表用来显示当前系统的所有用 ...
- 小白入门NAS—快速搭建私有云教程系列(一)
什么是NAS 在日常的工作生活中,我们有大量的资料.文件需要存储在电脑或者其他终端设备中,但是这种方式需要电脑配备高容量的硬盘,而且需要随时随地的带着,这样是不是很麻烦? 那么,今天,我来介绍一种家庭 ...
- Redis 小白指南(一)- 简介、安装、GUI 和 C# 驱动介绍
Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍 目录 简介 安装 入门指令 GUI 工具 C# 驱动介绍 简介 ANSI C 编写,开源,基于内存,可持久化,一个键值对的数据库, ...
- Redis 小白指南(二)- 基础命令和五大类型:字符串、散列、列表、集合和有序集合
Redis 小白指南(二)- 基础命令和五大类型:字符串.散列.列表.集合和有序集合 引言 目录 基础命令 字符串类型 散列类型 列表类型 集合类型 有序集合类型 基础命令 1.获得符合规则的键名列表 ...
- Redis 小白指南(三)- 事务、过期、消息通知、管道和优化内存空间
Redis 小白指南(三)- 事务.过期.消息通知.管道和优化内存空间 简介 <Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍> 讲的是 Redis 的介绍,以及如何 ...
- Redis 小白指南(四)- 数据的持久化保存(草稿)
Redis 小白指南(四)- 数据的持久化保存 简介 因为 redis 将数据保存在内存中,很容易诱发的一个问题就是,程序崩溃或服务器重启等情况如何保证数据的正常存储. 当我们以 redis 作为主数 ...
- Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合
Redis 小白指南(二)- 聊聊五大类型:字符串.散列.列表.集合和有序集合 引言 开篇<Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍>已经介绍了 Redis 的 ...
- k8s入门系列之guestbook快速部署
k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用. •实验环境为集群:master(1)+node(4),详细内容参考<k8s入门系列之集 ...
随机推荐
- 【0801 | Day 6】Python基础(四)
Part 13 流程控制之while循环 一.语法 while 条件 code 1 code 2 code 3 ... while True: print('*1'*100) print('*2' ...
- MVC+EF Core 完整教程20--tag helper详解
之前我们有一篇:“动态生成多级菜单”,对使用Html Helper做了详细讲述,并且自定义了一个菜单的 Html Helper: https://www.cnblogs.com/miro/p/5541 ...
- js五子棋游戏代码分享
HTML代码 <canvas id="game"></canvas> CSS代码 * { margin: 0; padding: 0; } #game { ...
- 调用链系列(3):如何从零开始捕获body和header
拓展阅读:调用链系列(1):解读UAVStack中的贪吃蛇 调用链系列(2):轻调用链实现 在Java中,HTTP协议的请求/响应模型是由Servlet规范+Servlet容器(如Tomcat)实现的 ...
- html5 拖拽(drag)和f放置(drop)
知识要点 HTML5 (drag&drop) API (Event) 拖放数据(对象):DataTransfer 拖放内容:setData getData 拖放效果(动作):dropEffe ...
- 2019牛客暑期多校训练营(第十场)F-Popping Balloons
>传送门< 题意:现在给你n个点 ,让你横着划三条线间距为r 然后竖着划三条线间距同样为r ,求经过最多的点数 思路:比赛看到这题的时候觉得能做,但是一看时间限制是5s,搞得我有不敢去碰了 ...
- C#自动计算字符串公式的四种方法
原地址:https://blog.csdn.net/ifu25/article/details/53292134 四种方式 简单粗暴:利用SQL数据库计算 功能强大:利用JavaScript计算 看不 ...
- Mybatis 中的<![CDATA[ ]]>浅析
在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]&g ...
- SpringBoot:elasticSearch 7.2.0 Java High Level REST Client 搜索 API
Springboot整合最新版elasticSearch参考之前的文章:SpingBoot:整合ElasticSearch 7.2.0 Search API SearchRequest用于与搜索文档, ...
- 用Canvas实现Photoshop的钢笔工具(贝塞尔曲线)
前两天在用Canvas实现一个绘制路径的小功能.做完之后发现加以完善可以“复刻”一下PS里面的钢笔工具. PS里的钢笔工具对我来说是PS中最好用的工具! 所以本文主要介绍如何用Canvas来实现Pho ...