【Redis 学习笔记】1、Redis 简介

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,倚天版 1GB 1个月
简介: 【Redis 学习笔记】1、Redis 简介

前言

说到 Redis,大家可能第一反应就是它是当前最受欢迎的 NoSQL 数据库之一。那么在正式介绍 Redis 之前,我们先来看看关于 NoSQL 的一些相关信息,比如它是什么,又比如它的一些特点以及它的一些分类。那么我们接下来就从以上三个方面来对 NoSQL 的相关历史做一个简单介绍,然后再去看看 Redis 的相关知识。


什么是 NoSQL

NoSQL = Not Only SQL


泛指非关系型数据库,随 Web2.0 的诞生,传统关系型数据库难以应对 Web2.0,尤其是超大规模的高并发社区。NoSQL 在当今大数据程序下较为流行。


NoSQL 特点

高扩展性(数据间无关系,容易扩展)

大数据量高性能(官方给定数据,写操作 8w次/s,读操作 11w次/s)

数据类型多样(无需事先设计数据库,随取随用)

高可用

传统 RDBMS 和 NoSQL

传统 RDBMS

结构化组织

SQL

数据和关系均存在单独的表中

操作数据定义语言

严格的一致性

基础的事务

……

NoSQL

不仅仅是数据

无固定查询语言

键值对存储,列存储、文档存储、图形数据库

最终一直性

CAP 定理和 BASE

高性能,高可用,高可拓

……

NoSQL 的四大分类

NoSQL 主要可以分为如下四大类,然后关于各类的实例、应用场景、数据模型以及各个类型的一些优缺点,可以参见下面的表。


KV 键值对

文档型数据库(bson & json)

列存储数据库

图关系数据库

分类 实例 应用场景 数据模型 优点 缺点

键值对(key-value) Redis、Voldemort 内存缓存,用于处理大量数据的高访问负载,也可用于日志系统等 key 指向 value 的键值对,通常是用 HashTable 来实现 查找速度快 数据无结构化,通常只被当做字符串或二进制数据

列存储数据库 HBase 分布式文件系统 以列簇式存储,讲同一列数据存储在一起 1. 查找速度快

2. 扩展性强

3. 更容易进行分布式扩展 功能相对局限

文档型数据库 MongoDb Web 应用,类似于 Key-Value key-value 对应的键值对,value 为结构化的数据 1. 数据结构要求宽松

2. 表结构可变,无需像关系型数据库一样预先定义表结构 查询性能低,且查询语法不统一

图形数据库(Graph) Neo4j、InfoGrid 社交网络、推荐系统等 图结构 可以利用图结构相关算法,如最短路径寻址、N度关系查找等 许多时候需要对整个图进行计算才能得到最终结果,效率不高;而且做分布式集群较困难

什么是 Redis

以上对 NoSQL 做了一个简介之后,接下来就轮到我们今天的主角 - Redis 了。接下来,我将从相关简介,如何安装以及常用基本操作几个方面来对 Redis 进行介绍。


Redis 特点

Redis 是一个高性能的开源的 key-value 数据库,底层由 C 语言实现,相比于其他同类型产品,有如下特点。


支持数据持久化,可以将内存中的数据保存在磁盘中,重启时再次加载使用即可;

不仅支持 key-value 类型的数据,同时还支持 list、set、hash、zset 等数据结构的存储;

支持 master-slave 模式的数据备份;

Redis 优势

高性能;

支持的数据类型丰富;

原子性,要么成功执行,要么失败完全不执行。单个操作时原子性的,多个操作也支持事务,通过 MULTI 和 EXEC 指令封装;

支持其他丰富的特性,如 publish/subscribe,通知,key 过期等;

Redis 的应用场景

内存存储、持久化

高效率,可以用于高速缓存

发布订阅系统

地图信息分析

计时器、计数器

任务队列

数据过期处理

应用排行榜

……

Redis 和其他 key - value 数据库的不同

Redis 的数据结构更加复杂且提供对他们的原子性操作,而且基于基本数据结构的同时也对程序员透明,无需进行额外抽象;

