Redis完全教程:全面学习指南(一)

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis完全教程:全面学习指南


1、NoSQL数据库

1.1 NoSQL数据库概述

NoSQL(NoSQL = Not Only SQL), 不仅仅是SQL,泛指非关系型的数据库

NoSQL不依赖业务逻辑方式存储,而已简单的key-value模式存储,因此大大的增加了数据库的扩展能力。

  • 不遵循SQL标准。
  • 不支持ACID
  • 远超于SQL的性能。

1.2 NoSQL使用场景

  • 对数据高并发的读写
  • 海量数据的读写
  • 对数据的高可扩展性

1.3 NoSQL不适用场景

  • 需要事物支持
  • 复杂关系的查询

1.4 常见的NoSQL数据库

1.4.1 Memcache

  • 很早出现的NoSQL数据库
  • 数据都在内存中,一般不持久化
  • 支持简单的key-value模式,支持类型单一
  • 一般作为缓存数据库辅助持久化数据库

1.4.2 Redis

  • 几乎覆盖了Memcached的绝大部分功能
  • 数据都在内存中,支持持久化,主要用作备份恢复
  • 除了支持简单的key-value模式,还支持多种数据结构的存储,比如list、set、hash、zset等。
  • 一般作为缓存数据库辅助持久化的数据库

1.4.3 MongoDB

  • 高性能、开源、模式自由(schema free)的文档型数据库
  • 数据都在内存中,如果内存不足,把不常用的数据保存到硬盘
  • 虽然是key-value模式,但是对value(尤其是Json)提供了丰富的查询功能
  • 支持二进制数据及大型对象
  • 可以根据数据的特点替代 RDBMS ,成为独立的数据库。 或者配合RDBMS,存储特定的数据。

2、Redis的概述和安装

2.1 概述

Redis是什么

Redis: REmote DIctionary Server (远程字典服务器)

是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,也被人们称为数据库结构服务器

Redis与其他key-value缓存产品有以下三个特点

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave(主从)模式的数据备份

Redis能干嘛

  • 内存存储和持久化: redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
  • 发布、订阅消息系统
  • 地图信息分析
  • 定时器、计数器
  • 最新n个数据

特性

数据类型、基本操作和配置

持久化和复制,RDB、AOF

事物的控制

常用网站

https://redis.io/ 官网

http://www.redis.cn 中文网

2.2 安装

2.2.1 Windows版本安装

下载地址: https://gitee.com/resource-download/redis/tree/master/

下载完成后解压后即可。

双击启动redis-server.exe

双击启动redis-cli.exe

测试简单的存值取值

127.0.0.1:6379> set name 'Mr Qi'
OK
127.0.0.1:6379> get name
"Mr Qi"
127.0.0.1:6379>

2.2.2 Linux版本安装

官网下载地址 https://redis.io/download/

下载完成后放进我们的linux的/opt目录下

进入/opt目录

cd /opt

然后进行解压缩

tar -zxvf redis-6.2.6.tar.gz

安装gcc(gcc是linux下的一个编译程序,是c语言的编译工具)

yum install gcc

然后在解压后的目录下,执行make(将我们的文件编译成C文件)命令,

cd redis-6.2.6
make

执行make可能出现的问题

emalloc/jemalloc.h: 没有那个文件或目录

我们需要执行以下命令

make distclean

执行完然后再次make即可。

到这里我们就编译完成了,我们要继续进行安装

make install

安装完成后,它的默认安装位置是usr/local/bin目录下,进入目录执行ls命令进行查看.

我们可以看到里面关于redis的有7个文件,各个文件说明如下

redis-benchmark: 性能测试工具

redis-check-aof: 修复有问题的aof文件

redis-check-rdb:修复有问题的rdb文件

redis-server:redis服务器启动命令

redis-cli:客户端操作入口

启动方式一(不推荐)

执行redis-server命令

这种方式有个弊端,就是我们只要关闭窗口,则服务就会自动关闭。

启动方式二(推荐)

我们需要修改redis.conf文件,将里面的daemonize no改为yes,为了不破坏原有文件,我们可以复制一份文件进行修改。

复制一份redis.conf,复制位置可自己指定

进入/opt/redis-6.2.6目录下执行以下命令

# mycopy 你自己放的具体位置,可自行修改
cp redis.conf /mycopy

进入/mycopy目录下修改redis.conf文件,执行命令如下

cd /mycopy
vi redis.conf

将对应位置修改为yes即可,退出即可。

进行启动

进入/usr/local/bin,执行以下命令

redis-server /mycopy/redis.conf

这样redis就在后台启动了,即使关掉窗口redis仍然可以正常使用

我们可以来查看我们的redis进程是否正常启动:

ps -ef | grep redis

启动成功。

使用客户端进行连接:

redis-cli

退出方式

shutdown
exit

到这里,我们的安装及其相关配置工作就完结了

2.3:redis基础知识

2.3.1: 端口号

redis默认端口号为6379:

由来:6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字。MERZ长期以来被Redis作者antirez及其朋友当作愚蠢的代名词。后来Redis作者在开发Redis时就选用了这个端口。

# 在redis.conf配置文件中
port 6379

2.3.2:数据库

redis默认16个数据库,类似数组下标从0开始,默认使用零号数据库。redis.conf里面有默认配置。

# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 16

2.3.3:基础命令

select命令切换数据库

# 不同的库可以存储不一样的数据
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 2
OK

dbsize查看当前库的key数量

127.0.0.1:6379[2]> set name 'qi'
OK
127.0.0.1:6379[2]> dbsize
(integer) 1
127.0.0.1:6379[2]> select 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 0

keys *可以查看具体的key

127.0.0.1:6379[2]> keys *
1) "name"

flushdb: 清空当前库

flushall:清空全部库

127.0.0.1:6379[2]> dbsize
(integer) 1
127.0.0.1:6379[2]> flushdb
OK
127.0.0.1:6379[2]> dbsize
(integer) 0

2.3.4:线程

Redis是单线程+多路IO复用技术

IO多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4月前
|
存储 NoSQL Linux
小白带你学习linux的Redis基础(三十二)
小白带你学习linux的Redis基础(三十二)
74 0
|
3月前
|
存储 NoSQL Redis
redis源码学习
redis源码学习
|
4月前
|
存储 NoSQL Ubuntu
在Ubuntu上安装Redis并学习使用get、set和keys命令
在Ubuntu上安装Redis并学习使用get、set和keys命令
|
5月前
|
缓存 NoSQL Redis
【Redis 系列】redis 学习十六,redis 字典(map) 及其核心编码结构
【Redis 系列】redis 学习十六,redis 字典(map) 及其核心编码结构
|
5月前
|
NoSQL 算法 Redis
【Redis 系列】redis 学习十四,sorted_set 初步探究梳理
【Redis 系列】redis 学习十四,sorted_set 初步探究梳理
|
5月前
|
存储 NoSQL Redis
【Redis 系列】redis 学习十五,redis sds数据结构和底层设计原理
【Redis 系列】redis 学习十五,redis sds数据结构和底层设计原理
|
3月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
82 2
|
3月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(上)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
74 0
|
5月前
|
存储 NoSQL 算法
[Redis 系列]redis 学习 17,redis 存储结构原理 1
[Redis 系列]redis 学习 17,redis 存储结构原理 1
|
1月前
|
存储 NoSQL Java
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
54 0

热门文章

最新文章