Redis快速入门

**摘要:**本文系统介绍 Redis 这一基于内存的键值型 NoSQL 数据库。内容涵盖非关系型数据库的基本概念与 BASE 理论,Redis 的安装与常用命令,以及 String、List、Set、Hash、SortedSet 等核心数据结构的底层实现、特点与典型业务场景,并通过对比表格帮助读者快速掌握各类型的适用场景。

一、非关系型数据库

NoSQL 全称Not Only SQL ,译为 "不仅仅是 SQL",不是完全抛弃 SQL,而是不使用传统关系模型 的数据库,是为解决关系型数据库(MySQL/Oracle)在海量数据、高并发、数据模型灵活场景下的短板诞生的。

关系型数据库 VS 非关系型数据库

关系型:表、行、列,固定 Schema,外键,事务强一致,用 SQL。

NoSQL:无固定表结构,大多放弃强事务,横向扩展容易。

BASE:Basically Available, Soft state, Eventually consistent

1. Basically Available(基本可用) 分布式系统出现故障 / 网络分区时,不会完全宕机,尽可能对外提供服务。

不是 100% 随时可用,可能会有降级:响应变慢、部分功能不可用、返回旧数据,但服务还能访问。 例子:网站部分分片挂了,还能展示大部分商品,少数页面异常

2. Soft state(软状态) 允许数据中间状态,状态不需要时刻一致。 节点之间数据同步有延迟,在同步完成前,不同节点读到的数据可以不一样。

对比 ACID 的硬状态:事务完成前,外界看不到中间状态。 软状态:数据可以处于 "正在同步中" 这个临时状态,不需要立刻全局统一。

3. Eventually Consistent(最终一致性) 经过一段时间,所有副本数据最终会同步成一样。 在这个同步窗口内,读可能读到旧数据;等待同步完成后,所有节点数据一致。

重点:不保证实时一致,只保证一段时间后一致。

认识Redis

Redis诞生于2009年全称是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NoSQL数据库。

特征:

  • 键值(key-value)型,value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具备原子性
  • 低延迟,速度快(基于内存、IO多路复用、良好的编码)。
  • 支持数据持久化
  • 支持主从集群、分片集群
  • 支持多语言客户端

二、 Redis安装

可从GitHub上直接下载Redis的相关版本或访问Redis的官方网站进行下载,请注意:Redis官方作者并未出版过Windows版本,所有的Windows版本是由微软在后期进行开发的版本。

参考版本:

链接: https://pan.baidu.com/s/1DvYtXtIM_5ndduUU3G4cKw?pwd=b8u9 提取码: b8u9

Redis集群只一款针对于服务器端的软件,官方的也是Linux版本。读者在学习时可以自行组装虚拟机,组装虚拟机的版本建议使用Radhat或者ubantu。

此外针对于宿主机器和虚拟机的通信,这里建议安装Xshell。

成功在linux安装好Redis后,还需要一个类似于Navicat之类的非关系型数据库的管理工具或者说是图形化的界面。常见的有RDM、RESP。这里推荐:TinyRDM------一款由独立开发者进行开发的,已经在GitHub上获得万🌟的项目

下载地址如下:Tiny RDM | Redis桌面管理客户端

Redis安装放置目录: /usr/local/src

编译解压及制造目录命令:make && make install

一些需要用到的命令:

复制代码
redis-server
redis-cli
AUTH 你的密码
vi  修改文件
/查询的文件名称
i  插入模式
kill -9 端口号
firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reload

三、Redis数据结构

Redis是一个key-value型的数据库,key一般是string类型, value的值多种多样。

其中前五种是基本数据类型,后三种是引用型数据类型。

四、命令

String类型

key类型

hash类型

List类型

Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构。

既可以支持正向检索和也可以支持反向检索。 特征也与LinkedList类似:

  • 有序

  • 元素可以重复

  • 插入和删除快

  • 查询速度一般

常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等。

SET类型

SortedSet类型

Redis的SortedSet是一个可排序的set集合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。

SortedSet具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。

类型 底层结构 特点 Java 类比 典型业务场景
String SDS 简单动态字符串 最基础,一个 key 对应一个 value,支持字符串 / 数字 / 二进制 String 缓存、计数器、分布式锁、session 存储
List 双向链表 有序、元素可重复;头尾增删快,中间查询慢 LinkedList 消息队列、评论列表、点赞列表
Set 哈希表 无序、元素不可重复;支持交集 / 并集 / 差集 HashSet 好友关系、去重、共同好友
Hash 哈希表 key 下存储多个 field-value,适合对象 HashMap 用户信息、商品对象缓存
SortedSet(zset) 跳表 SkipList + hash 表 可按 score 排序、元素不重复,查询快 TreeSet(仅功能类似,底层不同) 排行榜、延时队列、权重排序
相关推荐
施嘉伟1 小时前
Oracle 在线重定义卡了一个多小时:查不到阻塞会话
数据库·oracle
꯭自꯭闭꯭1 小时前
达梦守护集群手工切换及故障切换
linux·运维·服务器·数据库
j7~1 小时前
【Redis初阶】(篇二)《一文吃透 Redis:特性、应用场景、版本演进与安装配置全解析》
数据库·redis·缓存·redis的特性·redis的主要应用场景·redis重要文件及其作用·安装并启动redis
JavaEdge.2 小时前
Redis 连接断开后的自动重连操作
spring boot·redis·后端·lettuce·tcp keepalive
Elastic 中国社区官方博客2 小时前
使用 NVIDIA cuVS 在 Elasticsearch 中实现 GPU 加速的向量索引:在 10 分钟内处理 1.38 亿个向量
大数据·数据库·elasticsearch·搜索引擎·全文检索·安全威胁分析
我们从未走散2 小时前
AI 生图平台如何避免资损:用“扣款与凭据同事务”构建三态账本
开发语言·数据库·php
Shadow(⊙o⊙)3 小时前
MySQL复合查询
数据库·mysql
L·S·P8 小时前
25MB 管理 100+ 种数据库:开源轻量客户端 DBX 介绍与上手
数据库·mysql·开源·database·dbx
笃行35010 小时前
KingbaseES KSQL Developer 的连接管理、数据处理与对象管理
数据库