Redis及配置

文章介绍了关系型数据库如SQL和非关系型数据库如NoSQL的区别,包括数据存储方式、扩展方式和事务性支持。非关系型数据库如Redis在缓存中的应用被详细阐述,包括其优点、单线程特性以及在数据存储和读写速度上的优势。此外,还提到了Redis的部署和常用命令。
摘要由CSDN通过智能技术生成

目录

关系型数据库与非关系型数据库

概述

1、关系型数据库

2、非关系型数据库

关系型数据库和非关系型数据库区别

1、数据存储方式不同

2、扩展方式不同

3、对事务性的支持不同

总结       

关系型数据库

非关系型数据库

Redis概述

缓存概述

系统缓存

DNS缓存

应用层缓存

数据层缓存

硬件缓存

redis优点

单线程

redis快的原因

redis应用场景

Redis部署

​编辑 Redis 服务控制

redis相关命令

redis-cli命令行工具

 redis-benchmark测试工具

示例:

redis数据库常用命令

 设置和清除密码

 redis多数据库操作

多数据库间切换select

 多数据库之间移动数据

 清除数据库内的数据


关系型数据库与非关系型数据库

概述

1、关系型数据库

关系型数据库是一个结构化的数据库,创建在关系模型 (二维表格模型) 基础上,一般面向于记录。 SQL语句 (标准数据查询语言) 就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。 主流的关系型数据库包括Oracle、MySQL、SQL Server、Microsoft Access、DB2等。

2、非关系型数据库

NoSQL (NoSQL=NotOnlySQL),意思是“不仅仅是SQL”,是非关系型数据库的总称。 除了主流的关系型数据库外的数据库,都认为是非关系型。 主流的 NoSQL 数据库有Redis、 MongBD、 Hbase、 Memcached 等。

关系型数据库和非关系型数据库区别

1、数据存储方式不同

关系型和非关系型数据库的主要差异是数据存储的方式。

  • 关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。
  • 非关系型与其相反,数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。
  • 关系型:依赖于关系模型E-R图,同时以表格式的方式存储数据 非关系型:除了以表格形式存储之外,通常会以大块的形式组合在一一起进行存储数据 
     

2、扩展方式不同

SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。

  • 要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。
  • 而NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点) 来分担负载。
  • 关系:纵向提高硬件配置,比如换更高性能的CPU、加CPU核数、硬盘、磁盘IO、内存条。(天然表格式)
  • 非关系:横向加服务器(天然分布式)
     

3、对事务性的支持不同

  • 如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。虽然
  • NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。
  • 关系型:特别适合高事务性要求和需要控制执行计划的任务 非关系:此处会稍显弱势,其价值点在于读写性能好、高扩展性和大数据量处理方面
     

总结       

         关系型数据库和非关系型数据库都有各自的特点与应用场景,两者紧密结合将会给web2.0数据库发展带来新思路;让关系型数据库关注在关系上和对数据的一致性保障,非关系型数据库关注在存储和高效率上。例如,在读写分离的MySQL数据库环境中,可以把经常访问的数据(即高热数据)存储在非关系型数据库中,提升访问速度。

关系型数据库

  • 实例-->数据库-->表(table)-->记录行(row)、数据字段(column)

1、安全性高(持久化)

2、事务处理能力强

3、任务控制能力强

4、可以做日志备份、恢复、容灾的能力更强一些

非关系型数据库

  • 实例--->数据库--->集合(collection)--->键值对(key-value)
  • 非关系型数据库不需要手动建数据库和集合(表)

1、数据保存在缓存中,利于读取速度/查询数据

2、架构中位置灵活

3、分布式、扩展性高

Redis概述

redis是一个开源的,使用C语言编写的nosql数据库,redis服务器程序是单进程模型。

redis是基于内存运行并支持持久化(支持存储在磁盘),采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。

redis服务在一台服务器上可以同时启动多个redis进程,redis的实际处理速度完全依靠于主进程的执行效率。

  • 若在服务器上只允许一个redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降。
  • 若在同一个服务器上开启多个redis进程,redis在提高并发处理能力的同时会给服务器的cpu造成很大的压力。在实际生产环境中,需要根据实际的需求来决定开启多少个redis进程。(一般建议开启2个,用作备份和抗高并发)
  • 若对高并发要求更高一些,可能会考虑在同一服务器上开启多个进程。若cpu资源比较紧张,采用单进程即可。

缓存概述

        缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较慢的一方起到加速作用,比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的raid 卡有也缓存,都是为了起到加速CPU 访问硬盘数据的目的,因为CPU的速度太快了,CPU需要的数据由于硬盘往往不能在短时间内满足CPU的需求,因此CPU缓存、内存、Raid 卡缓存以及硬盘缓存就在一定程度上满足了CPU的数据需求,即CPU 从缓存读取数据可以大幅提高CPU的工作效率。

