Redis基础
文章目录
- 一、认识NoSql
- 二、认识Redis
- 三、Redis常见命令
- 3.1、Redis通用命令
- 3.2、Redis通用命令
一、认识NoSql
NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库。下图是sql和NoSql的对比:
- 结构化与非结构化:关系型数据库如MySQL、Oracle,使用之前需要确定数据类型和约束等,而非关系型数据库存储结构可以使键值型、文档型,甚至是图格形,使用前不需要定义。
- 关联和非关联:关系型数据库的表之间,可以在数据库层面保持关联,比如用户表和订单表通过外键保持关联。而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合。
- 查询方式:传统关系型数据库会基于Sql语句做查询,语法有统一标准;而不同的非关系数据库查询语法差异极大,五花八门各种各样。
- 事务:传统关系型数据库能满足事务ACID的原则。而非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性。
- 存储方式:关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响。非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些。
- 扩展性:关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题,称为水平扩展。关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦。
二、认识Redis
Redis诞生于2009年。全称是Remote Dictionary Server 远程词典服务器,是一个基于内存的键值型NoSQL数据库。
Redis的特征:
- 键值(key-value)型,value支持多种不同数据结构,功能丰富。
- 单线程,每个命令具备原子性。
- 低延迟,速度快(基于内存、IO多路复用、良好的编码)。
- 支持数据持久化。
- 支持主从集群、分片集群。
- 支持多语言客户端。
三、Redis常见命令
Redis默认有16个仓库,编号从0至15。 通过配置文件可以设置仓库数量,但是不超过16,并且不能自定义仓库名称。
Redis是典型的key-value数据库,key一般是字符串,而value包含很多不同的数据类型:
Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网可以查看到不同的命令:
3.1、Redis通用命令
通用指令是部分数据类型都可以使用的指令,常见的有:
- KEYS:查看符合模板的所有key,例如
KEYS *
,就是查看所有key。因为是模糊匹配,所以生产上慎用此命令。 - DEL:删除一个指定的key
- EXISTS:判断key是否存在
- EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除
- TTL:查看一个KEY的剩余有效期
在命令行中,通过help [command]
可以查看一个命令的具体用法,例如:
# 查看keys命令的帮助信息:
127.0.0.1:6379> help keysKEYS pattern
summary: Find all keys matching the given pattern
since: 1.0.0
group: generic