目录
引言
一、非关系型数据库
(一)什么是非关系型数据库
(二)非关系型数据库的主要特征
(三)关系数据库与非关系型数据库的区别
二、Redis 简介
(一)基本信息
(二)数据模型与操作命令
(三)Redis 的特性与优势
(四)Redis实际应用中的案例
(五)安装部署Redis
引言
随着互联网技术的发展,对于数据存储和处理的效率要求越来越高。Redis,作为一种高性能、开源的内存键值存储系统,凭借其独特的优势,在众多数据库中脱颖而出,成为许多大型网站和应用首选的缓存及数据存储解决方案。
一、非关系型数据库
(一)什么是非关系型数据库
非关系型数据库(Non-relational Database)又称NoSQL数据库是一种不同于传统关系型数据库管理系统(RDBMS)的数据存储解决方案。NoSQL这个术语最初意味着"Not Only SQL",强调的是这类数据库不完全依赖于SQL作为查询语言,并且通常不遵循关系模型的设计原则。
(二)非关系型数据库的主要特征
非关系型数据库的主要特征包括:
数据模型多样性:
键值对存储(Key-Value Store):如Redis,通过键快速检索对应的值。
文档型数据库(Document-Oriented):如MongoDB,存储类似JSON或XML格式的文档集合,每个文档有自己的内部结构。
列族数据库(Column-Family):如Cassandra和HBase,以列簇为单位存储数据,适合大量数据的分布式存储和分析。
图形数据库(Graph Database):如Neo4J,关注实体间复杂关系的建模和查询。
灵活性:非关系型数据库允许更灵活的数据模型,能够轻松应对不断变化的应用需求,特别是在需要水平扩展时。
可扩展性与分布式计算:多数NoSQL数据库设计之初就考虑到横向扩展(Scale-out),可以在多个节点间分布数据和负载,从而处理海量数据和高并发请求。
弱一致性与CAP定理:很多NoSQL系统在设计上选择了可用性与分区容错性优先于强一致性,提供了最终一致性保证,而非传统RDBMS的ACID事务。
性能优化:某些非关系型数据库通过减少冗余、利用数据局部性以及针对特定场景优化数据结构和算法,提高了读写性能
(三)关系数据库与非关系型数据库的区别
区别类型 | 关系型数据库 | 非关系型数据库 |
数据存储 | 数据通常按照预定义的 模式存储,并进行增删改 | 数据可以按需存储,无需预先定义严格的模式 |
数据查询 | 使用结构化查询语言(SQL) 进行数据查询 | 不一定使用SQL作为查询语言NoSQL数据库支持自定义 查询语法,有的则提供了API接口进行数据操作 |
扩展方式 | 纵向,可通过扩展硬件向上 提高性能 | 横向,天然分布式,通过给资源池添加更多普通的数据库 服务器(节点)来分担负载 |
事务支持 | 支持,性能强,稳定 | 支持,稳定性较弱 |
适用场景 | 用于高度结构化的数据、需要 强事务支持和复杂查询的场景, 如ERP系统、银行系统等。 | 适用于大数据处理、实时分析、内容管理系统、社交媒 体平台等需要快速存储和检索大量半结构化或非结构化 数据的场景。 |
主流软件 | Oracle、MySQL、PostgreSQL等 | Redis、MongBD、Hbase、Memcached等 |
二、Redis 简介
(一)基本信息
Redis 全称 Remote Dictionary Server(远程字典服务器),由 Salvatore Sanfilippo(网名 antirez)开发并维护。它不仅支持丰富的数据结构(字符串、哈希表、列表、集合、有序集合等),还提供了持久化、发布/订阅、Lua脚本、事务等多种功能特性。Redis 的核心价值在于将所有数据存储在内存中,从而实现超高的读写速度,是典型的内存数据库代表
(二)数据模型与操作命令
Redis支持多种数据结构,这使得它能灵活地处理不同类型的数据和场景
键值对(Strings):简单的字符串类型,可以进行 GET、SET、INCR 等操作。
哈希表(Hashes):内含多个字段的键值对集合,例如存储用户信息。
列表(Lists):有序的字符串列表,可用于消息队列或者粉丝列表。
集合(Sets):无序且不允许重复元素的集合,常用于标签系统、好友列表等。
有序集合(Sorted Sets):具有排序特性的集合,每个成员有分数属性,可用于排行榜、带权重的索引等。
(三)Redis 的特性与优势
高速性能:Redis 将数据存储在内存中,通过避免磁盘 I/O 操作,实现了微秒级别的延迟。
持久化:虽然Redis 是内存数据库,但它提供了 RDB 快照和 AOF 日志两种持久化机制,确保即使在服务器宕机后也能恢复数据。
集群与分布式:Redis 集群可以通过分片(Sharding)方式实现大规模数据的分布式存储和处理,同时支持主从复制(Replication)提高系统的可用性和可靠性。
实时性:Redis 支持发布/订阅模式,可在多个客户端之间实现实时的消息传递。
安全性:Redis 提供了访问控制、过期策略等功能,保障了数据的安全使用。
(四)Redis实际应用中的案例
Redis 在社交网络、游戏、电子商务、内容缓存等多个领域有着广泛的应用。例如,在社交网络中,它可以用来存储用户的在线状态、最新动态等实时数据;在电商系统中,Redis 可以作为商品浏览记录、购物车等热数据的缓存;在游戏服务端,Redis 可用作积分排行榜、玩家状态存储等。
(五)安装部署Redis
[root@localhost ~]#yum install -y gcc gcc-c++ make
#安装编译环境
[root@localhost opt]#ls /opt
redis-5.0.7.tar.gz
[root@localhost opt]#tar xf /data/redis-5.0.7.tar.gz
#解压源码包
[root@localhost opt]#ls
redis-5.0.7 redis-5.0.7.tar.gz
[root@localhost opt]#cd /opt/redis-5.0.7/
[root@localhost redis-5.0.7]#ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-moduleapi src
BUGS deps MANIFESTO runtest runtest-sentinel tests
CONTRIBUTING INSTALL README.md runtest-cluster sentinel.conf utils
#因为源码包中自带Makefile文件,所以不需要执行configure命令,直接执行make命令即可
[root@localhost redis-5.0.7]#make -j 4
#进行编译
[root@localhost redis-5.0.7]#make PREFIX=/usr/local/redis install
#安装redis
安装完redis之后,需要执行软件包提供的 install_server.sh 脚本文件设置 Redis 服务所需要的相关配置文件
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 #客户端命令工具
[root@localhost utils]#ln -s /usr/local/redis/bin/* /usr/local/bin/
#把redis的可执行程序文件放入路径环境变量的目录中,便于直接使用命令
[root@localhost utils]#ss -natp |grep redis
LISTEN 0 128 127.0.0.1:6379 *:*
users:(("redis-server",pid=22803,fd=6))
当 install_server.sh 脚本运行完毕,Redis服务就已经启动,默认监听端口为6379
#Redis服务的启动与停止命令在/etc/init.d/redis_6379
/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的服务已经安装完毕,可以对一些基本配置与文件存放位置进行修改
第70行:bind 127.0.0.1 #Redis服务器绑定的IP地址
第93行:port 6379 #Redis服务器监听的端口号
第137行:daemonize yes #是否以守护进程方式运行Redis服务器
第159行:pidfile /var/run/redis_6379.pid #Redis服务器的PID文件路径
第167行:loglevel notice #日志记录级别
第172行:logfile /var/log/redis_6379.log #Redis服务器的日志文件路径
如果需要修改redis服务的配置,部分配置还需要修改启动文件,例如端口号与PID文件路径
EXEC=/usr/local/redis/bin/redis-server
#Redis服务器程序的完整路径当启动Redis服务时,系统会使用这个路径调用Redis服务器程序。
CLIEXEC=/usr/local/redis/bin/redis-cli
#Redis命令行客户端程序的完整路径,通过使用这个命令行与Redis服务器进行交互。
PIDFILE=/var/run/redis_6379.pid
#Redis服务运行时生成的进程ID文件的路径。在服务启动后,Redis进程的PID会被写入这个文件
CONF=/etc/redis/6379.conf
#Redis服务器的配置文件路径。Redis服务启动时会加载并解析这个配置文件中的各项设置。
REDISPORT=6379
#Redis服务监听的TCP端口号,这里设置为6379,这是Redis的默认端口