当前位置: 代码网 > it编程>数据库>Redis > 初始Redis概念、特性、安装使用场景

初始Redis概念、特性、安装使用场景

2025年07月28日 Redis 我要评论
一、什么是redis?redis 是一款基于键值对(key-value)的 nosql 数据库。与多数键值对数据库不同,其值可由字符串(string)、哈希(hash)、列表(list)、集合(set

一、什么是redis?

redis 是一款基于键值对(key-value)的 nosql 数据库。与多数键值对数据库不同,其值可由字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(zset)、位图(bitmaps)、hyperloglog、地理信息定位(geo)等多种数据结构和算法构成,这使得 redis 能满足多样的应用场景。

redis 的显著优势在于将所有数据存储于内存中,因此读写性能极为出色。同时,它支持通过快照(rdb)和日志(aof)两种方式将内存数据持久化到硬盘,确保断电或机器故障时数据不会丢失。此外,redis 还提供了键过期、发布订阅、事务、流水线、lua 脚本等附加功能,方便应对这类场景。

如今,众多重量级企业都在使用 redis。国外如 twitter、instagram、stack overflow、github 等;国内则有新浪微博(堪称全球最大的 redis 使用者)、阿里巴巴、腾讯、搜狐、优酷土豆、美团、小米、唯品会等。此外,elk 等诸多开源技术也将 redis 作为重要组件,且 redis 提供的模块系统支持第三方进行功能扩展,进一步释放其潜力。由此可见,熟练使用和运维 redis 已成为开发与运维人员的必备技能。

二、 redis特性的简单认识

redis得到了众多公司的青睐,必有其过人之处,下面是关于redis的8个重要特性。

1. 速度快

相较于mysql这类关系型数据库,redis的访问速度要快很多,其原因大致可以分为以下四点:

  1. 内存读写天然快:redis的数据存放在内存中,内存访问速度要远远快于硬盘,这也是redis速度快的主要原因。(下图是google列出的各种硬件执行速度,供参考)
  2. 单线程优势:redis使用单线程模型,避免了线程切换和多线程加锁竞争导致的性能损失

redis 6.0 引入了多线程机制,但主要用于网络io场景,redis的核心执行的执行依旧保持单线程模型

  1. 高效的数据结构:redis采用了各种高效率的数据结构,如字符串(string)、哈希表(hash)、有序集合(zset)、这些数据结构的操作复杂度多为 o ( 1 ) 或者 o ( l o g n ) o(1) 或者 o(logn) o(1)或者o(logn) ,确保指令执行高效。
  2. i/o多路复用技术:采用i/o多路复用技术,确保单线程也能高效应对大量客户端请求

各层级硬件执行速度

2. 基于键值对

redis是基于键值对的非关系型数据库(nosql),所谓键值对就像c++的map,python的dict等,这种结构的优势就是插入数据和查询数据更加高效。值得一提的是,redis的值支持丰富的数据结构:字符串、哈希表、列表、集合、有序集合、位图、hyperloglog甚至在redis3.2加入了地理位置相关功能。这些丰富的数据库能帮助开发者开发应对各类场景的应用。

3. 丰富的功能

  • 键过期功能:到达一定时间自动删除键值对,用于实现缓存
  • 发布订阅功能:可用于实现消息系统
  • lua脚本:可用lua脚本执行redis命令
  • 简单事务功能
  • 流水线(pipeine): 使得客户端能将一批命令一次传到redis,减少了网络的开销

4. 简单稳定

  • redis源码量少:早期甚至只有两万行,redis3.0引入集群特性后增至5万行左右,相对于其他数据库来说代码量少很多。
  • redis采用单线程模型
  • redis不依赖操作系统的各种类库,自己实现事件处理相关功能。

5. 客户端支持多种编程语言:

redis提供了简单的tcp通信协议:很多编程语言都可以方便的接入redis,且由于redis收到广泛认可,主流语言都已经有开发者实现了良好的redis支持,如c、c++、java、php、python、js

6. 持久化

前面提到,redis数据存放在内存中,这保证了访问速度很快,但是不够安全。一旦发生断电或者机器故障,重要的数据就可能会丢失。因此,redis提供两种持久化策略:rdb和aof,可将内存中的数据保存到硬盘中。后续我将对redis持久化策略详细说明。

7. 主从复制(replication)

主从复制功能是分布式架构的基础。这一功能也将在后续博文中进行演示。

8. 高可用(high availability)和分布式(distributed)

redis 提供了高可用实现的 redis 哨兵,能够保证redis节点故障检测和故障自动转移。也提供了 reids 集群,这是真正的分布式实现。

三、redis使用场景

1. redis可以做什么?

redis官网给出了三个方向:数据库、缓存和消息队列

数据库

大多数情况下,数据库考虑的是容量大,但也有一些高性能的场景考虑的是“速度快“,这是就可以直接采用redis做数据库

缓存

这是redis最广泛使用的场景。对于各类大型网站或者应用程序,往往是少量的数据能满足大量的用户使用场景。因此,这类网站采用的方式都是用 mysql 等数据库存储全量完整数据,用redis从数据库中加载少量核心数据作为缓存,这样的设计提升了用户访问数据的速度,也有效降低了后端的压力。

消息队列

redis的开发者最早开发它就是为了将其作为消息队列进行使用的。但如今,在消息队列方面,我们有很多更优的选择,因此,redis做消息队列的场景很少出现了。

2. redis不宜做什么?

和所有技术一样,redis也有其适用场景与边界,并非万能解决方案。它既能高效解决特定问题,也存在不适合的应用场景,这一点可从数据规模与数据冷热两个维度来分析。

从数据规模来看,数据可分为大规模数据与小规模数据。由于redis的数据存储依赖内存,尽管如今内存成本已大幅下降,但面对超大规模数据——例如每天数亿条的用户行为数据——若用redis存储,成本会高得难以承受,堪称一个“无底洞”。

从数据冷热属性来看,数据有热数据与冷数据之分。热数据指需要频繁操作的数据,冷数据则反之。以视频网站为例,视频基本信息在各业务线中常被调用,属于热数据;而用户的观看记录未必会被频繁访问,可归为冷数据。暂且不考虑两者在数据规模上的差异,仅从数据冷热角度而言,将冷数据存于redis无疑是对内存的浪费,而把热数据放入redis,既能加速读写操作,又能减轻后端存储的负载,可谓事半功倍。

因此,redis并非“万金油”。相信随着对redis的深入学习,我们会更清晰地把握它真正的适用场景。

四、redis重大版本

redis版本发布

  • redis 2.6 :2012年发布,支持服务端lua脚本,键过期时间精确到毫秒,从节点新增只读功能。
  • redis 2.8 :2013年发布,优化主从复制的psync机制,支持通过config set配置maxclients,新增config rewrite命令。
  • redis 3.0 :2015年发布,推出官方分布式方案redis cluster,优化小对象内存访问,新增client pause命令。
  • redis 3.2 :2016年发布,添加geo地理信息处理功能,引入list新编码类型quicklist,新增hstrlen命令。
  • redis 4.0 :2017年发布,引入模块系统,优化主从复制为psync2.0,新增lfu缓存淘汰算法,支持非阻塞del/flush命令。
  • redis 5.0 :2018年发布,新增流数据类型(stream),升级redis模块api,rdb文件包含lfu/lru信息。
  • redis 6.0 :2020年发布,支持多线程io,优化模块api,改进过期键处理机制,新增ssl支持。
  • redis 7.0 :2022年发布,新增function自定义函数库,支持client-eviction机制、sharded-pub/sub,提供命令执行耗时直方图。

五、ubuntu 安装 redis 6

相较于redis 7, redis 6 已经具备了大部分功能,且更容易安装。

redis官方不支持windows系统,因为redis的特性与linux息息相关。又由于redis的优秀特性,微软的开源技术组也维护了一个 redis 的windows版本分支,不过仍然建议在linux上学习使用redis。

1. 更新apt软件源

sudo apt update

2. 安装 redis

sudo apt install redis

3. 修改配置文件支持远程连接

修改 /etc/redis/redis.conf (注意需要sudo权限)

  • 修改 bind 127.0.0.1 为 bind 0.0.0.0
  • 修改protected-mode yes 为 protected-mode no

4. 重启redis服务

sudo service redis-server restart

5. 检验redis状态

  1. 通过netstat命令
netstat -anp | grep redis

2. 启动redis客户端

redis-cli

启动完成后输入ping,若返回pong,则redis连接正常

使用ctrl + d 退出客户端。

到此这篇关于初始redis概念、特性、使用场景、安装教程的文章就介绍到这了,更多相关redis安装使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com