探索 Redis 数据库:一款高性能的内存键值存储系统

发布于:2024-04-06 ⋅ 阅读:(174) ⋅ 点赞:(0)

目录

引言

一、非关系型数据库

(一)什么是非关系型数据库

(二)非关系型数据库的主要特征

(三)关系数据库与非关系型数据库的区别

二、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的默认端口

网站公告

今日签到

点亮在社区的每一天
去签到