😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍
一 认识 Redis
Redis(Remote dictionary Server)诞生于2009年,是一个基于内存的键值型 NoSQL 数据库,也是键值对数据库。No SQL表示操作非关系型数据的语言,而 SQL 是操作关系型数据库的语言,下面罗列了 SQL 与 NoSQL 的异同点
SQL | NoSQL | |
---|---|---|
数据结构 | 结构化(Structured) | 非结构化 |
数据关联 | 关联的 | 无关联的 |
查询方式 | SQL查询 | 非SQL |
事务特性 | 满足ACID事务性 | 无法全部满足ACID事务性(BASE) |
存储方式 | 磁盘 | 内存 |
扩展性 | 垂直 | 水平 |
使用场景 | 1)数据结构固定;2)相关业务对数据安全性、一致性要求较高 | 1)数据结构不固定;2)对一致性,安全性要求不高;3)对性能要求 |
另外解释下 Structured(结构化)的含义:数据都有一定固定的格式,也就是数据库的约束
例如:主键约束、唯一约束,无符号约束、数据长度约束,插入数据时,需要按照一定的格式。
非结构化:对数据的格式没有特别的约束,可以是键值对、document文档、数据之间没有特别的关系。
二 Redis 的特征
- 键值型,value支持多种不同数据结构,功能丰富
- 单线程,每个命令具备原子性;redis6.0 多线程仅仅是针对网络请求。
- 低延迟,速度快(原因:基于内存、IO多路复用,良好的编码(基于C语言编写的))
- 支持数据持久化:定期将数据从内存移到磁盘
- 支持主从集群,分片集群。
- 支持多语言客户端。
三 Redis配置相关
-
Redis 安装
brew install redis
-
启动 Redis 服务器
redis-server
-
启动 Redis 客户端
redis-cli
-
ubuntu中redis的配置文件地址:
/etc/redis
-
Mac中 redis的配置文件路径:
/usr/local/etc/redis.conf
配置文件字段 | 描述 |
---|---|
bind 0.0.0.0 | 监听的地址,默认是127.0.0.1,会导致只能在本地访问,修改为0.0.0.0则可以在任意ip访问,生产环境不要设置0.0.0.0 |
daemonize yes | 守护进程,修改为yes后即可后台运行 |
requirepass 123456 | 密码设置为 123456 |
port 6379 | 监听的端口号是6379 |
dir . | 默认工作目录为当前目录,也就是运行redis-server时的命令,日志,持久化等文件会保存在这个目录下。 |
databases 1 | 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号是0-15 |
maxmemory 512mb | 设置redis 能够使用的最大内存 |
logfile “redis.log” | 日志文件,默认为空,也指定日志文件名记录日志。 |
-
Redis 服务基于配置文件启动
redis-server redis.conf
-
进入Redis 客户端
redis-cli -h 127.0.0.1 -p 6379 -a 123456
或者直接:
redis-cli -a 123456
-
ping :与redis服务端做心跳测试,服务端正常会返回pong
如果出现这个问题时:(error) NOAUTH Authentication required,说明访问redis时 需要登录密码
四 Redis 数据结构
Redis 是一个 key-value 的数据库,key 一般是 String 类型,不过value 的类型多种多样,有以下几种类型:(后三个是特殊类型,前五个是基本类型)
String | hello world |
---|---|
Hash | {name:”Jack”,age:21} |
List | [a - >b - > c - > c] |
Set | {A,B,C} |
SortedSet | {A:1,B:2,C:3} |
GEO(地理坐标) | {A:(120.3,30.5)} |
BitMap | 011011011111000111 |
HyperLog | 011011111011 |
Redis 文档官网:https://redis.io/docs/latest/commands/?group=string
五 Redis 通用命令
通用命令是部分数据类型都可以使用的指令,常见的有:
-
KEYS:查看符合模版的所有key (不建议在生产环境设备上使用,因为性能比较低)
-
通过
help [command]
可以查看一个命令的具体用法 -
KEYS 的使用,查看所有的key,(不区分大小写)
-
-
DEL :删除一个指定的key
-
DEL key
一次性删除多个key,
DEL key1 key2 key3
integer 3 表示删除的key的个数,虽然指定删除四个,但是第四个k4 不存在,依然可以正常与运行命令。
-
-
EXISTS:判断key是否存在
- 命令 :
EXISTS keyname
- 命令 :
-
EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除
-
EXPIRE name 20
(过期时间为20s)
-
-
TTL:查看一个KEY 的剩余有效期
TTL name
- 当一个key的有效期为**-2**的时候,就表示这个key已经被移除了
- -1 表示的是永久有效,直接set name Zeng的key就是永久有效。