Redis笔记1
[toc]
# Redis笔记1
# 什么是NoSql数据库?
NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大区别的一种特殊的数据库,因此也称之为非关系型数据库。
传统关系型数据库与NoSql数据库的区别:
* 结构化与非结构化
传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名.字段数据类型.字段约束等等信息,插入的数据必须遵守这些约束。而NoSql则对数据库格式没有严格约束,往往形式松散,自由。可以是键值型,文档型,图类型的等等。
* 关联和非关联
传统数据库的表与表之间往往存在关联,例如外键。而非关系型数据库不存在关联关系,要维护数据之间的关系要么靠代码中的业务逻辑,要么靠数据之间的耦合。
* 查询方式
传统关系型数据库会基于Sql语句做查询,语法有统一标准。而不同的非关系数据库查询语法差异极大,五花八门各种各样。
* 事务
传统关系型数据库能满足事务ACID的原则。而非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性。
* 存储方式
关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响。非关系型数据库,更多的是依赖于内存来进行存储,内存的读写速度会非常快,性能自然会好一些。
* 扩展性
关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Redis介绍
Redis 全称 Remote Dictionary Server (远程字典服务器) , 是一个基于内存的key-value数据库。
与其他内存型数据库相比,Redis的特点:
1. Redis 不仅可以将数据完全保存在内存中,还可以通过磁盘实现数据的持久存储;
2. Redis 支持丰富的数据类型,包括 string、list、set、zset、hash 等多种数据类型;
3. Redis 支持主从同步,即 master-slave 主从复制模式。数据可以从主服务器向任意数量的从服务器上同步,有效地保证数据的安全性;
4. Redis 支持多种编程语言,包括 C、C++、Python、Java、PHP、Ruby、Lua 等语言。
2
3
4
Redis的使用场景
Redis 用来缓存一些经常被访问的热点数据、或者需要耗费大量资源的内容,通过把这些内容放到 Redis 中,可以让应用程序快速地读取它们。例如,网站的首页需要经常被访问,并且在创建首页的过程中会消耗的较多的资源,此时就可以使用 Redis 将整个首页缓存起来,从而降低网站的压力,减少页面访问的延迟时间。
# Redis的安装与启动
大多数企业都是基于Linux系统来部署项目,而且Redis官方也没有提供Windows版本的安装包。因此都会基于Linux系统来安装Redis。
# windows系统下安装启动redis
Redis官方没有提供 Windows 版的安装包,但可以通过 GitHub 来下载 Windows 版 Redis安装包。
Windows 版 Redis安装包下载地址 (opens new window)
注意:Windows 安装包是某位民间“大神”根据 Redis 源码改造的,并非 Redis 官方网站提供。
- 下载redis安装包
- redis.windwos.conf是配置文件
- redis.cli.exe 是redis客户端程序
- redis-server.exe 是redis服务端程序
启动服务端程序,双击redis-server.exe。会看到如下界面 注意,请您保持服务端始终处于开启状态,否则客户端无法正常工作。
启动客户端程序,双击客户端启动程序redis-cli.exe。如图所示,表示redis客户端与服务端连接成功。
将redis安装路径配置到环境变量中。这样可以在终端的任何位置运行redis的命令。
还可以通过命令行来启动redis.
开启redis服务端:redis-server --service-start
停止redis服务端:redis-server --service-stop
卸载redis服务端:redis-server --service-uninstall
启动redis客户端:redis-cli
2
3
4
# ubuntu系统下安装启动redis
相比于 Windows 系统而言,Redis 更适合于在 Linux 系统上使用,这是由 Redis 的底层机制决定的。
命令行在线安装
## 在 Ubuntu 终端执行相应的命令即可在线安装 Redis
sudo apt-get update
sudo apt-get install redis-server
## 启动Redis服务端
redis-server
## 启动Redis客户端
#简单格式
redis-cli
#若设置了密码,使用如下格式启动
redis-cli -h [ip] -p [port] -a [password]
2
3
4
5
6
7
8
9
10
11
12
源代码安装
# 1.首先从redis官网下载redis源代码。
# 将安装包放到/usr/local/src目录,并解压安装包。
tar xzf redis-5.0.4.tar.gz
# 编译并安装源代码包
cd redis-5.0.4
make && make install
# 安装完成后,redis会默认安装在/usr/local/bin目录下。
cd /usr/local/bin # 进入安装目录中
./redis-server # 启动服务端
./redis-cli # 启动客户端
2
3
4
5
6
7
8
9
10
11
12
13
14
# Docker环境下安装启动redis
步骤① 先安装docker环境,自行百度。
步骤② 下载redis镜像文件。最新版或某个版本
# 下载最新版的redis镜像
docker pull redis
# 下载某个版本的redis镜像
docker pull redis:7.2.3-alpine
# 查询镜像
docker images
2
3
4
5
6
alpine 是一个轻量的linux系统,这边版本表示是轻量版。
步骤③ 创建redis的容器的存储目录,即容器数据卷
需要创建一个conf目录和data目录,分别存储redis容器的配置和数据。
步骤④ 下载官方redis配置文件,并修改
下载官方的redis配置文件,注意配置文件要与redis容器版本要对应。不同版本的配置文件有差别,无法适配。
修改内容如下
# 注意,这个要注释掉,使redis可以外部访问
# bind 127.0.0.1
# 守护进程设置为no,不要设置为yes,否则与docker -d命令冲突,从而导致容器启动失败。
daemonize no
# 给redis设置密码
requirepass 123456
# redis持久化,默认是no,改为yes
appendonly yes
2
3
4
5
6
7
8
9
步骤⑤:创建并启动redis容器
# 创建容器并启动
# redis-server /etc/redis/redis.conf 在容器启动的时候运行redis-server的命令,用于加载容器内的 conf 文件。
docker run -d --name="myRedis" --privileged=true -p 36379:6379 -v /d/DockerVolumes/redis/conf/redis.conf:/etc/redis/redis.conf -v /d/DockerVolumes/redis/data:/data redis:7.2.3-alpine redis-server /etc/redis/redis.conf
# 查询容器日志,看是否成功启动。
docker logs myRedis
2
3
4
5
- 注意:/d/DockerVolumes/... 是windows环境下D盘的DockerVolumes目录。如果宿主机是linux系统,可以设置其他目录。
如图是window的docker客户端。显示的是redis容器
步骤6:redis客户端连接redis容器即可。
# Redis配置文件
windows系统中 Redis 的安装目录中有一个名为 redis.windows.conf 的配置文件,Linux 系统中则为 redis.conf。
# 查看配置信息
以使用Redis的CONFIG
命令来查看或者更改Redis的配置信息。
# 语法如下
127.0.0.1:6379> CONFIG GET 配置名称
# 获取日志配置信息
127.0.0.1:6379> CONFIG GET 配置名称
1) "loglevel"
2) "notice"
# 获取所有配置信息
127.0.0.1:6379> CONFIG GET *
1) "dbfilename"
2) "dump.rdb"
......
2
3
4
5
6
7
8
9
10
11
12
13
14
# 修改配置信息
如果我们需要修改redis配置文件的时候,一般是将原配置文件进行备份,然后再修改。
- 将redis.conf原配置文件复制重命名为redis.conf.backup
- 修改配置
# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后就默认为后台运行
daemonize yes
# 密码,设置后访问Redis必须输入密码
requirepass 123456
# Redis默认端口为 6379.
port 6379
# 数据库数量,设置为16,代表使用16个数据库,默认有16个库,编号0~15
databases 16
# 设置redis能够使用的最大内存
maxmemory 512mb
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 日志文件,默认为空(即不记录日志),可以指定日志文件名
logfile "redis.log"
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 重新启动Redis
# 进入redis安装目录
cd /usr/local/src/redis-6.2.6
# 指定配置文件启动
redis-server redis.conf
2
3
4
# 配置文件配置项
# Redis开机自启
可以通过配置来实现Redis开机自启。
- 新建一个systemctl服务文件:
vi /etc/systemd/system/redis.service
# redis.service内容如下:
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
2
3
4
5
6
7
8
9
10
11
12
13
14
- 然后重新加载systemctl服务:
systemctl daemon-reload
- 现在可以用下面这组命令来操作redis:
# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis
# 让redis开机自启
systemctl enable redis
2
3
4
5
6
7
8
9
10
# Redis图形化客户端
在这个github仓库可以找到Redis图形化桌面客户端安装包:下载链接 (opens new window)
- 安装redis图形化桌面客户端
- 运行该客户端,填写redis配置信息。链接redis服务器。
Redis默认有16个仓库,编号从0至15. 通过配置文件可以设置仓库数量,但是不超过16,并且不能自定义仓库名称。