系统缓存

buff与cache

  • buff

缓冲也叫写缓冲,一般用于写操作,可以将数据先写入内存再写入磁盘,buffer 一般用于写缓冲,用于解决不同介质的速度不一致的缓冲,先将数据临时写入到里自己最近的地方,以提高写入速度,CPU会把数据先写到内存的磁盘缓冲区,然后就认为数据已经写入完成看,然后由内核在后续的时间在写入磁盘,所以服务器突然断电会丢失内存中的部分数据。

  • cache

缓存也叫读缓存,一般用于读操作,CPU读文件从内存读,如果内存没有就先从硬盘读到内存再读到CPU,将需要频繁读取的数据放在里自己最近的缓存区域,下次读取的时候即可快速读取。

缓存保存位置及分层结构

  • 用户层: 浏览器DNS缓存,应用程序DNS缓存,操作系统DNS缓存客户端
  • 代理层: CDN,反向代理缓存
  • Web层: Web服务器缓存
  •  应用层 : 页面静态化
  • 数据层: 分布式缓存,数据库
  • 系统层: 操作系统cache
  • 物理层: 磁盘cache, Raid Cache
     

DNS缓存

浏览器的DNS缓存默认为60秒,即60秒内访问同一个域名就不在进行DNS解析

应用层缓存

  • Nginx、PHP等web服务可以设置应用缓存以加速响应用户请求,另外有些解释性语言,比如:PHP/Python/Java不能直接运行,需要先编译成字节码,但字节码需要解释器解释为机器码之后才能执行,因此字节码也是一种缓存,有时候还会出现程序代码上线后字节码没有更新的现象。所以一般上线新版前,需要先将应用缓存清理,再上线新版。
  • 另外可以利用动态页面静态化技术,加速访问,比如:将访问数据库的数据的动态页面,提前用程序生成静态页面文件html 电商网站的商品介绍,评论信息非实时数据等皆可利用此技术实现。
     

数据层缓存

  • 分布式缓存服务

redis

memcached

  • 数据库

mysql查询缓存

innodb缓存、myisam缓存

硬件缓存

  • CPU缓存(L1的数据缓存和L1的指令缓存)、二级缓存、三级缓存

  • 磁盘缓存:Disk Cache

  • 磁盘阵列缓存: Raid Cache,可使用电池防止断电丢失数据

redis优点

1、具有极高的数据读写速度:数据读取的速度最高可达到110000次/s,数据写入速度最高可达到81000次/s。、

2、支持丰富的数据类型:支持key-value、 Strings、Lists、Hashes ( 散列值)、Sets及OrderedSets等数据类型操作。

  • string 字符串(可以为整形、浮点和字符型,统称为元素)
  • list列表:(实现队列,元素不唯一,先入先出原则)
  • set 集合:(各不相同的元素)
  • hash hash散列值:( hash的key必须是唯一的)
  • set /ordered sets集合/有序集合

3、支持数据的持久化:可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

4、原子性: Redis所有 操作都是原子性的。(支持事务,所有操作都作为事务)

5、支持数据备份:即master-salve 模式的数据备份。(支持主从复制)
 

单线程

        redis6.0版本之前都是单线程方式处理用户的请求;在6.0中新增加的多线程也只是针对处理网络请求过程采用了多线程,而数据的读写命令,仍然是单线程处理的。

redis快的原因

  • redis是一款纯内存结构,避免了磁盘I/o等耗时操作。
  • redis命令处理的核心模块为单线程,减少了锁竞争,以及频繁创建线程和销毁线程的代价,减少了线程上下文切换的消耗。
  • 采用了 I/O 多路复用机制,大大提升了并发效率。

redis应用场景

  • Session 共享:常见于web集群中的Tomcat或者PHP中多web服务器session共享

  • 缓存:数据查询、电商网站商品信息、新闻内容

  • 计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景

  • 微博/微信社交场合:共同好友,粉丝数,关注,点赞评论等

  • 消息队列:ELK的日志缓存、部分业务的订阅发布系统

  • 地理位置: 基于GEO(地理信息定位),实现摇一摇,附近的人,外卖等功能

Redis部署

1、关闭防火墙

systemctl stop firewalld
setenforce 0

2、安装依赖包

yum install -y gcc gcc-c++ make

3、解压缩包

cd /opt
tar zxvf redis-5.0.7.tar.gz -C /opt/

4、安装redis5.0.7

