了解Redis
一、存储数据
java:声明变量、数组、集合(jvm的内存中,临时有效)
本地磁盘: 文件(java以 io流操作) 本地磁盘中存储 可以实现持久化
数据库:
sql 关系型数据库(sql语言 ddl、dml、dcl、dql) 库--->表---->行---->列
nosql 非关系型数据库(not only sql)
key---value键值对
key(String类型) value(数据库不同,value类型不同)
泛指非关系型的数据库,作为关系型数据库的补充。
二、redis 属于NOSQL的一种
-
Redis:Remote Dictionary Server(远程字典服务器)
-
是完全开源免费的,用C语言编写的,遵守BSD协议,key-value数据库,内存数据库,NoSql数据库,缓存数据库。
-
是一个高性能的(key/value)分布式内存数据库,基于内存运行,(高性能:官方提供测试数据,50个并发执行100000 个请求,读的速度是110000次/s,写的速度是81000次/s)。
-
实际工作中用redis进行缓存数据实现
-
并支持持久化NoSQL数据到磁盘,是当前最热门的NoSql数据库之一,一般用来处理并发高的数据操作。
在内存空间中存储数据(存取效率极高)
适合小批量数据的存储(运行内存)
适合频繁访问的,不经常更新的数据存储
三、 redis能干什么
-
内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
-
模拟类似于HttpSession这种需要设定过期时间的功能
-
发布、订阅消息系统
-
定时器、计数器
-
分布式锁
四、搭建redis环境
windows平台:
linux平台
下载镜像
docker pull redis:7.0.2
简单启动容器
docker run -id -p 6379:6379 --name redis7 redis:7.0.2
进入到redis中,了解redis配置信息
设置共享目录和配置文件后启动容器
[root@hcss-ecs-b839 data]# ls /opt/redis/
redis.conf
[root@hcss-ecs-b839 data]# cat /opt/redis/redis.conf
requirepass 123456
[root@hcss-ecs-b839 data]# pwd
/usr/local/docker/data
[root@hcss-ecs-b839 data]# ls
docker run -id -p 6379:6379 --name redis7.2 -v /opt/redis/redis.conf:/usr/local/bin/redis.conf -v /usr/local/docker/data:/data redis:7.0.2 redis-server /usr/local/bin/redis.conf
修改配置文件后,重启容器
docker restart redis7.2
客户端远程连接
cmd窗口中,切到redis-cli所在目录
redis-cli -h ip -p 端口号
keys * 提醒你,需要认证
auth 123456 输入密码认证
五、了解redis的结构
-
Redis现在支持十种数据类型:string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合),stream(流),geospatial(地理),bitmap(位图),bitfield(位域),hyperloglog(基数统计)
-
Redis常用五种数据类型:string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)(掌握)
-
redis服务有16个数据库,dbid 0-15
-
默认进入到第一个库,dbid为0的数据库
-
select [dbid] 可以进行数据库的切换
5.1. 对key的学习(掌握的)
-
keys * 把当前库中的所有的key 列出来
-
set k1 v1 保存key-value形式的数据,如果k1已经存在 新值覆盖旧值
-
del k1 删除键值是 k1的
-
EXISTS k1 判断键值为k1是否存在, 存在返回1, 不存在返回0
-
ttl k1 返回k1的过期时间, -1代表永久有效, -2代表已经过期了 ,如果过期,那么就自动清除
-
expire k2 20 给已经存在的k2设定有效期是20秒,单位秒
-
MOVE k1 1 把k1移到第2个数据库中
-
PERSIST k1 把已经存在设置了过期时间的k1设置为永久有效
重点题
1、redis的作用和使用场景
-
作用:内存型键值数据库,支持数据持久化,提供高性能读写与丰富数据结构。
-
内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
-
模拟类似于HttpSession这种需要设定过期时间的功能
-
发布、订阅消息系统
-
定时器、计数器
-
分布式锁
2、redis支持的数据类型有哪些?
类型 | 描述 | 示例场景 |
---|---|---|
String | 文本/二进制数据 | 缓存HTML片段、计数器 |
Hash | 键值对集合 | 存储用户信息(字段:name, age) |
List | 双向链表 | 消息队列、最新消息列表 |
Set | 无序唯一集合 | 共同好友、标签系统 |
Zset | 有序集合 | 排行榜、延迟任务 |
Stream | 消息流 | 日志收集、事件溯源 |
BitMap | 位图 | 用户签到统计 |
HyperLogLog | 基数估算 | 独立IP统计 |
GEO | 地理位置 | 附近的人、位置搜索 |
3、redis针对key常见的通用命令有哪些?
keys * 把当前库中的所有的key 列出来
set k1 v1 保存key-value形式的数据,如果k1已经存在 新值覆盖旧值
del k1 删除键值是 k1的
EXISTS k1 判断键值为k1是否存在, 存在返回1, 不存在返回0
ttl k1 返回k1的过期时间, -1代表永久有效, -2代表已经过期了 ,如果过期,那么就自动清除
expire k2 20 给已经存在的k2设定有效期是20秒,单位秒
MOVE k1 2 把k1移到第2个数据库中
PERSIST k1 把已经存在设置了过期时间的k1设置为永久有效
select 1 切换库
4、描述docker搭建nginx的基本步骤
docker pull nginx:1.25.0
docker run -id -p 80:80 --name nginx2 nginx:1.25.0
5、描述docker搭建mysql的基本步骤
docker pull mysql:8.0.30
docker run -id -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456qwe --name mysql8 mysql:8.0.30
6、描述docker搭建redis的基本步骤
拉取镜像:docker pull redis:7.0.2
启动容器:docker run -id -p 6379:6379 --name redis7 redis:7.0.2
设置共享目录和配置文件后启动容器
[root@hcss-ecs-b839 data]# ls /opt/redis/
redis.conf
[root@hcss-ecs-b839 data]# vi /opt/redis/redis.conf
[root@hcss-ecs-b839 data]# cat /opt/redis/redis.conf
requirepass 123456 #在redis.conf中写入的内容,用来设置密码
[root@hcss-ecs-b839 data]# pwd
/usr/local/docker/data
[root@hcss-ecs-b839 data]# ls
docker run -id -p 6379:6379 --name redis7.2 -v /opt/redis/redis.conf:/usr/local/bin/redis.conf -v /usr/local/docker/data:/data redis:7.0.2 redis-server /usr/local/bin/redis.conf
修改配置文件后,重启容器
docker restart redis7.2
客户端远程连接
cmd窗口中,切到redis-cli所在目录
redis-cli -h ip -p 端口号
keys * 提醒你,需要认证
auth 123456 输入密码认证
7、docker针对容器、镜像常见的各种命令有哪些?
与镜像相关:
docker images 查看本地镜像
docker pull 镜像名:版本号 拉取镜像
docker rmi 镜像名:版本号|镜像id 删除镜像
与容器相关的:
1、创建并启动容器
docker run -id -p 8080:8080 -v /webapps:/usr/local/tomcat/webapps --name 容器名称 tomcat:9.0.10
2、查看本地所有相关容器(包含停止的容器)
docker ps -a
3、查看当前正在运行的容器
docker ps
4、查看容器运行日志
docker logs -f -t --tail n 容器ID 查看容器日志 (--tail 数字 显示最后多少条)
5、进入到容器内部
docker exec -it 容器id|名称 /bin/bash
6、停止容器
docker kill 容器名|容器id
7、删除容器
docker rm 容器名|容器id
数据卷:共享数据(宿主机和容器之间数据共享)
-v /webapps:/usr/local/tomcat/webapps 宿主机目录:容器内部目录