Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)

初识Redis

Redis为键值型数据库,数据以键值形式存储。没有表,没有约束。

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第1张图片

 认识NoSQL

 mysql就是典型的关系型数据库(SQL)。

目的都是数据的增删改查,但数据存储方式不一样。

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第2张图片

 

关系型和非关系型在结构上有差异

关系型的结构一般定好后就很少修改,非关系型的就更加自由

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第3张图片

 关系型数据库的关系体现如下,不同表可以通过外键进行联系

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第4张图片

 非关系型数据库因为没有表,所以像下面记录一个用户下的订单需要通过json嵌套的形式

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第5张图片

 查询方面差异

关系型数据库都可以使用同一套SQL语句进行查询,NoSQl的查询语法不统一,不同的NoSQl数据库有不同的语法Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第6张图片

 事物上的差异

关系型数据库的事物有ACID特性: 原子性,一致性,隔离性,持久性

NoSQl数据库要么无事务,要么就是只能做基本的一致性,ACID无法全部满足,只有BASE性:系统能够基本运行,一直提供服务 

速度差异:磁盘读写速度远慢于CPU速度,因此存在内存中的NoSQl速度很快。

认识Redis

 Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第7张图片

 安装Redis

因为redis官方没有提供windows版本(但听说github上有),只有liunx,所以这里有两种选择,一是在本地安装虚拟机跑redis,而是在云服务器跑redis

这里我选择在云服务器装redis, 官方也有提供redis的docker镜像

这里首先在云服务器上使用如下命令拉取redis镜像

docker pull redis

拉取速度慢的话可以换源,可以看下面这个博主的文章,建议换阿里的源,快的不是一点半点

docker 换镜像源以解决拉取镜像速度慢的问题_dock拉取镜像很慢_farkuai的博客-CSDN博客

然后用镜像创建一个容器

docker run -d -p 6379:6379 --name myredis redis

 用docker ps -a 看容器的id

docker ps -a

然后用以下命令打开redis服务

docker exec -it 容器的id redis-cli

然后就可以直接使用一个软件进行连接了,不需要管配置文件那些什么的,更不需要文件夹映射什么的

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第8张图片

 这里拉取容器下来的redis默认是没有密码的,所以可以直接用服务器+端口后进行连接

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第9张图片

 为了安全起见,还是要先修改密码。

//使用如下命令查询信息
config get requirepass

//使用如下命令修改密码
config set requirepass password

//使用如下命令确认密码,否则报错
auth password

//再次查看密码
config get requirepass

设置完密码之后的每次登陆都要带上密码,否则能进去但不能使用命令

 

 docker exec -it b66f2d4fb5b3 redis-cli -a 234799

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第10张图片

连接成功时界面是这样的

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第11张图片 这里默认有16个仓库,可以通过以下语句选择哪一个仓库

# 选择 0号库
select 0

 Redis命令——数据结构

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第12张图片

 

Redis命令——通用命令

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第13张图片

#查看相关命令的信息
help commad


#查询所有的key
keys * 
#查询所有以n开头的key
keys n*
#查询所有带有n的key
keys *n*

//类似sql的模糊查询


#删除指定的key
del key
#删除多个key
del  k1 k2 k3 k4    #实际删除多少个就会返回多少个

//只能指定key后删除


#判断key是否存在
exists k1 k2       #返回值是存在的key的数量


#给一个key设置有效期,到期就会删除,因为redis在内存存储,不删的话会爆内存
expire key  20   #20s有效期


#查看一个key的有效期
ttl key          #返回剩余秒数
返回-1则是永久有效

Redis命令——String类型常见命令

甚至可以把图片变成字节流存在redis里面

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第14张图片

 

 常见命令

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第15张图片

#设置三个键值对 k1:v1  ....
mset k1 v1 k2 v2 k3 v3

#获取多个key的值
mget k1 k2 k3

#返回值是自增后的结果
incr  age 

#让age每次自增-2
incrby age -2

#浮点数自增0.5
incrbyfloat age 0.5

#如果不存在才增加,可以有效防止覆盖
setnx age 2
set age 2 nx    #效果相同

#添加一个key=5并设置有效期为10
setex age 10 5
set age 5 ex 10
//可以覆盖已有的key,相当于set和expire组合

 

Redis命令——key的层级格式

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第16张图片

 ​​​​​​​Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第17张图片

 使用如下的四条语句设置4条数据

set  itheima:user:1 '{"id":1, "name":"Jack", "age": 21}'

set  itheima:user:2 '{"id":2, "name":"Rose", "age": 18}'

set  itheima:user:3 '{"id":1, "name":"小米11", "price": 4999}'

set  itheima:user:4 '{"id":2, "name":"荣耀6", "price": 2999}'

 然后在图形界面客户端可以看见有如下层级

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第18张图片

Redis命令——Hash类型相关命令

类比就是map,套娃

 Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第19张图片

 常见命令

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第20张图片

hmset已经弃用,使用hset可以达到hmset效果 

hdel :删除一个key下面指定的field和values

Redis命令——List类型相关命令

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第21张图片

 常见命令

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第22张图片

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第23张图片 

 Redis命令——Set类型相关命令

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第24张图片常用命令

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第25张图片

  Redis命令——SortedSet类型相关命令

 Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第26张图片

常用命令

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)_第27张图片 

 

你可能感兴趣的:(Redis,redis,数据库,缓存,docker)