Redis 运行在内存中但是可以持久化到硬盘,所以在对不同数据集进行高速读写是需要权衡内存大小,数据量不能大于硬件内存;

Redis 安装

Windows 下安装

去下载安装包,https://github.com/tporadowski/redis/releases,支持 32 和 64 位,按需下载即可;

解压缩下载后的压缩包,并存在你自己指定的目录;


image.png

  1. 打开终端,然后切换到 Redis 目录,运行如下命令即可:
./redis-server.exe

image.png

  1. 打开另一个窗口,在 Redis 目录下运行另一个 Redis,然后进行设置和取出键值对测试;
./redis-cli.exe
# 设置键值对
set key "cunyu"
# 取出键值对
get
• 1
• 2
• 3
• 4
• 5

image.png

Linux 下安装

  1. 下载最新版本安装包,http://redis.cn/download
  2. 使用如下命令解压安装包到你需要存储的位置,然后进行编译
# 解压
tar -zxvf redis-6.0.6.tar.gz
# 进入文件夹
cd redis-6.0.6
# 编译
make

image.pngimage.pngimage.png注意

当在控制台中获取中文键值时,可能会出现乱码的情况,此时,可以通过在启动客户端时加入 --raw 参数即可解决;


# 可能乱码的启动方式

./redis-cli

# 解决乱码的启动方式

./redis-cli --raw


基本操作及常识

选择对应数据库

# redis 默认提供 16 个数据库,默认使用 0 号数据库

select num(数据库编号)


获取数据库名

get name


查看数据库大小

DBSIZE


查看数据库所有 key

keys *


清空数据库

# 清空所有数据库

FLUSHALL


# 清空当前数据库

flush db


查看某 key 是否存在

EXISTS key


移除当前 key

move key value


设置 key 过期时间

# time 时间单位为秒

EXPIRE key time


查看当前 key 的类型

type key


总结

OK,以上就是今天的所有内容了。主要介绍了 NoSQL 的相关知识,接着引入 Redis 的特点、优点、应用场景、和其他同类型数据库的区别、然后介绍 Redis 的安装以及安装过程中需要注意的事项,最后则是对 Redis 在日常使用时使用最频繁的一些命令进行了说明。


最后,原创不宜,如果你觉得本文对你有所帮助,还请各位点赞关注一波,也算是对我的一种鼓励吧,让我能够继续坚持!



相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
存储 NoSQL Redis
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
61 1
|
2月前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
52 0
|
2月前
|
存储 消息中间件 缓存
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
62 0
|
2月前
|
存储 NoSQL 算法
Redis系列学习文章分享---第十篇(Redis快速入门之附近商铺+用户签到+UV统计)
Redis系列学习文章分享---第十篇(Redis快速入门之附近商铺+用户签到+UV统计)
24 0
|
2月前
|
存储 NoSQL Redis
Redis系列学习文章分享---第九篇(Redis快速入门之好友关注--关注和取关 -共同关注 -Feed流实现方案分析 -推送到粉丝收件箱 -滚动分页查询)
Redis系列学习文章分享---第九篇(Redis快速入门之好友关注--关注和取关 -共同关注 -Feed流实现方案分析 -推送到粉丝收件箱 -滚动分页查询)
29 0
|
2月前
|
消息中间件 负载均衡 NoSQL
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
37 0
|
2月前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
158 0
|
2月前
|
存储 NoSQL 安全
Redis系列学习文章分享---第十五篇(Redis最佳实践--设计优雅的key+合适的数据结构+持久化如何配置+慢查询问题解决)
Redis系列学习文章分享---第十五篇(Redis最佳实践--设计优雅的key+合适的数据结构+持久化如何配置+慢查询问题解决)
47 1
|
2月前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
48 1
|
2月前
|
存储 缓存 NoSQL
Redis系列学习文章分享---第十三篇(Redis多级缓存--JVM进程缓存+Lua语法)
Redis系列学习文章分享---第十三篇(Redis多级缓存--JVM进程缓存+Lua语法)
56 1