关系型数据是一个结构化的数据结构,创建在关系模型(二维表)的基础上
代表:Orical 、Mysql 、SQL Server、Microsoft Access、DB2
NOSQL,意思是不仅仅是sql,是除了主流关系型数据库之外都是非关系型数据库,包括什么img什么MP4之类的不是结构化的数据
代表: Redis、MongBD、Hbase、CouhDB
(1)数据存储方式不同
关系型数据是表格式的,相互关联彼此协助,容易提取数据
非关系以键值对或者图结构存储,不容易提取数据
(2)扩展方式不同
SQL数据库扩展主要是纵向扩展,也就是提高服务器处理能力,使用更高的配置,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。
NoSQL数据库得益于非关系型存储是分布式的缘故,NoSQL可以通过扩展资源池,给其添加更多的节点来分担负载
(3)对事务的支持性不同
如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。
虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。
Redis 是一个开源的、使用 C 语言编写的 NoSQL 数据库。
Redis 基于内存运行并支持持久化,采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。
Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。若 CPU 资源比较紧张,采用单进程即可。
systemctl stop firewalld
setenforce 0
yum install -y gcc gcc-c++ make
tar zxvf redis-5.0.7.tar.gz -C /opt/
cd /opt/redis-5.0.7/
make
make PREFIX=/usr/local/redis install
cd /opt/redis-5.0.7/utils
./install_server.sh
……
慢慢回车
Please select the redis executable path []
手动输入
/usr/local/redis/bin/redis-server
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Yqdo7ZT-1663499465765)(C:/Users/mogu/AppData/Roaming/Typora/typora-user-images/image-20220818184031753.png)]
Selected config:
Port : 6379 #默认侦听端口为6379
Config file : /etc/redis/6379.conf #配置文件路径
Log file : /var/log/redis_6379.log #日志文件路径
Data dir : /var/lib/redis/6379 #数据文件路径
Executable : /usr/local/redis/bin/redis-server #可执行文件路径
Cli Executable : /usr/local/bin/redis-cli #客户端命令工具
软链接将redis加入环境变量中
ln -s /usr/local/redis/bin/* /usr/local/bin/
/etc/init.d/redis_6379 stop #停止
/etc/init.d/redis_6379 start #启动
/etc/init.d/redis_6379 restart #重启
/etc/init.d/redis_6379 status #状态
修改/etc/init.d/redis_6379
vim /etc/redis/6379.conf
70行,添加 监听的主机地址
bind 127.0.0.1 192.168.223.10
93行,Redis默认的监听端口
port 6379
137行,启用守护进程
daemonize yes
159行,指定 PID 文件
pidfile /var/run/redis_6379.pid
167行,日志级别
loglevel notice
172行,指定日志文件
logfile /var/log/redis_6379.log
######重启服务#######
/etc/init.d/redis_6379 restart
redis-server 用于启动 Redis 的工具
redis-benchmark 用于检测 Redis 在本机的运行效率
redis-check-aof 修复 AOF 持久化文件
redis-check-rdb 修复 RDB 持久化文件
redis-cli Redis命令行工具
语法:redis-cli -h host -p port -a password
-h:指定远程主机
-p:指定Redis服务的端口号
-a:指定密码,当然如果没有设置密码可以直接省略
redis-cli -h 192.168.226.123 -p 6379
redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。
基本的测试语法:redis-benchmark [选项] [选项值]。
-h 指定服务器主机名。
-p 指定服务器端口。
-s 指定服务器 socket
-c 指定并发连接数。
-n 指定请求数。
-d 以字节的形式指定 SET/GET 值的数据大小。
-k 1=keep alive 0=reconnect 。
-r SET/GET/INCR 使用随机 key, SADD 使用随机值。
-P 通过管道传输请求。
-q 强制退出 redis。仅显示 query/sec 值。
-csv 以 CSV 格式输出。
-l 生成循环,永久执行测试。
-t 仅运行以逗号分隔的测试命令列表。
-I Idle 模式。仅打开 N 个 idle 连接并等待。
我们测试下我们的redis的链接和请求
redis-benchmark -h 192.168.226.123 -p 6379 -c 100 -n 10000
set 存放数据 set key value
get 获取数据 get key
keys 命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用
exists 命令可以判断键值是否存在(0为无而1为有)
del 命令可以删除当前数据库的指定 key。
type 命令可以获取 key 对应的 value 值类型。
rename 对以有键进行重命名(如果有这个键会覆盖)
renamenx 命令的作用是对已有 key 进行重命名,并检测新名是否存在,如果目标 key 存在则不进行重命名。(不覆盖)
dbsize 命令的作用是查看当前数据库中 key 的数目。
使用config set requirepass xxxxx (password)命令设置密码
使用config get requirepass命令查看密码(一旦设置密码,必须先验证通过密码,否则所有操作不可用)
set k1 "周妍" #如果你想要插入中文的话redis-cli --raw -h 192.168.226.123 -p 6379登录时要加raw
get k1 #获取k1这个键的值
192.168.226.123:6379> get k1
周妍
keys * #查看所有的键
192.168.226.123:6379> keys *
key:__rand_int__
test
counter:__rand_int__
myset:__rand_int__
test2
k2
mylist
k1
keys k? #查看k为开头一个字符的键名
192.168.226.123:6379> keys k?
k2
k1
del k2 #删除k2
192.168.226.123:6379> del k2
1
rename test2 k1 #将test2键重命名为k1
192.168.226.123:6379> rename test2 k1
OK
renamenx test2 k1 #将test2键重命名为k1
192.168.226.123:6379> renamenx test2 k1
OK
config set requirepass 123 #对set命令进行密码设置要重写
192.168.226.123:6379> config set requirepass 123
OK
192.168.226.123:6379> set kkk
ERR wrong number of arguments for 'set' command
192.168.226.123:6379> auth 123 #输入密码后就可以使用了
OK
192.168.226.123:6379> set kkk 2123
OK
Redis 支持多数据库,Redis 默认情况下包含 16 个数据库,数据库名称是用数字 0-15 来依次命名的。
select 10 切换到10这个库
192.168.226.123:6379> select 10
OK
192.168.226.123:6379[10]> keys *
(empty list or set)
将0库的键唯一到1库
move 键名 k
192.168.226.123:6379> move k2 1
(integer) 1
库,数据库名称是用数字 0-15 来依次命名的。
select 10 切换到10这个库
192.168.226.123:6379> select 10
OK
192.168.226.123:6379[10]> keys *
(empty list or set)
将0库的键唯一到1库
move 键名 k
192.168.226.123:6379> move k2 1
(integer) 1