cd /opt/redis-5.0.7/
make
make PREFIX=/usr/local/redis install
#由于Redis源码包中直接提供了Makefile 文件,所以在解压完软件包后,不用先执行./configure 进行配置,可直接执行make与make install命令进行安装

5、执行软件包提供的install_server.sh脚本文件设置redis服务所需要的相关配置文件

cd /opt/redis-5.0.7/utils 
./install_server.sh       
.......          #一直回车.
Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/redis/bin/redis-server
#需要手动修改为 /usr/local/redis/bin/redis-server    注意要一次性正确输入
#/usr/local/redis/bin/redis-server

 6、把redis的可执行程序文件放入路径环境变量的目录中便于系统识别

ln -s /usr/local/redis/bin/* /usr/local/bin/

7、检查redis是否启动

ss -natp |grep redis

修改配置 /etc/redis/6379.conf 参数

vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.10.23				#70行,添加 监听的主机地址
port 6379									#93行,Redis默认的监听端口
daemonize yes								#137行,启用守护进程
pidfile /var/run/redis_6379.pid				#159行,指定 PID 文件
loglevel notice								#167行,日志级别
logfile /var/log/redis_6379.log				#172行,指定日志文件

重启下再看下

/etc/init.d/redis_6379 restart
ss -natp |grep redis

 Redis 服务控制

  • /etc/init.d/redis_6379 stop            停止
  • /etc/init.d/redis_6379 start            启动
  • /etc/init.d/redis_6379 restart         重启
  • /etc/init.d/redis_6379 status          状态

redis相关命令

rdb 和 aof 是redis服务中持久化功能的两种形式

redis-cli 常用于登录到redis数据库

Redis命令工具功能
redis-server用于启动redis的工具
redis-benchmark用于检测redis在本机的运行效率
redis-check-aof修复AOF持久化文件
redis-check-rdb修复ROB持久化文件
redis-cli redis命令行工具

redis-cli命令行工具

语法

redis-cli -h host -p port -a password

选项

  • -h: 指定远程主机
  • -p: 指定redis 服务的端口号
  • -a: 指定密码,未设置数据库密码可以省略-a
  • -n: 指定进入库的序列号

#-a若不添加任何选项表示使用127.0.0.1:6379连接本机上的redis数据库

 redis-benchmark测试工具

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 :通过管道传输<numreq>请求。
  • -q :强制退出 redis。仅显示 query/sec 值。
  • --csv :以 CSV 格式输出。
  • -l :生成循环,永久执行测试。
  • -t :仅运行以逗号分隔的测试命令列表。
  • -I :Idle 模式。仅打开 N 个 idle 连接并等待。

示例:

向 IP 地址为 192.168.10.23、端口为 6379 的 Redis 服务器发送 100 个并发连接与 100000 个请求测试性能

redis-benchmark -h 192.168.247.140 -p 6379 -c 100 -n 100000

 测试存取大小为 100 字节的数据包的性能

redis-benchmark -h 192.168.247.140 -p 6379 -q -d 100

 测试本机上 Redis 服务在进行 set 与 lpush 操作时的性能

redis-benchmark -t set,lpush -n 100000 -q

redis数据库常用命令

命令作用
set存放数据
get获取数据
keys *查看所有的key
keys k?查看k开头后面任意
exists判断键是否存在(存在1,不存在0)
del删除键
type查看键对应的value值类型
rename key1 key2改名,不管key2是否存在都会改名成功。如果存在,key1的值会覆盖key2的值
renamenx key1 key2改名,若key2不存在,可以改名成功。若key2存在则不进行改名
dbsize查看当前数据库中key的数目

set、get设置和获取键的值

 keys获取键值列表

 

 exists判断键是否存在

del删除当前数据库指定key

 type可以获取key对应的value值类型

 rename重命名

进行重命名时,无论目标key是否存在都会进行重命名,源key的值会覆盖目标key的值

 renamenx

对已有key进行重命名,检测新名是否存在,如果目标key存在则不进行重命名(不覆盖)

 dbsize查看键数目

查看当前数据库中key的数目

 设置和清除密码

1、设置和查看密码

使用 config set requirepass ‘password’ 设置密码(一旦设置密码,须先验证通过密码,否则所有操作不可用)

使用 config get requirepass 命令查看密码

 2、清空密码

使用 config set requirepass ' '  清空密码

 redis多数据库操作

redis支持多数据库,redis默认16个数据库,数据库由数字0-15来依次命名。

使用redis-cli连接redis数据库后,默认使用序号为0的数据库

多数据库相互独立,互不干扰。

多数据库间切换select

 多数据库之间移动数据

 清除数据库内的数据

flushdb:清空当前数据库数据

flushall:清空所有数据库的数据,慎用

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值