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入门系列之集 ...
随机推荐
- 通过Blazor使用C#开发SPA单页面应用程序(1)
2019年9月23——25日 .NET Core 3.0即将在.NET Conf上发布! .NET Core的发布及成熟重燃了.net程序员的热情和希望,一些.net大咖也在积极的为推动.NET Co ...
- linux100day(day3)--常用文本处理命令和vim文本编辑器
今天,来介绍几个常用文本处理命令和vim文本编辑器 day3--常用文本处理命令和vim文本编辑器 col,用于过滤控制字符,-b过滤掉所有控制字符,这个命令并不常用,但可以使用man 命令名| co ...
- 在CentOS 7 / RHEL 7安装PostgreSQL 10
CentOS 到了7.x版本, PostgreSQL也来到了10.x版本. 前些天MySQL都直接跨到了8.0版本. 本文是一篇在CentOS 7.4上安装安装PostgreSQL 10.3 的教程. ...
- 深入浅出TCP与UDP协议
深入浅出TCP与UDP协议 网络协议是每个前端工程师的必修课,TCP/IP协议族是一系列网络协议的总和,而其中两个具有代表性的传输层协议,分别是TCP与UDP,本文将介绍这两者以及他们之间的区别. 一 ...
- springboot 项目的https的发布
1.生成密钥证书 生成命令: keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize -keystore keysto ...
- 淘宝自动登录2.0,新增Cookies序列化
前段时间时间为大家讲解了如何使用requests库模拟登录淘宝,而今天我们将对该功能进行丰富.所以我们把之前的那个版本定为1.0,而今天修改的版本定为2.0.版本的地跌意味着功能的升级,那今天的2.0 ...
- 随笔编号-15 重构--改善既有代码的设计--Day01--学习笔记
最近公司开发的系统在进行大批量数据查询的时候发现响应速度变得让人无法忍受,so 老大安排我进行代码重构的工作,主要目的就是为提高代码的执行效率.减小方法之间的响应时间.降低方法之间的耦合度.= =! ...
- 百度地图api之----根据用户ip定位城市
LocalCity 这个类是利用用户IP地址去百度数据库里查询得到IP所在的城市,用法如下: var objCity = new BMap.LocalCity(); objCity.get(funct ...
- ScrollView中页面显示自动滑到最后问题的解决
转载:https://blog.csdn.net/a644904088/article/details/80241176 原因:ScrollView中包含其余控件,但控件显示不全,此时会存在焦点问题, ...
- codeforces 389 D. Fox and Minimal path(构造+思维)
题目链接:https://vjudge.net/contest/175446#problem/J 题解:显然要用最多n个点构成的图要使的得到的最短路条数有1e9次个,显然要有几个数相乘容易想到2的几进 ...