redis①

  • 前言
  • 一、关系数据库和非关系数据库
  • 1.关系型数据库
  • 2.非关系型数据库
  • 3.扩展方式不同
  • 4 对事务性的支持不同
  • 5.非关系型数据的产生背景
  • 二,redis的特点
  • 三,redis应用场景
  • 四,REDIS服务器程序是单进程模型
  • 五, Redis 与 Memcached 的区别
  • 六,Redis 安装部署
  • 1,将下载好的软件包传至 /opt/ 目录下
  • 2.源码编译安装
  • 3,设置 Redis 相关配置文件
  • 4,进行配置文件
  • 5.查看运行状态


前言

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

一、关系数据库和非关系数据库

1.关系型数据库

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

2.非关系型数据库

NoSQL (NoSQL = Not Only SQL ),意思是“不仅仅是 SQL", 是非关系型数据库的总称
除了主流的关系型数据库外的数据库,都认为是非关系型
主流的 NoSQL 数据库有 Redis、 MongBD、 Hbase、 Memcached 等
3.区别
3.1 数据存储方式不同
关系型和非关系型数据库的主要差异是数据存储的方式
关系型数据天然就是表格式的,因此存储在数据表的行和列中
数据表可以彼此关联协作存储,也很容易提取数据
与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起
非关系型数据通常存储在数据集中,就像文档、键值对或者图结构
你的数据及其特性是选择数据存储和提取方式的首要影响因素

3.扩展方式不同

SQL 和 NoSQL 数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展
要支持更多并发量,SQL 数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了
因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然 SQL 数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限
而 NoSQL 数据库是横向扩展的
因为非关系型数据存储天然就是分布式的,NoSQL 数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载

4 对事务性的支持不同

如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的 SQL 数据库从性能和稳定性方面考虑是你的最佳选择
SQL 数据库支持对事务原子性细粒度控制,并且易于回滾事务
虽然 NoSQL 数据库也可以使用事务操作,但稳定性方而没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方而

5.非关系型数据的产生背景

关系型数据库和非关系型数据库都有各自的特点与应用场景,两者的紧密结合将会给 Web2.0 的数据库发展带来新的思路
关系数据库关注在关系上,非关系型数据库关注在存储上
例如,在读写分离的 MySQL 数据库环境中,可以把经常访问的数据存储在非关系型数据库中,提升访问速度
需求驱动发展:
对数据库高并发读写的需求
对海量数据高效存储与访问的需求
对数据库高扩展性与高可用性的需求

二,redis的特点

①Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。以设置和获取一个256字节字符串为例,它的读取速度可高达110000次/s,写速度高达81000次/s。

②Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启后,数据也不会丢失。因为Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis才能实现持久化。

③Redis支持主从模式,可以配置集群,这样更利于支撑起大型的项目,这也是Redis的一大亮点。

三,redis应用场景

众多语言都支持Redis,因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。 拿大型网站来举个例子,比如a网站首页一天有100万人访问,其中有一个板块为推荐新闻。要是直接从数据库查询,那么一天就要多消耗100万次数据库请求。上面已经说过,Redis支持丰富的数据类型,所以这完全可以用Redis来完成,将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

四,REDIS服务器程序是单进程模型

Redis服务在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。一般来说,我们建议可以开启2个进程。原因是第一步,备份,第二步,抗高并发的同时尽量不给CPU造成太大的压力。若对高并发要求高一些,可能会考虑在同一台服务器开启多个进程,若CPU资源比较紧张,那么采取单进程即可。

五, Redis 与 Memcached 的区别

redis历史执行操作记录 redis history_redis

六,Redis 安装部署

1,将下载好的软件包传至 /opt/ 目录下

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

yum -y install gcc gcc-c++ make

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

2.源码编译安装

cd redis-5.0.7/
make -j 4
make PREFIX=/usr/local/redis install

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

3,设置 Redis 相关配置文件

cd /opt/redis-5.0.7/utils/

#执行软件包提供的 install_server.sh 脚本文件来设置 Redis 服务所需要的相关配置文件
./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”
#注意,需要一次性正确输入,且输入错误了是无法更改的

4,进行配置文件

ln -s /usr/local/redis/bin/* /usr/local/bin/
#把 redis 的可执行程序文件放入路径环境变量的目录中便于系统识别

netstat -natp | grep "redis"
#当 install_server.sh 脚本运行完毕,Redis 服务就已经启动,默认侦听端口为 6379

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

bind 127.0.0.1 192.168.126.15       #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行,指定日志文件

5.查看运行状态

/etc/init.d/redis_6379 restart
#重启服务,使配置生效

/etc/init.d/redis_6379 status
#查看状态