从入门到高可用分布式实践-Redis初识

​ 学习Redis一直都是零零散散的没有系统学习,虽然之前读过一本关于Redis的书籍,但是还是对很多概念是似懂非懂。从这篇开始将系统学习慕课网的一个Redis实战课程一站式学习Redis 从入门到高可用分布式实践。希望通过这个课程对Redis的理解更加深刻些。

Redis是什么?

我们看下维基百科对于Redis的解释:Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性&action=edit&redlink=1)(英语:Durability_(database_systems)))的键值对存储数据库

Redis的一些特性

  1. 速度快(内存性数据库)
  2. 持久化
  3. 多种数据结构
  4. 支持多种编程语言
  5. 功能丰富
  6. 简单
  7. 主从复制
  8. 高可用、分布式

下面我们逐一看下这写特性的具体内容是什么。

速度快

在官方给出的数据显示是Redis的OPS为10万。之所以这么快主要是因为Redis是内存型数据库(数据存储在内存中,交互数据不需要和磁盘打交道),并且使用C语言(相比于Java和Python这类语言更接近操作系统),使用单线程模型。

内存和SSD盘读写速度对比

Redis速度快的最主要原因就是使用内存

持久化

我们知道Redis速度快的主要原因是将数据存储在内存中的,但是内存种的数据是无法断电恢复的。如果想数据不丢失就需要将数据进行持久化操作。Redis所有数据保存在内存中,对数据的更新将异步保存到磁盘上。可以通过AOF和RDB进行持久化操作。

多种数据结构

Redis的数据结构主要分为五种:字符串、列表、哈希表、集合、有序集合。

Redis的数据结构

除了上面常见的数据结构还有一些不太常见的数据结构:

  1. BitMaps:位图(BitMap 就是通过一个 bit 位来表示某个元素对应的值或者状态, 其中的 key 就是对应元素本身,实际上底层也是通过对字符串的操作来实现)

  2. HyperLogLog:超小内存唯一值计数(HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

    在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。)

  3. GEO:地理位置定位(支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能。)

支持多种客户端语言

基本上主流的编程语言 Redis都有对应的客户端

功能丰富

除了多种数据结构外,Redis还提供可其他一些非常高效的功能:发布订阅、Lua脚本支持、简单的事务、pipeline操作等。

简单

源码简洁 便于排查分析问题、不依赖外部库、使用单线程模型(客户端和服务端开发相对容易)

主从复制

Redis的主从复制

主服务器上的数据可以被同步到从服务器 这样就为分布式和高可用提供了基础

高可用、分布式

Redis通过Redis-Sentinel支持高可用、Redis-Cluster支持分布式

Redis可执行文件说明

安装Redis成功之后会有一些可执行文件,我们看一些文件的用途

redis-check-aof: AOF文件修复工具

redis-check-dump:RDB文件检查工具

redis-sentinel:Sentinel服务器启动

Redis常用配置

daemonize 是否是守护进程(no|yes) 默认为no建议为yes。当我们设置为yes的时候 启动的日志就会输出到我们配置的文件中。

port: Redis对外端口

logfile:Redis系统日志(对应一个文件的文件名)

dir:Redis工作目录(日志文件、持久化文件存储的目录)

知识就是财富
如果您觉得文章对您有帮助, 欢迎请我喝杯水!