文章目录
1 背景
我们现在的项目架构中,基本上是Web服务器(Tomcat)和数据库独立部署,独占服务器资源,随着用户数的增长,并发读写数据库,会加大数据库访问压力,导致性能的下降,严重时直接导致系统宕机,例如:
此时,我们可以在Tomcat同服务器上中增加本地缓存,并在外部增加分布式缓存,缓存热门数据。也就是通过缓存能把绝大多数请求在读写数据库前拦截掉,大大降低数据库压力。例如:
基于这样的一种架构设计,于是类似redis的一些分布式数据库就诞生了。
2 Redis 概述
Redis 是典型的 NoSQL 数据库。
Redis 是一个开源的 key-value 存储系统。
和 Memcached 类似,它支持存储的 value 类型相对更多,
包括 string、list、set、zset、sorted set、hash。
这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,
而且这些操作都是原子性的。
在此基础上,Redis 支持各种不同方式的排序。
与 memcached一样,为了保证效率,数据都是缓存在内存中。
区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
并且在此基础上实现了master-slave (主从)同步。
3 版本及参考说明
Redis的次版本号(第一个小数点后的数字)为偶数的版本是稳定版本(2.4、2.6等),奇数为非稳定版本(2.5、2.7),一般推荐在生产环境使用稳定版本。最新版本6.2.2,新增了stream的处理方式,性能更高。Redis官方是不支持windows平台的,windows版本是由微软自己建立的分支,基于官方的Redis源码上进行编译、发布、维护的,所以windows平台的Redis版本要略低于官方版本。
Redis 相关参考网址如下所示:
Bootnb 相关:https://www.runoob.com/redis/redis-tutorial.html
Redis 官网:https://redis.io/
源码地址:https://github.com/redis/redis
Redis 在线测试:http://try.redis.io/
Redis 命令参考:http://doc.redisfans.com/
4 应用场景
高频次,热门访问的数据,降低数据库 IO。
分布式架构,做 session 共享。
多样的数据结构存储持久化数据
5 使用docker安装 redis
5.1 安装步骤
第一步:下载镜像文件
docker pull redis
第二步:准备配置文件
创建redis配置文件目录
mkdir -p /usr/local/docker/redis01/conf
在配置文件录下创建redis.conf配置文件(这个文件一定要创建,否在我们进行目录挂载时默认生成的是一个目录)
touch /usr/local/docker/redis01/conf/redis.conf
第三步:创建redis实例并启动
sudo docker run -p 6379:6379 --name redis01 \
-v /usr/local/docker/redis01/data:/data \
-v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
第四步:查看正在运行的进程
docker ps
5.2 访问redis服务器
第一步:控制台直接连接redis测试
docker exec -it redis01 bash
第二步:检测redis 版本
redis-server -v
或者
redis-cli -v
第三步:登录redis(默认不需要密码)
redis-cli
或者直接将上面的两个步骤合为一个步骤执行也可以,指令如下:
docker exec -it redis01 redis-cli
5.3 停止和启动redis服务
停止redis服务?
docker stop redis01
启动redis服务?
docker start redis01
重启 redis 服务?
docker restart redis01
6 Redis初始操作
6.1 启动redis服务
Docker 环境下的启动(docker环境启动多个需要运行多个容器):
1 docker start redis01 #底层也是通过redis-server启动,start单词后的redis01为容器名
1 docker 中查看redis 服务
1 docker ps
2 查看启动的redis进程信息
ps -ef|grep redis
root 3511 1 0 16:29 ? 00:00:01 redis-server *:6379
root 3515 1 0 16:29 ? 00:00:01 redis-server 127.0.0.1:6380
6.2 进入redis容器
docker exec -it redis01 bash #redis01 为容器名
6.3 登陆redis服务
登陆本地redis
redis-cli
或者
redis-cli -p 6379
或者
redis-cli -p 6379 -a password #-a后面为password,此操作需要开启redis.conf文件中的 requirepass选项
登陆远程redis
redis-cli -h ip -p 6379 -a password
6.4 查看redis信息
首先登陆redis,然后输入info指令,例如
127.0.0.1:6379> info #查看当前redis节点的详细配置信息
6.5 清空redis屏幕
清除redis屏幕内容
127.0.0.1:6379> clear
6.6 退出redis服务
退出redis服务,例如
127.0.0.1:6379> exit
6.7 关闭redis服务
关闭redis服务,例如:
127.0.0.1:6379> shutdown
6.8系统帮助
可以基于help指令查看相关指令帮助,例如
127.0.0.1:6379> help
redis-cli 2.8.19
Type: "help @<group>" to get a list of commands in <group>
"help <command>" for help on <command>
"help <tab>" to get a list of possible help topics
"quit" to exit
127.0.0.1:6379> help type
TYPE key
summary: Determine the type stored at key
since: 1.0.0
group: generic
7 key操作
keys *:查看当前库所有 key
exists key:判断某个 key 是否存在
type key:查看你的 key 是什么类型
del key :删除指定的 key 数据
unlink key:根据 value 选择非阻塞删除,仅将 keys 从 keyspace 元数据中
删除,真正的删除会在后续异步操作
expire key 10 :为给定的 key 设置过期时间
ttl key:查看还有多少秒过期,-1表示永不过期,-2表示已过期
select:命令切换数据库
dbsize:查看当前数据库的 key 的数量
flushdb:清空当前库
flushall:通杀全部库