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

目录

引言

一、非关系型数据库

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

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

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

二、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的默认端口
  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值