目录
一、NoSQL
NoSQL
特点
使用场景
二、Redis介绍
简介
特性
使用场景
三、Redis安装
1、下载
2、安装
3、启动、停止
4、补充
四、key键操作
一、NoSQL
NoSQL
非关系型数据库;存储原理非常简单(典型的数据类型为k-v),不存在繁杂的关系链,大大的增加了数据库的拓展能力。
特点
1.不遵循SQL标准(典型的数据类型为k-v),易拓展
2.不支持ACID(支持事务)
3.远超于SQL的性能
使用场景
1.对数据库高并发读写的需求
2.对海量数据的高效率存储和访问的需求
3.对数据库的高可扩展性和高可用性的需求
二、Redis介绍
简介
Redis 是用C语言开发的一款开源的、高性能的键值对存储数据库,它采用 BSD 协议,为了适应不同场景下的存储需求,提供了多种键值数据类型,字符串、列表、有序集合、散列及集合等;Redis 内置复制、Lua 脚本、LRU 收回、事务及不同级别磁盘持久化功能,同时实现高可用、自动分区等相关功能。
特性
1.具有丰富的数据类型
2.读/写速度快,性能高(Redis 能读的速度是 11万次/s,写的速度是 8.1万次/s。之所以有这么快的读/写速度,是因为这些数据都存储在内存中)
3.支持持久化:也就是备份数据,它每隔一段时间就将内存中的数据保存在磁盘中,在重启的时候会再次加载到内存中,从而实现数据持久化
4.实现高可用主从复制,主节点做数据副本;实现分布式集群和高可用
使用场景
1.做缓存
2.实现消息队列
3.做计数器应用
为什么使用
1.两大优势:高性能(存储在硬盘中)、高并发(mysql单机一般只能支撑到2000Qps,而redis由于是K/V式的操作,单机可以支撑并发量几万到十几万)
2.速度快:单线程、基于内存、IO多路复用
3.丰富的数据结构
三、Redis安装
1、下载
下载地址:https://redis.io/download/,下载到最新版的 redis
2、安装
先创建一个 redis 的文件夹来存放安装包,把安装包上传到服务器上:
# 在 /soft 目录下创建一个空的文件夹 redis
mkdir /soft/redis
# 进入这个新建的文件夹下
cd /soft/redis
上传:
解压:
tar -zxvf redis-7.0.2.tar.gz
解压成功之后进入 redis 的安装目录,运行编译命令:
cd ./redis-7.0.2
make && make install
默认安装路径是在 /usr/local/bin
目录下,进入该目录:
cd /usr/local/bin
该目录以及默认配置到环境变量,因此可以在任意目录下运行这些命令,其中:
redis-cli:是 redis 提供的命令行客户端
redis-server:是 redis 的服务端启动脚本
redis-sentinel:是 redis 的哨兵启动脚本
3、启动、停止
redis 默认启动的命令是 redis-server
,但是该命令只是前台启动,关闭调当前的窗口,redis 也会随之关闭,如果想要 redis 后台启动,就必须去修改 redis 的配置文件,指定配置文件启动。
进入解压Redis安装包的目录,编辑reids.conf文件
vim reids.conf
找到配置文件中相应地方的配置,修改成如下:
# 监听地址,默认是 127.0.0.1,会导致只能在本地访问。修改成 0.0.0.0 则可以在任意 IP 访问,生产环境不要设置 0.0.0.0
bind 0.0.0.0
# 守护进程,修改为 yes 后即可后台运行
daemonize yes
# 密码,设置后访问 redis 必须输入密码
requirepass 123456
其他常见配置:
# 监听端口
port 6379
# 工作目录,默认是当前目录,也就是运行 redis-server 时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置 redis 能够使用的最大内存
maxmemory 256mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"
启动 redis:
# 进入 redis 安装目录
cd /soft/redis/redis-7.0.2/
# 指定配置文件启动 redis
redis-server redis.conf
查看 redis 是否后台运行成功:
ps -ef | grep redis //查看是否存在进程
停止Redis:
先查看存在进程,然后杀死进程:
ps -ef | grep redis
kill -9 进程号
4、补充
检查防火墙是否关闭 防火墙一般默认都是开启的。如果防火墙是开启的,那就要进行端口检测,如果端口是关闭的,则要放开。 如果不想开放端口,直接将防火墙关闭就行
四、key键操作
1、keys *:查看当前库所有的key(查询到所有之前写入的数据键)
2、exists key:判断某个Key是否存在(可在后面写多个键,存在几个键返回数字几,但没办法判断哪一个键存在/不存在。)
3、type key:查看key是什么类型
4、del key:删除指定的key数据
5、unlink key:非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续的异步中操作(当需要删除的数据量非常大时使用,不会发生阻塞)
6、ttl key:查看还有多少秒过期,-1表示永不过期,-2表示已过期
7、expire key 数字:为给定的key设置过期时间(以秒为单位)
8、select dbindex:切换数据库[0-15],默认为0
如:select 1(切换数据库1)
9、move key dbindex[0-15]:将当前数据库的key移动到给定的数据库db当中
例:move key 3:将key转移到数据库3中
10、dbsize:获取当前数据库key的数量
11、flushdb:清空当前库
12、flushall:通杀(清空)全部库
注:redis指令可以不区分大小写,但是key区分大小写