NoSQL之Redis配置使用

大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述NoSQL之Redis配置使用相关的知识,希望能为你提供帮助。
一、关系数据库与非关系型数据库概述
1、关系型数据库

  • ??一个结构化的数据库,创建在关系模型(二维表格模型)基础上?,?一般面向于记录。??
  • ??SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言。??
  • ??用于执行对关系型数据库中数据的检索和操作。??
  • ??主流的关系型数据库包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2 等。??
2、非关系型数据库
  • ??NoSQL(NoSQL = Not Only SQL ),意思是“不仅仅是 SQL”,是非关系型数据库的总称。??
  • ??除了主流的关系型数据库外的数据库,都?认为是非关系型?。??
  • ??不需要预先建库建表定义数据存储表结构,每条记录可以有不同的数据类型和字段个数(文字,图片,视频,音乐等)??
  • ??主流的 NoSQL 数据库有 Redis、MongBD、Hbase、Memcached 等。??
3、关系数据库与非关系型数据库区别
1.数据存储方式不同??关系型和非关系型数据库的?主要差异是数据存储的方式。???
  • ??关系型数据天然就是?表格式??的???,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很???容易提取数据???。
  • ??与其相反,非关系型数据不适合存储在数据表的行和列中,而是?大块组合??在一起???。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。??
  • ??你的数据及其特性是选择数据存储和提取方式的首要影响因素。??
2.扩展方式不同???SQL和NoSQL数据库?最大的差别可能是在扩展方式上?,要支持日益增长的需求当然要扩展。???
  • ??要支持更多并发量,SQL数据库是?纵向扩展?,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。??
  • ??因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。??
  • ??而NoSQL数据库是?横向扩展的?。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。??
3.对事务性的支持不同
  • ??如果数据操作需要?高事务性或者复杂数据查询?需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。?SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务???。??
  • ??虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在?操作的扩展性和大数据量处理方面?。??
4、非关系型数据库产生背景
??可用于应对 Web2.0 纯动态网站类型的三高问题。??
  • ??High performance——对数据库高并发读写需求??
  • ??Huge Storage——对海量数据高效存储与访问需求??
  • ??High Scalability & & High Availability——对数据库高可扩展性与高可用性需求??
???关系型数据库和非关系型数据库都有各自的特点与应用场景,两者的紧密结合将会给Web2.0的数据库发展带来新的思路。???
???让关系数据库关注在关系上,非关系型数据库关注在存储上。???
???例如,在读写分离的mysql数据库环境中,可以把经常访问的数据存储在非关系型数据库中,提升访问速度。???
5、总结
??关系型数据库:实例–> 数据库–> 表(table)–> 记录行(row)、数据字段(column)??
??非关系型数据库:实例–> 数据库–> 集合(collection)–> 键值对(key-value)??
??非关系型数据库不需要手动建数据库和集合(表)。??
二、Redis
???Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI  ???C语言???编写、支持网络、可基于内存亦可持久化的日志型、Key-Value???数据库???,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由???Pivotal???赞助。???
1、Redis简介
  • ??Redis 是一个?开源的?、使用  ?C 语言编写?的  NoSQL  数据库。??
  • ??Redis 基于?内存运行并支持持久化?,采用?key-value??(键值对)的存储形式???,是目前分布式架构中???不可或缺的一环。???
  • ??Redis服务器程序是?单进程模型,????也就是在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是?完全依靠于主进程的执行效率?。???
  • ??若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的?下降?;??
  • ??若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的?CPU造成很大压力???
  • ???所以在实际生产环境中,需要?根据实际的需求?来决定开启多少个Redis进程。???
  • ??若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。??
  • ??若 CPU 资源比较紧张,采用单进程即可。??
2、Redis 优点
  • ???具有极高的数据读写速度?:数据读取的速度最高可达到 110000 次/s,数据写入速度最高可达到 81000 次/s。??
  • ???支持丰富的数据类型???:支持 key-value、Strings、Lists、Hashes、Sets 及 Ordered Sets 等数据类型操作。??
  • ???支持数据的持久化?:可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。??
  • ???原子性???:Redis 所有操作都是原子性的。??
  • ???支持数据备份?:即 master-salve 模式的数据备份。??
3、Redis使用场景?16种?
???Redis作为基于内存运行的数据库,?缓存?是其最常应用的场景之一。除此之外,Redis常见应用场景还包括获取最新N个数据的操作、排行榜类应用、计数器应用、存储关系、实时分析系统、日志记录。???
4、Redis为什么这么快
  1. ??Redis是一款???纯内存结构???,避免了磁盘工/o等耗时操作。??
  2. ??Redis命令处理的核心模块为???单线程???,减少了锁竞争,以及频繁创建线程和销毁线程的代价,减少了线程上下文切换的消耗.??
  3. ??采用了???I/O多路复用机制???,大天提升了并发效率。??
???注:在 Redis 6.0 中新增加的多线程也只是针对处理网络请求过程采用了多线性,而数据的读写命令,仍然是单线程处理的。???
5、Redis安装部署
1.编译安装redis
systemctl stop firewalld
setenforce 0

cd /opt/
yum install -y gcc gcc-c++ make

tar zxvf redis-5.0.7.tar.gz

cd /opt/redis-5.0.7/
make & & make PREFIX=/usr/local/redis install




2.执行软件包自带的install_server.sh脚本文件设置redid服务相关配置
cd /opt/redis-5.0.7/utils
./install_server.sh
……
慢慢回车
Please select the redis executable path []
手动输入/usr/local/redis/bin/redis-server
#要一次性输入正确,不然还要重新执行
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#客户端命令工具


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

#当install_server.sh 脚本运行完毕,Redis服务就已经启动,默认侦听端口为6379
netstat -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#状态


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

#70行; 添加; 监听的主机地址
bind 127.0.0.1 192.168.163.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








【NoSQL之Redis配置使用】
6、Redis 命令工具
redis-server

    推荐阅读